mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
AudioProcessor: Add VST2/VST3 midi note name support
Co-authored-by: Roland Rabien <roland@rabien.com>
This commit is contained in:
parent
ad3457434e
commit
96e4ba06af
6 changed files with 85 additions and 2 deletions
|
|
@ -918,6 +918,7 @@ public:
|
|||
case Vst2::effSetProcessPrecision: return handleSetSampleFloatType (args);
|
||||
case Vst2::effGetNumMidiInputChannels: return handleGetNumMidiInputChannels();
|
||||
case Vst2::effGetNumMidiOutputChannels: return handleGetNumMidiOutputChannels();
|
||||
case Vst2::effGetMidiKeyName: return handleGetMidiKeyName (args);
|
||||
case Vst2::effEditIdle: return handleEditIdle();
|
||||
default: return 0;
|
||||
}
|
||||
|
|
@ -2049,6 +2050,22 @@ private:
|
|||
return 0;
|
||||
}
|
||||
|
||||
pointer_sized_int handleGetMidiKeyName (VstOpCodeArguments args)
|
||||
{
|
||||
if (processor != nullptr)
|
||||
{
|
||||
auto keyName = (Vst2::MidiKeyName*) args.ptr;
|
||||
|
||||
if (auto name = processor->getNameForMidiNoteNumber (keyName->thisKeyNumber, args.index))
|
||||
{
|
||||
name->copyToUTF8 (keyName->keyName, Vst2::kVstMaxNameLen);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
pointer_sized_int handleEditIdle()
|
||||
{
|
||||
#if JUCE_LINUX || JUCE_BSD
|
||||
|
|
|
|||
|
|
@ -525,9 +525,27 @@ public:
|
|||
return kResultFalse;
|
||||
}
|
||||
|
||||
tresult PLUGIN_API hasProgramPitchNames (Vst::ProgramListID, Steinberg::int32) override
|
||||
{
|
||||
for (int i = 0; i <= 127; ++i)
|
||||
if (audioProcessor->getNameForMidiNoteNumber (i, 1))
|
||||
return kResultTrue;
|
||||
|
||||
return kResultFalse;
|
||||
}
|
||||
|
||||
tresult PLUGIN_API getProgramPitchName (Vst::ProgramListID, Steinberg::int32, Steinberg::int16 midiNote, Vst::String128 nameOut) override
|
||||
{
|
||||
if (auto name = audioProcessor->getNameForMidiNoteNumber (midiNote, 1))
|
||||
{
|
||||
toString128 (nameOut, *name);
|
||||
return kResultTrue;
|
||||
}
|
||||
|
||||
return kResultFalse;
|
||||
}
|
||||
|
||||
tresult PLUGIN_API getProgramInfo (Vst::ProgramListID, Steinberg::int32, Vst::CString, Vst::String128) override { return kNotImplemented; }
|
||||
tresult PLUGIN_API hasProgramPitchNames (Vst::ProgramListID, Steinberg::int32) override { return kNotImplemented; }
|
||||
tresult PLUGIN_API getProgramPitchName (Vst::ProgramListID, Steinberg::int32, Steinberg::int16, Vst::String128) override { return kNotImplemented; }
|
||||
tresult PLUGIN_API selectUnit (Vst::UnitID) override { return kNotImplemented; }
|
||||
tresult PLUGIN_API setUnitProgramData (Steinberg::int32, Steinberg::int32, IBStream*) override { return kNotImplemented; }
|
||||
Vst::UnitID PLUGIN_API getSelectedUnit() override { return Vst::kRootUnitId; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue