From 4faa65a2e9773827be2fb326228370f79e341e90 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 8 May 2022 02:07:58 -0500 Subject: [PATCH] GUI: add an option for it --- src/gui/gui.h | 3 ++- src/gui/midiMap.cpp | 2 ++ src/gui/settings.cpp | 1 + src/gui/sysEx.cpp | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index c6e757235..365c15e02 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -598,7 +598,7 @@ struct MIDIMap { int**** map; std::vector binds; - bool noteInput, volInput, rawVolume, polyInput, directChannel, programChange, midiClock, midiTimeCode; + bool noteInput, volInput, rawVolume, polyInput, directChannel, programChange, midiClock, midiTimeCode, yamahaFMResponse; // 0: disabled // // 1: C- C# D- D# E- F- F# G- G# A- A# B- @@ -660,6 +660,7 @@ struct MIDIMap { programChange(true), midiClock(false), midiTimeCode(false), + yamahaFMResponse(false), valueInputStyle(1), valueInputControlMSB(0), valueInputControlLSB(0), diff --git a/src/gui/midiMap.cpp b/src/gui/midiMap.cpp index 568bf16ea..602347107 100644 --- a/src/gui/midiMap.cpp +++ b/src/gui/midiMap.cpp @@ -138,6 +138,7 @@ bool MIDIMap::read(String path) { UNDERSTAND_OPTION(programChange) else UNDERSTAND_OPTION(midiClock) else UNDERSTAND_OPTION(midiTimeCode) else + UNDERSTAND_OPTION(yamahaFMResponse) else UNDERSTAND_OPTION(valueInputStyle) else UNDERSTAND_OPTION(valueInputControlMSB) else UNDERSTAND_OPTION(valueInputControlLSB) else @@ -203,6 +204,7 @@ bool MIDIMap::write(String path) { WRITE_OPTION(programChange); WRITE_OPTION(midiClock); WRITE_OPTION(midiTimeCode); + WRITE_OPTION(yamahaFMResponse); WRITE_OPTION(valueInputStyle); WRITE_OPTION(valueInputControlMSB); WRITE_OPTION(valueInputControlLSB); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 6f0edbeb4..c575f9625 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -640,6 +640,7 @@ void FurnaceGUI::drawSettings() { //ImGui::Checkbox("Use raw velocity value (don't map from linear to log)",&midiMap.rawVolume); //ImGui::Checkbox("Polyphonic/chord input",&midiMap.polyInput); ImGui::Checkbox("Map MIDI channels to direct channels",&midiMap.directChannel); + ImGui::Checkbox("Map Yamaha FM voice data to instruments",&midiMap.yamahaFMResponse); ImGui::Checkbox("Program change is instrument selection",&midiMap.programChange); //ImGui::Checkbox("Listen to MIDI clock",&midiMap.midiClock); //ImGui::Checkbox("Listen to MIDI time code",&midiMap.midiTimeCode); diff --git a/src/gui/sysEx.cpp b/src/gui/sysEx.cpp index 52a9603c5..861cfc779 100644 --- a/src/gui/sysEx.cpp +++ b/src/gui/sysEx.cpp @@ -4,6 +4,8 @@ bool FurnaceGUI::parseSysEx(unsigned char* data, size_t len) { SafeReader reader(data,len); + if (!midiMap.yamahaFMResponse) return true; + try { unsigned char isSysEx=reader.readC(); if (isSysEx!=0xf0) {