From 27862a1700dfaff9f155307f6340deec8305f528 Mon Sep 17 00:00:00 2001 From: GithubActions BaconPaul Bot Date: Sun, 11 Aug 2024 23:35:18 +0000 Subject: [PATCH] Update to Latest Airwin --- libs/airwindows | 2 +- res/awpdoc/TapeBias.txt | 25 ++ src/ModuleAdd.h | 294 +++++++-------- src/autogen_airwin/CMakeLists.txt | 2 + src/autogen_airwin/ToTape7.cpp | 221 ++++++++++++ src/autogen_airwin/ToTape7.h | 162 +++++++++ src/autogen_airwin/ToTape7Proc.cpp | 558 +++++++++++++++++++++++++++++ 7 files changed, 1117 insertions(+), 147 deletions(-) create mode 100644 res/awpdoc/TapeBias.txt create mode 100644 src/autogen_airwin/ToTape7.cpp create mode 100644 src/autogen_airwin/ToTape7.h create mode 100644 src/autogen_airwin/ToTape7Proc.cpp diff --git a/libs/airwindows b/libs/airwindows index 2cba64c..4ae6d34 160000 --- a/libs/airwindows +++ b/libs/airwindows @@ -1 +1 @@ -Subproject commit 2cba64cb172b26e3e9f2ffb37b39877f1bb6c7f0 +Subproject commit 4ae6d34724ba0ad5f7d908f0194fdaa17f5adae9 diff --git a/res/awpdoc/TapeBias.txt b/res/awpdoc/TapeBias.txt new file mode 100644 index 0000000..ce51f4b --- /dev/null +++ b/res/awpdoc/TapeBias.txt @@ -0,0 +1,25 @@ +# TapeBias is a new piece of ToTape allowing you to underbias or overbias. + +Closing in on the big update to ToTape, and here's a helpful detail, that's not existed in ToTape before. I've been doing recalls and rebuilds of the big ToTape7 for weeks, but this little aspect more or less worked right away. + +Biasing a tape means adding a really high frequency to the sound, a supersonic frequency like 40k. You record to the tape, and this frequency being there means the iron oxide (or whatever metals are in use) gets jostled around, enough that slow gradual changes can be represented properly. Without it, signals kinda get stuck, It's like dither for tiny metal chunks stuck to plastic! + +So there are two ways to go about figuring this one out. + +One is to painstakingly model the whole system, in mathematical perfection, while overprocessing the heck out of everything, and then stick a virtual faceplate on it. And presumably charge a bunch of money. Not my jam. + +The other is to HACK AWAY like mad until you can make noises that SOUND LIKE what's happening, ideally with nice simple algorithms that will retain the digital tone better. But what even is happening? + +TapeBias is bypassed at 0.5. Perfect bias here means it applies NONE of the processing. In fact in the final ToTape7 (next week if all goes well!) you can literally bypass the processing at 0.5 to save CPU: it won't be doing anything anyway. + +If you overbias, which is commonly suggested as a good practice within reason, you're applying this high frequency tone louder and louder. That will record onto the tape too, in fact you can de-flutter using it, but it's also eating up headroom: maybe, lots of headroom. If all your tape headroom is used up trying to record a supersonic tone, and bear in mind there's a boost/cut dynamic for treble already to try and minimize noise (not even counting Dubly!) then you'll be clipping the real highs more easily if the bias is too intense. + +In comparison with test files recorded on real tape machines, I found that GoldenSlew did the nicest job of acting like the sound of overbiasing. TapeBias uses a very slightly changed version of GoldenSlew on overbiasing. If it's inside ToTape7 it's an even better effect because it combines with everything else, but in this case you have basically GoldenSlew for when you overbias. + +By contrast, there's no such existing effect that acts like underbiasing. I could refer to a real tape recording and see the odd flat bits that pop up when the biasing isn't quite enough to handle the audio. The sound is known to go a little brighter, sort of dry things up… a possible sonic effect, especially if it's a plugin and not a giant pain to recalibrate tape machines just to do. + +Turns out it's possible to do an algorithm that acts quite a bit like what happens with underbiasing, except that rather than put in flat bits of audio, it puts in slanted bits that do about the same thing… and it's a simple algorithm, and you can bring it in subtly or make it obvious. And it works very nicely in ToTape7, inside a full tape emulation with all its parts… but here you get it a week early, all by itself. Because, why not? Why not be able to use that part of the effect, isolated, perhaps for some sound design purpose, or to do weird things with LFOs in VCV Rack or who knows what else? + +So, here's TapeBias. Turn it up to overbias, turn it down to underbias. Have fun :) + + diff --git a/src/ModuleAdd.h b/src/ModuleAdd.h index 5c6611c..812272e 100644 --- a/src/ModuleAdd.h +++ b/src/ModuleAdd.h @@ -17,7 +17,7 @@ int Air2_unused = AirwinRegistry::registerAirwindow({"Air2", "Brightness", 66, " #include "autogen_airwin/Air3.h" int Air3_unused = AirwinRegistry::registerAirwindow({"Air3", "Brightness", 53, "Air3 creates a new form of air-band EQ based on Kalman filtering.", airwinconsolidated::Air3::kNumParameters, "2024-03-10", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Apicolypse.h" -int Apicolypse_unused = AirwinRegistry::registerAirwindow({"Apicolypse", "Tone Color", 342, "Apicolypse is a re-release of my old API-style color adder, exacly as it was.", airwinconsolidated::Apicolypse::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Apicolypse_unused = AirwinRegistry::registerAirwindow({"Apicolypse", "Tone Color", 343, "Apicolypse is a re-release of my old API-style color adder, exacly as it was.", airwinconsolidated::Apicolypse::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/AtmosphereBuss.h" int AtmosphereBuss_unused = AirwinRegistry::registerAirwindow({"AtmosphereBuss", "Consoles", 123, "AtmosphereBuss is Console5 processing with powerful new acoustic distance effects.", airwinconsolidated::AtmosphereBuss::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/AtmosphereChannel.h" @@ -25,13 +25,13 @@ int AtmosphereChannel_unused = AirwinRegistry::registerAirwindow({"AtmosphereCha #include "autogen_airwin/Aura.h" int Aura_unused = AirwinRegistry::registerAirwindow({"Aura", "Effects", 201, "Aura is a new kind of resonant lowpass EQ.", airwinconsolidated::Aura::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/AutoPan.h" -int AutoPan_unused = AirwinRegistry::registerAirwindow({"AutoPan", "Stereo", 312, "AutoPan is for getting some organic stereo movement into your mix.", airwinconsolidated::AutoPan::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int AutoPan_unused = AirwinRegistry::registerAirwindow({"AutoPan", "Stereo", 313, "AutoPan is for getting some organic stereo movement into your mix.", airwinconsolidated::AutoPan::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/AverMatrix.h" int AverMatrix_unused = AirwinRegistry::registerAirwindow({"AverMatrix", "Filter", 231, "AverMatrix turns averaging into a full-featured EQ.", airwinconsolidated::AverMatrix::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Average.h" int Average_unused = AirwinRegistry::registerAirwindow({"Average", "Filter", 232, "Average is a distinctive sort of lowpass filter.", airwinconsolidated::Average::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Balanced.h" -int Balanced_unused = AirwinRegistry::registerAirwindow({"Balanced", "Utility", 375, "Balanced lets you run an XLR input into a stereo input, sum it to mono, and use it.", airwinconsolidated::Balanced::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Balanced_unused = AirwinRegistry::registerAirwindow({"Balanced", "Utility", 376, "Balanced lets you run an XLR input into a stereo input, sum it to mono, and use it.", airwinconsolidated::Balanced::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/BassAmp.h" int BassAmp_unused = AirwinRegistry::registerAirwindow({"BassAmp", "Amp Sims", 35, "BassAmp is an old plugin with new tweaks, that gives some bass guitar tones.", airwinconsolidated::BassAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/BassDrive.h" @@ -67,11 +67,11 @@ int BiquadTriple_unused = AirwinRegistry::registerAirwindow({"BiquadTriple", "Bi #include "autogen_airwin/BitGlitter.h" int BitGlitter_unused = AirwinRegistry::registerAirwindow({"BitGlitter", "Lo-Fi", 256, "BitGlitter is an old-sampler style digital lo-fi plugin.", airwinconsolidated::BitGlitter::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/BitShiftGain.h" -int BitShiftGain_unused = AirwinRegistry::registerAirwindow({"BitShiftGain", "Utility", 359, "BitShiftGain is the ‘One Weird Trick’ perfect boost/pad, but in 6db increments ONLY.", airwinconsolidated::BitShiftGain::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Latest" }}); +int BitShiftGain_unused = AirwinRegistry::registerAirwindow({"BitShiftGain", "Utility", 360, "BitShiftGain is the ‘One Weird Trick’ perfect boost/pad, but in 6db increments ONLY.", airwinconsolidated::BitShiftGain::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Latest" }}); #include "autogen_airwin/BitShiftPan.h" -int BitShiftPan_unused = AirwinRegistry::registerAirwindow({"BitShiftPan", "Utility", 358, "BitShiftPan gives you a gain and a pan control that are ONLY done using bit shifts.", airwinconsolidated::BitShiftPan::kNumParameters, "2023-05-13", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int BitShiftPan_unused = AirwinRegistry::registerAirwindow({"BitShiftPan", "Utility", 359, "BitShiftPan gives you a gain and a pan control that are ONLY done using bit shifts.", airwinconsolidated::BitShiftPan::kNumParameters, "2023-05-13", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Bite.h" -int Bite_unused = AirwinRegistry::registerAirwindow({"Bite", "Lo-Fi", 261, "Bite is an unusual edge-maker.", airwinconsolidated::Bite::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Bite_unused = AirwinRegistry::registerAirwindow({"Bite", "Lo-Fi", 262, "Bite is an unusual edge-maker.", airwinconsolidated::Bite::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/BlockParty.h" int BlockParty_unused = AirwinRegistry::registerAirwindow({"BlockParty", "Dynamics", 175, "BlockParty is like a moderately saturated analog limiter.", airwinconsolidated::BlockParty::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/BrassRider.h" @@ -85,7 +85,7 @@ int BrightAmbience3_unused = AirwinRegistry::registerAirwindow({"BrightAmbience3 #include "autogen_airwin/BuildATPDF.h" int BuildATPDF_unused = AirwinRegistry::registerAirwindow({"BuildATPDF", "Dithers", 153, "BuildATPDF is a dither-making toolkit.", airwinconsolidated::BuildATPDF::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/BussColors4.h" -int BussColors4_unused = AirwinRegistry::registerAirwindow({"BussColors4", "Tone Color", 340, "BussColors4 is the Airwindows console emulations, now working up to 192K correctly.", airwinconsolidated::BussColors4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int BussColors4_unused = AirwinRegistry::registerAirwindow({"BussColors4", "Tone Color", 341, "BussColors4 is the Airwindows console emulations, now working up to 192K correctly.", airwinconsolidated::BussColors4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ButterComp.h" int ButterComp_unused = AirwinRegistry::registerAirwindow({"ButterComp", "Dynamics", 180, "ButterComp is my softest, smoothest compressor.", airwinconsolidated::ButterComp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ButterComp2.h" @@ -101,35 +101,35 @@ int CStrip2_unused = AirwinRegistry::registerAirwindow({"CStrip2", "Filter", 224 #include "autogen_airwin/Cabs.h" int Cabs_unused = AirwinRegistry::registerAirwindow({"Cabs", "Amp Sims", 33, "Cabs is an Airwindows guitar speaker cabinet simulator.", airwinconsolidated::Cabs::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Calibre.h" -int Calibre_unused = AirwinRegistry::registerAirwindow({"Calibre", "Tone Color", 345, "Calibre is a re-release of another old Character plugin.", airwinconsolidated::Calibre::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Calibre_unused = AirwinRegistry::registerAirwindow({"Calibre", "Tone Color", 346, "Calibre is a re-release of another old Character plugin.", airwinconsolidated::Calibre::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Capacitor.h" int Capacitor_unused = AirwinRegistry::registerAirwindow({"Capacitor", "Filter", 238, "Capacitor is a lowpass/highpass filter of a new type.", airwinconsolidated::Capacitor::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Capacitor2.h" int Capacitor2_unused = AirwinRegistry::registerAirwindow({"Capacitor2", "Filter", 219, "Capacitor2 is Capacitor with extra analog modeling and mojo.", airwinconsolidated::Capacitor2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Chamber.h" -int Chamber_unused = AirwinRegistry::registerAirwindow({"Chamber", "Reverb", 285, "Chamber is a feedforward reverb based on the golden ratio.", airwinconsolidated::Chamber::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended" }}); +int Chamber_unused = AirwinRegistry::registerAirwindow({"Chamber", "Reverb", 286, "Chamber is a feedforward reverb based on the golden ratio.", airwinconsolidated::Chamber::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended" }}); #include "autogen_airwin/Chamber2.h" -int Chamber2_unused = AirwinRegistry::registerAirwindow({"Chamber2", "Reverb", 284, "Chamber2 is a feedforward reverb, a blur delay, and a glitch topping!", airwinconsolidated::Chamber2::kNumParameters, "2023-02-04", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Chamber2_unused = AirwinRegistry::registerAirwindow({"Chamber2", "Reverb", 285, "Chamber2 is a feedforward reverb, a blur delay, and a glitch topping!", airwinconsolidated::Chamber2::kNumParameters, "2023-02-04", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Channel4.h" -int Channel4_unused = AirwinRegistry::registerAirwindow({"Channel4", "Tone Color", 354, "Channel4 is a tone coloring plugin that gives more of an analog feel.", airwinconsolidated::Channel4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Channel4_unused = AirwinRegistry::registerAirwindow({"Channel4", "Tone Color", 355, "Channel4 is a tone coloring plugin that gives more of an analog feel.", airwinconsolidated::Channel4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Channel5.h" -int Channel5_unused = AirwinRegistry::registerAirwindow({"Channel5", "Tone Color", 353, "Channel5 is Channel for 2018, with new subtleties.", airwinconsolidated::Channel5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Channel5_unused = AirwinRegistry::registerAirwindow({"Channel5", "Tone Color", 354, "Channel5 is Channel for 2018, with new subtleties.", airwinconsolidated::Channel5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Channel6.h" -int Channel6_unused = AirwinRegistry::registerAirwindow({"Channel6", "Tone Color", 352, "Channel6 uses the Spiral algorithm.", airwinconsolidated::Channel6::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Channel6_unused = AirwinRegistry::registerAirwindow({"Channel6", "Tone Color", 353, "Channel6 uses the Spiral algorithm.", airwinconsolidated::Channel6::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Channel7.h" -int Channel7_unused = AirwinRegistry::registerAirwindow({"Channel7", "Tone Color", 351, "Channel7 improves slew clipping and lets you blend Channel 6 and 5.", airwinconsolidated::Channel7::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Channel7_unused = AirwinRegistry::registerAirwindow({"Channel7", "Tone Color", 352, "Channel7 improves slew clipping and lets you blend Channel 6 and 5.", airwinconsolidated::Channel7::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Channel8.h" -int Channel8_unused = AirwinRegistry::registerAirwindow({"Channel8", "Tone Color", 350, "Channel8 is Channel7 with updates from Capacitor2 and Slew3. More and better of what Channel is.", airwinconsolidated::Channel8::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Channel8_unused = AirwinRegistry::registerAirwindow({"Channel8", "Tone Color", 351, "Channel8 is Channel7 with updates from Capacitor2 and Slew3. More and better of what Channel is.", airwinconsolidated::Channel8::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Channel9.h" -int Channel9_unused = AirwinRegistry::registerAirwindow({"Channel9", "Tone Color", 341, "Channel9 is Channel8 with ultrasonic filtering, and new Teac and Mackie 'low end' settings.", airwinconsolidated::Channel9::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Channel9_unused = AirwinRegistry::registerAirwindow({"Channel9", "Tone Color", 342, "Channel9 is Channel8 with ultrasonic filtering, and new Teac and Mackie 'low end' settings.", airwinconsolidated::Channel9::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Chorus.h" int Chorus_unused = AirwinRegistry::registerAirwindow({"Chorus", "Ambience", 22, "Chorus is a mono chorus, also works as a vibrato.", airwinconsolidated::Chorus::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ChorusEnsemble.h" int ChorusEnsemble_unused = AirwinRegistry::registerAirwindow({"ChorusEnsemble", "Ambience", 23, "ChorusEnsemble is a more complex, multi-tap mono chorus.", airwinconsolidated::ChorusEnsemble::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ChromeOxide.h" -int ChromeOxide_unused = AirwinRegistry::registerAirwindow({"ChromeOxide", "Lo-Fi", 258, "ChromeOxide is an alternate path to vibey old tape sonics.", airwinconsolidated::ChromeOxide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int ChromeOxide_unused = AirwinRegistry::registerAirwindow({"ChromeOxide", "Lo-Fi", 259, "ChromeOxide is an alternate path to vibey old tape sonics.", airwinconsolidated::ChromeOxide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Cider.h" -int Cider_unused = AirwinRegistry::registerAirwindow({"Cider", "Tone Color", 346, "Cider is a re-release of another old Character plugin.", airwinconsolidated::Cider::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Cider_unused = AirwinRegistry::registerAirwindow({"Cider", "Tone Color", 347, "Cider is a re-release of another old Character plugin.", airwinconsolidated::Cider::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ClearCoat.h" int ClearCoat_unused = AirwinRegistry::registerAirwindow({"ClearCoat", "Ambience", 0, "ClearCoat is an array of bright ambience reverbs.", airwinconsolidated::ClearCoat::kNumParameters, "2023-11-06", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/ClipOnly2.h" @@ -139,11 +139,11 @@ int ClipSoftly_unused = AirwinRegistry::registerAirwindow({"ClipSoftly", "Clippi #include "autogen_airwin/CloudCoat.h" int CloudCoat_unused = AirwinRegistry::registerAirwindow({"CloudCoat", "Effects", 193, "CloudCoat is an array of blur effects with a taste for evil.", airwinconsolidated::CloudCoat::kNumParameters, "2024-02-03", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Coils.h" -int Coils_unused = AirwinRegistry::registerAirwindow({"Coils", "Subtlety", 329, "Coils models the types of distortion you'll find in transformers.", airwinconsolidated::Coils::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Coils_unused = AirwinRegistry::registerAirwindow({"Coils", "Subtlety", 330, "Coils models the types of distortion you'll find in transformers.", airwinconsolidated::Coils::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Coils2.h" -int Coils2_unused = AirwinRegistry::registerAirwindow({"Coils2", "Subtlety", 324, "Coils2 is a transformer overdrive emulator.", airwinconsolidated::Coils2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Coils2_unused = AirwinRegistry::registerAirwindow({"Coils2", "Subtlety", 325, "Coils2 is a transformer overdrive emulator.", airwinconsolidated::Coils2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Cojones.h" -int Cojones_unused = AirwinRegistry::registerAirwindow({"Cojones", "Lo-Fi", 259, "Cojones is a new kind of distorty.", airwinconsolidated::Cojones::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Cojones_unused = AirwinRegistry::registerAirwindow({"Cojones", "Lo-Fi", 260, "Cojones is a new kind of distorty.", airwinconsolidated::Cojones::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Compresaturator.h" int Compresaturator_unused = AirwinRegistry::registerAirwindow({"Compresaturator", "Dynamics", 178, "Compresaturator fades between compressing and soft clipping.", airwinconsolidated::Compresaturator::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Console0Buss.h" @@ -215,25 +215,25 @@ int ConsoleXBuss_unused = AirwinRegistry::registerAirwindow({"ConsoleXBuss", "Un #include "autogen_airwin/ConsoleXChannel.h" int ConsoleXChannel_unused = AirwinRegistry::registerAirwindow({"ConsoleXChannel", "Unclassified", -1, "", airwinconsolidated::ConsoleXChannel::kNumParameters, "2024-05-25", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ContentHideD.h" -int ContentHideD_unused = AirwinRegistry::registerAirwindow({"ContentHideD", "Utility", 379, "ContentHideD mutes audio except for brief glimpses.", airwinconsolidated::ContentHideD::kNumParameters, "2024-03-30", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int ContentHideD_unused = AirwinRegistry::registerAirwindow({"ContentHideD", "Utility", 380, "ContentHideD mutes audio except for brief glimpses.", airwinconsolidated::ContentHideD::kNumParameters, "2024-03-30", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/CreamCoat.h" -int CreamCoat_unused = AirwinRegistry::registerAirwindow({"CreamCoat", "Reverb", 273, "CreamCoat is a swiss army knife reverb with soft undersampling.", airwinconsolidated::CreamCoat::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int CreamCoat_unused = AirwinRegistry::registerAirwindow({"CreamCoat", "Reverb", 274, "CreamCoat is a swiss army knife reverb with soft undersampling.", airwinconsolidated::CreamCoat::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Creature.h" -int Creature_unused = AirwinRegistry::registerAirwindow({"Creature", "Saturation", 293, "Creature is a soft slew saturator, a new class of noisechanger.", airwinconsolidated::Creature::kNumParameters, "2023-08-19", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Creature_unused = AirwinRegistry::registerAirwindow({"Creature", "Saturation", 294, "Creature is a soft slew saturator, a new class of noisechanger.", airwinconsolidated::Creature::kNumParameters, "2023-08-19", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/CrickBass.h" int CrickBass_unused = AirwinRegistry::registerAirwindow({"CrickBass", "Amp Sims", 28, "CrickBass is a flexible but aggressive bass tone for dual pickups.", airwinconsolidated::CrickBass::kNumParameters, "2023-09-17", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/CrunchCoat.h" -int CrunchCoat_unused = AirwinRegistry::registerAirwindow({"CrunchCoat", "Reverb", 279, "CrunchCoat is a cursed retro digital reverb!", airwinconsolidated::CrunchCoat::kNumParameters, "2024-05-25", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int CrunchCoat_unused = AirwinRegistry::registerAirwindow({"CrunchCoat", "Reverb", 280, "CrunchCoat is a cursed retro digital reverb!", airwinconsolidated::CrunchCoat::kNumParameters, "2024-05-25", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/CrunchyGrooveWear.h" int CrunchyGrooveWear_unused = AirwinRegistry::registerAirwindow({"CrunchyGrooveWear", "Lo-Fi", 251, "CrunchyGrooveWear is a version of GrooveWear for more edge and distortion.", airwinconsolidated::CrunchyGrooveWear::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Crystal.h" -int Crystal_unused = AirwinRegistry::registerAirwindow({"Crystal", "Tone Color", 347, "Crystal is a tone shaper and buss soft-clipper.", airwinconsolidated::Crystal::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Crystal_unused = AirwinRegistry::registerAirwindow({"Crystal", "Tone Color", 348, "Crystal is a tone shaper and buss soft-clipper.", airwinconsolidated::Crystal::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/DCVoltage.h" -int DCVoltage_unused = AirwinRegistry::registerAirwindow({"DCVoltage", "Utility", 368, "DCVoltage is literally a DC control voltage, in a plugin.", airwinconsolidated::DCVoltage::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int DCVoltage_unused = AirwinRegistry::registerAirwindow({"DCVoltage", "Utility", 369, "DCVoltage is literally a DC control voltage, in a plugin.", airwinconsolidated::DCVoltage::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Dark.h" int Dark_unused = AirwinRegistry::registerAirwindow({"Dark", "Dithers", 140, "Dark is a wordlength reducer that gives your music a blacker backdrop.", airwinconsolidated::Dark::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/DarkNoise.h" -int DarkNoise_unused = AirwinRegistry::registerAirwindow({"DarkNoise", "Noise", 268, "DarkNoise is an alternative method for producing bassier noise directly. Sound design stuff.", airwinconsolidated::DarkNoise::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int DarkNoise_unused = AirwinRegistry::registerAirwindow({"DarkNoise", "Noise", 269, "DarkNoise is an alternative method for producing bassier noise directly. Sound design stuff.", airwinconsolidated::DarkNoise::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/DeBess.h" int DeBess_unused = AirwinRegistry::registerAirwindow({"DeBess", "Brightness", 55, "DeBess is an improved DeEss, with perfect rejection of non-ess audio.", airwinconsolidated::DeBess::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/DeEss.h" @@ -247,21 +247,21 @@ int DeRez2_unused = AirwinRegistry::registerAirwindow({"DeRez2", "Lo-Fi", 255, " #include "autogen_airwin/DeRez3.h" int DeRez3_unused = AirwinRegistry::registerAirwindow({"DeRez3", "Lo-Fi", 249, "DeRez3 reinvents retro digital tones.", airwinconsolidated::DeRez3::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Deckwrecka.h" -int Deckwrecka_unused = AirwinRegistry::registerAirwindow({"Deckwrecka", "Lo-Fi", 262, "Deckwrecka fattens and dirties up beats.", airwinconsolidated::Deckwrecka::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Deckwrecka_unused = AirwinRegistry::registerAirwindow({"Deckwrecka", "Lo-Fi", 263, "Deckwrecka fattens and dirties up beats.", airwinconsolidated::Deckwrecka::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Density.h" int Density_unused = AirwinRegistry::registerAirwindow({"Density", "Distortion", 134, "Density is a Swiss Army Knife of saturation/antisaturation.", airwinconsolidated::Density::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Density2.h" int Density2_unused = AirwinRegistry::registerAirwindow({"Density2", "Distortion", 133, "Density2 is a different color for Density, some old code I had that people wanted.", airwinconsolidated::Density2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Desk.h" -int Desk_unused = AirwinRegistry::registerAirwindow({"Desk", "Subtlety", 330, "Desk is classic Airwindows subtle analog modeling.", airwinconsolidated::Desk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Desk_unused = AirwinRegistry::registerAirwindow({"Desk", "Subtlety", 331, "Desk is classic Airwindows subtle analog modeling.", airwinconsolidated::Desk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Desk4.h" -int Desk4_unused = AirwinRegistry::registerAirwindow({"Desk4", "Saturation", 305, "Desk4 is distinctive analog coloration (a tuneable version of the control-less Desk plugins)", airwinconsolidated::Desk4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Desk4_unused = AirwinRegistry::registerAirwindow({"Desk4", "Saturation", 306, "Desk4 is distinctive analog coloration (a tuneable version of the control-less Desk plugins)", airwinconsolidated::Desk4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/DigitalBlack.h" int DigitalBlack_unused = AirwinRegistry::registerAirwindow({"DigitalBlack", "Dynamics", 167, "DigitalBlack is a quick, staccato gate.", airwinconsolidated::DigitalBlack::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Dirt.h" int Dirt_unused = AirwinRegistry::registerAirwindow({"Dirt", "Distortion", 130, "Dirt is a soft-clip distortion in the spirit of Edge.", airwinconsolidated::Dirt::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Discontinuity.h" -int Discontinuity_unused = AirwinRegistry::registerAirwindow({"Discontinuity", "Subtlety", 317, "Discontinuity models air under intense loudness.", airwinconsolidated::Discontinuity::kNumParameters, "2024-03-10", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int Discontinuity_unused = AirwinRegistry::registerAirwindow({"Discontinuity", "Subtlety", 318, "Discontinuity models air under intense loudness.", airwinconsolidated::Discontinuity::kNumParameters, "2024-03-10", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Distance.h" int Distance_unused = AirwinRegistry::registerAirwindow({"Distance", "Filter", 244, "Distance is a sound design or reverb far-away-izer.", airwinconsolidated::Distance::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Distance2.h" @@ -297,21 +297,21 @@ int Dubly_unused = AirwinRegistry::registerAirwindow({"Dubly", "Effects", 195, " #include "autogen_airwin/Dubly2.h" int Dubly2_unused = AirwinRegistry::registerAirwindow({"Dubly2", "Effects", 191, "Dubly2 is a key part of seventies sonics!", airwinconsolidated::Dubly2::kNumParameters, "2024-07-28", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/DustBunny.h" -int DustBunny_unused = AirwinRegistry::registerAirwindow({"DustBunny", "Lo-Fi", 263, "DustBunny is unpredictable distorty noise, like dust wedged under your turntable needle.", airwinconsolidated::DustBunny::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int DustBunny_unused = AirwinRegistry::registerAirwindow({"DustBunny", "Lo-Fi", 264, "DustBunny is unpredictable distorty noise, like dust wedged under your turntable needle.", airwinconsolidated::DustBunny::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Dynamics.h" int Dynamics_unused = AirwinRegistry::registerAirwindow({"Dynamics", "Dynamics", 165, "Dynamics is a combination compressor gate.", airwinconsolidated::Dynamics::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Dyno.h" -int Dyno_unused = AirwinRegistry::registerAirwindow({"Dyno", "Saturation", 302, "Dyno is a lot like Mojo, but for intensity instead of loudness.", airwinconsolidated::Dyno::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Dyno_unused = AirwinRegistry::registerAirwindow({"Dyno", "Saturation", 303, "Dyno is a lot like Mojo, but for intensity instead of loudness.", airwinconsolidated::Dyno::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/EQ.h" int EQ_unused = AirwinRegistry::registerAirwindow({"EQ", "Filter", 237, "EQ is just the EQ parts of CStrip.", airwinconsolidated::EQ::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/EdIsDim.h" -int EdIsDim_unused = AirwinRegistry::registerAirwindow({"EdIsDim", "Utility", 369, "EdIsDim is mid/side conversion utility plugins.", airwinconsolidated::EdIsDim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int EdIsDim_unused = AirwinRegistry::registerAirwindow({"EdIsDim", "Utility", 370, "EdIsDim is mid/side conversion utility plugins.", airwinconsolidated::EdIsDim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Edge.h" int Edge_unused = AirwinRegistry::registerAirwindow({"Edge", "Distortion", 129, "Edge is a seven-stage distortion with Hypersonic filtering and tone shaping controls.", airwinconsolidated::Edge::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Elation.h" -int Elation_unused = AirwinRegistry::registerAirwindow({"Elation", "Tone Color", 344, "Elation is a re-release of another old Character plugin.", airwinconsolidated::Elation::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Elation_unused = AirwinRegistry::registerAirwindow({"Elation", "Tone Color", 345, "Elation is a re-release of another old Character plugin.", airwinconsolidated::Elation::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ElectroHat.h" -int ElectroHat_unused = AirwinRegistry::registerAirwindow({"ElectroHat", "Noise", 269, "ElectroHat is a hi-hat tone generator that uses the original sound as a control voltage.", airwinconsolidated::ElectroHat::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int ElectroHat_unused = AirwinRegistry::registerAirwindow({"ElectroHat", "Noise", 270, "ElectroHat is a hi-hat tone generator that uses the original sound as a control voltage.", airwinconsolidated::ElectroHat::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Energy.h" int Energy_unused = AirwinRegistry::registerAirwindow({"Energy", "Effects", 208, "Energy is electrifying fixed-frequency treble boosts.", airwinconsolidated::Energy::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Energy2.h" @@ -323,7 +323,7 @@ int EveryConsole_unused = AirwinRegistry::registerAirwindow({"EveryConsole", "Co #include "autogen_airwin/EverySlew.h" int EverySlew_unused = AirwinRegistry::registerAirwindow({"EverySlew", "Brightness", 62, "EverySlew is a wide variety of unique sound processing tools.", airwinconsolidated::EverySlew::kNumParameters, "2023-07-22", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/EveryTrim.h" -int EveryTrim_unused = AirwinRegistry::registerAirwindow({"EveryTrim", "Utility", 362, "EveryTrim is Left/Right, Mid/Side, and Master in one plugin.", airwinconsolidated::EveryTrim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int EveryTrim_unused = AirwinRegistry::registerAirwindow({"EveryTrim", "Utility", 363, "EveryTrim is Left/Right, Mid/Side, and Master in one plugin.", airwinconsolidated::EveryTrim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Exciter.h" int Exciter_unused = AirwinRegistry::registerAirwindow({"Exciter", "Effects", 206, "Exciter is an Aural Exciter plugin that can be both subtle and extreme.", airwinconsolidated::Exciter::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Facet.h" @@ -335,7 +335,7 @@ int FinalClip_unused = AirwinRegistry::registerAirwindow({"FinalClip", "Clipping #include "autogen_airwin/FireAmp.h" int FireAmp_unused = AirwinRegistry::registerAirwindow({"FireAmp", "Amp Sims", 26, "FireAmp is a bright, loud, tubey amp sim for leads and dirt guitar.", airwinconsolidated::FireAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Flipity.h" -int Flipity_unused = AirwinRegistry::registerAirwindow({"Flipity", "Utility", 376, "Flipity is a channel phase flipper/swapper utility.", airwinconsolidated::Flipity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Flipity_unused = AirwinRegistry::registerAirwindow({"Flipity", "Utility", 377, "Flipity is a channel phase flipper/swapper utility.", airwinconsolidated::Flipity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Floor.h" int Floor_unused = AirwinRegistry::registerAirwindow({"Floor", "Bass", 42, "Floor is fake bottom octave for fun and profit!", airwinconsolidated::Floor::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Flutter.h" @@ -343,17 +343,17 @@ int Flutter_unused = AirwinRegistry::registerAirwindow({"Flutter", "Lo-Fi", 254, #include "autogen_airwin/Flutter2.h" int Flutter2_unused = AirwinRegistry::registerAirwindow({"Flutter2", "Lo-Fi", 248, "Flutter2 is the flutter from ToTape7, standalone.", airwinconsolidated::Flutter2::kNumParameters, "2024-07-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Focus.h" -int Focus_unused = AirwinRegistry::registerAirwindow({"Focus", "Saturation", 300, "Focus brings out clarity by distorting. Aggressive, subtle, flexible.", airwinconsolidated::Focus::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Focus_unused = AirwinRegistry::registerAirwindow({"Focus", "Saturation", 301, "Focus brings out clarity by distorting. Aggressive, subtle, flexible.", airwinconsolidated::Focus::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Fracture.h" int Fracture_unused = AirwinRegistry::registerAirwindow({"Fracture", "Effects", 210, "Fracture is a frequency multiplier/waveshaper with a soft disruption to the sound.", airwinconsolidated::Fracture::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Fracture2.h" int Fracture2_unused = AirwinRegistry::registerAirwindow({"Fracture2", "Effects", 194, "Fracture2 is a wavefolder that allows more extreme disruption.", airwinconsolidated::Fracture2::kNumParameters, "2023-06-25", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/FromTape.h" -int FromTape_unused = AirwinRegistry::registerAirwindow({"FromTape", "Tape", 334, "FromTape is a minimalist, cleaner analog tape emulation.", airwinconsolidated::FromTape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int FromTape_unused = AirwinRegistry::registerAirwindow({"FromTape", "Tape", 335, "FromTape is a minimalist, cleaner analog tape emulation.", airwinconsolidated::FromTape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Galactic.h" -int Galactic_unused = AirwinRegistry::registerAirwindow({"Galactic", "Reverb", 274, "Galactic is a super-reverb designed specially for pads and space ambient.", airwinconsolidated::Galactic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended" }}); +int Galactic_unused = AirwinRegistry::registerAirwindow({"Galactic", "Reverb", 275, "Galactic is a super-reverb designed specially for pads and space ambient.", airwinconsolidated::Galactic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended" }}); #include "autogen_airwin/Galactic2.h" -int Galactic2_unused = AirwinRegistry::registerAirwindow({"Galactic2", "Reverb", 282, "Galactic2 is a super-reverb REdesigned specially for pads and space ambient.", airwinconsolidated::Galactic2::kNumParameters, "2023-04-23", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Galactic2_unused = AirwinRegistry::registerAirwindow({"Galactic2", "Reverb", 283, "Galactic2 is a super-reverb REdesigned specially for pads and space ambient.", airwinconsolidated::Galactic2::kNumParameters, "2023-04-23", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/GalacticVibe.h" int GalacticVibe_unused = AirwinRegistry::registerAirwindow({"GalacticVibe", "Effects", 192, "GalacticVibe is the stereo vibrato from the original Galactic reverb.", airwinconsolidated::GalacticVibe::kNumParameters, "2023-04-23", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Gatelope.h" @@ -363,7 +363,7 @@ int GlitchShifter_unused = AirwinRegistry::registerAirwindow({"GlitchShifter", " #include "autogen_airwin/GoldenSlew.h" int GoldenSlew_unused = AirwinRegistry::registerAirwindow({"GoldenSlew", "Brightness", 56, "GoldenSlew is a multistage slew clipper based on the Golden Ratio.", airwinconsolidated::GoldenSlew::kNumParameters, "2023-07-02", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Golem.h" -int Golem_unused = AirwinRegistry::registerAirwindow({"Golem", "Utility", 367, "Golem lets you blend a stereo track of two mics on an amp.", airwinconsolidated::Golem::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Golem_unused = AirwinRegistry::registerAirwindow({"Golem", "Utility", 368, "Golem lets you blend a stereo track of two mics on an amp.", airwinconsolidated::Golem::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/GrindAmp.h" int GrindAmp_unused = AirwinRegistry::registerAirwindow({"GrindAmp", "Amp Sims", 25, "GrindAmp is a heavier amp sim for many purposes.", airwinconsolidated::GrindAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Gringer.h" @@ -375,7 +375,7 @@ int GuitarConditioner_unused = AirwinRegistry::registerAirwindow({"GuitarConditi #include "autogen_airwin/HardVacuum.h" int HardVacuum_unused = AirwinRegistry::registerAirwindow({"HardVacuum", "Distortion", 137, "HardVacuum is tube style saturation effects.", airwinconsolidated::HardVacuum::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/HermeTrim.h" -int HermeTrim_unused = AirwinRegistry::registerAirwindow({"HermeTrim", "Utility", 363, "HermeTrim is Very Fine Adjustments, otherwise just like EveryTrim.", airwinconsolidated::HermeTrim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int HermeTrim_unused = AirwinRegistry::registerAirwindow({"HermeTrim", "Utility", 364, "HermeTrim is Very Fine Adjustments, otherwise just like EveryTrim.", airwinconsolidated::HermeTrim::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Hermepass.h" int Hermepass_unused = AirwinRegistry::registerAirwindow({"Hermepass", "Bass", 38, "Hermepass is a mastering highpass to set by ear only.", airwinconsolidated::Hermepass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/HighGlossDither.h" @@ -393,33 +393,33 @@ int Holt2_unused = AirwinRegistry::registerAirwindow({"Holt2", "Filter", 228, "H #include "autogen_airwin/Hombre.h" int Hombre_unused = AirwinRegistry::registerAirwindow({"Hombre", "Ambience", 17, "Hombre is atmosphere and texture (through very short delays).", airwinconsolidated::Hombre::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Huge.h" -int Huge_unused = AirwinRegistry::registerAirwindow({"Huge", "Saturation", 294, "Huge is a dirty, dirty loudenator.", airwinconsolidated::Huge::kNumParameters, "2023-03-31", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Huge_unused = AirwinRegistry::registerAirwindow({"Huge", "Saturation", 295, "Huge is a dirty, dirty loudenator.", airwinconsolidated::Huge::kNumParameters, "2023-03-31", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Hull.h" int Hull_unused = AirwinRegistry::registerAirwindow({"Hull", "Filter", 236, "Hull is an alternate form of highpass/lowpass filter.", airwinconsolidated::Hull::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Hull2.h" int Hull2_unused = AirwinRegistry::registerAirwindow({"Hull2", "Filter", 234, "Hull2 is a very clear three-band EQ.", airwinconsolidated::Hull2::kNumParameters, "2023-12-09", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Hype.h" -int Hype_unused = AirwinRegistry::registerAirwindow({"Hype", "Subtlety", 318, "Hype is a treble softening experiment gone strangely awry :)", airwinconsolidated::Hype::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Hype_unused = AirwinRegistry::registerAirwindow({"Hype", "Subtlety", 319, "Hype is a treble softening experiment gone strangely awry :)", airwinconsolidated::Hype::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/HypersonX.h" int HypersonX_unused = AirwinRegistry::registerAirwindow({"HypersonX", "Brightness", 72, "HypersonX is like UltrasonX but with seven stages instead of five.", airwinconsolidated::HypersonX::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Hypersonic.h" int Hypersonic_unused = AirwinRegistry::registerAirwindow({"Hypersonic", "Brightness", 71, "Hypersonic is Ultrasonic, but steeper and higher cutoff.", airwinconsolidated::Hypersonic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Infinity.h" -int Infinity_unused = AirwinRegistry::registerAirwindow({"Infinity", "Reverb", 289, "Infinity is a MatrixVerb specifically designed to sustain and layer sounds forever.", airwinconsolidated::Infinity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Infinity_unused = AirwinRegistry::registerAirwindow({"Infinity", "Reverb", 290, "Infinity is a MatrixVerb specifically designed to sustain and layer sounds forever.", airwinconsolidated::Infinity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Infinity2.h" -int Infinity2_unused = AirwinRegistry::registerAirwindow({"Infinity2", "Reverb", 286, "Infinity2 expands Infinity with more tone shaping and a much-requested kill-switch!", airwinconsolidated::Infinity2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Infinity2_unused = AirwinRegistry::registerAirwindow({"Infinity2", "Reverb", 287, "Infinity2 expands Infinity with more tone shaping and a much-requested kill-switch!", airwinconsolidated::Infinity2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Inflamer.h" -int Inflamer_unused = AirwinRegistry::registerAirwindow({"Inflamer", "Subtlety", 320, "Inflamer is an Airwindowsized take on the waveshapers in Oxford Inflator.", airwinconsolidated::Inflamer::kNumParameters, "2023-08-12", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int Inflamer_unused = AirwinRegistry::registerAirwindow({"Inflamer", "Subtlety", 321, "Inflamer is an Airwindowsized take on the waveshapers in Oxford Inflator.", airwinconsolidated::Inflamer::kNumParameters, "2023-08-12", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Infrasonic.h" int Infrasonic_unused = AirwinRegistry::registerAirwindow({"Infrasonic", "Bass", 43, "Infrasonic is a very steep subsonic filter, built like Ultrasonic.", airwinconsolidated::Infrasonic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Interstage.h" -int Interstage_unused = AirwinRegistry::registerAirwindow({"Interstage", "Subtlety", 325, "Interstage is a subtle and sophisticated analogifier.", airwinconsolidated::Interstage::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Latest" }}); +int Interstage_unused = AirwinRegistry::registerAirwindow({"Interstage", "Subtlety", 326, "Interstage is a subtle and sophisticated analogifier.", airwinconsolidated::Interstage::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Latest" }}); #include "autogen_airwin/IronOxide5.h" -int IronOxide5_unused = AirwinRegistry::registerAirwindow({"IronOxide5", "Tape", 337, "IronOxide5 is the old school, heavily colored Airwindows tape emulation.", airwinconsolidated::IronOxide5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int IronOxide5_unused = AirwinRegistry::registerAirwindow({"IronOxide5", "Tape", 338, "IronOxide5 is the old school, heavily colored Airwindows tape emulation.", airwinconsolidated::IronOxide5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/IronOxideClassic.h" -int IronOxideClassic_unused = AirwinRegistry::registerAirwindow({"IronOxideClassic", "Tape", 339, "IronOxideClassic is the purer, simpler, early form of Iron Oxide before all the features.", airwinconsolidated::IronOxideClassic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int IronOxideClassic_unused = AirwinRegistry::registerAirwindow({"IronOxideClassic", "Tape", 340, "IronOxideClassic is the purer, simpler, early form of Iron Oxide before all the features.", airwinconsolidated::IronOxideClassic::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/IronOxideClassic2.h" -int IronOxideClassic2_unused = AirwinRegistry::registerAirwindow({"IronOxideClassic2", "Tape", 336, "IronOxideClassic2 is my bandpassy tape sim, updated for high sample rate and aliasing control.", airwinconsolidated::IronOxideClassic2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int IronOxideClassic2_unused = AirwinRegistry::registerAirwindow({"IronOxideClassic2", "Tape", 337, "IronOxideClassic2 is my bandpassy tape sim, updated for high sample rate and aliasing control.", airwinconsolidated::IronOxideClassic2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Isolator.h" int Isolator_unused = AirwinRegistry::registerAirwindow({"Isolator", "Filter", 239, "Isolator is a steep highpass or lowpass filter, like you might find in a speaker crossover.", airwinconsolidated::Isolator::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Isolator2.h" @@ -427,11 +427,11 @@ int Isolator2_unused = AirwinRegistry::registerAirwindow({"Isolator2", "Filter", #include "autogen_airwin/Kalman.h" int Kalman_unused = AirwinRegistry::registerAirwindow({"Kalman", "Filter", 227, "Kalman is not a real filter!", airwinconsolidated::Kalman::kNumParameters, "2024-03-10", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/LRFlipTimer.h" -int LRFlipTimer_unused = AirwinRegistry::registerAirwindow({"LRFlipTimer", "Stereo", 313, "LRFlipTimer is a utility that swaps Left with Right every few (1-10) minutes.", airwinconsolidated::LRFlipTimer::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int LRFlipTimer_unused = AirwinRegistry::registerAirwindow({"LRFlipTimer", "Stereo", 314, "LRFlipTimer is a utility that swaps Left with Right every few (1-10) minutes.", airwinconsolidated::LRFlipTimer::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/LeadAmp.h" int LeadAmp_unused = AirwinRegistry::registerAirwindow({"LeadAmp", "Amp Sims", 27, "LeadAmp is an amp sim with a clear, penetrating, vocal tone.", airwinconsolidated::LeadAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/LeftoMono.h" -int LeftoMono_unused = AirwinRegistry::registerAirwindow({"LeftoMono", "Utility", 374, "LeftoMono copies one channel to both, losslessly.", airwinconsolidated::LeftoMono::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int LeftoMono_unused = AirwinRegistry::registerAirwindow({"LeftoMono", "Utility", 375, "LeftoMono copies one channel to both, losslessly.", airwinconsolidated::LeftoMono::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/LilAmp.h" int LilAmp_unused = AirwinRegistry::registerAirwindow({"LilAmp", "Amp Sims", 30, "LilAmp is a tiny amp sim, like a little bitty practice amp without that much gain.", airwinconsolidated::LilAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Logical4.h" @@ -443,9 +443,9 @@ int Lowpass_unused = AirwinRegistry::registerAirwindow({"Lowpass", "Filter", 246 #include "autogen_airwin/Lowpass2.h" int Lowpass2_unused = AirwinRegistry::registerAirwindow({"Lowpass2", "Filter", 242, "Lowpass2 is an unusual-sounding variable-slope lowpass filter.", airwinconsolidated::Lowpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Luxor.h" -int Luxor_unused = AirwinRegistry::registerAirwindow({"Luxor", "Tone Color", 349, "Luxor is a re-release of another old Character plugin.", airwinconsolidated::Luxor::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Luxor_unused = AirwinRegistry::registerAirwindow({"Luxor", "Tone Color", 350, "Luxor is a re-release of another old Character plugin.", airwinconsolidated::Luxor::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/MSFlipTimer.h" -int MSFlipTimer_unused = AirwinRegistry::registerAirwindow({"MSFlipTimer", "Stereo", 314, "MSFlipTimer is a utility that swaps stereo with mono every few (1-10) minutes.", airwinconsolidated::MSFlipTimer::kNumParameters, "2023-12-09", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int MSFlipTimer_unused = AirwinRegistry::registerAirwindow({"MSFlipTimer", "Stereo", 315, "MSFlipTimer is a utility that swaps stereo with mono every few (1-10) minutes.", airwinconsolidated::MSFlipTimer::kNumParameters, "2023-12-09", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/MV.h" int MV_unused = AirwinRegistry::registerAirwindow({"MV", "Ambience", 9, "MV is a dual-mono reverb based on BitShiftGain and the old Midiverbs.", airwinconsolidated::MV::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/MV2.h" @@ -455,39 +455,39 @@ int MackEQ_unused = AirwinRegistry::registerAirwindow({"MackEQ", "Filter", 233, #include "autogen_airwin/Mackity.h" int Mackity_unused = AirwinRegistry::registerAirwindow({"Mackity", "Distortion", 131, "Mackity is an emulation of the input stage of a vintage Mackie 1202!", airwinconsolidated::Mackity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/MatrixVerb.h" -int MatrixVerb_unused = AirwinRegistry::registerAirwindow({"MatrixVerb", "Reverb", 290, "MatrixVerb is a wildly adjustable, strangely colorful reverb for deep and flexible spaces.", airwinconsolidated::MatrixVerb::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int MatrixVerb_unused = AirwinRegistry::registerAirwindow({"MatrixVerb", "Reverb", 291, "MatrixVerb is a wildly adjustable, strangely colorful reverb for deep and flexible spaces.", airwinconsolidated::MatrixVerb::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Melt.h" int Melt_unused = AirwinRegistry::registerAirwindow({"Melt", "Ambience", 7, "Melt is a wobbly chorusy weird diffuse effect.", airwinconsolidated::Melt::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/MidAmp.h" int MidAmp_unused = AirwinRegistry::registerAirwindow({"MidAmp", "Amp Sims", 31, "MidAmp is a clean amp sim meant to work like a loud Twin or something of that nature.", airwinconsolidated::MidAmp::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/MidSide.h" -int MidSide_unused = AirwinRegistry::registerAirwindow({"MidSide", "Utility", 370, "MidSide is the other side of the EdIsDim mid/side conversion utility plugin.", airwinconsolidated::MidSide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int MidSide_unused = AirwinRegistry::registerAirwindow({"MidSide", "Utility", 371, "MidSide is the other side of the EdIsDim mid/side conversion utility plugin.", airwinconsolidated::MidSide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/MoNoam.h" -int MoNoam_unused = AirwinRegistry::registerAirwindow({"MoNoam", "Utility", 377, "MoNoam gives you variations on mono, mid, and side in different channels.", airwinconsolidated::MoNoam::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int MoNoam_unused = AirwinRegistry::registerAirwindow({"MoNoam", "Utility", 378, "MoNoam gives you variations on mono, mid, and side in different channels.", airwinconsolidated::MoNoam::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Mojo.h" -int Mojo_unused = AirwinRegistry::registerAirwindow({"Mojo", "Saturation", 301, "Mojo is a biggenator that also works as a loudenator.", airwinconsolidated::Mojo::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Mojo_unused = AirwinRegistry::registerAirwindow({"Mojo", "Saturation", 302, "Mojo is a biggenator that also works as a loudenator.", airwinconsolidated::Mojo::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Monitoring.h" -int Monitoring_unused = AirwinRegistry::registerAirwindow({"Monitoring", "Utility", 357, "Monitoring is your one-stop shop for final 2-buss work!", airwinconsolidated::Monitoring::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Monitoring_unused = AirwinRegistry::registerAirwindow({"Monitoring", "Utility", 358, "Monitoring is your one-stop shop for final 2-buss work!", airwinconsolidated::Monitoring::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Monitoring2.h" -int Monitoring2_unused = AirwinRegistry::registerAirwindow({"Monitoring2", "Utility", 356, "Monitoring2 is Monitoring, but with Dark as the wordlength reducer.", airwinconsolidated::Monitoring2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Monitoring2_unused = AirwinRegistry::registerAirwindow({"Monitoring2", "Utility", 357, "Monitoring2 is Monitoring, but with Dark as the wordlength reducer.", airwinconsolidated::Monitoring2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Monitoring3.h" -int Monitoring3_unused = AirwinRegistry::registerAirwindow({"Monitoring3", "Utility", 355, "Monitoring3 is Monitoring, but with Ten Nines into Dark as the wordlength reducer.", airwinconsolidated::Monitoring3::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Monitoring3_unused = AirwinRegistry::registerAirwindow({"Monitoring3", "Utility", 356, "Monitoring3 is Monitoring, but with Ten Nines into Dark as the wordlength reducer.", airwinconsolidated::Monitoring3::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/MultiBandDistortion.h" int MultiBandDistortion_unused = AirwinRegistry::registerAirwindow({"MultiBandDistortion", "Distortion", 139, "MultiBandDistortion is an old weird gnarly sound wrecker :)", airwinconsolidated::MultiBandDistortion::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/NCSeventeen.h" -int NCSeventeen_unused = AirwinRegistry::registerAirwindow({"NCSeventeen", "Saturation", 295, "NCSeventeen is Dirty Loud!", airwinconsolidated::NCSeventeen::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int NCSeventeen_unused = AirwinRegistry::registerAirwindow({"NCSeventeen", "Saturation", 296, "NCSeventeen is Dirty Loud!", airwinconsolidated::NCSeventeen::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/NaturalizeDither.h" int NaturalizeDither_unused = AirwinRegistry::registerAirwindow({"NaturalizeDither", "Dithers", 160, "NaturalizeDither is deterministic dither that uses Benford Realness calculations for each sample.", airwinconsolidated::NaturalizeDither::kNumParameters, "2023-04-12", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Neverland.h" -int Neverland_unused = AirwinRegistry::registerAirwindow({"Neverland", "Tone Color", 343, "Neverland is a re-release of my old Neve-style color adder, exacly as it was.", airwinconsolidated::Neverland::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Neverland_unused = AirwinRegistry::registerAirwindow({"Neverland", "Tone Color", 344, "Neverland is a re-release of my old Neve-style color adder, exacly as it was.", airwinconsolidated::Neverland::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Nikola.h" int Nikola_unused = AirwinRegistry::registerAirwindow({"Nikola", "Effects", 214, "Nikola is an Audio Tesla Coil plugin! Note: audio tesla coils don't sound nice.", airwinconsolidated::Nikola::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/NodeDither.h" int NodeDither_unused = AirwinRegistry::registerAirwindow({"NodeDither", "Dithers", 154, "NodeDither is adjusta-TPDF-dither, like a dither flanger. Can do Paul and Tape settings.", airwinconsolidated::NodeDither::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Noise.h" -int Noise_unused = AirwinRegistry::registerAirwindow({"Noise", "Noise", 264, "Noise is the Airwindows deep noise oscillator, as a sound reinforcer.", airwinconsolidated::Noise::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Noise_unused = AirwinRegistry::registerAirwindow({"Noise", "Noise", 265, "Noise is the Airwindows deep noise oscillator, as a sound reinforcer.", airwinconsolidated::Noise::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/NonlinearSpace.h" -int NonlinearSpace_unused = AirwinRegistry::registerAirwindow({"NonlinearSpace", "Reverb", 287, "NonlinearSpace is a flexible reverb plugin.", airwinconsolidated::NonlinearSpace::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int NonlinearSpace_unused = AirwinRegistry::registerAirwindow({"NonlinearSpace", "Reverb", 288, "NonlinearSpace is a flexible reverb plugin.", airwinconsolidated::NonlinearSpace::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/NotJustAnotherCD.h" int NotJustAnotherCD_unused = AirwinRegistry::registerAirwindow({"NotJustAnotherCD", "Dithers", 146, "NotJustAnotherCD is a next-gen wordlength reducers for 16 bit with DeRez.", airwinconsolidated::NotJustAnotherCD::kNumParameters, "2023-04-12", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/NotJustAnotherDither.h" @@ -513,13 +513,13 @@ int PaulDither_unused = AirwinRegistry::registerAirwindow({"PaulDither", "Dither #include "autogen_airwin/PaulWide.h" int PaulWide_unused = AirwinRegistry::registerAirwindow({"PaulWide", "Dithers", 141, "PaulWide is a highpassed TPDF wide dither. (quieter, airier AND wider)", airwinconsolidated::PaulWide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended" }}); #include "autogen_airwin/PeaksOnly.h" -int PeaksOnly_unused = AirwinRegistry::registerAirwindow({"PeaksOnly", "Utility", 366, "PeaksOnly is a transformative mix check tool.", airwinconsolidated::PeaksOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int PeaksOnly_unused = AirwinRegistry::registerAirwindow({"PeaksOnly", "Utility", 367, "PeaksOnly is a transformative mix check tool.", airwinconsolidated::PeaksOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Pear.h" int Pear_unused = AirwinRegistry::registerAirwindow({"Pear", "Filter", 221, "Pear is the testbed for a new filter, implemented as a highpass/lowpass shelf.", airwinconsolidated::Pear::kNumParameters, "2023-06-25", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Pear2.h" int Pear2_unused = AirwinRegistry::registerAirwindow({"Pear2", "Filter", 218, "Pear2 is my Pear filter plus nonlinearity.", airwinconsolidated::Pear2::kNumParameters, "2024-03-10", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/PhaseNudge.h" -int PhaseNudge_unused = AirwinRegistry::registerAirwindow({"PhaseNudge", "Subtlety", 326, "PhaseNudge is a phase rotator/allpass filter.", airwinconsolidated::PhaseNudge::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int PhaseNudge_unused = AirwinRegistry::registerAirwindow({"PhaseNudge", "Subtlety", 327, "PhaseNudge is a phase rotator/allpass filter.", airwinconsolidated::PhaseNudge::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/PitchDelay.h" int PitchDelay_unused = AirwinRegistry::registerAirwindow({"PitchDelay", "Ambience", 3, "PitchDelay is TapeDelay2 but with pitch shift instead of flutter.", airwinconsolidated::PitchDelay::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/PitchNasty.h" @@ -527,7 +527,7 @@ int PitchNasty_unused = AirwinRegistry::registerAirwindow({"PitchNasty", "Effect #include "autogen_airwin/PlatinumSlew.h" int PlatinumSlew_unused = AirwinRegistry::registerAirwindow({"PlatinumSlew", "Brightness", 54, "PlatinumSlew is the best easy-to-use slew clipper.", airwinconsolidated::PlatinumSlew::kNumParameters, "2023-07-22", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/PocketVerbs.h" -int PocketVerbs_unused = AirwinRegistry::registerAirwindow({"PocketVerbs", "Reverb", 291, "PocketVerbs is my popular old special effects reverbs plugin!", airwinconsolidated::PocketVerbs::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int PocketVerbs_unused = AirwinRegistry::registerAirwindow({"PocketVerbs", "Reverb", 292, "PocketVerbs is my popular old special effects reverbs plugin!", airwinconsolidated::PocketVerbs::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Pockey.h" int Pockey_unused = AirwinRegistry::registerAirwindow({"Pockey", "Lo-Fi", 253, "Pockey is 12 bit (and under) lo-fi hiphop in a plugin.", airwinconsolidated::Pockey::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Pockey2.h" @@ -549,7 +549,7 @@ int PowerSag_unused = AirwinRegistry::registerAirwindow({"PowerSag", "Effects", #include "autogen_airwin/PowerSag2.h" int PowerSag2_unused = AirwinRegistry::registerAirwindow({"PowerSag2", "Effects", 211, "PowerSag2 is my improved circuit-starve plugin, now with inverse effect!", airwinconsolidated::PowerSag2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Precious.h" -int Precious_unused = AirwinRegistry::registerAirwindow({"Precious", "Tone Color", 348, "Precious is a re-release of another old Character plugin.", airwinconsolidated::Precious::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Precious_unused = AirwinRegistry::registerAirwindow({"Precious", "Tone Color", 349, "Precious is a re-release of another old Character plugin.", airwinconsolidated::Precious::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Preponderant.h" int Preponderant_unused = AirwinRegistry::registerAirwindow({"Preponderant", "Effects", 213, "Preponderant is Airwindows Anti-Soothe, a strange tone intensifier and balancer.", airwinconsolidated::Preponderant::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Pressure4.h" @@ -571,19 +571,19 @@ int PurestConsoleBuss_unused = AirwinRegistry::registerAirwindow({"PurestConsole #include "autogen_airwin/PurestConsoleChannel.h" int PurestConsoleChannel_unused = AirwinRegistry::registerAirwindow({"PurestConsoleChannel", "Consoles", 113, "PurestConsoleChannel is the most free from coloration Console system.", airwinconsolidated::PurestConsoleChannel::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended" }}); #include "autogen_airwin/PurestDrive.h" -int PurestDrive_unused = AirwinRegistry::registerAirwindow({"PurestDrive", "Saturation", 299, "PurestDrive is the magic saturation plugin of subtlety and French House tone.", airwinconsolidated::PurestDrive::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int PurestDrive_unused = AirwinRegistry::registerAirwindow({"PurestDrive", "Saturation", 300, "PurestDrive is the magic saturation plugin of subtlety and French House tone.", airwinconsolidated::PurestDrive::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/PurestEcho.h" int PurestEcho_unused = AirwinRegistry::registerAirwindow({"PurestEcho", "Ambience", 13, "PurestEcho is optimized Airwindows echo with exactly four evenly spaced taps on tap.", airwinconsolidated::PurestEcho::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/PurestFade.h" -int PurestFade_unused = AirwinRegistry::registerAirwindow({"PurestFade", "Utility", 361, "PurestFade is just like PurestGain, but for LONG fades.", airwinconsolidated::PurestFade::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int PurestFade_unused = AirwinRegistry::registerAirwindow({"PurestFade", "Utility", 362, "PurestFade is just like PurestGain, but for LONG fades.", airwinconsolidated::PurestFade::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/PurestGain.h" -int PurestGain_unused = AirwinRegistry::registerAirwindow({"PurestGain", "Utility", 360, "PurestGain is a high-res noise shaped gain, with smoothed fader.", airwinconsolidated::PurestGain::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int PurestGain_unused = AirwinRegistry::registerAirwindow({"PurestGain", "Utility", 361, "PurestGain is a high-res noise shaped gain, with smoothed fader.", airwinconsolidated::PurestGain::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/PurestSquish.h" int PurestSquish_unused = AirwinRegistry::registerAirwindow({"PurestSquish", "Dynamics", 187, "PurestSquish is an open-sounding compressor with bass bloom.", airwinconsolidated::PurestSquish::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/PurestWarm.h" -int PurestWarm_unused = AirwinRegistry::registerAirwindow({"PurestWarm", "Subtlety", 323, "PurestWarm is a subtle tone shaper and warmth adder.", airwinconsolidated::PurestWarm::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int PurestWarm_unused = AirwinRegistry::registerAirwindow({"PurestWarm", "Subtlety", 324, "PurestWarm is a subtle tone shaper and warmth adder.", airwinconsolidated::PurestWarm::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/PurestWarm2.h" -int PurestWarm2_unused = AirwinRegistry::registerAirwindow({"PurestWarm2", "Subtlety", 322, "PurestWarm2 adds dual dry/wet controls for each side of the waveform.", airwinconsolidated::PurestWarm2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int PurestWarm2_unused = AirwinRegistry::registerAirwindow({"PurestWarm2", "Subtlety", 323, "PurestWarm2 adds dual dry/wet controls for each side of the waveform.", airwinconsolidated::PurestWarm2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Pyewacket.h" int Pyewacket_unused = AirwinRegistry::registerAirwindow({"Pyewacket", "Dynamics", 174, "Pyewacket is an old school compressor for high definition transients. Adds no fatness, just energy.", airwinconsolidated::Pyewacket::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/RawGlitters.h" @@ -593,33 +593,33 @@ int RawTimbers_unused = AirwinRegistry::registerAirwindow({"RawTimbers", "Dither #include "autogen_airwin/Recurve.h" int Recurve_unused = AirwinRegistry::registerAirwindow({"Recurve", "Dynamics", 173, "Recurve is a special buss compressor with no threshold point.", airwinconsolidated::Recurve::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Remap.h" -int Remap_unused = AirwinRegistry::registerAirwindow({"Remap", "Subtlety", 327, "Remap puts the guts back into overloudenated audio!", airwinconsolidated::Remap::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Remap_unused = AirwinRegistry::registerAirwindow({"Remap", "Subtlety", 328, "Remap puts the guts back into overloudenated audio!", airwinconsolidated::Remap::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ResEQ.h" int ResEQ_unused = AirwinRegistry::registerAirwindow({"ResEQ", "Filter", 241, "ResEQ is a bank of mostly midrange resonances.", airwinconsolidated::ResEQ::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ResEQ2.h" int ResEQ2_unused = AirwinRegistry::registerAirwindow({"ResEQ2", "Filter", 222, "ResEQ2 is a single, sharp, sonorous mid peak.", airwinconsolidated::ResEQ2::kNumParameters, "2023-09-17", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Reverb.h" -int Reverb_unused = AirwinRegistry::registerAirwindow({"Reverb", "Reverb", 292, "Reverb is simplified and tuned MatrixVerb, adjusting everything for each optimum verb size.", airwinconsolidated::Reverb::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Reverb_unused = AirwinRegistry::registerAirwindow({"Reverb", "Reverb", 293, "Reverb is simplified and tuned MatrixVerb, adjusting everything for each optimum verb size.", airwinconsolidated::Reverb::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Righteous4.h" -int Righteous4_unused = AirwinRegistry::registerAirwindow({"Righteous4", "Saturation", 306, "Righteous4 is a final output stage for targeting dynamic range.", airwinconsolidated::Righteous4::kNumParameters, "2023-04-12", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Righteous4_unused = AirwinRegistry::registerAirwindow({"Righteous4", "Saturation", 307, "Righteous4 is a final output stage for targeting dynamic range.", airwinconsolidated::Righteous4::kNumParameters, "2023-04-12", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/RightoMono.h" -int RightoMono_unused = AirwinRegistry::registerAirwindow({"RightoMono", "Utility", 373, "RightoMono copies one channel to both, losslessly.", airwinconsolidated::RightoMono::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int RightoMono_unused = AirwinRegistry::registerAirwindow({"RightoMono", "Utility", 374, "RightoMono copies one channel to both, losslessly.", airwinconsolidated::RightoMono::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/SampleDelay.h" int SampleDelay_unused = AirwinRegistry::registerAirwindow({"SampleDelay", "Ambience", 4, "SampleDelay is three delays combined: millisecond, sample and subsample.", airwinconsolidated::SampleDelay::kNumParameters, "2023-03-20", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Shape.h" -int Shape_unused = AirwinRegistry::registerAirwindow({"Shape", "Subtlety", 319, "Shape is an asymmetrical waveshaper for peak manipulating.", airwinconsolidated::Shape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int Shape_unused = AirwinRegistry::registerAirwindow({"Shape", "Subtlety", 320, "Shape is an asymmetrical waveshaper for peak manipulating.", airwinconsolidated::Shape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/ShortBuss.h" int ShortBuss_unused = AirwinRegistry::registerAirwindow({"ShortBuss", "Effects", 199, "ShortBuss chases second harmonic, to add or remove it.", airwinconsolidated::ShortBuss::kNumParameters, "2024-01-28", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/SideDull.h" -int SideDull_unused = AirwinRegistry::registerAirwindow({"SideDull", "Stereo", 316, "SideDull is like Sidepass, but a lowpass on the side channel. Treble-centerer.", airwinconsolidated::SideDull::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int SideDull_unused = AirwinRegistry::registerAirwindow({"SideDull", "Stereo", 317, "SideDull is like Sidepass, but a lowpass on the side channel. Treble-centerer.", airwinconsolidated::SideDull::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Sidepass.h" -int Sidepass_unused = AirwinRegistry::registerAirwindow({"Sidepass", "Stereo", 315, "Sidepass is a simple utility plugin, a highpass on the side channel. Mono-maker.", airwinconsolidated::Sidepass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Sidepass_unused = AirwinRegistry::registerAirwindow({"Sidepass", "Stereo", 316, "Sidepass is a simple utility plugin, a highpass on the side channel. Mono-maker.", airwinconsolidated::Sidepass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Silhouette.h" -int Silhouette_unused = AirwinRegistry::registerAirwindow({"Silhouette", "Noise", 270, "Silhouette replaces the sound with raw noise sculpted to match its dynamics.", airwinconsolidated::Silhouette::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Silhouette_unused = AirwinRegistry::registerAirwindow({"Silhouette", "Noise", 271, "Silhouette replaces the sound with raw noise sculpted to match its dynamics.", airwinconsolidated::Silhouette::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Sinew.h" int Sinew_unused = AirwinRegistry::registerAirwindow({"Sinew", "Brightness", 57, "Sinew combines sines and slew clipping for a tape bias effect!", airwinconsolidated::Sinew::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/SingleEndedTriode.h" -int SingleEndedTriode_unused = AirwinRegistry::registerAirwindow({"SingleEndedTriode", "Subtlety", 328, "SingleEndedTriode is unusual analog modeling effects.", airwinconsolidated::SingleEndedTriode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int SingleEndedTriode_unused = AirwinRegistry::registerAirwindow({"SingleEndedTriode", "Subtlety", 329, "SingleEndedTriode is unusual analog modeling effects.", airwinconsolidated::SingleEndedTriode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Slew.h" int Slew_unused = AirwinRegistry::registerAirwindow({"Slew", "Brightness", 65, "Slew is a slew clipper, which darkens treble in an unusual way.", airwinconsolidated::Slew::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Slew2.h" @@ -627,7 +627,7 @@ int Slew2_unused = AirwinRegistry::registerAirwindow({"Slew2", "Brightness", 64, #include "autogen_airwin/Slew3.h" int Slew3_unused = AirwinRegistry::registerAirwindow({"Slew3", "Brightness", 63, "Slew3 is a new approach to slew clipping meant for a more analog-like darkening effect.", airwinconsolidated::Slew3::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/SlewOnly.h" -int SlewOnly_unused = AirwinRegistry::registerAirwindow({"SlewOnly", "Utility", 364, "SlewOnly is a mix check plugin that shows you only the extreme highs.", airwinconsolidated::SlewOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int SlewOnly_unused = AirwinRegistry::registerAirwindow({"SlewOnly", "Utility", 365, "SlewOnly is a mix check plugin that shows you only the extreme highs.", airwinconsolidated::SlewOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/SlewSonic.h" int SlewSonic_unused = AirwinRegistry::registerAirwindow({"SlewSonic", "Brightness", 58, "SlewSonic combines SlewOnly with ultrasonic filtering to solo brightness.", airwinconsolidated::SlewSonic::kNumParameters, "2023-02-27", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Smooth.h" @@ -637,13 +637,13 @@ int SoftGate_unused = AirwinRegistry::registerAirwindow({"SoftGate", "Dynamics", #include "autogen_airwin/SpatializeDither.h" int SpatializeDither_unused = AirwinRegistry::registerAirwindow({"SpatializeDither", "Dithers", 149, "SpatializeDither is a high-performance clarity and accuracy dither.", airwinconsolidated::SpatializeDither::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Spiral.h" -int Spiral_unused = AirwinRegistry::registerAirwindow({"Spiral", "Saturation", 303, "Spiral is the new best smoothest distortion algorithm.", airwinconsolidated::Spiral::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Spiral_unused = AirwinRegistry::registerAirwindow({"Spiral", "Saturation", 304, "Spiral is the new best smoothest distortion algorithm.", airwinconsolidated::Spiral::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Spiral2.h" -int Spiral2_unused = AirwinRegistry::registerAirwindow({"Spiral2", "Saturation", 298, "Spiral2 is Spiral with controls including Presence.", airwinconsolidated::Spiral2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Spiral2_unused = AirwinRegistry::registerAirwindow({"Spiral2", "Saturation", 299, "Spiral2 is Spiral with controls including Presence.", airwinconsolidated::Spiral2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Srsly.h" -int Srsly_unused = AirwinRegistry::registerAirwindow({"Srsly", "Stereo", 307, "Srsly is a psychoacoustic stereo processor.", airwinconsolidated::Srsly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended" }}); +int Srsly_unused = AirwinRegistry::registerAirwindow({"Srsly", "Stereo", 308, "Srsly is a psychoacoustic stereo processor.", airwinconsolidated::Srsly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended" }}); #include "autogen_airwin/Srsly2.h" -int Srsly2_unused = AirwinRegistry::registerAirwindow({"Srsly2", "Stereo", 308, "Srsly2 is a revisit of Srsly, to make the stereo widening more extreme.", airwinconsolidated::Srsly2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Srsly2_unused = AirwinRegistry::registerAirwindow({"Srsly2", "Stereo", 309, "Srsly2 is a revisit of Srsly, to make the stereo widening more extreme.", airwinconsolidated::Srsly2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Srsly3.h" int Srsly3_unused = AirwinRegistry::registerAirwindow({"Srsly3", "Unclassified", -1, "", airwinconsolidated::Srsly3::kNumParameters, "2024-05-19", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/StarChild.h" @@ -657,7 +657,7 @@ int StereoDoubler_unused = AirwinRegistry::registerAirwindow({"StereoDoubler", " #include "autogen_airwin/StereoEnsemble.h" int StereoEnsemble_unused = AirwinRegistry::registerAirwindow({"StereoEnsemble", "Ambience", 20, "StereoEnsemble is a sort of hyperchorus blast from the past.", airwinconsolidated::StereoEnsemble::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/StereoFX.h" -int StereoFX_unused = AirwinRegistry::registerAirwindow({"StereoFX", "Stereo", 310, "StereoFX is an aggressive stereo widener.", airwinconsolidated::StereoFX::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int StereoFX_unused = AirwinRegistry::registerAirwindow({"StereoFX", "Stereo", 311, "StereoFX is an aggressive stereo widener.", airwinconsolidated::StereoFX::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/StoneFireComp.h" int StoneFireComp_unused = AirwinRegistry::registerAirwindow({"StoneFireComp", "Unclassified", -1, "", airwinconsolidated::StoneFireComp::kNumParameters, "2024-05-25", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Stonefire.h" @@ -667,13 +667,13 @@ int StudioTan_unused = AirwinRegistry::registerAirwindow({"StudioTan", "Dithers" #include "autogen_airwin/SubTight.h" int SubTight_unused = AirwinRegistry::registerAirwindow({"SubTight", "Filter", 223, "SubTight uses a variation on the Creature algorithm to tighten sub-lows.", airwinconsolidated::SubTight::kNumParameters, "2023-11-26", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/SubsOnly.h" -int SubsOnly_unused = AirwinRegistry::registerAirwindow({"SubsOnly", "Utility", 365, "SubsOnly is a mix check plugin that shows you only the extreme lows.", airwinconsolidated::SubsOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int SubsOnly_unused = AirwinRegistry::registerAirwindow({"SubsOnly", "Utility", 366, "SubsOnly is a mix check plugin that shows you only the extreme lows.", airwinconsolidated::SubsOnly::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Surge.h" int Surge_unused = AirwinRegistry::registerAirwindow({"Surge", "Dynamics", 189, "Surge is a compressor for accentuating beats and pulses.", airwinconsolidated::Surge::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/SurgeTide.h" int SurgeTide_unused = AirwinRegistry::registerAirwindow({"SurgeTide", "Dynamics", 190, "SurgeTide is a surge and flow dynamics plugin.", airwinconsolidated::SurgeTide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Sweeten.h" -int Sweeten_unused = AirwinRegistry::registerAirwindow({"Sweeten", "Subtlety", 321, "Sweeten is where you can find super-clean second harmonic.", airwinconsolidated::Sweeten::kNumParameters, "2023-08-19", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Sweeten_unused = AirwinRegistry::registerAirwindow({"Sweeten", "Subtlety", 322, "Sweeten is where you can find super-clean second harmonic.", airwinconsolidated::Sweeten::kNumParameters, "2023-08-19", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Swell.h" int Swell_unused = AirwinRegistry::registerAirwindow({"Swell", "Dynamics", 186, "Swell is Dial-an-attack, like sidechaining.", airwinconsolidated::Swell::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/TPDFDither.h" @@ -681,9 +681,9 @@ int TPDFDither_unused = AirwinRegistry::registerAirwindow({"TPDFDither", "Dither #include "autogen_airwin/TPDFWide.h" int TPDFWide_unused = AirwinRegistry::registerAirwindow({"TPDFWide", "Dithers", 143, "TPDFWide is still TPDF dither but better and wider. With 16/24 bit output and a DeRez control.", airwinconsolidated::TPDFWide::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Tape.h" -int Tape_unused = AirwinRegistry::registerAirwindow({"Tape", "Tape", 335, "Tape is simplified, all-purpose tape mojo: my personal jam.", airwinconsolidated::Tape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Tape_unused = AirwinRegistry::registerAirwindow({"Tape", "Tape", 336, "Tape is simplified, all-purpose tape mojo: my personal jam.", airwinconsolidated::Tape::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/TapeBias.h" -int TapeBias_unused = AirwinRegistry::registerAirwindow({"TapeBias", "Unclassified", -1, "", airwinconsolidated::TapeBias::kNumParameters, "2024-07-28", []() { return std::make_unique(0); }, -1, { }}); +int TapeBias_unused = AirwinRegistry::registerAirwindow({"TapeBias", "Lo-Fi", 258, "TapeBias is a new piece of ToTape allowing you to underbias or overbias.", airwinconsolidated::TapeBias::kNumParameters, "2024-07-28", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/TapeDelay.h" int TapeDelay_unused = AirwinRegistry::registerAirwindow({"TapeDelay", "Ambience", 14, "TapeDelay is an old school tape echo with pitch swerve effects.", airwinconsolidated::TapeDelay::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/TapeDelay2.h" @@ -691,25 +691,27 @@ int TapeDelay2_unused = AirwinRegistry::registerAirwindow({"TapeDelay2", "Ambien #include "autogen_airwin/TapeDither.h" int TapeDither_unused = AirwinRegistry::registerAirwindow({"TapeDither", "Dithers", 148, "TapeDither is TPDF dither with noise like reel-to-reel tape.", airwinconsolidated::TapeDither::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/TapeDust.h" -int TapeDust_unused = AirwinRegistry::registerAirwindow({"TapeDust", "Noise", 271, "TapeDust is just a special treble-erode noise, a ‘slew noise’ plugin.", airwinconsolidated::TapeDust::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int TapeDust_unused = AirwinRegistry::registerAirwindow({"TapeDust", "Noise", 272, "TapeDust is just a special treble-erode noise, a ‘slew noise’ plugin.", airwinconsolidated::TapeDust::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/TapeFat.h" int TapeFat_unused = AirwinRegistry::registerAirwindow({"TapeFat", "Filter", 240, "TapeFat is the tone control from TapeDelay.", airwinconsolidated::TapeFat::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Texturize.h" -int Texturize_unused = AirwinRegistry::registerAirwindow({"Texturize", "Noise", 265, "Texturize is a hidden-noise plugin for adding sonic texture to things.", airwinconsolidated::Texturize::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Texturize_unused = AirwinRegistry::registerAirwindow({"Texturize", "Noise", 266, "Texturize is a hidden-noise plugin for adding sonic texture to things.", airwinconsolidated::Texturize::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/TexturizeMS.h" -int TexturizeMS_unused = AirwinRegistry::registerAirwindow({"TexturizeMS", "Noise", 266, "TexturizeMS is a hidden-noise plugin for adding mid-side sonic texture to things.", airwinconsolidated::TexturizeMS::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int TexturizeMS_unused = AirwinRegistry::registerAirwindow({"TexturizeMS", "Noise", 267, "TexturizeMS is a hidden-noise plugin for adding mid-side sonic texture to things.", airwinconsolidated::TexturizeMS::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Thunder.h" int Thunder_unused = AirwinRegistry::registerAirwindow({"Thunder", "Dynamics", 177, "Thunder is a compressor that retains or exaggerates subsonic bass when you push it.", airwinconsolidated::Thunder::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ToTape5.h" -int ToTape5_unused = AirwinRegistry::registerAirwindow({"ToTape5", "Tape", 338, "ToTape5 is Airwindows analog tape emulation.", airwinconsolidated::ToTape5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ToTape5_unused = AirwinRegistry::registerAirwindow({"ToTape5", "Tape", 339, "ToTape5 is Airwindows analog tape emulation.", airwinconsolidated::ToTape5::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ToTape6.h" -int ToTape6_unused = AirwinRegistry::registerAirwindow({"ToTape6", "Tape", 333, "ToTape6 is Airwindows tape emulation for 2020!", airwinconsolidated::ToTape6::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ToTape6_unused = AirwinRegistry::registerAirwindow({"ToTape6", "Tape", 334, "ToTape6 is Airwindows tape emulation for 2020!", airwinconsolidated::ToTape6::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +#include "autogen_airwin/ToTape7.h" +int ToTape7_unused = AirwinRegistry::registerAirwindow({"ToTape7", "Unclassified", -1, "", airwinconsolidated::ToTape7::kNumParameters, "2024-08-11", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ToVinyl4.h" -int ToVinyl4_unused = AirwinRegistry::registerAirwindow({"ToVinyl4", "Stereo", 311, "ToVinyl4 is a vinyl-mastering simulator bringing several vinyl-type colors.", airwinconsolidated::ToVinyl4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int ToVinyl4_unused = AirwinRegistry::registerAirwindow({"ToVinyl4", "Stereo", 312, "ToVinyl4 is a vinyl-mastering simulator bringing several vinyl-type colors.", airwinconsolidated::ToVinyl4::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/ToneSlant.h" int ToneSlant_unused = AirwinRegistry::registerAirwindow({"ToneSlant", "Filter", 230, "ToneSlant is a super-transparent ‘tilt EQ’ with very low Q.", airwinconsolidated::ToneSlant::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/TransDesk.h" -int TransDesk_unused = AirwinRegistry::registerAirwindow({"TransDesk", "Subtlety", 331, "TransDesk is more of a transistory, rock desk analog modeling.", airwinconsolidated::TransDesk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int TransDesk_unused = AirwinRegistry::registerAirwindow({"TransDesk", "Subtlety", 332, "TransDesk is more of a transistory, rock desk analog modeling.", airwinconsolidated::TransDesk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/TremoSquare.h" int TremoSquare_unused = AirwinRegistry::registerAirwindow({"TremoSquare", "Effects", 202, "TremoSquare is a squarewave tremolo effect that only switches on zero crossings.", airwinconsolidated::TremoSquare::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/Tremolo.h" @@ -719,11 +721,11 @@ int Trianglizer_unused = AirwinRegistry::registerAirwindow({"Trianglizer", "Effe #include "autogen_airwin/TripleSpread.h" int TripleSpread_unused = AirwinRegistry::registerAirwindow({"TripleSpread", "Ambience", 6, "TripleSpread is a stereo tripler with extra wideness and GlitchShifter processing.", airwinconsolidated::TripleSpread::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Tube.h" -int Tube_unused = AirwinRegistry::registerAirwindow({"Tube", "Saturation", 297, "Tube is a tube style SoundBetterIzer using a new algorithm for analog modeling!", airwinconsolidated::Tube::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic" }}); +int Tube_unused = AirwinRegistry::registerAirwindow({"Tube", "Saturation", 298, "Tube is a tube style SoundBetterIzer using a new algorithm for analog modeling!", airwinconsolidated::Tube::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic" }}); #include "autogen_airwin/Tube2.h" -int Tube2_unused = AirwinRegistry::registerAirwindow({"Tube2", "Saturation", 296, "Tube2 extends Tube, with more sophisticated processing and input trim.", airwinconsolidated::Tube2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int Tube2_unused = AirwinRegistry::registerAirwindow({"Tube2", "Saturation", 297, "Tube2 extends Tube, with more sophisticated processing and input trim.", airwinconsolidated::Tube2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/TubeDesk.h" -int TubeDesk_unused = AirwinRegistry::registerAirwindow({"TubeDesk", "Subtlety", 332, "TubeDesk is a tube recording console type tone coloring.", airwinconsolidated::TubeDesk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int TubeDesk_unused = AirwinRegistry::registerAirwindow({"TubeDesk", "Subtlety", 333, "TubeDesk is a tube recording console type tone coloring.", airwinconsolidated::TubeDesk::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/UltrasonX.h" int UltrasonX_unused = AirwinRegistry::registerAirwindow({"UltrasonX", "Brightness", 76, "UltrasonX is a method for rolling your own Console-type systems with total control over your ultrasonic filtering.", airwinconsolidated::UltrasonX::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Ultrasonic.h" @@ -733,83 +735,83 @@ int UltrasonicLite_unused = AirwinRegistry::registerAirwindow({"UltrasonicLite", #include "autogen_airwin/UltrasonicMed.h" int UltrasonicMed_unused = AirwinRegistry::registerAirwindow({"UltrasonicMed", "Brightness", 75, "UltrasonicMed is two stages of supersonic filter, for using inside digital mixes.", airwinconsolidated::UltrasonicMed::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/UnBox.h" -int UnBox_unused = AirwinRegistry::registerAirwindow({"UnBox", "Saturation", 304, "UnBox is a distortion where only the harmonics that don't alias are allowed to distort.", airwinconsolidated::UnBox::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int UnBox_unused = AirwinRegistry::registerAirwindow({"UnBox", "Saturation", 305, "UnBox is a distortion where only the harmonics that don't alias are allowed to distort.", airwinconsolidated::UnBox::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/VariMu.h" int VariMu_unused = AirwinRegistry::registerAirwindow({"VariMu", "Dynamics", 169, "VariMu is a more organic variation on Pressure (a compressor)", airwinconsolidated::VariMu::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Verbity.h" -int Verbity_unused = AirwinRegistry::registerAirwindow({"Verbity", "Reverb", 283, "Verbity is a dual-mono reverb, which uses feedforward reverb topology.", airwinconsolidated::Verbity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int Verbity_unused = AirwinRegistry::registerAirwindow({"Verbity", "Reverb", 284, "Verbity is a dual-mono reverb, which uses feedforward reverb topology.", airwinconsolidated::Verbity::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Verbity2.h" -int Verbity2_unused = AirwinRegistry::registerAirwindow({"Verbity2", "Reverb", 281, "Verbity2 adds stereo crossmodulation and expands Verbity's feedforward reverb topology.", airwinconsolidated::Verbity2::kNumParameters, "2023-02-05", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int Verbity2_unused = AirwinRegistry::registerAirwindow({"Verbity2", "Reverb", 282, "Verbity2 adds stereo crossmodulation and expands Verbity's feedforward reverb topology.", airwinconsolidated::Verbity2::kNumParameters, "2023-02-05", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/Vibrato.h" -int Vibrato_unused = AirwinRegistry::registerAirwindow({"Vibrato", "Lo-Fi", 260, "Vibrato lets you vibrato, chorus, flange, and make odd FM noises.", airwinconsolidated::Vibrato::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int Vibrato_unused = AirwinRegistry::registerAirwindow({"Vibrato", "Lo-Fi", 261, "Vibrato lets you vibrato, chorus, flange, and make odd FM noises.", airwinconsolidated::Vibrato::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/VinylDither.h" int VinylDither_unused = AirwinRegistry::registerAirwindow({"VinylDither", "Dithers", 150, "VinylDither is a high-performance dither that converts digital noise to ‘groove noise’.", airwinconsolidated::VinylDither::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/VoiceOfTheStarship.h" -int VoiceOfTheStarship_unused = AirwinRegistry::registerAirwindow({"VoiceOfTheStarship", "Noise", 267, "VoiceOfTheStarship is a deep noise tone source.", airwinconsolidated::VoiceOfTheStarship::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int VoiceOfTheStarship_unused = AirwinRegistry::registerAirwindow({"VoiceOfTheStarship", "Noise", 268, "VoiceOfTheStarship is a deep noise tone source.", airwinconsolidated::VoiceOfTheStarship::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/VoiceTrick.h" -int VoiceTrick_unused = AirwinRegistry::registerAirwindow({"VoiceTrick", "Utility", 378, "VoiceTrick lets you record vocals while monitoring over speakers.", airwinconsolidated::VoiceTrick::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int VoiceTrick_unused = AirwinRegistry::registerAirwindow({"VoiceTrick", "Utility", 379, "VoiceTrick lets you record vocals while monitoring over speakers.", airwinconsolidated::VoiceTrick::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/Weight.h" int Weight_unused = AirwinRegistry::registerAirwindow({"Weight", "Filter", 225, "Weight is a very accurate sub-bass boost based on Holt.", airwinconsolidated::Weight::kNumParameters, "2023-02-10", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Wider.h" -int Wider_unused = AirwinRegistry::registerAirwindow({"Wider", "Stereo", 309, "Wider is Airwindows stereo space shaping.", airwinconsolidated::Wider::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int Wider_unused = AirwinRegistry::registerAirwindow({"Wider", "Stereo", 310, "Wider is Airwindows stereo space shaping.", airwinconsolidated::Wider::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/Wolfbot.h" int Wolfbot_unused = AirwinRegistry::registerAirwindow({"Wolfbot", "Amp Sims", 29, "Wolfbot is an aggressive Kalman bandpass with evil in its heart.", airwinconsolidated::Wolfbot::kNumParameters, "2024-05-25", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/XBandpass.h" -int XBandpass_unused = AirwinRegistry::registerAirwindow({"XBandpass", "XYZ Filters", 398, "XBandpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int XBandpass_unused = AirwinRegistry::registerAirwindow({"XBandpass", "XYZ Filters", 399, "XBandpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/XHighpass.h" -int XHighpass_unused = AirwinRegistry::registerAirwindow({"XHighpass", "XYZ Filters", 399, "XHighpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int XHighpass_unused = AirwinRegistry::registerAirwindow({"XHighpass", "XYZ Filters", 400, "XHighpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/XLowpass.h" -int XLowpass_unused = AirwinRegistry::registerAirwindow({"XLowpass", "XYZ Filters", 400, "XLowpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int XLowpass_unused = AirwinRegistry::registerAirwindow({"XLowpass", "XYZ Filters", 401, "XLowpass is a distorted digital EQ, inspired by retro sampler DSP.", airwinconsolidated::XLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/XNotch.h" -int XNotch_unused = AirwinRegistry::registerAirwindow({"XNotch", "XYZ Filters", 401, "XNotch is a distorted digital EQ, not as glitchy as the others.", airwinconsolidated::XNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int XNotch_unused = AirwinRegistry::registerAirwindow({"XNotch", "XYZ Filters", 402, "XNotch is a distorted digital EQ, not as glitchy as the others.", airwinconsolidated::XNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/XRegion.h" -int XRegion_unused = AirwinRegistry::registerAirwindow({"XRegion", "XYZ Filters", 402, "XRegion is distorted staggered bandpasses, for extreme soundmangling.", airwinconsolidated::XRegion::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int XRegion_unused = AirwinRegistry::registerAirwindow({"XRegion", "XYZ Filters", 403, "XRegion is distorted staggered bandpasses, for extreme soundmangling.", airwinconsolidated::XRegion::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/YBandpass.h" -int YBandpass_unused = AirwinRegistry::registerAirwindow({"YBandpass", "XYZ Filters", 390, "YBandpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int YBandpass_unused = AirwinRegistry::registerAirwindow({"YBandpass", "XYZ Filters", 391, "YBandpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/YHighpass.h" -int YHighpass_unused = AirwinRegistry::registerAirwindow({"YHighpass", "XYZ Filters", 392, "YHighpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int YHighpass_unused = AirwinRegistry::registerAirwindow({"YHighpass", "XYZ Filters", 393, "YHighpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/YLowpass.h" -int YLowpass_unused = AirwinRegistry::registerAirwindow({"YLowpass", "XYZ Filters", 394, "YLowpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int YLowpass_unused = AirwinRegistry::registerAirwindow({"YLowpass", "XYZ Filters", 395, "YLowpass is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/YNotBandpass.h" -int YNotBandpass_unused = AirwinRegistry::registerAirwindow({"YNotBandpass", "XYZ Filters", 391, "YNotBandpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotBandpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); +int YNotBandpass_unused = AirwinRegistry::registerAirwindow({"YNotBandpass", "XYZ Filters", 392, "YNotBandpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotBandpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/YNotHighpass.h" -int YNotHighpass_unused = AirwinRegistry::registerAirwindow({"YNotHighpass", "XYZ Filters", 393, "YNotHighpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotHighpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); +int YNotHighpass_unused = AirwinRegistry::registerAirwindow({"YNotHighpass", "XYZ Filters", 394, "YNotHighpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotHighpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/YNotLowpass.h" -int YNotLowpass_unused = AirwinRegistry::registerAirwindow({"YNotLowpass", "XYZ Filters", 395, "YNotLowpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotLowpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); +int YNotLowpass_unused = AirwinRegistry::registerAirwindow({"YNotLowpass", "XYZ Filters", 396, "YNotLowpass is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotLowpass::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/YNotNotch.h" -int YNotNotch_unused = AirwinRegistry::registerAirwindow({"YNotNotch", "XYZ Filters", 397, "YNotNotch is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotNotch::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); +int YNotNotch_unused = AirwinRegistry::registerAirwindow({"YNotNotch", "XYZ Filters", 398, "YNotNotch is soft and smooth to nasty, edgy texture-varying filtering, no control smoothing.", airwinconsolidated::YNotNotch::kNumParameters, "2023-10-01", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/YNotch.h" -int YNotch_unused = AirwinRegistry::registerAirwindow({"YNotch", "XYZ Filters", 396, "YNotch is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int YNotch_unused = AirwinRegistry::registerAirwindow({"YNotch", "XYZ Filters", 397, "YNotch is soft and smooth to nasty, edgy texture-varying filtering.", airwinconsolidated::YNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/ZBandpass.h" -int ZBandpass_unused = AirwinRegistry::registerAirwindow({"ZBandpass", "XYZ Filters", 385, "ZBandpass is a bandpass made to sound and act like the Emu e6400 Ultra bandpass.", airwinconsolidated::ZBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ZBandpass_unused = AirwinRegistry::registerAirwindow({"ZBandpass", "XYZ Filters", 386, "ZBandpass is a bandpass made to sound and act like the Emu e6400 Ultra bandpass.", airwinconsolidated::ZBandpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ZBandpass2.h" -int ZBandpass2_unused = AirwinRegistry::registerAirwindow({"ZBandpass2", "XYZ Filters", 380, "ZBandpass2 acts more like the Emu e6400 Ultra bandpass in motion, with control smoothing.", airwinconsolidated::ZBandpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ZBandpass2_unused = AirwinRegistry::registerAirwindow({"ZBandpass2", "XYZ Filters", 381, "ZBandpass2 acts more like the Emu e6400 Ultra bandpass in motion, with control smoothing.", airwinconsolidated::ZBandpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/ZHighpass.h" -int ZHighpass_unused = AirwinRegistry::registerAirwindow({"ZHighpass", "XYZ Filters", 386, "ZHighpass is a highpass made to sound and act like the Emu e6400 Ultra highpass.", airwinconsolidated::ZHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ZHighpass_unused = AirwinRegistry::registerAirwindow({"ZHighpass", "XYZ Filters", 387, "ZHighpass is a highpass made to sound and act like the Emu e6400 Ultra highpass.", airwinconsolidated::ZHighpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ZHighpass2.h" -int ZHighpass2_unused = AirwinRegistry::registerAirwindow({"ZHighpass2", "XYZ Filters", 381, "ZHighpass2 acts more like the Emu e6400 Ultra highpass in motion, with control smoothing.", airwinconsolidated::ZHighpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ZHighpass2_unused = AirwinRegistry::registerAirwindow({"ZHighpass2", "XYZ Filters", 382, "ZHighpass2 acts more like the Emu e6400 Ultra highpass in motion, with control smoothing.", airwinconsolidated::ZHighpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/ZLowpass.h" -int ZLowpass_unused = AirwinRegistry::registerAirwindow({"ZLowpass", "XYZ Filters", 387, "ZLowpass is a lowpass made to sound and act like the Emu e6400 Ultra lowpass.", airwinconsolidated::ZLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ZLowpass_unused = AirwinRegistry::registerAirwindow({"ZLowpass", "XYZ Filters", 388, "ZLowpass is a lowpass made to sound and act like the Emu e6400 Ultra lowpass.", airwinconsolidated::ZLowpass::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ZLowpass2.h" -int ZLowpass2_unused = AirwinRegistry::registerAirwindow({"ZLowpass2", "XYZ Filters", 382, "ZLowpass2 acts more like the Emu e6400 Ultra lowpass in motion, with control smoothing.", airwinconsolidated::ZLowpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ZLowpass2_unused = AirwinRegistry::registerAirwindow({"ZLowpass2", "XYZ Filters", 383, "ZLowpass2 acts more like the Emu e6400 Ultra lowpass in motion, with control smoothing.", airwinconsolidated::ZLowpass2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/ZNotch.h" -int ZNotch_unused = AirwinRegistry::registerAirwindow({"ZNotch", "XYZ Filters", 388, "ZNotch is a notch filter made to sound and act like the Emu e6400 Phaser.", airwinconsolidated::ZNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ZNotch_unused = AirwinRegistry::registerAirwindow({"ZNotch", "XYZ Filters", 389, "ZNotch is a notch filter made to sound and act like the Emu e6400 Phaser.", airwinconsolidated::ZNotch::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ZNotch2.h" -int ZNotch2_unused = AirwinRegistry::registerAirwindow({"ZNotch2", "XYZ Filters", 383, "ZNotch2 acts more like the Emu e6400 Ultra phaser in motion, with control smoothing.", airwinconsolidated::ZNotch2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ZNotch2_unused = AirwinRegistry::registerAirwindow({"ZNotch2", "XYZ Filters", 384, "ZNotch2 acts more like the Emu e6400 Ultra phaser in motion, with control smoothing.", airwinconsolidated::ZNotch2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/ZOutputStage.h" int ZOutputStage_unused = AirwinRegistry::registerAirwindow({"ZOutputStage", "Distortion", 132, "ZOutputStage is the output clipping from the Emu e6400 style Z filters.", airwinconsolidated::ZOutputStage::kNumParameters, "2023-12-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/ZRegion.h" -int ZRegion_unused = AirwinRegistry::registerAirwindow({"ZRegion", "XYZ Filters", 389, "ZRegion is an Emu e6400 style Airwindows Region filter.", airwinconsolidated::ZRegion::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); +int ZRegion_unused = AirwinRegistry::registerAirwindow({"ZRegion", "XYZ Filters", 390, "ZRegion is an Emu e6400 style Airwindows Region filter.", airwinconsolidated::ZRegion::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/ZRegion2.h" -int ZRegion2_unused = AirwinRegistry::registerAirwindow({"ZRegion2", "XYZ Filters", 384, "ZRegion2 is an Emu e6400 style Airwindows Region filter, with control smoothing.", airwinconsolidated::ZRegion2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); +int ZRegion2_unused = AirwinRegistry::registerAirwindow({"ZRegion2", "XYZ Filters", 385, "ZRegion2 is an Emu e6400 style Airwindows Region filter, with control smoothing.", airwinconsolidated::ZRegion2::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Basic", "Recommended", "Latest" }}); #include "autogen_airwin/curve.h" int curve_unused = AirwinRegistry::registerAirwindow({"curve", "Dynamics", 171, "curve is the simplest, purest form of Recurve with no extra boosts.", airwinconsolidated::curve::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/kCathedral.h" -int kCathedral_unused = AirwinRegistry::registerAirwindow({"kCathedral", "Reverb", 288, "kCathedral is a giant reverby space.", airwinconsolidated::kCathedral::kNumParameters, "2023-10-28", []() { return std::make_unique(0); }, -1, { }}); +int kCathedral_unused = AirwinRegistry::registerAirwindow({"kCathedral", "Reverb", 289, "kCathedral is a giant reverby space.", airwinconsolidated::kCathedral::kNumParameters, "2023-10-28", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/kCathedral2.h" -int kCathedral2_unused = AirwinRegistry::registerAirwindow({"kCathedral2", "Reverb", 280, "kCathedral2 is a giant reverby space modeled after the Bricasti Cathedral.", airwinconsolidated::kCathedral2::kNumParameters, "2024-02-10", []() { return std::make_unique(0); }, -1, { }}); +int kCathedral2_unused = AirwinRegistry::registerAirwindow({"kCathedral2", "Reverb", 281, "kCathedral2 is a giant reverby space modeled after the Bricasti Cathedral.", airwinconsolidated::kCathedral2::kNumParameters, "2024-02-10", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/kCathedral3.h" -int kCathedral3_unused = AirwinRegistry::registerAirwindow({"kCathedral3", "Reverb", 272, "kCathedral3 is a giant cathedral-like space using Bezier undersampling.", airwinconsolidated::kCathedral3::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int kCathedral3_unused = AirwinRegistry::registerAirwindow({"kCathedral3", "Reverb", 273, "kCathedral3 is a giant cathedral-like space using Bezier undersampling.", airwinconsolidated::kCathedral3::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/kChamberAR.h" int kChamberAR_unused = AirwinRegistry::registerAirwindow({"kChamberAR", "Ambience", 11, "kChamberAR is a take on tape echo into chamber echo.", airwinconsolidated::kChamberAR::kNumParameters, "2023-05-13", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/kGuitarHall.h" @@ -819,15 +821,15 @@ int kPlate140_unused = AirwinRegistry::registerAirwindow({"kPlate140", "Unclassi #include "autogen_airwin/kPlate240.h" int kPlate240_unused = AirwinRegistry::registerAirwindow({"kPlate240", "Unclassified", -1, "", airwinconsolidated::kPlate240::kNumParameters, "2024-06-23", []() { return std::make_unique(0); }, -1, { }}); #include "autogen_airwin/kPlateA.h" -int kPlateA_unused = AirwinRegistry::registerAirwindow({"kPlateA", "Reverb", 277, "kPlateA is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateA::kNumParameters, "2023-03-31", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int kPlateA_unused = AirwinRegistry::registerAirwindow({"kPlateA", "Reverb", 278, "kPlateA is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateA::kNumParameters, "2023-03-31", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/kPlateB.h" -int kPlateB_unused = AirwinRegistry::registerAirwindow({"kPlateB", "Reverb", 276, "kPlateB is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateB::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int kPlateB_unused = AirwinRegistry::registerAirwindow({"kPlateB", "Reverb", 277, "kPlateB is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateB::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/kPlateC.h" -int kPlateC_unused = AirwinRegistry::registerAirwindow({"kPlateC", "Reverb", 278, "kPlateC is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateC::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int kPlateC_unused = AirwinRegistry::registerAirwindow({"kPlateC", "Reverb", 279, "kPlateC is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateC::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/kPlateD.h" -int kPlateD_unused = AirwinRegistry::registerAirwindow({"kPlateD", "Reverb", 275, "kPlateD is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateD::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); +int kPlateD_unused = AirwinRegistry::registerAirwindow({"kPlateD", "Reverb", 276, "kPlateD is a plate reverb, not unlike its namesake atop Abbey Road.", airwinconsolidated::kPlateD::kNumParameters, "2023-04-09", []() { return std::make_unique(0); }, -1, { "Recommended", "Latest" }}); #include "autogen_airwin/uLawDecode.h" -int uLawDecode_unused = AirwinRegistry::registerAirwindow({"uLawDecode", "Utility", 372, "uLawDecode is a Console-like encode/decode pair, but much more extreme.", airwinconsolidated::uLawDecode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int uLawDecode_unused = AirwinRegistry::registerAirwindow({"uLawDecode", "Utility", 373, "uLawDecode is a Console-like encode/decode pair, but much more extreme.", airwinconsolidated::uLawDecode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); #include "autogen_airwin/uLawEncode.h" -int uLawEncode_unused = AirwinRegistry::registerAirwindow({"uLawEncode", "Utility", 371, "uLawEncode is a Console-like encode/decode pair, but much more extreme.", airwinconsolidated::uLawEncode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); +int uLawEncode_unused = AirwinRegistry::registerAirwindow({"uLawEncode", "Utility", 372, "uLawEncode is a Console-like encode/decode pair, but much more extreme.", airwinconsolidated::uLawEncode::kNumParameters, "2022-11-21", []() { return std::make_unique(0); }, -1, { "Latest" }}); int unusedComplete = AirwinRegistry::completeRegistry(); diff --git a/src/autogen_airwin/CMakeLists.txt b/src/autogen_airwin/CMakeLists.txt index 574c6de..c1ea746 100644 --- a/src/autogen_airwin/CMakeLists.txt +++ b/src/autogen_airwin/CMakeLists.txt @@ -705,6 +705,8 @@ set(AIRWIN_SOURCES src/autogen_airwin/ToTape5Proc.cpp src/autogen_airwin/ToTape6.cpp src/autogen_airwin/ToTape6Proc.cpp + src/autogen_airwin/ToTape7.cpp + src/autogen_airwin/ToTape7Proc.cpp src/autogen_airwin/ToVinyl4.cpp src/autogen_airwin/ToVinyl4Proc.cpp src/autogen_airwin/ToneSlant.cpp diff --git a/src/autogen_airwin/ToTape7.cpp b/src/autogen_airwin/ToTape7.cpp new file mode 100644 index 0000000..409d37f --- /dev/null +++ b/src/autogen_airwin/ToTape7.cpp @@ -0,0 +1,221 @@ +/* ======================================== + * ToTape7 - ToTape7.h + * Copyright (c) airwindows, Airwindows uses the MIT license + * ======================================== */ + +#ifndef __ToTape7_H +#include "ToTape7.h" +#endif +#include +#include +namespace airwinconsolidated::ToTape7 { + +AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new ToTape7(audioMaster);} + +ToTape7::ToTape7(audioMasterCallback audioMaster) : + AudioEffectX(audioMaster, kNumPrograms, kNumParameters) +{ + A = 0.5; + B = 0.5; + C = 0.5; + D = 0.25; + E = 0.5; + F = 0.5; + G = 0.5; + H = 0.5; + I = 0.5; + J = 0.5; + + iirEncL = 0.0; + iirEncR = 0.0; + + for (int temp = 0; temp < 1001; temp++) {dL[temp] = 0.0;dR[temp] = 0.0;} + sweepL = M_PI; + sweepR = M_PI; + nextmaxL = 0.5; + nextmaxR = 0.5; + gcount = 0; + + for (int x = 0; x < gslew_total; x++) gslew[x] = 0.0; + + iirMidRollerL = 0.0; + iirLowCutoffL = 0.0; + iirMidRollerR = 0.0; + iirLowCutoffR = 0.0; + + headBumpL = 0.0; + headBumpR = 0.0; + for (int x = 0; x < hdb_total; x++) {hdbA[x] = 0.0;hdbB[x] = 0.0;} + //from ZBandpass, so I can use enums with it + + iirDecL = 0.0; + iirDecR = 0.0; + + lastSampleL = 0.0; + wasPosClipL = false; + wasNegClipL = false; + lastSampleR = 0.0; + wasPosClipR = false; + wasNegClipR = false; + for (int x = 0; x < 16; x++) {intermediateL[x] = 0.0; intermediateR[x] = 0.0;} + //this is reset: values being initialized only once. Startup values, whatever they are. + + fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX; + fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX; + //this is reset: values being initialized only once. Startup values, whatever they are. + + _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. + _canDo.insert("plugAsSend"); // plug-in can be used as a send effect. + _canDo.insert("x2in2out"); + setNumInputs(kNumInputs); + setNumOutputs(kNumOutputs); + setUniqueID(kUniqueId); + canProcessReplacing(); // supports output replacing + canDoubleReplacing(); // supports double precision processing + programsAreChunks(true); + vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name +} + +ToTape7::~ToTape7() {} +VstInt32 ToTape7::getVendorVersion () {return 1000;} +void ToTape7::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} +void ToTape7::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);} +//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than +//trying to do versioning and preventing people from using older versions. Maybe they like the old one! + +static float pinParameter(float data) +{ + if (data < 0.0f) return 0.0f; + if (data > 1.0f) return 1.0f; + return data; +} + +void ToTape7::setParameter(VstInt32 index, float value) { + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + case kParamC: C = value; break; + case kParamD: D = value; break; + case kParamE: E = value; break; + case kParamF: F = value; break; + case kParamG: G = value; break; + case kParamH: H = value; break; + case kParamI: I = value; break; + case kParamJ: J = value; break; + default: break; // unknown parameter, shouldn't happen! + } +} + +float ToTape7::getParameter(VstInt32 index) { + switch (index) { + case kParamA: return A; break; + case kParamB: return B; break; + case kParamC: return C; break; + case kParamD: return D; break; + case kParamE: return E; break; + case kParamF: return F; break; + case kParamG: return G; break; + case kParamH: return H; break; + case kParamI: return I; break; + case kParamJ: return J; break; + default: break; // unknown parameter, shouldn't happen! + } return 0.0; //we only need to update the relevant name, this is simple to manage +} + +void ToTape7::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "EncAmt", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "EncFreq", kVstMaxParamStrLen); break; + case kParamC: vst_strncpy (text, "TapeDrv", kVstMaxParamStrLen); break; + case kParamD: vst_strncpy (text, "Flutter", kVstMaxParamStrLen); break; + case kParamE: vst_strncpy (text, "FlutSpd", kVstMaxParamStrLen); break; + case kParamF: vst_strncpy (text, "Bias", kVstMaxParamStrLen); break; + case kParamG: vst_strncpy (text, "HeadBmp", kVstMaxParamStrLen); break; + case kParamH: vst_strncpy (text, "HeadFrq", kVstMaxParamStrLen); break; + case kParamI: vst_strncpy (text, "DecAmt", kVstMaxParamStrLen); break; + case kParamJ: vst_strncpy (text, "DecFreq", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host +} + +void ToTape7::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: float2string (A, text, kVstMaxParamStrLen); break; + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + case kParamC: float2string (C, text, kVstMaxParamStrLen); break; + case kParamD: float2string (D, text, kVstMaxParamStrLen); break; + case kParamE: float2string (E, text, kVstMaxParamStrLen); break; + case kParamF: float2string (F, text, kVstMaxParamStrLen); break; + case kParamG: float2string (G, text, kVstMaxParamStrLen); break; + case kParamH: float2string (((H*H)*175.0)+25.0, text, kVstMaxParamStrLen); break; + case kParamI: float2string (I, text, kVstMaxParamStrLen); break; + case kParamJ: float2string (J, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices +} + +void ToTape7::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamE: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamF: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamG: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamH: vst_strncpy (text, "hz", kVstMaxParamStrLen); break; + case kParamI: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamJ: vst_strncpy (text, "", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } +} + +VstInt32 ToTape7::canDo(char *text) +{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know + +bool ToTape7::getEffectName(char* name) { + vst_strncpy(name, "ToTape7", kVstMaxProductStrLen); return true; +} + +VstPlugCategory ToTape7::getPlugCategory() {return kPlugCategEffect;} + +bool ToTape7::getProductString(char* text) { + vst_strncpy (text, "airwindows ToTape7", kVstMaxProductStrLen); return true; +} + +bool ToTape7::getVendorString(char* text) { + vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; +} +bool ToTape7::parameterTextToValue(VstInt32 index, const char *text, float &value) { + switch(index) { + case kParamA: { auto b = string2float(text, value); return b; break; } + case kParamB: { auto b = string2float(text, value); return b; break; } + case kParamC: { auto b = string2float(text, value); return b; break; } + case kParamD: { auto b = string2float(text, value); return b; break; } + case kParamE: { auto b = string2float(text, value); return b; break; } + case kParamF: { auto b = string2float(text, value); return b; break; } + case kParamG: { auto b = string2float(text, value); return b; break; } + case kParamH: { auto b = string2float(text, value); if (b) { value = sqrt(std::max((value - 25.0) / (175.0), 0.)); } return b; break; } + case kParamI: { auto b = string2float(text, value); return b; break; } + case kParamJ: { auto b = string2float(text, value); return b; break; } + + } + return false; +} +bool ToTape7::canConvertParameterTextToValue(VstInt32 index) { + switch(index) { + case kParamA: return true; + case kParamB: return true; + case kParamC: return true; + case kParamD: return true; + case kParamE: return true; + case kParamF: return true; + case kParamG: return true; + case kParamH: return true; + case kParamI: return true; + case kParamJ: return true; + + } + return false; +} +} // end namespace diff --git a/src/autogen_airwin/ToTape7.h b/src/autogen_airwin/ToTape7.h new file mode 100644 index 0000000..42f9f05 --- /dev/null +++ b/src/autogen_airwin/ToTape7.h @@ -0,0 +1,162 @@ +/* ======================================== + * ToTape7 - ToTape7.h + * Created 8/12/11 by SPIAdmin + * Copyright (c) Airwindows, Airwindows uses the MIT license + * ======================================== */ + +#ifndef __ToTape7_ToTape7_H +#define __ToTape7_ToTape7_H + +#ifndef __audioeffect__ +#include "../airwin_consolidated_base.h" +#endif + +#include +#include +#include + +namespace airwinconsolidated::ToTape7 { +enum { + kParamA =0, + kParamB =1, + kParamC =2, + kParamD =3, + kParamE =4, + kParamF =5, + kParamG =6, + kParamH =7, + kParamI =8, + kParamJ =9, + kNumParameters = 10 +}; // + +const int kNumPrograms = 0; +const int kNumInputs = 2; +const int kNumOutputs = 2; +const unsigned long kUniqueId = 'totv'; //Change this to what the AU identity is! + +class ToTape7 : + public AudioEffectX +{ +public: + ToTape7(audioMasterCallback audioMaster); + ~ToTape7(); + virtual bool getEffectName(char* name); // The plug-in name + virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in + virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg + virtual bool getVendorString(char* text); // Vendor info + virtual VstInt32 getVendorVersion(); // Version number + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + virtual void getProgramName(char *name); // read the name from the host + virtual void setProgramName(char *name); // changes the name of the preset displayed in the host + virtual float getParameter(VstInt32 index); // get the parameter value at the specified index + virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value + virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB) + virtual void getParameterName(VstInt32 index, char *text); // name of the parameter + virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value + // Added by the perl as inverses + virtual bool parameterTextToValue(VstInt32 index, const char *text, float &value); + virtual bool canConvertParameterTextToValue(VstInt32 index); + virtual VstInt32 canDo(char *text); +private: + char _programName[kVstMaxProgNameLen + 1]; + std::set< std::string > _canDo; + + float A; + float B; + float C; + float D; + float E; + float F; + float G; + float H; + float I; + float J; + + double iirEncL; + double iirEncR; + + double dL[1002]; + double dR[1002]; + double sweepL; + double sweepR; + double nextmaxL; + double nextmaxR; + int gcount; + + enum { + prevSampL1, + prevSampR1, + threshold1, + prevSampL2, + prevSampR2, + threshold2, + prevSampL3, + prevSampR3, + threshold3, + prevSampL4, + prevSampR4, + threshold4, + prevSampL5, + prevSampR5, + threshold5, + prevSampL6, + prevSampR6, + threshold6, + prevSampL7, + prevSampR7, + threshold7, + prevSampL8, + prevSampR8, + threshold8, + prevSampL9, + prevSampR9, + threshold9, + gslew_total + }; //fixed frequency pear filter for ultrasonics, stereo + double gslew[gslew_total]; //end bias + + double iirMidRollerL; + double iirLowCutoffL; + double iirMidRollerR; + double iirLowCutoffR; + + double headBumpL; + double headBumpR; + enum { + hdb_freq, + hdb_reso, + hdb_a0, + hdb_a1, + hdb_a2, + hdb_b1, + hdb_b2, + hdb_sL1, + hdb_sL2, + hdb_sR1, + hdb_sR2, + hdb_total + }; //fixed frequency biquad filter for ultrasonics, stereo + double hdbA[hdb_total]; + double hdbB[hdb_total]; + + double iirDecL; + double iirDecR; + + double lastSampleL; + double intermediateL[16]; + bool wasPosClipL; + bool wasNegClipL; + double lastSampleR; + double intermediateR[16]; + bool wasPosClipR; + bool wasNegClipR; //Stereo ClipOnly2 + + uint32_t fpdL; + uint32_t fpdR; + //default stuff +}; + +#endif +} // end namespace diff --git a/src/autogen_airwin/ToTape7Proc.cpp b/src/autogen_airwin/ToTape7Proc.cpp new file mode 100644 index 0000000..e1bb15d --- /dev/null +++ b/src/autogen_airwin/ToTape7Proc.cpp @@ -0,0 +1,558 @@ +/* ======================================== + * ToTape7 - ToTape7.h + * Copyright (c) airwindows, Airwindows uses the MIT license + * ======================================== */ + +#ifndef __ToTape7_H +#include "ToTape7.h" +#endif +namespace airwinconsolidated::ToTape7 { + +void ToTape7::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4 + if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16; + + double dublyAmount = pow(A,3)*0.105468; + double iirEncFreq = B/overallscale; + double iirMidFreq = ((B * 0.618) + 0.382)/overallscale; + double inputGain = pow(C*2.0,2.0); + double flutDepth = pow(D,5)*overallscale*60; + if (flutDepth > 498.0) flutDepth = 498.0; + double flutFrequency = (0.02*pow(E,3))/overallscale; + double bias = (F*2.0)-1.0; + double underBias = (pow(bias,4)*0.25)/overallscale; + double overBias = pow(1.0-bias,3)/overallscale; + if (bias > 0.0) underBias = 0.0; + if (bias < 0.0) overBias = 1.0/overallscale; + + gslew[threshold9] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold8] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold7] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold6] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold5] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold4] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold3] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold2] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold1] = overBias; + overBias *= 1.618033988749894848204586; + + double headBumpDrive = (G*0.1)/overallscale; + double headBumpMix = G*0.5; + + hdbA[hdb_freq] = (((H*H)*175.0)+25.0)/getSampleRate(); + hdbB[hdb_freq] = hdbA[hdb_freq]*0.9375; + hdbB[hdb_reso] = hdbA[hdb_reso] = 0.618033988749894848204586; + hdbB[hdb_a1] = hdbA[hdb_a1] = 0.0; + + double K = tan(M_PI * hdbA[hdb_freq]); + double norm = 1.0 / (1.0 + K / hdbA[hdb_reso] + K * K); + hdbA[hdb_a0] = K / hdbA[hdb_reso] * norm; + hdbA[hdb_a2] = -hdbA[hdb_a0]; + hdbA[hdb_b1] = 2.0 * (K * K - 1.0) * norm; + hdbA[hdb_b2] = (1.0 - K / hdbA[hdb_reso] + K * K) * norm; + K = tan(M_PI * hdbB[hdb_freq]); + norm = 1.0 / (1.0 + K / hdbB[hdb_reso] + K * K); + hdbB[hdb_a0] = K / hdbB[hdb_reso] * norm; + hdbB[hdb_a2] = -hdbB[hdb_a0]; + hdbB[hdb_b1] = 2.0 * (K * K - 1.0) * norm; + hdbB[hdb_b2] = (1.0 - K / hdbB[hdb_reso] + K * K) * norm; + + double outlyAmount = pow(I,3)*0.109744; + double iirDecFreq = J/overallscale; + double subCurve = sin(G*M_PI); + double iirSubFreq = (subCurve*0.008)/overallscale; + + while (--sampleFrames >= 0) + { + double inputSampleL = *in1; + double inputSampleR = *in2; + if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17; + if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17; + + //begin Dubly encode + double doubly = 0.0; + if (dublyAmount > 0.0) { + iirEncL = (iirEncL * (1.0 - iirEncFreq)) + (inputSampleL * iirEncFreq); + double doubly = inputSampleL - iirEncL; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleL += doubly*dublyAmount; + iirEncR = (iirEncR * (1.0 - iirEncFreq)) + (inputSampleR * iirEncFreq); + doubly = inputSampleR - iirEncR; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleR += doubly*dublyAmount; + } + //end Dubly encode + + if (inputGain != 1.0) { + inputSampleL *= inputGain; + inputSampleR *= inputGain; + } + + //begin Flutter + if (flutDepth > 0.0) { + if (gcount < 0 || gcount > 999) gcount = 999; + dL[gcount] = inputSampleL; + int count = gcount; + double offset = flutDepth + (flutDepth * sin(sweepL)); + sweepL += nextmaxL * flutFrequency; + if (sweepL > (M_PI*2.0)) {sweepL -= M_PI*2.0; nextmaxL = 0.24 + (fpdL / (double)UINT32_MAX * 0.74);} + count += (int)floor(offset); + inputSampleL = (dL[count-((count > 999)?1000:0)] * (1-(offset-floor(offset)))); + inputSampleL += (dL[count+1-((count+1 > 999)?1000:0)] * (offset-floor(offset))); + dR[gcount] = inputSampleR; + count = gcount; + offset = flutDepth + (flutDepth * sin(sweepR)); + sweepR += nextmaxR * flutFrequency; + if (sweepR > (M_PI*2.0)) {sweepR -= M_PI*2.0; nextmaxR = 0.24 + (fpdR / (double)UINT32_MAX * 0.74);} + count += (int)floor(offset); + inputSampleR = (dR[count-((count > 999)?1000:0)] * (1-(offset-floor(offset)))); + inputSampleR += (dR[count+1-((count+1 > 999)?1000:0)] * (offset-floor(offset))); + gcount--; + } + //end Flutter + + //start bias routine + if (fabs(bias) > 0.001) { + for (int x = 0; x < gslew_total; x += 3) { + if (underBias > 0.0) { + double stuck = fabs(inputSampleL - (gslew[x]/0.975)) / underBias; + if (stuck < 1.0) inputSampleL = (inputSampleL * stuck) + ((gslew[x]/0.975)*(1.0-stuck)); + stuck = fabs(inputSampleR - (gslew[x+1]/0.975)) / underBias; + if (stuck < 1.0) inputSampleR = (inputSampleR * stuck) + ((gslew[x+1]/0.975)*(1.0-stuck)); + } + if ((inputSampleL - gslew[x]) > gslew[x+2]) inputSampleL = gslew[x] + gslew[x+2]; + if (-(inputSampleL - gslew[x]) > gslew[x+2]) inputSampleL = gslew[x] - gslew[x+2]; + gslew[x] = inputSampleL * 0.975; + if ((inputSampleR - gslew[x+1]) > gslew[x+2]) inputSampleR = gslew[x+1] + gslew[x+2]; + if (-(inputSampleR - gslew[x+1]) > gslew[x+2]) inputSampleR = gslew[x+1] - gslew[x+2]; + gslew[x+1] = inputSampleR * 0.975; + } + } + //end bias routine + + //toTape basic algorithm L + iirMidRollerL = (iirMidRollerL * (1.0-iirMidFreq)) + (inputSampleL*iirMidFreq); + double HighsSampleL = inputSampleL - iirMidRollerL; + double LowsSampleL = iirMidRollerL; + if (iirSubFreq > 0.0) { + iirLowCutoffL = (iirLowCutoffL * (1.0-iirSubFreq)) + (LowsSampleL*iirSubFreq); + LowsSampleL -= iirLowCutoffL; + } + if (LowsSampleL > 1.57079633) LowsSampleL = 1.57079633; + if (LowsSampleL < -1.57079633) LowsSampleL = -1.57079633; + LowsSampleL = sin(LowsSampleL); + double thinnedHighSample = fabs(HighsSampleL)*1.57079633; + if (thinnedHighSample > 1.57079633) thinnedHighSample = 1.57079633; + thinnedHighSample = 1.0-cos(thinnedHighSample); + if (HighsSampleL < 0) thinnedHighSample = -thinnedHighSample; + HighsSampleL -= thinnedHighSample; + + //toTape basic algorithm R + iirMidRollerR = (iirMidRollerR * (1.0-iirMidFreq)) + (inputSampleR*iirMidFreq); + double HighsSampleR = inputSampleR - iirMidRollerR; + double LowsSampleR = iirMidRollerR; + if (iirSubFreq > 0.0) { + iirLowCutoffR = (iirLowCutoffR * (1.0-iirSubFreq)) + (LowsSampleR*iirSubFreq); + LowsSampleR -= iirLowCutoffR; + } + if (LowsSampleR > 1.57079633) LowsSampleR = 1.57079633; + if (LowsSampleR < -1.57079633) LowsSampleR = -1.57079633; + LowsSampleR = sin(LowsSampleR); + thinnedHighSample = fabs(HighsSampleR)*1.57079633; + if (thinnedHighSample > 1.57079633) thinnedHighSample = 1.57079633; + thinnedHighSample = 1.0-cos(thinnedHighSample); + if (HighsSampleR < 0) thinnedHighSample = -thinnedHighSample; + HighsSampleR -= thinnedHighSample; + + //begin HeadBump + double headBumpSampleL = 0.0; + double headBumpSampleR = 0.0; + if (headBumpMix > 0.0) { + headBumpL += (LowsSampleL * headBumpDrive); + headBumpL -= (headBumpL * headBumpL * headBumpL * (0.0618/sqrt(overallscale))); + headBumpR += (LowsSampleR * headBumpDrive); + headBumpR -= (headBumpR * headBumpR * headBumpR * (0.0618/sqrt(overallscale))); + double headBiqSampleL = (headBumpL * hdbA[hdb_a0]) + hdbA[hdb_sL1]; + hdbA[hdb_sL1] = (headBumpL * hdbA[hdb_a1]) - (headBiqSampleL * hdbA[hdb_b1]) + hdbA[hdb_sL2]; + hdbA[hdb_sL2] = (headBumpL * hdbA[hdb_a2]) - (headBiqSampleL * hdbA[hdb_b2]); + headBumpSampleL = (headBiqSampleL * hdbB[hdb_a0]) + hdbB[hdb_sL1]; + hdbB[hdb_sL1] = (headBiqSampleL * hdbB[hdb_a1]) - (headBumpSampleL * hdbB[hdb_b1]) + hdbB[hdb_sL2]; + hdbB[hdb_sL2] = (headBiqSampleL * hdbB[hdb_a2]) - (headBumpSampleL * hdbB[hdb_b2]); + double headBiqSampleR = (headBumpR * hdbA[hdb_a0]) + hdbA[hdb_sR1]; + hdbA[hdb_sR1] = (headBumpR * hdbA[hdb_a1]) - (headBiqSampleR * hdbA[hdb_b1]) + hdbA[hdb_sR2]; + hdbA[hdb_sR2] = (headBumpR * hdbA[hdb_a2]) - (headBiqSampleR * hdbA[hdb_b2]); + headBumpSampleR = (headBiqSampleR * hdbB[hdb_a0]) + hdbB[hdb_sR1]; + hdbB[hdb_sR1] = (headBiqSampleR * hdbB[hdb_a1]) - (headBumpSampleR * hdbB[hdb_b1]) + hdbB[hdb_sR2]; + hdbB[hdb_sR2] = (headBiqSampleR * hdbB[hdb_a2]) - (headBumpSampleR * hdbB[hdb_b2]); + } + //end HeadBump + + inputSampleL = LowsSampleL + HighsSampleL + (headBumpSampleL * headBumpMix); + inputSampleR = LowsSampleR + HighsSampleR + (headBumpSampleR * headBumpMix); + + //begin Dubly decode + if (outlyAmount > 0.0) { + iirDecL = (iirDecL * (1.0 - iirDecFreq)) + (inputSampleL * iirDecFreq); + doubly = inputSampleL - iirDecL; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleL -= doubly*outlyAmount; + iirDecR = (iirDecR * (1.0 - iirDecFreq)) + (inputSampleR * iirDecFreq); + doubly = inputSampleR - iirDecR; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleR -= doubly*outlyAmount; + } + //end Dubly decode + + //begin ClipOnly2 stereo as a little, compressed chunk that can be dropped into code + if (inputSampleL > 4.0) inputSampleL = 4.0; if (inputSampleL < -4.0) inputSampleL = -4.0; + if (wasPosClipL == true) { //current will be over + if (inputSampleL0.9549925859) {wasPosClipL=true;inputSampleL=0.7058208+(lastSampleL*0.2609148);} + if (wasNegClipL == true) { //current will be -over + if (inputSampleL > lastSampleL) lastSampleL=-0.7058208+(inputSampleL*0.2609148); + else lastSampleL=-0.2491717+(lastSampleL*0.7390851); + } wasNegClipL = false; + if (inputSampleL<-0.9549925859) {wasNegClipL=true;inputSampleL=-0.7058208+(lastSampleL*0.2609148);} + intermediateL[spacing] = inputSampleL; + inputSampleL = lastSampleL; //Latency is however many samples equals one 44.1k sample + for (int x = spacing; x > 0; x--) intermediateL[x-1] = intermediateL[x]; + lastSampleL = intermediateL[0]; //run a little buffer to handle this + + if (inputSampleR > 4.0) inputSampleR = 4.0; if (inputSampleR < -4.0) inputSampleR = -4.0; + if (wasPosClipR == true) { //current will be over + if (inputSampleR0.9549925859) {wasPosClipR=true;inputSampleR=0.7058208+(lastSampleR*0.2609148);} + if (wasNegClipR == true) { //current will be -over + if (inputSampleR > lastSampleR) lastSampleR=-0.7058208+(inputSampleR*0.2609148); + else lastSampleR=-0.2491717+(lastSampleR*0.7390851); + } wasNegClipR = false; + if (inputSampleR<-0.9549925859) {wasNegClipR=true;inputSampleR=-0.7058208+(lastSampleR*0.2609148);} + intermediateR[spacing] = inputSampleR; + inputSampleR = lastSampleR; //Latency is however many samples equals one 44.1k sample + for (int x = spacing; x > 0; x--) intermediateR[x-1] = intermediateR[x]; + lastSampleR = intermediateR[0]; //run a little buffer to handle this + //end ClipOnly2 stereo as a little, compressed chunk that can be dropped into code + + //begin 32 bit stereo floating point dither + int expon; frexpf((float)inputSampleL, &expon); + fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5; + inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62)); + frexpf((float)inputSampleR, &expon); + fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5; + inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62)); + //end 32 bit stereo floating point dither + + *out1 = inputSampleL; + *out2 = inputSampleR; + + in1++; + in2++; + out1++; + out2++; + } +} + +void ToTape7::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + + double overallscale = 1.0; + overallscale /= 44100.0; + overallscale *= getSampleRate(); + + int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4 + if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16; + + double dublyAmount = pow(A,3)*0.105468; + double iirEncFreq = B/overallscale; + double iirMidFreq = ((B * 0.618) + 0.382)/overallscale; + double inputGain = pow(C*2.0,2.0); + double flutDepth = pow(D,5)*overallscale*60; + if (flutDepth > 498.0) flutDepth = 498.0; + double flutFrequency = (0.02*pow(E,3))/overallscale; + double bias = (F*2.0)-1.0; + double underBias = (pow(bias,4)*0.25)/overallscale; + double overBias = pow(1.0-bias,3)/overallscale; + if (bias > 0.0) underBias = 0.0; + if (bias < 0.0) overBias = 1.0/overallscale; + + gslew[threshold9] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold8] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold7] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold6] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold5] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold4] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold3] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold2] = overBias; + overBias *= 1.618033988749894848204586; + gslew[threshold1] = overBias; + overBias *= 1.618033988749894848204586; + + double headBumpDrive = (G*0.1)/overallscale; + double headBumpMix = G*0.5; + + hdbA[hdb_freq] = (((H*H)*175.0)+25.0)/getSampleRate(); + hdbB[hdb_freq] = hdbA[hdb_freq]*0.9375; + hdbB[hdb_reso] = hdbA[hdb_reso] = 0.618033988749894848204586; + hdbB[hdb_a1] = hdbA[hdb_a1] = 0.0; + + double K = tan(M_PI * hdbA[hdb_freq]); + double norm = 1.0 / (1.0 + K / hdbA[hdb_reso] + K * K); + hdbA[hdb_a0] = K / hdbA[hdb_reso] * norm; + hdbA[hdb_a2] = -hdbA[hdb_a0]; + hdbA[hdb_b1] = 2.0 * (K * K - 1.0) * norm; + hdbA[hdb_b2] = (1.0 - K / hdbA[hdb_reso] + K * K) * norm; + K = tan(M_PI * hdbB[hdb_freq]); + norm = 1.0 / (1.0 + K / hdbB[hdb_reso] + K * K); + hdbB[hdb_a0] = K / hdbB[hdb_reso] * norm; + hdbB[hdb_a2] = -hdbB[hdb_a0]; + hdbB[hdb_b1] = 2.0 * (K * K - 1.0) * norm; + hdbB[hdb_b2] = (1.0 - K / hdbB[hdb_reso] + K * K) * norm; + + double outlyAmount = pow(I,3)*0.109744; + double iirDecFreq = J/overallscale; + double subCurve = sin(G*M_PI); + double iirSubFreq = (subCurve*0.008)/overallscale; + + while (--sampleFrames >= 0) + { + double inputSampleL = *in1; + double inputSampleR = *in2; + if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17; + if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17; + + //begin Dubly encode + double doubly = 0.0; + if (dublyAmount > 0.0) { + iirEncL = (iirEncL * (1.0 - iirEncFreq)) + (inputSampleL * iirEncFreq); + double doubly = inputSampleL - iirEncL; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleL += doubly*dublyAmount; + iirEncR = (iirEncR * (1.0 - iirEncFreq)) + (inputSampleR * iirEncFreq); + doubly = inputSampleR - iirEncR; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleR += doubly*dublyAmount; + } + //end Dubly encode + + if (inputGain != 1.0) { + inputSampleL *= inputGain; + inputSampleR *= inputGain; + } + + //begin Flutter + if (flutDepth > 0.0) { + if (gcount < 0 || gcount > 999) gcount = 999; + dL[gcount] = inputSampleL; + int count = gcount; + double offset = flutDepth + (flutDepth * sin(sweepL)); + sweepL += nextmaxL * flutFrequency; + if (sweepL > (M_PI*2.0)) {sweepL -= M_PI*2.0; nextmaxL = 0.24 + (fpdL / (double)UINT32_MAX * 0.74);} + count += (int)floor(offset); + inputSampleL = (dL[count-((count > 999)?1000:0)] * (1-(offset-floor(offset)))); + inputSampleL += (dL[count+1-((count+1 > 999)?1000:0)] * (offset-floor(offset))); + dR[gcount] = inputSampleR; + count = gcount; + offset = flutDepth + (flutDepth * sin(sweepR)); + sweepR += nextmaxR * flutFrequency; + if (sweepR > (M_PI*2.0)) {sweepR -= M_PI*2.0; nextmaxR = 0.24 + (fpdR / (double)UINT32_MAX * 0.74);} + count += (int)floor(offset); + inputSampleR = (dR[count-((count > 999)?1000:0)] * (1-(offset-floor(offset)))); + inputSampleR += (dR[count+1-((count+1 > 999)?1000:0)] * (offset-floor(offset))); + gcount--; + } + //end Flutter + + //start bias routine + if (fabs(bias) > 0.001) { + for (int x = 0; x < gslew_total; x += 3) { + if (underBias > 0.0) { + double stuck = fabs(inputSampleL - (gslew[x]/0.975)) / underBias; + if (stuck < 1.0) inputSampleL = (inputSampleL * stuck) + ((gslew[x]/0.975)*(1.0-stuck)); + stuck = fabs(inputSampleR - (gslew[x+1]/0.975)) / underBias; + if (stuck < 1.0) inputSampleR = (inputSampleR * stuck) + ((gslew[x+1]/0.975)*(1.0-stuck)); + } + if ((inputSampleL - gslew[x]) > gslew[x+2]) inputSampleL = gslew[x] + gslew[x+2]; + if (-(inputSampleL - gslew[x]) > gslew[x+2]) inputSampleL = gslew[x] - gslew[x+2]; + gslew[x] = inputSampleL * 0.975; + if ((inputSampleR - gslew[x+1]) > gslew[x+2]) inputSampleR = gslew[x+1] + gslew[x+2]; + if (-(inputSampleR - gslew[x+1]) > gslew[x+2]) inputSampleR = gslew[x+1] - gslew[x+2]; + gslew[x+1] = inputSampleR * 0.975; + } + } + //end bias routine + + //toTape basic algorithm L + iirMidRollerL = (iirMidRollerL * (1.0-iirMidFreq)) + (inputSampleL*iirMidFreq); + double HighsSampleL = inputSampleL - iirMidRollerL; + double LowsSampleL = iirMidRollerL; + if (iirSubFreq > 0.0) { + iirLowCutoffL = (iirLowCutoffL * (1.0-iirSubFreq)) + (LowsSampleL*iirSubFreq); + LowsSampleL -= iirLowCutoffL; + } + if (LowsSampleL > 1.57079633) LowsSampleL = 1.57079633; + if (LowsSampleL < -1.57079633) LowsSampleL = -1.57079633; + LowsSampleL = sin(LowsSampleL); + double thinnedHighSample = fabs(HighsSampleL)*1.57079633; + if (thinnedHighSample > 1.57079633) thinnedHighSample = 1.57079633; + thinnedHighSample = 1.0-cos(thinnedHighSample); + if (HighsSampleL < 0) thinnedHighSample = -thinnedHighSample; + HighsSampleL -= thinnedHighSample; + + //toTape basic algorithm R + iirMidRollerR = (iirMidRollerR * (1.0-iirMidFreq)) + (inputSampleR*iirMidFreq); + double HighsSampleR = inputSampleR - iirMidRollerR; + double LowsSampleR = iirMidRollerR; + if (iirSubFreq > 0.0) { + iirLowCutoffR = (iirLowCutoffR * (1.0-iirSubFreq)) + (LowsSampleR*iirSubFreq); + LowsSampleR -= iirLowCutoffR; + } + if (LowsSampleR > 1.57079633) LowsSampleR = 1.57079633; + if (LowsSampleR < -1.57079633) LowsSampleR = -1.57079633; + LowsSampleR = sin(LowsSampleR); + thinnedHighSample = fabs(HighsSampleR)*1.57079633; + if (thinnedHighSample > 1.57079633) thinnedHighSample = 1.57079633; + thinnedHighSample = 1.0-cos(thinnedHighSample); + if (HighsSampleR < 0) thinnedHighSample = -thinnedHighSample; + HighsSampleR -= thinnedHighSample; + + //begin HeadBump + double headBumpSampleL = 0.0; + double headBumpSampleR = 0.0; + if (headBumpMix > 0.0) { + headBumpL += (LowsSampleL * headBumpDrive); + headBumpL -= (headBumpL * headBumpL * headBumpL * (0.0618/sqrt(overallscale))); + headBumpR += (LowsSampleR * headBumpDrive); + headBumpR -= (headBumpR * headBumpR * headBumpR * (0.0618/sqrt(overallscale))); + double headBiqSampleL = (headBumpL * hdbA[hdb_a0]) + hdbA[hdb_sL1]; + hdbA[hdb_sL1] = (headBumpL * hdbA[hdb_a1]) - (headBiqSampleL * hdbA[hdb_b1]) + hdbA[hdb_sL2]; + hdbA[hdb_sL2] = (headBumpL * hdbA[hdb_a2]) - (headBiqSampleL * hdbA[hdb_b2]); + headBumpSampleL = (headBiqSampleL * hdbB[hdb_a0]) + hdbB[hdb_sL1]; + hdbB[hdb_sL1] = (headBiqSampleL * hdbB[hdb_a1]) - (headBumpSampleL * hdbB[hdb_b1]) + hdbB[hdb_sL2]; + hdbB[hdb_sL2] = (headBiqSampleL * hdbB[hdb_a2]) - (headBumpSampleL * hdbB[hdb_b2]); + double headBiqSampleR = (headBumpR * hdbA[hdb_a0]) + hdbA[hdb_sR1]; + hdbA[hdb_sR1] = (headBumpR * hdbA[hdb_a1]) - (headBiqSampleR * hdbA[hdb_b1]) + hdbA[hdb_sR2]; + hdbA[hdb_sR2] = (headBumpR * hdbA[hdb_a2]) - (headBiqSampleR * hdbA[hdb_b2]); + headBumpSampleR = (headBiqSampleR * hdbB[hdb_a0]) + hdbB[hdb_sR1]; + hdbB[hdb_sR1] = (headBiqSampleR * hdbB[hdb_a1]) - (headBumpSampleR * hdbB[hdb_b1]) + hdbB[hdb_sR2]; + hdbB[hdb_sR2] = (headBiqSampleR * hdbB[hdb_a2]) - (headBumpSampleR * hdbB[hdb_b2]); + } + //end HeadBump + + inputSampleL = LowsSampleL + HighsSampleL + (headBumpSampleL * headBumpMix); + inputSampleR = LowsSampleR + HighsSampleR + (headBumpSampleR * headBumpMix); + + //begin Dubly decode + if (outlyAmount > 0.0) { + iirDecL = (iirDecL * (1.0 - iirDecFreq)) + (inputSampleL * iirDecFreq); + doubly = inputSampleL - iirDecL; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleL -= doubly*outlyAmount; + iirDecR = (iirDecR * (1.0 - iirDecFreq)) + (inputSampleR * iirDecFreq); + doubly = inputSampleR - iirDecR; + if (doubly > 1.0) doubly = 1.0; if (doubly < -1.0) doubly = -1.0; + if (doubly > 0) doubly = log(1.0+(255*fabs(doubly)))/2.40823996531; + if (doubly < 0) doubly = -log(1.0+(255*fabs(doubly)))/2.40823996531; + inputSampleR -= doubly*outlyAmount; + } + //end Dubly decode + + //begin ClipOnly2 stereo as a little, compressed chunk that can be dropped into code + if (inputSampleL > 4.0) inputSampleL = 4.0; if (inputSampleL < -4.0) inputSampleL = -4.0; + if (wasPosClipL == true) { //current will be over + if (inputSampleL0.9549925859) {wasPosClipL=true;inputSampleL=0.7058208+(lastSampleL*0.2609148);} + if (wasNegClipL == true) { //current will be -over + if (inputSampleL > lastSampleL) lastSampleL=-0.7058208+(inputSampleL*0.2609148); + else lastSampleL=-0.2491717+(lastSampleL*0.7390851); + } wasNegClipL = false; + if (inputSampleL<-0.9549925859) {wasNegClipL=true;inputSampleL=-0.7058208+(lastSampleL*0.2609148);} + intermediateL[spacing] = inputSampleL; + inputSampleL = lastSampleL; //Latency is however many samples equals one 44.1k sample + for (int x = spacing; x > 0; x--) intermediateL[x-1] = intermediateL[x]; + lastSampleL = intermediateL[0]; //run a little buffer to handle this + + if (inputSampleR > 4.0) inputSampleR = 4.0; if (inputSampleR < -4.0) inputSampleR = -4.0; + if (wasPosClipR == true) { //current will be over + if (inputSampleR0.9549925859) {wasPosClipR=true;inputSampleR=0.7058208+(lastSampleR*0.2609148);} + if (wasNegClipR == true) { //current will be -over + if (inputSampleR > lastSampleR) lastSampleR=-0.7058208+(inputSampleR*0.2609148); + else lastSampleR=-0.2491717+(lastSampleR*0.7390851); + } wasNegClipR = false; + if (inputSampleR<-0.9549925859) {wasNegClipR=true;inputSampleR=-0.7058208+(lastSampleR*0.2609148);} + intermediateR[spacing] = inputSampleR; + inputSampleR = lastSampleR; //Latency is however many samples equals one 44.1k sample + for (int x = spacing; x > 0; x--) intermediateR[x-1] = intermediateR[x]; + lastSampleR = intermediateR[0]; //run a little buffer to handle this + //end ClipOnly2 stereo as a little, compressed chunk that can be dropped into code + + //begin 64 bit stereo floating point dither + //int expon; frexp((double)inputSampleL, &expon); + fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5; + //inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62)); + //frexp((double)inputSampleR, &expon); + fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5; + //inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62)); + //end 64 bit stereo floating point dither + + *out1 = inputSampleL; + *out2 = inputSampleR; + + in1++; + in2++; + out1++; + out2++; + } +} +} // end namespace