From 9166fd48255c7002ba9fbc7a4679a49da544e8c3 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sat, 25 Nov 2017 03:59:25 +0300 Subject: Experimental: Added Brightness CC74 controller support --- src/adlmidi_private.hpp | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'src/adlmidi_private.hpp') diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp index 4d7251b..947181b 100644 --- a/src/adlmidi_private.hpp +++ b/src/adlmidi_private.hpp @@ -249,7 +249,7 @@ public: void NoteOff(size_t c); void NoteOn(unsigned c, double hertz); - void Touch_Real(unsigned c, unsigned volume); + void Touch_Real(unsigned c, unsigned volume, uint8_t brightness = 127); //void Touch(unsigned c, unsigned volume) void Patch(uint16_t c, size_t i); @@ -465,6 +465,7 @@ public: int64_t vibdelay; uint8_t lastlrpn, lastmrpn; bool nrpn; + uint8_t brightness; struct NoteInfo { // Current pressure @@ -501,17 +502,33 @@ public: typedef activenotemap_t::iterator activenoteiterator; char ____padding2[5]; activenotemap_t activenotes; - + void reset() + { + portamento = 0; + bank_lsb = 0; + bank_msb = 0; + patch = 0; + volume = 100; + expression = 127; + panning = 0x30; + vibrato = 0; + sustain = 0; + bend = 0.0; + bendsense = 2 / 8192.0; + vibpos = 0; + vibspeed = 2 * 3.141592653 * 5.0; + vibdepth = 0.5 / 127; + vibdelay = 0; + lastlrpn = 0; + lastmrpn = 0; + nrpn = false; + brightness = 127; + } MIDIchannel() - : portamento(0), - bank_lsb(0), bank_msb(0), patch(0), - volume(100), expression(127), - panning(0x30), vibrato(0), sustain(0), - bend(0.0), bendsense(2 / 8192.0), - vibpos(0), vibspeed(2 * 3.141592653 * 5.0), - vibdepth(0.5 / 127), vibdelay(0), - lastlrpn(0), lastmrpn(0), nrpn(false), - activenotes() { } + : activenotes() + { + reset(); + } }; // Additional information about OPL3 channels -- cgit v1.2.3 From 9a9cc5e5ff305114acfb248b65056403ed2e64e6 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sat, 25 Nov 2017 04:16:25 +0300 Subject: Don't affect percussion chgannels by CC74 Brightness (As this controller may damage sound of some drums such as DMXOPL3) --- src/adlmidi_private.hpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/adlmidi_private.hpp') diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp index 947181b..8058824 100644 --- a/src/adlmidi_private.hpp +++ b/src/adlmidi_private.hpp @@ -466,6 +466,7 @@ public: uint8_t lastlrpn, lastmrpn; bool nrpn; uint8_t brightness; + bool is_xg_percussion; struct NoteInfo { // Current pressure @@ -523,6 +524,7 @@ public: lastmrpn = 0; nrpn = false; brightness = 127; + is_xg_percussion = false; } MIDIchannel() : activenotes() -- cgit v1.2.3