@@ -1400,6 +1400,7 @@ class QConProXMasterVUMeter_Midi_FeedbackProcessor : public Midi_FeedbackProcess
14001400 double maxDB_;
14011401 int param_;
14021402 bool isClipped_;
1403+ int lastMidiValue_;
14031404
14041405public:
14051406 virtual ~QConProXMasterVUMeter_Midi_FeedbackProcessor () {}
@@ -1466,10 +1467,27 @@ class QConProXMasterVUMeter_Midi_FeedbackProcessor : public Midi_FeedbackProcess
14661467 int midiValue = GetMidiMeterValue (value);
14671468 if (isClipped_) midiValue = 0x0E ; // red clip LED
14681469
1469- WindowsOutputDebugString (
1470- " QConProXMasterVUMeter_Midi_FeedbackProcessor: 0xd1, 0x%02x\n " ,
1471- (param_ << 4 ) | midiValue);
1472- SendMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1470+ double dbValue = VAL2DB (normalizedToVol (value));
1471+
1472+ if (dbValue < -60.0 )
1473+ {
1474+ if (midiValue != lastMidiValue_)
1475+ {
1476+ WindowsOutputDebugString (
1477+ " QConProXMasterVUMeter_Midi_FeedbackProcessor: 0xd1, 0x%02x\n " ,
1478+ (param_ << 4 ) | midiValue);
1479+ SendMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1480+ lastMidiValue_ = midiValue;
1481+ }
1482+ }
1483+ else
1484+ {
1485+ WindowsOutputDebugString (
1486+ " QConProXMasterVUMeter_Midi_FeedbackProcessor: 0xd1, 0x%02x\n " ,
1487+ (param_ << 4 ) | midiValue);
1488+ SendMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1489+ lastMidiValue_ = midiValue;
1490+ }
14731491 }
14741492
14751493 virtual void ForceValue (const PropertyList &properties, double value) override
@@ -1500,7 +1518,21 @@ class QConProXMasterVUMeter_Midi_FeedbackProcessor : public Midi_FeedbackProcess
15001518 int midiValue = GetMidiMeterValue (value);
15011519 if (isClipped_) midiValue = 0x0E ; // red clip LED
15021520
1503- ForceMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1521+ double dbValue = VAL2DB (normalizedToVol (value));
1522+
1523+ if (dbValue < -60.0 )
1524+ {
1525+ if (midiValue != lastMidiValue_)
1526+ {
1527+ ForceMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1528+ lastMidiValue_ = midiValue;
1529+ }
1530+ }
1531+ else
1532+ {
1533+ ForceMidiMessage (0xd1 , (param_ << 4 ) | midiValue, 0 );
1534+ lastMidiValue_ = midiValue;
1535+ }
15041536 }
15051537};
15061538
@@ -1572,9 +1604,21 @@ class MCUVUMeter_Midi_FeedbackProcessor : public Midi_FeedbackProcessor
15721604 int midiValue = GetMidiValue (properties, value);
15731605 if (isClipped_) midiValue = GetClipLedValue ();
15741606
1575- SendMidiMessage (0xD0 ,
1576- (channelNumber_ << 4 ) | midiValue,
1577- 0 );
1607+ double dbValue = VAL2DB (normalizedToVol (value));
1608+
1609+ if (dbValue < -60.0 )
1610+ {
1611+ if (midiValue != lastMidiValue_)
1612+ {
1613+ SendMidiMessage (0xD0 , (channelNumber_ << 4 ) | midiValue, 0 );
1614+ lastMidiValue_ = midiValue;
1615+ }
1616+ }
1617+ else
1618+ {
1619+ SendMidiMessage (0xD0 , (channelNumber_ << 4 ) | midiValue, 0 );
1620+ lastMidiValue_ = midiValue;
1621+ }
15781622 }
15791623
15801624 virtual void ForceValue (const PropertyList& properties, double value) override
@@ -1608,9 +1652,21 @@ class MCUVUMeter_Midi_FeedbackProcessor : public Midi_FeedbackProcessor
16081652 int midiValue = GetMidiValue (properties, value);
16091653 if (isClipped_) midiValue = GetClipLedValue ();
16101654
1611- ForceMidiMessage (0xD0 ,
1612- (channelNumber_ << 4 ) | midiValue,
1613- 0 );
1655+ double dbValue = VAL2DB (normalizedToVol (value));
1656+
1657+ if (dbValue < -60.0 )
1658+ {
1659+ if (midiValue != lastMidiValue_)
1660+ {
1661+ ForceMidiMessage (0xD0 , (channelNumber_ << 4 ) | midiValue, 0 );
1662+ lastMidiValue_ = midiValue;
1663+ }
1664+ }
1665+ else
1666+ {
1667+ ForceMidiMessage (0xD0 , (channelNumber_ << 4 ) | midiValue, 0 );
1668+ lastMidiValue_ = midiValue;
1669+ }
16141670 }
16151671
16161672protected:
0 commit comments