MIDI learn on ZynSampler

I’m having a lot of fun using ZynSampler… with this I insert some bases and then play over them… beautiful… A question… the LEARN works well on the PLAY, but every time I change the song I have to do it again, otherwise the button doesn’t start the song. Instead using the encoder, it works perfectly. Can you eliminate the encoder and leave only the button? Same thing for the RECORD button that I added. Thanks

MIDI binding of CC to controllers is not replaced when loading a preset. In zynsampler, each audio recording is loaded like a preset. So loading a new audio file does not change MIDI binding. Similarly, recalling a ZS3 will also not replace MIDI binding. I tested this on a dev branch so it is possible that something differs but is shouldn’t. Please describe the full workflow and the version of zynthian software being used.

Thanks @riban. Maybe I’m wrong… So, I created a snapshot with a piano and a ZynSampler. I go into ZynSampler, select “Preset”, choose the song I want to listen to and then exit and move to the Piano. At this point, sometimes the button I added works, but if I change the song it doesn’t work anymore and I have to go back to ZynSampler and do the Midi Learn… if I use the encoder, it works perfectly every time… I hope I explained myself… Thanks

Excuse me…

You missed out the learning step. Let me explain how I just tested this:

  • Add synth chain with zynsampler, selecting an audio file.
  • Short SELECT the “transport” encoder to enter MIDI learn. Green “??” shows.
  • Short SELECT the “transport” encoder again to enter MIDI learn absolute mode. Yellow ??#?? appears.
  • Send MIDI CC from my hardware controller. “1#24” appears, indicating that the trasnsport control has been bound to MIDI channel 1, CC 24.
  • Pressing CC 24 button on my hardware controller (set to toggle mode) starts and stops the transport, hence plays the audio file.
    -Adding another chain - CC 24 still works as it is bound globally (absolute mode).

I said earlier that zs3 remembers the binding. This is true but you can save a different binding for different zs3, so if you save a zs3 the change binding then save another zs3, the two zs3 will have different bindings.

1 Like

Ok, I was doing the LEARN with the Green symbol “??”… so this is a “momentary” learn? Should I do it with the Yellow symbol ??#?? ? I’ll try right away… thanks

P.S.
It seems to work… I noticed that it is very important to press the button quickly… otherwise it does not start the song…
It would be interesting to add another button that sends the song back to the beginning…

The first (green ??) learn mode will bind the MIDI CC to the control only when the chain is selected. This is active chain mode.

The second (yellow ??#??) learn mode will bind the MIDI channel and CC to the control always.

Neither are momentary learn. They should both persist. I wonder whether you were changing chain selection and hence blocking the active chain mode learn from working?

The transport will run when the control is asserted and stop when it is cleared. If your hardware controller toggles its value on each press then it should (mostly) work as expected. It is possible for the hardware controller to be out of step with the zynthian, so the first press might send the zynthian’s current value but after that it should work. If your hardware controller sends one value when pressed and another when released, you will need to change the zynthian controller binding mode to “Momentary => latch”. This adds a toggle function into the MIDI learn and will change transport from stop to play to stop only on every other press. You access this mode setting in the “Control options” menu by bold SELECT the control.

You can (kind of) implement a go-to-zero MIDI binding. If you bind a button to the “position” control and then, in “Control options” clear the “Relative Mode” option, then pressing the button will set the position to end / start. Depending on whether the hardware controller toggles, this may require two presses or one press and release. This can interfer with the transport binding because setting to end will cause the audio to stop playing (if set to one-shot) but the hardware controller button may still be in its playing value.

GOLD! Thanks @riban