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);
|
bool isNrpnProcessing = mMidiNrpn.process(midiCC_info.ID, midiCC_info.value_raw);
|
||||||
if (mMidiNrpn.isValid())
|
if (mMidiNrpn.isValid())
|
||||||
{
|
{
|
||||||
midiCC_info.ID = mMidiNrpn.getCommand();
|
midiCC_info.ID = mMidiNrpn.getId();
|
||||||
midiCC_info.type = MIDI_CONTROLLER_TYPE_NRPN;
|
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();
|
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);
|
SynthDebug("NRPN: controllerNumber=%d, controllerValue=%d", midiCC_info.ID, midiCC_info.value_raw);
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-23
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
MidiNrpn::MidiNrpn()
|
MidiNrpn::MidiNrpn()
|
||||||
: mState(0)
|
: mState(0)
|
||||||
, mCommand(0)
|
, mId(0)
|
||||||
, mValue(0)
|
, mValue(0)
|
||||||
, mMaxValue(0)
|
, mMaxValue(0)
|
||||||
, mIsValid(false)
|
, mIsValid(false)
|
||||||
@@ -18,42 +18,34 @@ MidiNrpn::~MidiNrpn()
|
|||||||
void MidiNrpn::reset()
|
void MidiNrpn::reset()
|
||||||
{
|
{
|
||||||
mIsValid = false;
|
mIsValid = false;
|
||||||
mCommand = 0;
|
mId = 0;
|
||||||
mValue = 0;
|
mValue = 0;
|
||||||
mMaxValue = 0;
|
mMaxValue = 0;
|
||||||
mState = 0;
|
mState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MidiNrpn::getCommand()
|
int MidiNrpn::getId()
|
||||||
{
|
{
|
||||||
if (!mIsValid)
|
return mId;
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return mCommand;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MidiNrpn::isValid()
|
bool MidiNrpn::isValid(bool doClear)
|
||||||
{
|
{
|
||||||
return mIsValid;
|
bool result = mIsValid;
|
||||||
}
|
if (doClear)
|
||||||
|
|
||||||
int MidiNrpn::consumeValue()
|
|
||||||
{
|
|
||||||
if (!mIsValid)
|
|
||||||
{
|
{
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
mIsValid = false;
|
mIsValid = false;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int MidiNrpn::getValue()
|
||||||
|
{
|
||||||
return mValue;
|
return mValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MidiNrpn::getMaxValue()
|
int MidiNrpn::getMaxValue()
|
||||||
{
|
{
|
||||||
if (!mIsValid)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return mMaxValue;
|
return mMaxValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +58,7 @@ bool MidiNrpn::process(uint8_t controllerNumber, uint8_t controllerValue)
|
|||||||
if (controllerNumber == 99)
|
if (controllerNumber == 99)
|
||||||
{
|
{
|
||||||
state_nxt = 1;
|
state_nxt = 1;
|
||||||
mCommand = (uint16_t)controllerValue & 0x007F;
|
mId = (uint16_t)controllerValue & 0x007F;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -74,7 +66,7 @@ bool MidiNrpn::process(uint8_t controllerNumber, uint8_t controllerValue)
|
|||||||
if (controllerNumber == 98)
|
if (controllerNumber == 98)
|
||||||
{
|
{
|
||||||
state_nxt = 2;
|
state_nxt = 2;
|
||||||
mCommand = mCommand << 7 | (uint16_t)controllerValue & 0x007F;
|
mId = mId << 7 | (uint16_t)controllerValue & 0x007F;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-4
@@ -13,10 +13,10 @@ class MidiNrpn
|
|||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
bool isValid();
|
bool isValid(bool doClear=true);
|
||||||
|
|
||||||
int getCommand();
|
int getId();
|
||||||
int consumeValue();
|
int getValue();
|
||||||
int getMaxValue();
|
int getMaxValue();
|
||||||
|
|
||||||
bool process(uint8_t controllerNumber, uint8_t controllerValue);
|
bool process(uint8_t controllerNumber, uint8_t controllerValue);
|
||||||
@@ -24,7 +24,7 @@ class MidiNrpn
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
int mState;
|
int mState;
|
||||||
int mCommand;
|
int mId;
|
||||||
int mValue;
|
int mValue;
|
||||||
int mMaxValue;
|
int mMaxValue;
|
||||||
bool mIsValid;
|
bool mIsValid;
|
||||||
|
|||||||
Reference in New Issue
Block a user