sorskoot / StreamDeck-Midi-plugin

Midi plugin for the Algato Stream Deck
MIT License
13 stars 2 forks source link

Bug, will only output to Microsoft GS Wavetable synth #10

Open currentsound opened 4 years ago

currentsound commented 4 years ago

No matter what I select. With only 1 plugin on the page, it will only ever output to Microsoft GS Wavetable synth even if I select another device from the list. I still hear a note being triggered on Microsoft GS Wavetable Synth. Using the latest version 1.2 of the plugin plus the latest version of Stream Deck on Win 10.

Why is this happening and can it be fixed?

I uninstalled and reinstalled the plugin multiple times. At one stage it was working but LoopMIDI wouldn't show in the list until uninstalling... then it didn't work anymore.

sorskoot commented 4 years ago

I'm not sure why this is happening. But since the output device is shared between all actions on a page, somehow this might cause this. I will fix #7 first and see if this issue still occurs after that.

currentsound commented 4 years ago

Ok thanks. Let me know when the fix is out for the page issue and I'll test it to see if the other problem starts working.

Thanks -----Original Message----- From: "Timmy Kokke" notifications@github.com Sent: Friday, November 15, 2019 4:14am To: "sorskoot/StreamDeck-Midi-plugin" StreamDeck-Midi-plugin@noreply.github.com Cc: "currentsound" mail@currentsound.com, "Author" author@noreply.github.com Subject: Re: [sorskoot/StreamDeck-Midi-plugin] Bug, will only output to Microsoft GS Wavetable synth (#10)

I'm not sure why this is happening. But since the output device is shared between all actions on a page, somehow this might cause this. I will fix #7 first and see if this issue still occurs after that. — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub , or unsubscribe .

shells-dw commented 4 years ago

property_inspector/js/property-inspector.js

if (actionInfo.action === "com.sorskoot.midi.action") {
        //initialize values
        if (actionInfo.payload.settings.settingsModel) {
            settingsModel.Note = actionInfo.payload.settings.settingsModel.Note;
            currentAction = "note";
        }
    } else if (actionInfo.action === "com.sorskoot.midicc.action") {
        if (actionInfo.payload.settings.settingsModel) {
            settingsModel.Value = actionInfo.payload.settings.settingsModel.Value;
            settingsModel.Control = actionInfo.payload.settings.settingsModel.Control;
            currentAction = "cc";
        }
    }

to

    if (actionInfo.action === "com.sorskoot.midi.action") {
        //initialize values
        currentAction = "note";
        if (actionInfo.payload.settings.settingsModel) {
            settingsModel.Note = actionInfo.payload.settings.settingsModel.Note;
        }
    } else if (actionInfo.action === "com.sorskoot.midicc.action") {
        currentAction = "cc";
        if (actionInfo.payload.settings.settingsModel) {
            settingsModel.Value = actionInfo.payload.settings.settingsModel.Value;
            settingsModel.Control = actionInfo.payload.settings.settingsModel.Control;

        }

should do the trick as a quick fix. Without anything ever saved you don't have settingsModel in actionInfo.payload.settings hence it never triggers the currentAction IFs below, hence it doesn't show the midi note (or cc) input fields, and additionally you can't save SelectedDevice to a key that's not there - hence when you reload the action, it's still on index 0 regardless what you set before.

JoMen6 commented 4 years ago

Another issue is that the midi device never change in the onWillAppear method. It would only change if the midi device is not null, but if it set first time, it will never change. There must be a check if the device change something like that

if (MidiDevice.outputDevice == null || string.Equals(MidiDevice.outputDevice.Name, inputDeviceInfo.Name))

or I´m wrong?

sorskoot commented 4 years ago

I think this issue might be related to #7 . Will test when #7 is closed and released.