fixed NRPN
This commit is contained in:
@@ -1102,9 +1102,9 @@ void JaySynth::handleMidiEvent (const MidiMessage& m)
|
||||
bool isNrpnProcessing = mMidiNrpn.process(midiCC_info.ID, midiCC_info.value_raw);
|
||||
if (mMidiNrpn.isValid())
|
||||
{
|
||||
midiCC_info.ID = mMidiNrpn.getCommand();
|
||||
midiCC_info.ID = mMidiNrpn.getId();
|
||||
midiCC_info.type = MIDI_CONTROLLER_TYPE_NRPN;
|
||||
midiCC_info.value_raw = mMidiNrpn.consumeValue();
|
||||
midiCC_info.value_raw = mMidiNrpn.getValue();
|
||||
midiCC_info.value = (synth_float_t)midiCC_info.value_raw/mMidiNrpn.getMaxValue();
|
||||
SynthDebug("NRPN: controllerNumber=%d, controllerValue=%d", midiCC_info.ID, midiCC_info.value_raw);
|
||||
}
|
||||
|
||||
+14
-22
@@ -2,7 +2,7 @@
|
||||
|
||||
MidiNrpn::MidiNrpn()
|
||||
: mState(0)
|
||||
, mCommand(0)
|
||||
, mId(0)
|
||||
, mValue(0)
|
||||
, mMaxValue(0)
|
||||
, mIsValid(false)
|
||||
@@ -18,42 +18,34 @@ MidiNrpn::~MidiNrpn()
|
||||
void MidiNrpn::reset()
|
||||
{
|
||||
mIsValid = false;
|
||||
mCommand = 0;
|
||||
mId = 0;
|
||||
mValue = 0;
|
||||
mMaxValue = 0;
|
||||
mState = 0;
|
||||
}
|
||||
|
||||
int MidiNrpn::getCommand()
|
||||
int MidiNrpn::getId()
|
||||
{
|
||||
if (!mIsValid)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return mCommand;
|
||||
return mId;
|
||||
}
|
||||
|
||||
bool MidiNrpn::isValid()
|
||||
bool MidiNrpn::isValid(bool doClear)
|
||||
{
|
||||
return mIsValid;
|
||||
bool result = mIsValid;
|
||||
if (doClear)
|
||||
{
|
||||
mIsValid = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int MidiNrpn::consumeValue()
|
||||
int MidiNrpn::getValue()
|
||||
{
|
||||
if (!mIsValid)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
mIsValid = false;
|
||||
return mValue;
|
||||
}
|
||||
|
||||
int MidiNrpn::getMaxValue()
|
||||
{
|
||||
if (!mIsValid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return mMaxValue;
|
||||
}
|
||||
|
||||
@@ -66,7 +58,7 @@ bool MidiNrpn::process(uint8_t controllerNumber, uint8_t controllerValue)
|
||||
if (controllerNumber == 99)
|
||||
{
|
||||
state_nxt = 1;
|
||||
mCommand = (uint16_t)controllerValue & 0x007F;
|
||||
mId = (uint16_t)controllerValue & 0x007F;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -74,7 +66,7 @@ bool MidiNrpn::process(uint8_t controllerNumber, uint8_t controllerValue)
|
||||
if (controllerNumber == 98)
|
||||
{
|
||||
state_nxt = 2;
|
||||
mCommand = mCommand << 7 | (uint16_t)controllerValue & 0x007F;
|
||||
mId = mId << 7 | (uint16_t)controllerValue & 0x007F;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+4
-4
@@ -13,10 +13,10 @@ class MidiNrpn
|
||||
|
||||
void reset();
|
||||
|
||||
bool isValid();
|
||||
bool isValid(bool doClear=true);
|
||||
|
||||
int getCommand();
|
||||
int consumeValue();
|
||||
int getId();
|
||||
int getValue();
|
||||
int getMaxValue();
|
||||
|
||||
bool process(uint8_t controllerNumber, uint8_t controllerValue);
|
||||
@@ -24,7 +24,7 @@ class MidiNrpn
|
||||
private:
|
||||
|
||||
int mState;
|
||||
int mCommand;
|
||||
int mId;
|
||||
int mValue;
|
||||
int mMaxValue;
|
||||
bool mIsValid;
|
||||
|
||||
Reference in New Issue
Block a user