28 #include "wdlstring.h" 34 #pragma warning(disable:4018 4267) // size_t/signed/unsigned mismatch.. 35 #pragma warning(disable:4800) // if (pointer) ... 36 #pragma warning(disable:4805) // Compare bool and BOOL. 47 T
Clip(T x, T lo, T hi) {
return std::min(std::max(x, lo), hi); }
54 inline T
Lerp(T a, T b, T f) {
return ((b - a) * f + a); }
56 static inline bool CStringHasContents(
const char* str) {
return str && str[0] !=
'\0'; }
58 #define MAKE_QUOTE(str) #str 59 #define MAKE_STR(str) MAKE_QUOTE(str) 62 #define GET_PARAM_FROM_VARARG(paramType, vp, v) \ 65 switch (paramType) { \ 66 case IParam::kTypeBool: \ 67 case IParam::kTypeInt: \ 68 case IParam::kTypeEnum: { \ 69 v = (double) va_arg(vp, int); \ 72 case IParam::kTypeDouble: \ 74 v = (double) va_arg(vp, double); \ 83 #define REMINDER(msg) message(__FILE__ "(" MAKE_STR(__LINE__) "): " msg) 84 #elif defined __APPLE__ 85 #define REMINDER(msg) WARNING msg 105 return AMP_DB * std::log(std::fabs(amp));
115 maj = (versionInteger & 0xFFFF0000) >> 16;
116 min = (versionInteger & 0x0000FF00) >> 8;
117 pat = versionInteger & 0x000000FF;
127 return 10000 * maj + 100 * min + pat;
137 str.SetFormatted(MAX_VERSION_STR_LEN,
"v%d.%d.%d", maj, min, pat);
146 template <
class SRC,
class DEST>
149 for (
int i = 0; i < n; ++i, ++pDest, ++pSrc)
151 *pDest = (DEST) *pSrc;
158 static void ToLower(
char* cDest,
const char* cSrc)
160 int i, n = (int) strlen(cSrc);
161 for (i = 0; i < n; ++i)
163 cDest[i] = tolower(cSrc[i]);
177 if (strstr(host,
"reaper"))
return kHostReaper;
178 if (strstr(host,
"protools"))
return kHostProTools;
179 if (strstr(host,
"cubase"))
return kHostCubase;
180 if (strstr(host,
"nuendo"))
return kHostNuendo;
181 if (strstr(host,
"cakewalk"))
return kHostSonar;
182 if (strstr(host,
"vegas"))
return kHostVegas;
183 if (strstr(host,
"fruity"))
return kHostFL;
184 if (strstr(host,
"samplitude"))
return kHostSamplitude;
185 if (strstr(host,
"live"))
return kHostAbletonLive;
186 if (strstr(host,
"tracktion"))
return kHostTracktion;
187 if (strstr(host,
"ntracks"))
return kHostNTracks;
188 if (strstr(host,
"melodyne"))
return kHostMelodyneStudio;
189 if (strstr(host,
"vstmanlib"))
return kHostVSTScanner;
190 if (strstr(host,
"aulab"))
return kHostAULab;
191 if (strstr(host,
"forte"))
return kHostForte;
192 if (strstr(host,
"chainer"))
return kHostChainer;
193 if (strstr(host,
"audition"))
return kHostAudition;
194 if (strstr(host,
"orion"))
return kHostOrion;
195 if (strstr(host,
"bias"))
return kHostBias;
196 if (strstr(host,
"sawstudio"))
return kHostSAWStudio;
197 if (strstr(host,
"logic"))
return kHostLogic;
198 if (strstr(host,
"garageband"))
return kHostGarageBand;
199 if (strstr(host,
"digital"))
return kHostDigitalPerformer;
200 if (strstr(host,
"audiomulch"))
return kHostAudioMulch;
201 if (strstr(host,
"presonus"))
return kHostStudioOne;
202 if (strstr(host,
"vst3plugintesthost"))
return kHostVST3TestHost;
203 if (strstr(host,
"ardour"))
return kHostArdour;
204 if (strstr(host,
"renoise"))
return kHostRenoise;
205 if (strstr(host,
"openmpt"))
return kHostOpenMPT;
206 if (strstr(host,
"wavelab elements"))
return kHostWaveLabElements;
207 if (strstr(host,
"wavelab"))
return kHostWaveLab;
208 if (strstr(host,
"twistedwave"))
return kHostTwistedWave;
209 if (strstr(host,
"bitwig studio"))
return kHostBitwig;
210 if (strstr(host,
"reason"))
return kHostReason;
211 if (strstr(host,
"gwvst"))
return kHostGoldWave5x;
212 if (strstr(host,
"waveform"))
return kHostWaveform;
213 if (strstr(host,
"audacity"))
return kHostAudacity;
214 if (strstr(host,
"acoustica"))
return kHostAcoustica;
215 if (strstr(host,
"plugindoctor"))
return kHostPluginDoctor;
216 if (strstr(host,
"izotope rx"))
return kHostiZotopeRX;
217 if (strstr(host,
"savihost"))
return kHostSAVIHost;
218 if (strstr(host,
"blue cat's vst host"))
return kHostBlueCat;
220 if (strstr(host,
"standalone"))
return kHostStandalone;
221 if (strstr(host,
"www"))
return kHostWWW;
239 case kHostReaper: str.Set(
"reaper");
break;
240 case kHostProTools: str.Set(
"protools");
break;
241 case kHostCubase: str.Set(
"cubase");
break;
242 case kHostNuendo: str.Set(
"nuendo");
break;
243 case kHostSonar: str.Set(
"cakewalk");
break;
244 case kHostVegas: str.Set(
"vegas");
break;
245 case kHostFL: str.Set(
"fruity");
break;
246 case kHostSamplitude: str.Set(
"samplitude");
break;
247 case kHostAbletonLive: str.Set(
"live");
break;
248 case kHostTracktion: str.Set(
"tracktion");
break;
249 case kHostNTracks: str.Set(
"ntracks");
break;
250 case kHostMelodyneStudio: str.Set(
"melodyne");
break;
251 case kHostVSTScanner: str.Set(
"vstmanlib");
break;
252 case kHostAULab: str.Set(
"aulab");
break;
253 case kHostForte: str.Set(
"forte");
break;
254 case kHostChainer: str.Set(
"chainer");
break;
255 case kHostAudition: str.Set(
"audition");
break;
256 case kHostOrion: str.Set(
"orion");
break;
257 case kHostBias: str.Set(
"bias");
break;
258 case kHostSAWStudio: str.Set(
"sawstudio");
break;
259 case kHostLogic: str.Set(
"logic");
break;
260 case kHostGarageBand: str.Set(
"garageband");
break;
261 case kHostDigitalPerformer: str.Set(
"digital");
break;
262 case kHostAudioMulch: str.Set(
"audiomulch");
break;
263 case kHostStudioOne: str.Set(
"presonus");
break;
264 case kHostVST3TestHost: str.Set(
"vst3plugintesthost");
break;
265 case kHostArdour: str.Set(
"ardour");
break;
266 case kHostRenoise: str.Set(
"renoise");
break;
267 case kHostOpenMPT: str.Set(
"OpenMPT");
break;
268 case kHostWaveLabElements: str.Set(
"wavelab elements");
break;
269 case kHostWaveLab: str.Set(
"wavelab");
break;
270 case kHostTwistedWave: str.Set(
"twistedwave");
break;
271 case kHostBitwig: str.Set(
"bitwig studio");
break;
272 case kHostReason: str.Set(
"reason");
break;
273 case kHostGoldWave5x: str.Set(
"gwvst");
break;
274 case kHostWaveform: str.Set(
"waveform");
break;
275 case kHostAudacity: str.Set(
"audacity");
break;
276 case kHostAcoustica: str.Set(
"acoustica");
break;
277 case kHostPluginDoctor: str.Set(
"plugindoctor");
break;
278 case kHostiZotopeRX: str.Set(
"izotope rx");
break;
279 case kHostSAVIHost: str.Set(
"savihost");
break;
280 case kHostBlueCat: str.Set(
"blue cat's vst host");
break;
282 case kHostStandalone: str.Set(
"standalone");
break;
283 case kHostWWW: str.Set(
"www");
break;
285 default: str.Set(
"Unknown");
break;
294 static void MidiNoteName(
double midiPitch, WDL_String& noteName,
bool cents =
false,
bool middleCisC4 =
false)
296 static const char noteNames[12][3] = {
"C ",
"C#",
"D ",
"D#",
"E ",
"F ",
"F#",
"G ",
"G#",
"A ",
"A#",
"B "};
298 int midiPitchR = (int) std::round(midiPitch);
299 int pitchClass = midiPitchR % 12;
300 int octave = (midiPitchR / 12) - (middleCisC4? 1 : 2);
304 double frac = (midiPitch - (float) midiPitchR) * 100.;
305 noteName.SetFormatted(32,
"%s%i %.0f", noteNames[pitchClass], octave, frac);
309 noteName.SetFormatted(32,
"%s%i", noteNames[pitchClass], octave);
T Lerp(T a, T b, T f)
Linear interpolate between values a and b.
static void MidiNoteName(double midiPitch, WDL_String ¬eName, bool cents=false, bool middleCisC4=false)
IPlug Constant definitions, Types, magic numbers.
static const double AMP_DB
Magic number for gain to dB conversion.
static void GetVersionStr(int versionInteger, WDL_String &str)
Helper function to get the semantic version number as a string from an integer.
BEGIN_IPLUG_NAMESPACE T Clip(T x, T lo, T hi)
Clips the value x between lo and hi.
static const double IAMP_DB
Magic number for dB to gain conversion.
static int GetDecimalVersion(int versionInteger)
Helper function to get the version number as a decimal integer.
static double DBToAmp(double dB)
Calculates gain from a given dB value.
void CastCopy(DEST *pDest, SRC *pSrc, int n)
Helper function to loop through a buffer of samples copying and casting from e.g float to double...
static void ToLower(char *cDest, const char *cSrc)
static void GetVersionParts(int versionInteger, int &maj, int &min, int &pat)
Helper function to unpack the version number parts as individual integers.
static EHost LookUpHost(const char *inHost)
Gets the host ID from a human-readable name.
static double AmpToDB(double amp)
static void GetHostNameStr(EHost host, WDL_String &str)
Gets a human-readable name from host identifier.