Browse Source

Cleaned up some audio plugin creation function prototypes

tags/2021-05-28
jules 7 years ago
parent
commit
f3e1e52c88
11 changed files with 81 additions and 114 deletions
  1. +1
    -1
      extras/AudioPluginHost/Source/Filters/InternalFilters.cpp
  2. +1
    -1
      extras/AudioPluginHost/Source/Filters/InternalFilters.h
  3. +3
    -1
      modules/juce_audio_processors/format/juce_AudioPluginFormat.h
  4. +2
    -4
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
  5. +64
    -93
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  6. +3
    -2
      modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp
  7. +1
    -2
      modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h
  8. +2
    -2
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp
  9. +1
    -2
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h
  10. +2
    -4
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  11. +1
    -2
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h

+ 1
- 1
extras/AudioPluginHost/Source/Filters/InternalFilters.cpp View File

@@ -377,7 +377,7 @@ void InternalPluginFormat::createPluginInstance (const PluginDescription& desc,
double /*initialSampleRate*/,
int /*initialBufferSize*/,
void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&))
PluginCreationCallback callback)
{
auto* p = createInstance (desc.name);


+ 1
- 1
extras/AudioPluginHost/Source/Filters/InternalFilters.h View File

@@ -59,7 +59,7 @@ public:
private:
//==============================================================================
void createPluginInstance (const PluginDescription&, double initialSampleRate, int initialBufferSize,
void* userData, void (*callback) (void*, AudioPluginInstance*, const String&)) override;
void* userData, PluginCreationCallback) override;
AudioPluginInstance* createInstance (const String& name);
bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept override;


+ 3
- 1
modules/juce_audio_processors/format/juce_AudioPluginFormat.h View File

@@ -151,12 +151,14 @@ protected:
AudioPluginFormat() noexcept;
using PluginCreationCallback = void (*) (void*, AudioPluginInstance*, const String&);
/** Implementors must override this function. This is guaranteed to be called on
the message thread. You may call the callback on any thread.
*/
virtual void createPluginInstance (const PluginDescription&, double initialSampleRate,
int initialBufferSize, void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&)) = 0;
PluginCreationCallback) = 0;
virtual bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept = 0;


+ 2
- 4
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h View File

@@ -56,10 +56,8 @@ public:
private:
//==============================================================================
void createPluginInstance (const PluginDescription&,
double initialSampleRate,
int initialBufferSize,
void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&)) override;
double initialSampleRate, int initialBufferSize,
void* userData, PluginCreationCallback) override;
bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept override;


