MIDI Filter / Processor per Snapshot


I am looking for a solution to the following case:

I plan to use the Zynthian with our band, playing single notes with a footboard. For each song we play, I would like to configure a MIDI filter / processor that changes an incoming single MIDI note to something else.

For example, for one song, I would like to turn an incoming C note into a C major chord. For an A, it should be an A minor. And then forward that to a synth plugin playing strings.

For the next song, I would like to turn the C into a C minor and use a piano sound etc. etc.

If I understand correctly, I can use “snapshots” to pretty much store the synth/sound configuration per song. I do not know however how to achieve the MIDI mapping / processing part.

I found the MIDI filter in the WebConfig tool, but from the Wiki I don’t understand if I can use it for the above examples and also if I can have a different configuration per snapshot?

If this can not be done right now, I wouldn’t mind looking into writing the code myself. However some pointer to where to start looking would be very welcome.

From how I understood the architecture, I think it would make sense to maybe implement this as a new type of layer. That way also arpeggiators and other things could be implemented and put “in front” of a synth. What do you think?

Thanks and cheers! :slightly_smiling_face:

1 Like

Nice use case! But … currently chord generation is not supported by the router. Only 1:1 event mapping can be done with the current implementation. I think your use case is very interesting and i would like to add the possibility of generating chords, arppeggios, sequencing, sample & looping, etc. All these features are in the zynthian’s roadmap …

Integrating mididings, qmidiarp, sooperlooper and other available software could be interesting, but also implementing from scratch …

I need some time to go deeper with all this, or somebody who wants to get some fun in the development battle. The first step should be to analyze how all these features would fit on the current architecture, how architecture should be extended, etc.

Regarding the possibility of saving the router configuration (MIDI profile) in the snapshot, there is a task in our list and i’m working on it, so it should be available very soon.

Kind Regards,

Sounds a little like the Keith McMillan 12 step which does the note to chord as one of it’s features., sadly the membrane switches ain’t great and I don’t find it reliable to use.

Thanks for the feedback. Should I find some time, I’d like to look into the code to see if I can “hack” something to help me out with my use case before any official release becomes available.
Is there a particular place to look into where the incoming MIDI events are first processed? (You’re talking about a router there, so maybe that?)

About the McMillian, yeah I looked into that as well, but it seems to have a lot of unhappy users regarding the “keys”. I am using a Fatar one octave organ bass pedal. Works pretty well.

Now if only such a MIDI processor was available even as a standalone box…or if I had more time to make one, ha! :laughing:

1 Like
  • The MIDI router low level code is in the “zyncoder/zynmidirouter.c” file.
  • The “high level” code (rule system) is in “zynthian-ui/zyngui/zynthian_midi_filter.py”.

Enjoy! :wink: