added Midi NRPN
This commit is contained in:
+33
-18
@@ -896,22 +896,16 @@ void JaySynth::handlePitchWheel (const int midiChannel, const int wheelValue)
|
||||
|
||||
}
|
||||
|
||||
void JaySynth::handleController (const int midiChannel,
|
||||
const int controllerNumber,
|
||||
const int controllerValue)
|
||||
void JaySynth::handleController (const midiCC_info_t &midiCC_info)
|
||||
{
|
||||
midiCC_info.channel = midiChannel;
|
||||
midiCC_info.ID = controllerNumber;
|
||||
midiCC_info.value = (synth_float_t)controllerValue/127;
|
||||
|
||||
last_midiCC_info[controllerNumber] = midiCC_info;
|
||||
listeners.call (&JaySynthListener::synthChanged, SYNTH_CHANGED_MIDICC, &midiCC_info);
|
||||
last_midiCC_info[midiCC_info.ID] = midiCC_info;
|
||||
listeners.call (&JaySynthListener::synthChanged, SYNTH_CHANGED_MIDICC, (midiCC_info_t*)&midiCC_info);
|
||||
|
||||
switch (controllerNumber)
|
||||
switch (midiCC_info.ID)
|
||||
{
|
||||
case 0x40: handleSustainPedal (midiChannel, controllerValue >= 64); break;
|
||||
case 0x42: handleSostenutoPedal (midiChannel, controllerValue >= 64); break;
|
||||
case 0x43: handleSoftPedal (midiChannel, controllerValue >= 64); break;
|
||||
case 0x40: handleSustainPedal (midiCC_info.channel, midiCC_info.value_raw >= 64); break;
|
||||
case 0x42: handleSostenutoPedal (midiCC_info.channel, midiCC_info.value_raw >= 64); break;
|
||||
case 0x43: handleSoftPedal (midiCC_info.channel, midiCC_info.value_raw >= 64); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -921,8 +915,8 @@ void JaySynth::handleController (const int midiChannel,
|
||||
{
|
||||
JaySynthVoice* const voice = voices.getUnchecked (i);
|
||||
|
||||
if (midiChannel <= 0 || voice->isPlayingChannel (midiChannel))
|
||||
voice->controllerMoved (controllerNumber, controllerValue);
|
||||
if (midiCC_info.channel <= 0 || voice->isPlayingChannel (midiCC_info.channel))
|
||||
voice->controllerMoved (midiCC_info.ID, midiCC_info.value_raw);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1096,9 +1090,30 @@ void JaySynth::handleMidiEvent (const MidiMessage& m)
|
||||
}
|
||||
if (m.isController())
|
||||
{
|
||||
handleController (m.getChannel(),
|
||||
m.getControllerNumber(),
|
||||
m.getControllerValue());
|
||||
midiCC_info_t midiCC_info;
|
||||
midiCC_info.channel = m.getChannel();
|
||||
midiCC_info.ID = m.getControllerNumber();
|
||||
midiCC_info.type = MIDI_CONTROLLER_TYPE_CC;
|
||||
midiCC_info.value_raw = m.getControllerValue();
|
||||
midiCC_info.value = (synth_float_t)midiCC_info.value_raw/127;
|
||||
|
||||
SynthDebug("CC: controllerNumber=%d, controllerValue=%d", midiCC_info.ID, midiCC_info.value_raw);
|
||||
|
||||
bool isNrpnProcessing = mMidiNrpn.process(midiCC_info.ID, midiCC_info.value_raw);
|
||||
if (mMidiNrpn.isValue())
|
||||
{
|
||||
midiCC_info.ID = mMidiNrpn.getCommand();
|
||||
midiCC_info.type = MIDI_CONTROLLER_TYPE_NRPN;
|
||||
midiCC_info.value_raw = mMidiNrpn.consumeValue();
|
||||
midiCC_info.value = (synth_float_t)midiCC_info.value_raw/1000;
|
||||
SynthDebug("NRPN: controllerNumber=%d, controllerValue=%d", midiCC_info.ID, midiCC_info.value_raw);
|
||||
}
|
||||
|
||||
if (!isNrpnProcessing)
|
||||
{
|
||||
handleController (midiCC_info);
|
||||
}
|
||||
|
||||
}
|
||||
if (m.isMidiMachineControlMessage())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user