I’m trying to figure out the best workflow for realtime recording with ZynSeq
The documentation for ZynSeq only mentions the word “record” twice and doesn’t explain how.
The Floyd Steinberg video demonstrates recording from an external keyboard. It just works there.
I just can’t figure out how it’s done.
With most sequencers I have used, I never have to switch the midi channel of my external midi keyboard (which defaults to 1), it just adapts depending on which track I choose. So I expected something similar on the Zynthian (based on the chosen chain instead of Track).The moment I enter the ZynStep screen, my selected chain reverts to the first one and I can’t hear my keyboard any more. This is with both Oram and latest Vangelis.
So basically this is what I do:
I create a chain, on midi ch.9, amsynth
I select the chain, I can play my external midi keyboard fine now.
I go to the Pad screen of ZynSeq, can still play the keyboard fine.
I press the Admin button to edit the channel of the selected pad (Sidenote: personally I would like not to do this, and just have it listen to whatever chain I have selected - but I know I can have multi channels with Arrange, just didn’t go this far yet)
I change the channel to 9, can still play the keyboard now.
I press the STEP button.. It enters the step edit screen and I can no longer play the keyboard. (Why?)
When checking the MIX screen afterwards, my first chain is selected again, not the ch. 9 amsynth chain.
I checked when on the ZynStep UI, the Zynthian is spitting out notes on ch. 1, so it is passing on the MIDI of the keyboard.. Okay.. so I proceeded to change my MIDI keyboard to ch. 9 hoping I will now hear it. Does it pass on the notes to the midi output? Yes. Does it play the AmSynth on ch. 9? No. I don’t get it. (edit: That was due to a config issue on my side/related to Vangelis update - Where the first chain was receiving and sending multitibral - ignore this. No notes are passed through at all)
Short version - I think this is a bug by now - the moment you enter the step editor screen, the chain selection is reverted to the first chain
Which causes it to:
record whatever I play (it comes in on midi channel 1)
does not forward what I play to the synth (as the synth is on another channel), so I’m playing blind
Im not in the vicinity of a zynthian right now, and have not experienced your problem, but i raised another question a short while ago, because i was not able to choose which midi channel that went to Zynstep. The answer was that unfortunately that is not possible - Zynstep listens to all midi channels. But from your research i would guess that there was a time it was possible to selct MIDI in channel Zynstep - but not anymore…
I do not now how much our issues are related, if not, sorry for the clutter)
My problem is it’s not forwarding the midi to the correct midi output. So when I’m recording I can’t hear what I’m playing.
I just dived a bit deeper in it.. There’s some code in zynthian_gui_patterneditor.py that tries to automagically set the active chain based on the midi channel of the zynpad
That’s where the problem is!
# Set active the first chain with pattern's MIDI chan
I have 1 track, for clock purposes (see: Using Zynthian 5.1 with external synths, midi chain, clock and transport duplication issues - #8 by rv5 ) that is currently configured to “ALL” channels. Even though it doesn’t need a channel, it’s just for clock.
For some reason, to automagic chain selection prefers that “ALL” chain over chains with specific channel. Even if I put that “ALL” chain at the very end, it will always select that one:
I set it to channel 16 (which is currently unused) and BAM, it works now as it should
But.. how to fix this properly..
A setting to disable automagic chain selection? (edit: actually, no, this is very useful..)
More magic code to prefer specific channels over “all” channels?
Allow a chain to not have a channel (that would be great, but might break things?)
In my case, I could probably get rid of the “CLOCK” chain and instead remove the Midi Event Filter on one of my MIDI chains. Screws with my head but would work. EDIT: works fine so far
a dirty fix would be to ensure SPECIFIC channels are added first in the list while ALL channels are appended at the end.. (zynthian_chain_manager.py)
any thoughts on that?
# Add new midi_chan(s) to dictionary
if isinstance(midi_chan, int):
midi_chans = []
# Single MIDI channel
if 0 <= midi_chan < MAX_NUM_MIDI_CHANS:
midi_chans = [midi_chan]
for mc in midi_chans:
try:
# Insert at the beginning
self.midi_chan_2_chain_ids[mc].insert(0, chain_id)
# logging.debug(f"Adding chain ID {chain_id} to MIDI channel {mc}")
except:
pass
# ALL MIDI channels
elif midi_chan == 0xffff:
midi_chans = list(range(MAX_NUM_MIDI_CHANS))
for mc in midi_chans:
try:
# Append at the end
self.midi_chan_2_chain_ids[mc].append(chain_id)
except:
pass
``