zynthian / zynthian-issue-tracking

Centralized Issue Tracking for Zynthian Project
https://github.com/orgs/zynthian/projects/1
11 stars 3 forks source link

Bug: Propagating Sustain CC in Multi-timbral mode #865

Open mheidt opened 1 year ago

mheidt commented 1 year ago

Describe the bug If you press the sustain pedal on one channel, and release it on different channel, the note of the first channel is still on. This works in stage mode, but not in multi-timbral mode.

To Reproduce Steps to reproduce the behavior:

  1. Select Multi-timbral mode
  2. Add Midi Filter Rule MAP CC#64 => CC#64
  3. Add two synth chains
  4. Press and hold sustain
  5. Change Midi channel on master keyboard
  6. Release sustain

The sound is still audible.

Expected behavior When releasing the sustain, I would expect all sounds to dissappear because of the filter rule I added. When I just use a single channel rule like MAP CH#3 CC#64 => CH#1 CC#64 it works for this situation.

But it is not possible to add a rule like MAP CH#0 CC#64 => CH#0,1 CC#64

If you use multiple rules like MAP CH#3 CC#64 => CH#1 CC#64 MAP CH#3 CC#64 => CH#3 CC#64 MAP CH#1 CC#64 => CH#1 CC#64 MAP CH#1 CC#64 => CH#3 CC#64 only the last per channel is used.

We need either a 1:n mapping of rules or make the AllChannel option work.

jofemodo commented 1 year ago

"One to many" rules doesn't work. Only "one to one", "many to one" and "many to many" rules can be set. It's a limitation of zynthian MIDI rule system and it's not being to be improved in the short term, as it implies refactoring the MIDI router core.

Perhaps we should integrate something like mididings and replace our custom MIDI rule system.

Regards,

jofemodo commented 1 year ago

Why not using "Omni Mode" (aka Stage mode) instead of multi-timbral? Are you using several keyboards? In fact, the "Omni Mode" will do exactly what you describe, except you don't change the channel from the keyboard, but change the active channel from zynthian. You can MIDI learn your active channels as ZS3s, etc.