commit b8f568f42693c6465010ea90c3f5e6ff5fd89f81 parent 32cc0ffb7f616e25ae8360ae2880f664803ed4c9 Author: dsp56300 <dsp56300@users.noreply.github.com> Date: Wed, 24 Jul 2024 00:08:29 +0200 do not send midi event but start demo mode instead Diffstat:
M | source/nord/n2x/n2xLib/n2xfrontpanel.cpp | | | 40 | ++++++++++++++++++++++++++++------------ |
M | source/nord/n2x/n2xLib/n2xmc.cpp | | | 13 | +++++++------ |
2 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/source/nord/n2x/n2xLib/n2xfrontpanel.cpp b/source/nord/n2x/n2xLib/n2xfrontpanel.cpp @@ -111,31 +111,47 @@ namespace n2x } static uint32_t g_counter = 0; - constexpr uint32_t g_len = 1024; - constexpr uint32_t g_threshold = 256; + constexpr uint32_t g_len = 4096; + constexpr uint32_t g_threshold = 512; + static bool wasPressed = false; + static bool wasReleased = false; uint8_t FrontPanelCS6::read8(mc68k::PeriphAddress _addr) { + ++g_counter; + g_counter &= (g_len - 1); + auto press = g_counter >= (g_len - g_threshold); + + if(press) + wasPressed = true; + else if(!press && wasPressed) + wasReleased = true; + if(wasReleased) + press = false; + const auto a = static_cast<uint32_t>(_addr); switch (a) { case g_frontPanelAddressCS6: + return 0xff; + case g_frontPanelAddressCS6 + 2: + if(press) { - ++g_counter; - g_counter &= (g_len - 1); - if(g_counter >= (g_len - g_threshold)) - { - constexpr auto bt = static_cast<uint8_t>(ButtonType::Trigger) & 0xff; - return 0xff ^ bt; - } - return 0xff; + constexpr auto bt = static_cast<uint8_t>(ButtonType::OscSync) & 0xff; + return 0xff ^ bt; } - case g_frontPanelAddressCS6 + 2: return 0xff; case g_frontPanelAddressCS6 + 4: return 0xff; case g_frontPanelAddressCS6 + 6: - return 0xff; + { + if(press) + { + constexpr auto bt = static_cast<uint8_t>(ButtonType::ModwheelDest) & 0xff; + return 0xff ^ bt; + } + return 0xff; + } } return FrontPanelCS::read8(_addr); } diff --git a/source/nord/n2x/n2xLib/n2xmc.cpp b/source/nord/n2x/n2xLib/n2xmc.cpp @@ -360,15 +360,16 @@ namespace n2x m_hdi08B.exec(cycles); m_totalCycles += cycles; - - if(m_totalCycles > 0x4000000 && !m_hasSentMidi) +/* + if(m_totalCycles > 0x5000000 && !m_hasSentMidi) { - m_hasSentMidi = true; + m_totalCycles -= 0x5000000; +// m_hasSentMidi = true; LOG("Sending MIDI Note On"); m_midi.writeMidi(synthLib::M_NOTEON); - m_midi.writeMidi(synthLib::Note_C3); - m_midi.writeMidi(100); + m_midi.writeMidi((rand()%24) + synthLib::Note_C2); + m_midi.writeMidi(127); } - return cycles; +*/ return cycles; } }