From f729563b683c3ac7adcf07d2f4dffcdfa49fd605 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Tue, 8 May 2018 20:32:41 +0200 Subject: fix pitchbend --- src/adlmidi_midiplay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 7c40fa0..39d7bff 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -1393,7 +1393,7 @@ void MIDIplay::realTime_PatchChange(uint8_t channel, uint8_t patch) void MIDIplay::realTime_PitchBend(uint8_t channel, uint16_t pitch) { channel = channel % 16; - Ch[channel].bend = (uint32_t(pitch) - 8192) * Ch[channel].bendsense; + Ch[channel].bend = (int(pitch) - 8192) * Ch[channel].bendsense; NoteUpdate_All(channel, Upd_Pitch); } -- cgit v1.2.3 From 6545b648cded507215be777864194f4cc961f877 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 10 May 2018 15:03:47 +0200 Subject: meaningful handling of pitch bend sensitivity --- src/adlmidi_midiplay.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 39d7bff..e7489b1 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -2358,8 +2358,14 @@ void MIDIplay::SetRPN(unsigned MidCh, unsigned value, bool MSB) switch(addr + nrpn * 0x10000 + MSB * 0x20000) { case 0x0000 + 0*0x10000 + 1*0x20000: // Pitch-bender sensitivity - Ch[MidCh].bendsense = value / 8192.0; + { + if (MSB) + Ch[MidCh].bendsense_msb = value; + else + Ch[MidCh].bendsense_lsb = value; + Ch[MidCh].updateBendSensitivity(); break; + } case 0x0108 + 1*0x10000 + 1*0x20000: // Vibrato speed if(value == 64) Ch[MidCh].vibspeed = 1.0; else if(value < 100) Ch[MidCh].vibspeed = 1.0 / (1.6e-2 * (value ? value : 1)); -- cgit v1.2.3 From 82b0b69707fe69108fd1721b97f14b55d5c50642 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 10 May 2018 16:19:27 +0200 Subject: pitch bend sensitivity attempt #2 --- src/adlmidi_midiplay.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index e7489b1..6bc2366 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -2358,14 +2358,13 @@ void MIDIplay::SetRPN(unsigned MidCh, unsigned value, bool MSB) switch(addr + nrpn * 0x10000 + MSB * 0x20000) { case 0x0000 + 0*0x10000 + 1*0x20000: // Pitch-bender sensitivity - { - if (MSB) - Ch[MidCh].bendsense_msb = value; - else - Ch[MidCh].bendsense_lsb = value; + Ch[MidCh].bendsense_msb = value; + Ch[MidCh].updateBendSensitivity(); + break; + case 0x0000 + 0*0x10000 + 0*0x20000: // Pitch-bender sensitivity LSB + Ch[MidCh].bendsense_lsb = value; Ch[MidCh].updateBendSensitivity(); break; - } case 0x0108 + 1*0x10000 + 1*0x20000: // Vibrato speed if(value == 64) Ch[MidCh].vibspeed = 1.0; else if(value < 100) Ch[MidCh].vibspeed = 1.0 / (1.6e-2 * (value ? value : 1)); -- cgit v1.2.3