From 5b628175789023e468667f0ebcfecd61d2953f4a Mon Sep 17 00:00:00 2001 From: YeonV Date: Sat, 5 Oct 2024 17:59:22 +0200 Subject: [PATCH] reinit MIDI after sceneEdit. Realtime update on device --- src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx | 4 +++- src/components/Midi/MidiListener.tsx | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx b/src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx index 10174202..3363d012 100644 --- a/src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx +++ b/src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx @@ -990,7 +990,9 @@ const EditSceneDialog = () => { newMapping[0][item] = { buttonNumber: currentBtnNumber }; console.log('mapping after', newMapping); setMidiMapping(newMapping); - initMidi(); + setTimeout(() => { + initMidi(); + }, 100); } } diff --git a/src/components/Midi/MidiListener.tsx b/src/components/Midi/MidiListener.tsx index c7da349f..696cdb23 100644 --- a/src/components/Midi/MidiListener.tsx +++ b/src/components/Midi/MidiListener.tsx @@ -33,6 +33,7 @@ const MIDIListener = () => { const setMidiOutputs = useStore((state) => state.setMidiOutputs) const setMidiInput = useStore((state) => state.setMidiInput) const setMidiOutput = useStore((state) => state.setMidiOutput) + const recentScenes = useStore((state) => state.recentScenes) const midiInput = useStore((state) => state.midiInput) const midiOutput = useStore((state) => state.midiOutput) const midiMapping = useStore((state) => state.midiMapping) @@ -105,7 +106,7 @@ const MIDIListener = () => { } else if (value.command === 'scene') { if (output && buttonNumber !== -1) { try { - output.send([parseInt(`0x${value.typeSceneInactive}`) || 0x90, buttonNumber, parseInt(value.colorSceneInactive || midiSceneInactiveColor, 16) || 60]) + output.send([parseInt(`0x${value.typeSceneInactive}`) || 0x90, buttonNumber, parseInt(value.payload?.scene === recentScenes[0] ? (value.colorSceneActive || midiSceneActiveColor) : (value.colorSceneInactive || midiSceneInactiveColor), 16) || 60]) } catch (error) { console.error('Error sending MIDI message:', error) }