+ 64
- 93
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -341,12 +341,7 @@ public:
if (auto* au = pluginInstance.audioUnit)
{
AudioUnitGetParameter (au,
paramID,
kAudioUnitScope_Global,
0,
&value);
AudioUnitGetParameter (au, paramID, kAudioUnitScope_Global, 0, &value);
value = normaliseParamValue (value);
}
@@ -359,12 +354,8 @@ public:
if (auto* au = pluginInstance.audioUnit)
{
AudioUnitSetParameter (au,
paramID,
kAudioUnitScope_Global,
0,
scaleParamValue (newValue),
0);
AudioUnitSetParameter (au, paramID, kAudioUnitScope_Global,
0, scaleParamValue (newValue), 0);
sendParameterChangeEvent();
}
@@ -406,12 +397,12 @@ public:
UInt32 propertySize = sizeof (stringValue);
OSStatus err = AudioUnitGetProperty (au,
kAudioUnitProperty_ParameterStringFromValue,
kAudioUnitScope_Global,
0,
&stringValue,
&propertySize);
auto err = AudioUnitGetProperty (au,
kAudioUnitProperty_ParameterStringFromValue,
kAudioUnitScope_Global,
0,
&stringValue,
&propertySize);
if (! err && stringValue.outString != nullptr)
return String::fromCFString (stringValue.outString).substring (0, maximumLength);
@@ -441,12 +432,12 @@ public:
UInt32 propertySize = sizeof (valueString);
OSStatus err = AudioUnitGetProperty (au,
kAudioUnitProperty_ParameterValueFromString,
kAudioUnitScope_Global,
0,
&valueString,
&propertySize);
auto err = AudioUnitGetProperty (au,
kAudioUnitProperty_ParameterValueFromString,
kAudioUnitScope_Global,
0,
&valueString,
&propertySize);
if (! err)
return normaliseParamValue (valueString.outValue);
@@ -456,25 +447,10 @@ public:
return Parameter::getValueForText (text);
}
bool isAutomatable() const override
{
return automatable;
}
bool isDiscrete() const override
{
return discrete;
}
bool isBoolean() const override
{
return isSwitch;
}
int getNumSteps() const override
{
return numSteps;
}
bool isAutomatable() const override { return automatable; }
bool isDiscrete() const override { return discrete; }
bool isBoolean() const override { return isSwitch; }
int getNumSteps() const override { return numSteps; }
StringArray getAllValueStrings() const override
{
@@ -528,12 +504,6 @@ public:
AudioUnitPluginInstance (AudioComponentInstance au)
: AudioPluginInstance (getBusesProperties (au)),
auComponent (AudioComponentInstanceGetComponent (au)),
wantsMidiMessages (false),
producesMidiMessages (false),
wasPlaying (false),
prepared (false),
isAUv3 (false),
currentBuffer (nullptr),
audioUnit (au),
#if JUCE_MAC
eventListenerRef (0),
@@ -735,7 +705,7 @@ public:
if (getElementCount (scope) != n && isBusCountWritable (isInput))
{
OSStatus err;
UInt32 newCount = static_cast<UInt32> (n);
auto newCount = static_cast<UInt32> (n);
layoutHasChanged = true;
err = AudioUnitSetProperty (audioUnit, kAudioUnitProperty_ElementCount, scope, 0, &newCount, sizeof (newCount));
@@ -755,7 +725,8 @@ public:
{
AudioStreamBasicDescription stream;
UInt32 dataSize = sizeof (stream);
OSStatus err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_StreamFormat, scope, static_cast<UInt32> (i), &stream, &dataSize);
auto err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_StreamFormat, scope, static_cast<UInt32> (i), &stream, &dataSize);
if (err != noErr || dataSize < sizeof (stream))
return false;
@@ -788,7 +759,7 @@ public:
UInt32 dataSize = minDataSize;
AudioChannelLayoutTag actualTag = kAudioChannelLayoutTag_Unknown;
OSStatus err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, scope, static_cast<UInt32> (i), &layout, &dataSize);
auto err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, scope, static_cast<UInt32> (i), &layout, &dataSize);
bool supportsLayouts = (err == noErr && dataSize >= minDataSize);
if (supportsLayouts)
@@ -1484,7 +1455,10 @@ private:
String pluginName, manufacturer, version;
String fileOrIdentifier;
CriticalSection lock;
bool wantsMidiMessages, producesMidiMessages, wasPlaying, prepared, isAUv3, isMidiEffectPlugin, lastBypassValue = false;
bool wantsMidiMessages = false, producesMidiMessages = false,
wasPlaying = false, prepared = false,
isAUv3 = false, isMidiEffectPlugin = false;
struct AUBuffer
{
@@ -1521,7 +1495,7 @@ private:
if (AudioUnitGetProperty (parent.audioUnit, kAudioUnitProperty_BypassEffect,
kAudioUnitScope_Global, 0, &value, &dataSize) == noErr
&& dataSize == sizeof (UInt32))
return (value != 0);
return value != 0;
}
return false;
@@ -1599,7 +1573,7 @@ private:
OwnedArray<AUBuffer> outputBufferList;
AudioTimeStamp timeStamp;
AudioBuffer<float>* currentBuffer;
AudioBuffer<float>* currentBuffer = nullptr;
Array<Array<AudioChannelSet>> supportedInLayouts, supportedOutLayouts;
int numChannelInfos;
@@ -1802,7 +1776,7 @@ private:
{
if (pktlist != nullptr && pktlist->numPackets)
{
const double time = Time::getMillisecondCounterHiRes() * 0.001;
auto time = Time::getMillisecondCounterHiRes() * 0.001;
const MIDIPacket* packet = &pktlist->packet[0];
for (UInt32 i = 0; i < pktlist->numPackets; ++i)
@@ -1823,27 +1797,27 @@ private:
OSStatus getBeatAndTempo (Float64* outCurrentBeat, Float64* outCurrentTempo) const
{
AudioPlayHead* const ph = getPlayHead();
AudioPlayHead::CurrentPositionInfo result;
if (ph != nullptr && ph->getCurrentPosition (result))
if (auto* ph = getPlayHead())
{
setIfNotNull (outCurrentBeat, result.ppqPosition);
setIfNotNull (outCurrentTempo, result.bpm);
}
else
{
setIfNotNull (outCurrentBeat, 0);
setIfNotNull (outCurrentTempo, 120.0);
AudioPlayHead::CurrentPositionInfo result;
if (ph->getCurrentPosition (result))
{
setIfNotNull (outCurrentBeat, result.ppqPosition);
setIfNotNull (outCurrentTempo, result.bpm);
return noErr;
}
}
setIfNotNull (outCurrentBeat, 0);
setIfNotNull (outCurrentTempo, 120.0);
return noErr;
}
OSStatus getMusicalTimeLocation (UInt32* outDeltaSampleOffsetToNextBeat, Float32* outTimeSig_Numerator,
UInt32* outTimeSig_Denominator, Float64* outCurrentMeasureDownBeat) const
{
if (AudioPlayHead* const ph = getPlayHead())
if (auto* ph = getPlayHead())
{
AudioPlayHead::CurrentPositionInfo result;
@@ -1868,7 +1842,7 @@ private:
Float64* outCurrentSampleInTimeLine, Boolean* outIsCycling,
Float64* outCycleStartBeat, Float64* outCycleEndBeat)
{
if (AudioPlayHead* const ph = getPlayHead())
if (auto* ph = getPlayHead())
{
AudioPlayHead::CurrentPositionInfo result;
@@ -1905,7 +1879,7 @@ private:
UInt32 inNumberFrames, AudioBufferList* ioData)
{
return static_cast<AudioUnitPluginInstance*> (hostRef)
->renderGetInput (ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData);
->renderGetInput (ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData);
}
static OSStatus renderMidiOutputCallback (void* hostRef, const AudioTimeStamp*, UInt32 /*midiOutNum*/,
@@ -1948,13 +1922,14 @@ private:
#endif
UInt64 currentTime = mach_absolute_time();
static mach_timebase_info_data_t sTimebaseInfo = {0, 0};
static mach_timebase_info_data_t sTimebaseInfo = { 0, 0 };
if (sTimebaseInfo.denom == 0)
mach_timebase_info (&sTimebaseInfo);
double bufferNanos = static_cast<double> (numSamples) * 1.0e9 / sampleRate;
UInt64 bufferTicks = static_cast<UInt64> (std::ceil (bufferNanos * (static_cast<double> (sTimebaseInfo.denom) / static_cast<double> (sTimebaseInfo.numer))));
auto bufferNanos = static_cast<double> (numSamples) * 1.0e9 / sampleRate;
auto bufferTicks = static_cast<UInt64> (std::ceil (bufferNanos * (static_cast<double> (sTimebaseInfo.denom)
/ static_cast<double> (sTimebaseInfo.numer))));
currentTime += bufferTicks;
return currentTime;
@@ -1964,10 +1939,9 @@ private:
{
UInt32 countSize;
Boolean writable;
OSStatus err;
AudioUnitScope scope = (isInput ? kAudioUnitScope_Input : kAudioUnitScope_Output);
err = AudioUnitGetPropertyInfo (audioUnit, kAudioUnitProperty_ElementCount, scope, 0, &countSize, &writable);
auto err = AudioUnitGetPropertyInfo (audioUnit, kAudioUnitProperty_ElementCount, scope, 0, &countSize, &writable);
return (err == noErr && writable != 0 && countSize == sizeof (UInt32));
}
@@ -1983,7 +1957,7 @@ private:
UInt32 count;
UInt32 countSize = sizeof (count);
OSStatus err = AudioUnitGetProperty (comp, kAudioUnitProperty_ElementCount, scope, 0, &count, &countSize);
auto err = AudioUnitGetProperty (comp, kAudioUnitProperty_ElementCount, scope, 0, &count, &countSize);
jassert (err == noErr);
ignoreUnused (err);
@@ -2048,7 +2022,7 @@ private:
{
const bool isInput = (dir == 0);
const AudioUnitScope scope = isInput ? kAudioUnitScope_Input : kAudioUnitScope_Output;
const int n = getElementCount (scope);
auto n = getElementCount (scope);
for (int busIdx = 0; busIdx < n; ++busIdx)
{
@@ -2208,7 +2182,7 @@ class AudioUnitPluginWindowCocoa : public AudioProcessorEditor
public:
AudioUnitPluginWindowCocoa (AudioUnitPluginInstance& p, bool createGenericViewIfNeeded)
: AudioProcessorEditor (&p),
plugin (p), waitingForViewCallback (false)
plugin (p)
{
addAndMakeVisible (wrapper);
@@ -2279,9 +2253,9 @@ private:
ObjCBlock<ViewControllerCallbackBlock> viewControllerCallback;
#endif
bool waitingForViewCallback;
bool waitingForViewCallback = false;
bool createView (const bool createGenericViewIfNeeded)
bool createView (bool createGenericViewIfNeeded)
{
JUCE_IOS_MAC_VIEW* pluginView = nil;
UInt32 dataSize = 0;
@@ -2604,10 +2578,8 @@ void AudioUnitPluginFormat::findAllTypesForFile (OwnedArray<PluginDescription>&
}
void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc,
double rate,
int blockSize,
void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&))
double rate, int blockSize,
void* userData, PluginCreationCallback callback)
{
using namespace AudioUnitFormatHelpers;
@@ -2645,9 +2617,9 @@ void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc,
#endif
AUAsyncInitializationCallback (double inSampleRate, int inFramesPerBuffer,
void* inUserData, void (*inOriginalCallback) (void*, AudioPluginInstance*, const String&))
: sampleRate (inSampleRate), framesPerBuffer (inFramesPerBuffer),
passUserData (inUserData), originalCallback (inOriginalCallback)
void* inUserData, PluginCreationCallback inOriginalCallback)
: sampleRate (inSampleRate), framesPerBuffer (inFramesPerBuffer),
passUserData (inUserData), originalCallback (inOriginalCallback)
{
#if JUCE_SUPPORTS_AUv3
block = CreateObjCBlock (this, &AUAsyncInitializationCallback::completion);
@@ -2682,15 +2654,14 @@ void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc,
double sampleRate;
int framesPerBuffer;
void* passUserData;
void (*originalCallback) (void*, AudioPluginInstance*, const String&);
PluginCreationCallback originalCallback;
#if JUCE_SUPPORTS_AUv3
ObjCBlock<AUCompletionCallbackBlock> block;
#endif
};
AUAsyncInitializationCallback* callbackBlock
= new AUAsyncInitializationCallback (rate, blockSize, userData, callback);
auto callbackBlock = new AUAsyncInitializationCallback (rate, blockSize, userData, callback);
#if JUCE_SUPPORTS_AUv3
//==============================================================================
@@ -2706,7 +2677,7 @@ void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc,
#endif // JUCE_SUPPORTS_AUv3
AudioComponentInstance audioUnit;
OSStatus err = AudioComponentInstanceNew(auComponent, &audioUnit);
auto err = AudioComponentInstanceNew(auComponent, &audioUnit);
callbackBlock->completion (err != noErr ? nullptr : audioUnit, err);
}
else
@@ -2780,12 +2751,12 @@ StringArray AudioUnitPluginFormat::searchPathsForPlugins (const FileSearchPath&,
bool AudioUnitPluginFormat::fileMightContainThisPluginType (const String& fileOrIdentifier)
{
AudioComponentDescription desc;
String name, version, manufacturer;
if (AudioUnitFormatHelpers::getComponentDescFromIdentifier (fileOrIdentifier, desc, name, version, manufacturer))
return AudioComponentFindNext (nullptr, &desc) != nullptr;
const File f (File::createFileWithoutCheckingPath (fileOrIdentifier));
auto f = File::createFileWithoutCheckingPath (fileOrIdentifier);
return (f.hasFileExtension (".component") || f.hasFileExtension (".appex"))
&& f.isDirectory();


+ 3
- 2
modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp View File

@@ -608,8 +608,9 @@ void LADSPAPluginFormat::findAllTypesForFile (OwnedArray<PluginDescription>& res
}
}
void LADSPAPluginFormat::createPluginInstance (const PluginDescription& desc, double sampleRate, int blockSize,
void* userData, void (*callback) (void*, AudioPluginInstance*, const String&))
void LADSPAPluginFormat::createPluginInstance (const PluginDescription& desc,
double sampleRate, int blockSize,
void* userData, PluginCreationCallback callback)
{
std::unique_ptr<LADSPAPluginInstance> result;


+ 1
- 2
modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h View File

@@ -55,8 +55,7 @@ public:
private:
//==============================================================================
void createPluginInstance (const PluginDescription&, double initialSampleRate,
int initialBufferSize, void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&)) override;
int initialBufferSize, void* userData, PluginCreationCallback) override;
bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept override;


+ 2
- 2
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -2922,8 +2922,8 @@ void VST3PluginFormat::findAllTypesForFile (OwnedArray<PluginDescription>& resul
VST3Classes::VST3ModuleHandle::getAllDescriptionsForFile (results, fileOrIdentifier);
}
void VST3PluginFormat::createPluginInstance (const PluginDescription& description, double, int, void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&))
void VST3PluginFormat::createPluginInstance (const PluginDescription& description, double, int,
void* userData, PluginCreationCallback callback)
{
std::unique_ptr<VST3Classes::VST3PluginInstance> result;


+ 1
- 2
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h View File

@@ -63,8 +63,7 @@ public:
private:
void createPluginInstance (const PluginDescription&, double initialSampleRate,
int initialBufferSize, void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&)) override;
int initialBufferSize, void* userData, PluginCreationCallback) override;
bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept override;


+ 2
- 4
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp View File

@@ -3428,10 +3428,8 @@ void VSTPluginFormat::findAllTypesForFile (OwnedArray<PluginDescription>& result
}
void VSTPluginFormat::createPluginInstance (const PluginDescription& desc,
double sampleRate,
int blockSize,
void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&))
double sampleRate, int blockSize,
void* userData, PluginCreationCallback callback)
{
std::unique_ptr<VSTPluginInstance> result;


+ 1
- 2
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h View File

@@ -118,8 +118,7 @@ public:
private:
//==============================================================================
void createPluginInstance (const PluginDescription&, double initialSampleRate,
int initialBufferSize, void* userData,
void (*callback) (void*, AudioPluginInstance*, const String&)) override;
int initialBufferSize, void* userData, PluginCreationCallback) override;
bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const noexcept override;


Loading…
Cancel
Save