From 5f7784e4f2f0b541819c5743cc42c588583bdab8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 23 Nov 2015 11:49:08 -0500 Subject: [PATCH] change API for libmidi++ RPN-related signals to be more useful --- libs/midi++2/channel.cc | 12 ++++++------ libs/midi++2/midi++/parser.h | 11 ++++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/libs/midi++2/channel.cc b/libs/midi++2/channel.cc index fd9a0d1026..ffe65c6df9 100644 --- a/libs/midi++2/channel.cc +++ b/libs/midi++2/channel.cc @@ -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; } } diff --git a/libs/midi++2/midi++/parser.h b/libs/midi++2/midi++/parser.h index 7eb690d402..40ba8209b0 100644 --- a/libs/midi++2/midi++/parser.h +++ b/libs/midi++2/midi++/parser.h @@ -39,7 +39,8 @@ typedef PBD::Signal2 TimestampedSignal; typedef PBD::Signal2 OneByteSignal; typedef PBD::Signal2 TwoByteSignal; typedef PBD::Signal2 PitchBendSignal; -typedef PBD::Signal2 RPNSignal; +typedef PBD::Signal3 RPNSignal; +typedef PBD::Signal3 RPNValueSignal; typedef PBD::Signal3 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; -- 2.30.2