diff --git a/fluid/chan.cpp b/fluid/chan.cpp index 4f50b6d3eff0..b76c16311b94 100644 --- a/fluid/chan.cpp +++ b/fluid/chan.cpp @@ -21,7 +21,6 @@ #include "fluid.h" #include "sfont.h" #include "gen.h" -#include "synthesizer/event.h" namespace FluidS { @@ -70,7 +69,7 @@ void Channel::initCtrl() key_pressure = 0; channel_pressure = 0; pitch_bend = 0x2000; // Range is 0x4000, pitch bend wheel starts in centered position - pitch_wheel_sensitivity = PITCH_BEND_SENSITIVITY; /* four semi-tones, default for many DAWs */ + pitch_wheel_sensitivity = 12; /* twelve semi-tones */ bank_msb = 0; for (int i = 0; i < GEN_LAST; i++) { diff --git a/libmscore/rendermidi.cpp b/libmscore/rendermidi.cpp index cc10da1430f2..cddd9b1b762e 100644 --- a/libmscore/rendermidi.cpp +++ b/libmscore/rendermidi.cpp @@ -331,9 +331,9 @@ static void collectNote(EventMap* events, int channel, const Note* note, int vel int pitch = pitchValue.pitch; if (pitchIndex == 0 && (pitch == nextPitch.pitch)) { - int midiPitch = midiBendPitch(pitch); - int msb = (midiPitch / 128); - int lsb = (midiPitch % 128); + int midiPitch = (pitch * 16384) / 1200 + 8192; + int msb = midiPitch / 128; + int lsb = midiPitch % 128; NPlayEvent ev(ME_PITCHBEND, channel, lsb, msb); ev.setOriginatingStaff(staffIdx); events->insert(std::pair(lastPointTick, ev)); @@ -358,7 +358,7 @@ static void collectNote(EventMap* events, int channel, const Note* note, int vel int p = pitch + dx * pitchDelta / tickDelta; // We don't support negative pitch, but Midi does. Let's center by adding 8192. - int midiPitch = midiBendPitch(p); + int midiPitch = (p * 16384) / 1200 + 8192; // Representing pitch as two bytes int msb = midiPitch / 128; int lsb = midiPitch % 128; diff --git a/mscore/exportmidi.cpp b/mscore/exportmidi.cpp index f18add8f152a..7892a5b4003c 100644 --- a/mscore/exportmidi.cpp +++ b/mscore/exportmidi.cpp @@ -258,7 +258,7 @@ bool ExportMidi::write(QIODevice* device, bool midiExpandRepeats, bool exportRPN // set pitch bend sensitivity to 12 semitones: track.insert(0, MidiEvent(ME_CONTROLLER, channel, CTRL_LRPN, 0)); track.insert(0, MidiEvent(ME_CONTROLLER, channel, CTRL_HRPN, 0)); - track.insert(0, MidiEvent(ME_CONTROLLER, channel, CTRL_HDATA, PITCH_BEND_SENSITIVITY)); + track.insert(0, MidiEvent(ME_CONTROLLER, channel, CTRL_HDATA, 12)); // reset fine tuning /*track.insert(0, MidiEvent(ME_CONTROLLER, channel, CTRL_LRPN, 1)); diff --git a/mscore/seq.cpp b/mscore/seq.cpp index 112a6aac3a57..9d4e43b7ad5f 100644 --- a/mscore/seq.cpp +++ b/mscore/seq.cpp @@ -987,14 +987,14 @@ void Seq::initInstruments(bool realTime) if (realTime) { putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_LRPN, 0)); putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HRPN, 0)); - putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HDATA, PITCH_BEND_SENSITIVITY)); + putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HDATA,12)); putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_LRPN, 127)); putEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HRPN, 127)); } else { sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_LRPN, 0)); sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HRPN, 0)); - sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HDATA, PITCH_BEND_SENSITIVITY)); + sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HDATA,12)); sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_LRPN, 127)); sendEvent(NPlayEvent(ME_CONTROLLER, channel->channel(), CTRL_HRPN, 127)); } diff --git a/mtest/libmscore/midi/testArpeggio-ref.mid b/mtest/libmscore/midi/testArpeggio-ref.mid index 97d92c0c3c58..ce5bb251e198 100644 Binary files a/mtest/libmscore/midi/testArpeggio-ref.mid and b/mtest/libmscore/midi/testArpeggio-ref.mid differ diff --git a/mtest/libmscore/midi/testBends1-ref.mid b/mtest/libmscore/midi/testBends1-ref.mid index 1ca07695ec68..99ecf3f88f04 100644 Binary files a/mtest/libmscore/midi/testBends1-ref.mid and b/mtest/libmscore/midi/testBends1-ref.mid differ diff --git a/mtest/libmscore/midi/testBends2-ref.mid b/mtest/libmscore/midi/testBends2-ref.mid index f9e807ecac28..687d8e5d2284 100644 Binary files a/mtest/libmscore/midi/testBends2-ref.mid and b/mtest/libmscore/midi/testBends2-ref.mid differ diff --git a/mtest/libmscore/midi/testInitialKeySigThenRepeatToMeas2-ref.mid b/mtest/libmscore/midi/testInitialKeySigThenRepeatToMeas2-ref.mid index 43e98749b351..11a9385fb282 100644 Binary files a/mtest/libmscore/midi/testInitialKeySigThenRepeatToMeas2-ref.mid and b/mtest/libmscore/midi/testInitialKeySigThenRepeatToMeas2-ref.mid differ diff --git a/mtest/libmscore/midi/testRepeatsWithKeySigs-ref.mid b/mtest/libmscore/midi/testRepeatsWithKeySigs-ref.mid index 91c0be829c72..9a167d985e05 100644 Binary files a/mtest/libmscore/midi/testRepeatsWithKeySigs-ref.mid and b/mtest/libmscore/midi/testRepeatsWithKeySigs-ref.mid differ diff --git a/mtest/libmscore/midi/testRepeatsWithKeySigsExceptFirstMeas-ref.mid b/mtest/libmscore/midi/testRepeatsWithKeySigsExceptFirstMeas-ref.mid index cdb93e3715b5..23b5b3d6137a 100644 Binary files a/mtest/libmscore/midi/testRepeatsWithKeySigsExceptFirstMeas-ref.mid and b/mtest/libmscore/midi/testRepeatsWithKeySigsExceptFirstMeas-ref.mid differ diff --git a/mtest/libmscore/midi/testSingleNoteDynamics-ref.mid b/mtest/libmscore/midi/testSingleNoteDynamics-ref.mid index 558ec1877467..293cc5b1d29d 100644 Binary files a/mtest/libmscore/midi/testSingleNoteDynamics-ref.mid and b/mtest/libmscore/midi/testSingleNoteDynamics-ref.mid differ diff --git a/mtest/libmscore/midi/testTimeStretchFermata-ref.mid b/mtest/libmscore/midi/testTimeStretchFermata-ref.mid index 09740b7f4ef4..769b71c24d6c 100644 Binary files a/mtest/libmscore/midi/testTimeStretchFermata-ref.mid and b/mtest/libmscore/midi/testTimeStretchFermata-ref.mid differ diff --git a/mtest/libmscore/midi/testVoltaDynamic-ref.mid b/mtest/libmscore/midi/testVoltaDynamic-ref.mid index 73deb4c097aa..e3c75eca7024 100644 Binary files a/mtest/libmscore/midi/testVoltaDynamic-ref.mid and b/mtest/libmscore/midi/testVoltaDynamic-ref.mid differ diff --git a/mtest/libmscore/midi/testVoltaStaffText-ref.mid b/mtest/libmscore/midi/testVoltaStaffText-ref.mid index 0ef9e6f8e2ea..f4170ae4022a 100644 Binary files a/mtest/libmscore/midi/testVoltaStaffText-ref.mid and b/mtest/libmscore/midi/testVoltaStaffText-ref.mid differ diff --git a/mtest/libmscore/midi/testVoltaTemp-ref.mid b/mtest/libmscore/midi/testVoltaTemp-ref.mid index fe3b4e9edddd..d502994be9df 100644 Binary files a/mtest/libmscore/midi/testVoltaTemp-ref.mid and b/mtest/libmscore/midi/testVoltaTemp-ref.mid differ diff --git a/synthesizer/event.cpp b/synthesizer/event.cpp index e1156ae3f377..835e2813ef82 100644 --- a/synthesizer/event.cpp +++ b/synthesizer/event.cpp @@ -204,8 +204,6 @@ bool MidiCoreEvent::isChannelEvent() const // return false; } - - //--------------------------------------------------------- // Event::write //--------------------------------------------------------- @@ -356,10 +354,6 @@ QString midiMetaName(int meta) return QString(s); } -int midiBendPitch(int pitch) { - return (pitch * 8192) / (PITCH_BEND_SENSITIVITY * 100) + 8192; - } - //--------------------------------------------------------- // insert //--------------------------------------------------------- diff --git a/synthesizer/event.h b/synthesizer/event.h index dea9e7371d8f..1c27211004a6 100644 --- a/synthesizer/event.h +++ b/synthesizer/event.h @@ -22,9 +22,6 @@ class XmlWriter; enum class BeatType : char; -// 4 is the default for the majority of synthesisers, aka VSTis -const int PITCH_BEND_SENSITIVITY = 4; - //--------------------------------------------------------- // Event types //--------------------------------------------------------- @@ -336,7 +333,6 @@ typedef EventList::const_iterator ciEvent; extern QString midiMetaName(int meta); -extern int midiBendPitch(int pitch); } #endif