change API for libmidi++ RPN-related signals to be more useful
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 23 Nov 2015 16:49:08 +0000 (11:49 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 23 Nov 2015 16:49:08 +0000 (11:49 -0500)
libs/midi++2/channel.cc
libs/midi++2/midi++/parser.h

index fd9a0d1026518db54879a298de3dfd802b43049f..ffe65c6df9f49a6a9750dc26559ca7ca066c858d 100644 (file)
@@ -174,12 +174,12 @@ Channel::maybe_process_rpns (Parser& parser, EventTwoBytes *tb)
                case 0x60:
                        /* data increment */
                        _nrpn_state = RPNState (_nrpn_state|HaveValue);
-                       parser.channel_nrpn_increment[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_nrpn_increment[_channel_number] (parser, rpn_id, 1); /* EMIT SIGNAL */
                        return true;
                case 0x61:
                        /* data decrement */
                        _nrpn_state = RPNState (_nrpn_state|HaveValue);
-                       parser.channel_nrpn_decrement[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_nrpn_decrement[_channel_number] (parser, rpn_id, -1); /* EMIT SIGNAL */
                        return true;
                case 0x06:
                        /* data entry MSB */
@@ -202,7 +202,7 @@ Channel::maybe_process_rpns (Parser& parser, EventTwoBytes *tb)
                                result.first->second = rpn_val;
                        }
 
-                       parser.channel_nrpn[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_nrpn[_channel_number] (parser, rpn_id, rpn_val); /* EMIT SIGNAL */
                        return true;
                }
 
@@ -214,12 +214,12 @@ Channel::maybe_process_rpns (Parser& parser, EventTwoBytes *tb)
                case 0x60:
                        /* data increment */
                        _rpn_state = RPNState (_rpn_state|HaveValue);
-                       parser.channel_rpn_increment[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_rpn_increment[_channel_number] (parser, rpn_id, 1); /* EMIT SIGNAL */
                        return true;
                case 0x61:
                        /* data decrement */
                        _rpn_state = RPNState (_rpn_state|HaveValue);
-                       parser.channel_rpn_decrement[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_rpn_decrement[_channel_number] (parser, rpn_id, -1); /* EMIT SIGNAL */
                        return true;
                case 0x06:
                        /* data entry MSB */
@@ -242,7 +242,7 @@ Channel::maybe_process_rpns (Parser& parser, EventTwoBytes *tb)
                                result.first->second = rpn_val;
                        }
 
-                       parser.channel_rpn[_channel_number] (parser, rpn_id); /* EMIT SIGNAL */
+                       parser.channel_rpn[_channel_number] (parser, rpn_id, rpn_val); /* EMIT SIGNAL */
                        return true;
                }
        }
index 7eb690d4020cfe46ddd8627eca0555c86fd49015..40ba8209b0b6770fda397d6b94c3e9fe262b433b 100644 (file)
@@ -39,7 +39,8 @@ typedef PBD::Signal2<void,Parser&,framecnt_t>        TimestampedSignal;
 typedef PBD::Signal2<void,Parser&, byte>             OneByteSignal;
 typedef PBD::Signal2<void,Parser &, EventTwoBytes *> TwoByteSignal;
 typedef PBD::Signal2<void,Parser &, pitchbend_t>     PitchBendSignal;
-typedef PBD::Signal2<void,Parser &, uint16_t>        RPNSignal;
+typedef PBD::Signal3<void,Parser &, uint16_t, int>   RPNSignal;
+typedef PBD::Signal3<void,Parser &, uint16_t, float> RPNValueSignal;
 typedef PBD::Signal3<void,Parser &, byte *, size_t>  Signal;
 
 class LIBMIDIPP_API Parser {
@@ -78,10 +79,10 @@ class LIBMIDIPP_API Parser {
        ZeroByteSignal        channel_active_postparse[16];
        RPNSignal             channel_rpn[16];
        RPNSignal             channel_nrpn[16];
-       RPNSignal             channel_rpn_increment[16];
-       RPNSignal             channel_rpn_decrement[16];
-       RPNSignal             channel_nrpn_increment[16];
-       RPNSignal             channel_nrpn_decrement[16];
+       RPNValueSignal        channel_rpn_increment[16];
+       RPNValueSignal        channel_rpn_decrement[16];
+       RPNValueSignal        channel_nrpn_increment[16];
+       RPNValueSignal        channel_nrpn_decrement[16];
 
        OneByteSignal         mtc_quarter_frame; /* see below for more useful signals */
        Signal                mtc;