mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
AAX midi out.
This commit is contained in:
parent
f68d0af5c2
commit
46b16cb921
1 changed files with 37 additions and 5 deletions
|
|
@ -183,6 +183,7 @@ struct AAXClasses
|
|||
int32_t* bufferSize;
|
||||
int32_t* bypass;
|
||||
AAX_IMIDINode* midiNodeIn;
|
||||
AAX_IMIDINode* midiNodeOut;
|
||||
|
||||
PluginInstanceInfo* pluginInstance;
|
||||
int32_t* isPrepared;
|
||||
|
|
@ -197,6 +198,7 @@ struct AAXClasses
|
|||
bufferSize = AAX_FIELD_INDEX (JUCEAlgorithmContext, bufferSize),
|
||||
bypass = AAX_FIELD_INDEX (JUCEAlgorithmContext, bypass),
|
||||
midiNodeIn = AAX_FIELD_INDEX (JUCEAlgorithmContext, midiNodeIn),
|
||||
midiNodeOut = AAX_FIELD_INDEX (JUCEAlgorithmContext, midiNodeOut),
|
||||
pluginInstance = AAX_FIELD_INDEX (JUCEAlgorithmContext, pluginInstance),
|
||||
preparedFlag = AAX_FIELD_INDEX (JUCEAlgorithmContext, isPrepared)
|
||||
};
|
||||
|
|
@ -503,7 +505,7 @@ struct AAXClasses
|
|||
}
|
||||
|
||||
void process (const float* const* inputs, float* const* outputs, const int bufferSize,
|
||||
const bool bypass, AAX_IMIDINode* midiNodeIn)
|
||||
const bool bypass, AAX_IMIDINode* midiNodeIn, AAX_IMIDINode* midiNodeOut)
|
||||
{
|
||||
const int numIns = pluginInstance->getNumInputChannels();
|
||||
const int numOuts = pluginInstance->getNumOutputChannels();
|
||||
|
|
@ -513,7 +515,7 @@ struct AAXClasses
|
|||
for (int i = 0; i < numIns; ++i)
|
||||
memcpy (outputs[i], inputs[i], bufferSize * sizeof (float));
|
||||
|
||||
process (outputs, numOuts, bufferSize, bypass, midiNodeIn);
|
||||
process (outputs, numOuts, bufferSize, bypass, midiNodeIn, midiNoteOut);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -531,7 +533,7 @@ struct AAXClasses
|
|||
for (int i = numOuts; i < numIns; ++i)
|
||||
channels[i] = const_cast <float*> (inputs[i]);
|
||||
|
||||
process (channels, numIns, bufferSize, bypass, midiNodeIn);
|
||||
process (channels, numIns, bufferSize, bypass, midiNodeIn, midiNoteOut);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -566,7 +568,7 @@ struct AAXClasses
|
|||
};
|
||||
|
||||
void process (float* const* channels, const int numChans, const int bufferSize,
|
||||
const bool bypass, AAX_IMIDINode* midiNodeIn)
|
||||
const bool bypass, AAX_IMIDINode* midiNodeIn, AAX_IMIDINode* midiNodeOut)
|
||||
{
|
||||
AudioSampleBuffer buffer (channels, numChans, bufferSize);
|
||||
|
||||
|
|
@ -598,6 +600,31 @@ struct AAXClasses
|
|||
else
|
||||
pluginInstance->processBlock (buffer, midiBuffer);
|
||||
}
|
||||
|
||||
#if JucePlugin_ProducesMidiOutput
|
||||
{
|
||||
const juce::uint8* midiEventData;
|
||||
int midiEventSize, midiEventPosition;
|
||||
MidiBuffer::Iterator i (midiBuffer);
|
||||
|
||||
AAX_CMidiPacket packet;
|
||||
packet.mIsImmediate = false;
|
||||
|
||||
while (i.getNextEvent (midiEventData, midiEventSize, midiEventPosition))
|
||||
{
|
||||
jassert (isPositiveAndBelow (midiEventPosition, bufferSize));
|
||||
|
||||
if (midiEventSize <= 4)
|
||||
{
|
||||
packet.mTimestamp = (uint32_t) midiEventPosition;
|
||||
packet.mLength = (uint32_t) midiEventSize;
|
||||
memcpy (packet.mData, midiEventData, midiEventSize);
|
||||
|
||||
check (midiNodeOut->PostMIDIPacket (&packet));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void addBypassParameter()
|
||||
|
|
@ -689,7 +716,7 @@ struct AAXClasses
|
|||
|
||||
i.pluginInstance->parameters.process (i.inputChannels, i.outputChannels,
|
||||
*(i.bufferSize), *(i.bypass) != 0,
|
||||
i.midiNodeIn);
|
||||
i.midiNodeIn, i.midiNodeOut);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -707,6 +734,11 @@ struct AAXClasses
|
|||
JucePlugin_Name, 0xffff));
|
||||
#endif
|
||||
|
||||
#if JucePlugin_ProducesMidiOutput
|
||||
check (desc.AddMIDINode (JUCEAlgorithmIDs::midiNodeOut, AAX_eMIDINodeType_LocalOutput,
|
||||
JucePlugin_Name " Out", 0xffff));
|
||||
#endif
|
||||
|
||||
check (desc.AddPrivateData (JUCEAlgorithmIDs::pluginInstance, sizeof (PluginInstanceInfo)));
|
||||
|
||||
// Create a property map
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue