Clone MIDI to ... not passing MIDI-CC to all synth layers [SOLVED!]


here is the problem (I try to keep it simple this time) when I use “Clone MIDI to …”:
It seems to “swallow” MIDI-CC for the parent layer.

There has been a related topic:

But the actual problem has just been circumvented by the user.

From scratch:

1. I create a Fluidsynth layer

1#FSPiano -> Ch1
Now I use the sustain pedal on Ch1 - OK works.

2. then I create a 2nd Fluidsynth layer

2#FSRhodes -> Ch2
Now I use the sustain pedal on Ch2 - OK works.

Now I want to play both from MIDI Ch1

3. I select 1#FS and use Clone MIDI to … [CH2]

Result: sustain (MIDI-CC 64) is just recognized by the 2#FSRhodes layer only. Which means I can’t use sustain on the 1#FSPiano

Imho there should at least be some CCs that are used on all cloned layers. These are: CC#1, CC#2, CC#64, CC#67, CC#68, CC#69. For the time beeing, that should at least satisfy the piano players :slight_smile:

64 Damper Pedal / Sustain Pedal On/Off switch that controls sustain. (See also Sostenuto CC 66)
65 Portamento On/Off Switch On/Off switch
66 Sostenuto On/Off Switch On/Off switch – Like the Sustain controller (CC 64), However it only holds notes that were “On” when the pedal was pressed. People use it to “hold” chords” and play melodies over the held chord.
67 Soft Pedal On/Off Switch On/Off switch - Lowers the volume of notes played.
68 Legato FootSwitch On/Off switch - Turns Legato effect between 2 subsequent notes On or Off.

And here’s the stretch: for all other MIDI-CC there should be a MIDI-filter for every layer, be it cloned or not. I know this goes a long way, but that would be so great!

With such a system, you could make the most use out of synth stacks and a MIDI controller.


1 Like

Have you tried the copy option in the midi filter section in the webconf?

1 Like

I admit, I haven’t. Will do this tomorrow, maybe this is the solution right away.

Thank You,


I tried, but failed miserably. That is what I got:

Maybe I don’t understand what you mean by “COPY option”. I looked up the wiki, and there is only MAP, CLEAN and IGNORE.

Any thoughts on this ?

Sorry , I meant MAP…
Don’t invent something…use the editor behind +

1 Like

I tried, but as I understand MAP that can’t work.
If I type

MAP CH#0 CC#64 => CH#1 CC#64

I can use the pedal on the 2#FSRhodes -> Ch2 but then it is gone on the piano on Ch1.
Then, if I type
MAP CH#0 CC#64 => CH#1 CC#64
MAP CH#0 CC#64 => CH#0 CC#64

or even
MAP CH#0 CC#64 => CH#1 CC#64
MAP CH#1 CC#64 => CH#0 CC#64

The the second mapping overrides the first one and now only the piano has the pedal working.
I guess, once you map sth it is taken out of the MIDI stream.

Something like
MAP CH#0 CC#64 => CH#0,1 CC#64

is forbidden and throws following error message:

ERROR parsing MIDI filter rule: Invalid MAP rule format (MAP CH#0 CC#64 => CH#0,1 CC#64): MAP rule channel lists can’t be matched (1=>2)

It would be cool to use multiple mappings, though. Meaning one source to many destinations. Or as you implied a COPY function for that matter, which leaves the original message as is and truly copies the message to the other channel.

Currently, only mappings 1=>1 and n=>1 are implemented. Mapping 1=>n is difficult to implement in the current code.

Currently, the clone feature has no granularity and copy all messages but CC from source channel to destiny. Anyway, it could be improved …

I’m thinking about it …



Thank you for the consideration!

1 Like

And if you could point me to the code, I could at least ponder a little bit. I admit I have no clue of python, but a firm understanding of c and c++.

Maybe this is the time to finally get into python although I really never liked it (for no specieal reason).


1 Like

There is no need for a specific reason to hate Python :wink:
(or Swift, for that matter… :face_vomiting: )

Sighs and reaches for his rusty old code indentor hanging on the wall and braces himself for another language war…

1 Like

The lesson here is that no one needs a reason to dislike things. Give them a go and if you find it distasteful then try something else but remember that tastes change and you may find yourself back at the code store asking to taste it again in a few years. Now what did Fortran taste like… :nauseated_face:

1 Like

Can’t we all just get along and hate anything with the word java in it…?

1 Like

Gosh, guys!

Would I have known there’d be so much sensitivities involved, I’d have never asked :smile:

No really, I just want to see if I can delve into it and maybe understand enough to propose sth worthwhile.

Don’t worry, it’s just pub banter.

Go ahead, its’ a ll a broad church. I tend to stop when I hit the C layers as that’s not my world, but get your fingers dirty. Obviously the zynth itself is basically python around a C core, and to mix anything else in would be involved. . .

Course what takes place in the hideous worlds of the engines is a completely different debate and best left to the Baby eating bishop of Bath & Wells and other such luminaries who live outside of paradise . . . :smiley:


Thanks, that gave me enough courage to at least try it!

Python should be pretty easy if you speak fluent C,

Once you’ve got indentation sussed (no {} ; and lays out tends to make it always look the same…)

It’s pretty simple
() are tuples: Immutable series
[] lists mutable series
{} dictionaries hashes

def … functions returns None if nothing specified. Parameters generally passed by reference, but massive flexibility ) . Also first class objects so can , and often are, chucked around like confetti . . .

class Object Orientated bit,
Instantiated with init method, and object passed around as self within the object. . .

tuple list and dictionary comprehensions used a lot to cut down on typing and indents

That’s really about it. . . :smiley:

1 Like

Fortran… I still use assembly instead of C in many of my firmwares because I don’t trust compilers for critical sections, and I won a programming challenge in… gosh… INTERCAL… and I actually liked it…

Fortran is a breeze :smiley:

(Anyway, this is an holywar… :wink: )


Hi! Don’t waste your time with this … i was working a little bit and have a good solution, although not finished yet… I’m pretty sure you will love it … :wink:

FYI, the hardest part is C code (the MIDI router stuff), and python is used only for the UI, so you will enjoy reading it :wink:




1 Like