| @@ -28,8 +28,8 @@ class PluginHostType | |||
| public: | |||
| //============================================================================== | |||
| PluginHostType() : type (getHostType()) {} | |||
| PluginHostType (const PluginHostType& other) : type (other.type) {} | |||
| PluginHostType& operator= (const PluginHostType& other) { type = other.type; return *this; } | |||
| PluginHostType (const PluginHostType& other) noexcept : type (other.type) {} | |||
| PluginHostType& operator= (const PluginHostType& other) noexcept { type = other.type; return *this; } | |||
| //============================================================================== | |||
| enum HostType | |||
| @@ -44,21 +44,23 @@ public: | |||
| CakewalkSonar8, | |||
| CakewalkSonarGeneric, | |||
| DigidesignProTools, | |||
| EmagicLogic, | |||
| Reaper, | |||
| MackieTracktion3, | |||
| MackieTracktionGeneric, | |||
| Tracktion3, | |||
| TracktionGeneric, | |||
| SteinbergCubase4, | |||
| SteinbergCubase5, | |||
| SteinbergCubase5Bridged, | |||
| SteinbergCubaseGeneric, | |||
| SteinbergCubase6, | |||
| SteinbergCubase7, | |||
| SteinbergCubaseGeneric, | |||
| SteinbergNuendo3, | |||
| SteinbergNuendo4, | |||
| SteinbergNuendo5, | |||
| SteinbergNuendoGeneric, | |||
| SteinbergWavelab5, | |||
| SteinbergWavelab6, | |||
| SteinbergWavelab7, | |||
| SteinbergWavelab8, | |||
| SteinbergNuendo, | |||
| SteinbergWavelabGeneric, | |||
| MuseReceptorGeneric, | |||
| MagixSamplitude, | |||
| @@ -74,15 +76,16 @@ public: | |||
| //============================================================================== | |||
| bool isAbletonLive() const noexcept { return type == AbletonLive6 || type == AbletonLive7 || type == AbletonLive8 || type == AbletonLiveGeneric; } | |||
| bool isNuendo() const noexcept { return type == SteinbergNuendo3 || type == SteinbergNuendo4 || type == SteinbergNuendo5 || type == SteinbergNuendoGeneric; } | |||
| bool isCubase() const noexcept { return type == SteinbergCubase4 || type == SteinbergCubase5 || type == SteinbergCubase5Bridged || type == SteinbergCubase6 || type == SteinbergCubase7 || type == SteinbergCubaseGeneric; } | |||
| bool isCubaseBridged() const noexcept { return type == SteinbergCubase5Bridged; } | |||
| bool isNuendo() const noexcept { return type == SteinbergNuendo; } | |||
| bool isTracktion() const noexcept { return type == MackieTracktion3 || type == MackieTracktionGeneric; } | |||
| bool isSteinberg() const noexcept { return isCubase() || isNuendo() || isWavelab(); } | |||
| bool isTracktion() const noexcept { return type == Tracktion3 || type == TracktionGeneric; } | |||
| bool isSonar() const noexcept { return type == CakewalkSonar8 || type == CakewalkSonarGeneric; } | |||
| bool isWavelab() const noexcept { return isWavelabLegacy() || type == SteinbergWavelab7 || type == SteinbergWavelab8 || type == SteinbergWavelabGeneric; } | |||
| bool isWavelabLegacy() const noexcept { return type == SteinbergWavelab5 || type == SteinbergWavelab6; } | |||
| bool isPremiere() const noexcept { return type == AdobePremierePro; } | |||
| bool isLogic() const noexcept { return type == AppleLogic || type == EmagicLogic; } | |||
| bool isLogic() const noexcept { return type == AppleLogic; } | |||
| bool isReceptor() const noexcept { return type == MuseReceptorGeneric; } | |||
| bool isSamplitude() const noexcept { return type == MagixSamplitude; } | |||
| bool isFruityLoops() const noexcept { return type == FruityLoops; } | |||
| @@ -93,6 +96,52 @@ public: | |||
| bool isPyramix() const noexcept { return type == MergingPyramix; } | |||
| bool isVBVSTScanner() const noexcept { return type == VBVSTScanner; } | |||
| //============================================================================== | |||
| const char* getHostDescription() const noexcept | |||
| { | |||
| switch (type) | |||
| { | |||
| case AbletonLive6: return "Ableton Live 6"; | |||
| case AbletonLive7: return "Ableton Live 7"; | |||
| case AbletonLive8: return "Ableton Live 8"; | |||
| case AbletonLiveGeneric: return "Ableton Live"; | |||
| case AdobePremierePro: return "Adobe Premiere"; | |||
| case AppleLogic: return "Apple Logic"; | |||
| case CakewalkSonar8: return "Cakewalk Sonar 8"; | |||
| case CakewalkSonarGeneric: return "Cakewalk Sonar"; | |||
| case DigidesignProTools: return "ProTools"; | |||
| case Reaper: return "Reaper"; | |||
| case Tracktion3: return "Tracktion 3"; | |||
| case TracktionGeneric: return "Tracktion"; | |||
| case SteinbergCubase4: return "Steinberg Cubase 4"; | |||
| case SteinbergCubase5: return "Steinberg Cubase 5"; | |||
| case SteinbergCubase5Bridged: return "Steinberg Cubase 5 Bridged"; | |||
| case SteinbergCubase6: return "Steinberg Cubase 6"; | |||
| case SteinbergCubase7: return "Steinberg Cubase 7"; | |||
| case SteinbergCubaseGeneric: return "Steinberg Cubase"; | |||
| case SteinbergNuendo3: return "Steinberg Nuendo 3"; | |||
| case SteinbergNuendo4: return "Steinberg Nuendo 4"; | |||
| case SteinbergNuendo5: return "Steinberg Nuendo 5"; | |||
| case SteinbergNuendoGeneric: return "Steinberg Nuendo"; | |||
| case SteinbergWavelab5: return "Steinberg Wavelab 5"; | |||
| case SteinbergWavelab6: return "Steinberg Wavelab 6"; | |||
| case SteinbergWavelab7: return "Steinberg Wavelab 7"; | |||
| case SteinbergWavelab8: return "Steinberg Wavelab 8"; | |||
| case SteinbergWavelabGeneric: return "Steinberg Wavelab"; | |||
| case MuseReceptorGeneric: return "Muse Receptor"; | |||
| case MagixSamplitude: return "Magix Samplitude"; | |||
| case FruityLoops: return "FruityLoops"; | |||
| case WaveBurner: return "WaveBurner"; | |||
| case DigitalPerformer: return "DigitalPerformer"; | |||
| case StudioOne: return "Studio One"; | |||
| case MergingPyramix: return "Pyramix"; | |||
| case VBVSTScanner: return "VBVSTScanner"; | |||
| default: break; | |||
| } | |||
| return "Unknown"; | |||
| } | |||
| //============================================================================== | |||
| static String getHostPath() | |||
| { | |||
| @@ -114,6 +163,10 @@ private: | |||
| if (hostFilename.containsIgnoreCase ("Adobe Premiere")) return AdobePremierePro; | |||
| if (hostFilename.contains ("Logic")) return AppleLogic; | |||
| if (hostFilename.containsIgnoreCase ("Pro Tools")) return DigidesignProTools; | |||
| if (hostFilename.containsIgnoreCase ("Nuendo 3")) return SteinbergNuendo3; | |||
| if (hostFilename.containsIgnoreCase ("Nuendo 4")) return SteinbergNuendo4; | |||
| if (hostFilename.containsIgnoreCase ("Nuendo 5")) return SteinbergNuendo5; | |||
| if (hostFilename.containsIgnoreCase ("Nuendo")) return SteinbergNuendoGeneric; | |||
| if (hostFilename.containsIgnoreCase ("Cubase 4")) return SteinbergCubase4; | |||
| if (hostFilename.containsIgnoreCase ("Cubase 5")) return SteinbergCubase5; | |||
| if (hostFilename.containsIgnoreCase ("Cubase 6")) return SteinbergCubase6; | |||
| @@ -121,12 +174,13 @@ private: | |||
| if (hostFilename.containsIgnoreCase ("Cubase")) return SteinbergCubaseGeneric; | |||
| if (hostPath.containsIgnoreCase ("Wavelab 7")) return SteinbergWavelab7; | |||
| if (hostPath.containsIgnoreCase ("Wavelab 8")) return SteinbergWavelab8; | |||
| if (hostPath.containsIgnoreCase ("Nuendo")) return SteinbergNuendo; | |||
| if (hostFilename.containsIgnoreCase ("Wavelab")) return SteinbergWavelabGeneric; | |||
| if (hostFilename.containsIgnoreCase ("WaveBurner")) return WaveBurner; | |||
| if (hostFilename.contains ("Digital Performer")) return DigitalPerformer; | |||
| if (hostFilename.containsIgnoreCase ("reaper")) return Reaper; | |||
| if (hostPath.containsIgnoreCase ("Studio One")) return StudioOne; | |||
| if (hostPath.containsIgnoreCase ("Tracktion 3")) return Tracktion3; | |||
| if (hostFilename.containsIgnoreCase ("Tracktion")) return TracktionGeneric; | |||
| #elif JUCE_WINDOWS | |||
| if (hostFilename.containsIgnoreCase ("Live 6.")) return AbletonLive6; | |||
| @@ -137,9 +191,9 @@ private: | |||
| if (hostFilename.containsIgnoreCase ("ProTools")) return DigidesignProTools; | |||
| if (hostPath.containsIgnoreCase ("SONAR 8")) return CakewalkSonar8; | |||
| if (hostFilename.containsIgnoreCase ("SONAR")) return CakewalkSonarGeneric; | |||
| if (hostFilename.containsIgnoreCase ("Logic")) return EmagicLogic; | |||
| if (hostPath.containsIgnoreCase ("Tracktion 3")) return MackieTracktion3; | |||
| if (hostFilename.containsIgnoreCase ("Tracktion")) return MackieTracktionGeneric; | |||
| if (hostFilename.containsIgnoreCase ("Logic")) return AppleLogic; | |||
| if (hostPath.containsIgnoreCase ("Tracktion 3")) return Tracktion3; | |||
| if (hostFilename.containsIgnoreCase ("Tracktion")) return TracktionGeneric; | |||
| if (hostFilename.containsIgnoreCase ("reaper")) return Reaper; | |||
| if (hostFilename.containsIgnoreCase ("Cubase4")) return SteinbergCubase4; | |||
| if (hostFilename.containsIgnoreCase ("Cubase5")) return SteinbergCubase5; | |||
| @@ -151,15 +205,16 @@ private: | |||
| if (hostPath.containsIgnoreCase ("Wavelab 6")) return SteinbergWavelab6; | |||
| if (hostPath.containsIgnoreCase ("Wavelab 7")) return SteinbergWavelab7; | |||
| if (hostPath.containsIgnoreCase ("Wavelab 8")) return SteinbergWavelab8; | |||
| if (hostPath.containsIgnoreCase ("Nuendo")) return SteinbergNuendo; | |||
| if (hostPath.containsIgnoreCase ("Nuendo")) return SteinbergNuendoGeneric; | |||
| if (hostFilename.containsIgnoreCase ("Wavelab")) return SteinbergWavelabGeneric; | |||
| if (hostFilename.containsIgnoreCase ("rm-host")) return MuseReceptorGeneric; | |||
| if (hostFilename.startsWithIgnoreCase ("Sam")) return MagixSamplitude; | |||
| if (hostFilename.startsWith ("FL")) return FruityLoops; | |||
| if (hostPath.containsIgnoreCase ("Studio One")) return StudioOne; | |||
| if (hostPath.containsIgnoreCase ("Digital Performer")) return DigitalPerformer; | |||
| if (hostFilename.containsIgnoreCase ("VST_Scanner")) return VBVSTScanner; | |||
| if (hostPath.containsIgnoreCase ("Merging Technologies")) return MergingPyramix; | |||
| if (hostFilename.startsWithIgnoreCase ("Sam")) return MagixSamplitude; | |||
| #elif JUCE_LINUX | |||
| jassertfalse // not yet done! | |||
| #else | |||