ZynSeq patterns won't start without an external transport message

The issue I’m having is that, with default sequencer settings, patterns won’t play - I get a yellow play icon when I try to launch a pattern from the grid. This happens after a hard reboot with nothing connected to the MIDI inputs. The only way I can get a pattern to play is to connect an external sequencer and use that to send a transport start message to the Zynthian. That starts any patterns that were already queued to play (yellow play icon in their grid cell), but if I try to start any other patterns, or if I stop a pattern that’s playing and try to start it again, they also stay queued (yellow play icon) and never actually start unless I stop the external sequencer and start it again (to send another transport play message). Stop messages from the external sequencer don’t seem to affect anything.

I’ve been doing most of my sequencing externally so I haven’t used ZynSeq much, but I didn’t have this issue before I updated to Oram stable 2502. I’m probably missing something obvious that changed for this version, but I haven’t been able to figure it out yet, any help would, well, help.

What is the clock set to in the tempo page? If it is external then it will wait for an external clock.

IT’s set for external but the behavior is the same regardless of whether or not external clock is present (the external sequencer sends clock when it’s stopped).

I jsut did a little more testing and it looks like this might actually be a bug:

I confirmed that it’s responding to external clock correctly (changing the tempo of the external clock changes the tempo shown on the tempo page)

When it’s set to external sync, patterns I launch in ZynSeq stay queued/paused (yellow play icon) until I send a play message from the external sequencer as described above. This happens regardless of whether external clock is actually present.

When the clock source is set to internal everything works like it should.

So it looks like when the Zynthian is set to external MIDI clock in the tempo page, ZynSeq patterns aren’t just waiting for clock to be present before they play, they’re actually waiting for a play message at the MIDI input.

This means that with the clock source set to MIDI, the only way to start a pattern in the grid is:

  • launch it from the grid (yellow play icon appears in grid cell, pattern doesn’t start)
  • send a start message to the Zynthian from an external MIDI device (all cells with yellow play icons start playing immediately)
  • any patterns launched after this point wait for another start message from an external MIDI device, and then start playing immediately

Stop messages from external MIDI devices don’t appear to have any effect on ZynSeq pattern playback, though - any playing patterns keep playing when an external stop message is received.

I don’t have enough time before practice to write up a bug report, but I can do it tomorrow afternoon.

This is not necessarily a bug but maybe suboptimal behaviour. We have to do some more work around clocks and sync. Currently, when using external clock, the MIDI START is used to start the zynthian transport and MIDI CONTINUE is used to sync, e.g. indicate start of bar / restart sequences. This also works with GPIs used for clock and sync pulses.

This was implemented to get MIDI sync working for a particular event. It may be unothodox and maybe needs revisiting.

We are painfully aware that the clock / sync in zynthian needs attention and it may be part of our next development sprint. (We are certainly considering development areas that touch this.)

5 Likes

A good, usable way for it to behave with external clock is:

  1. Patterns can be launched any time clock is present, independent of transport messages received
  2. When a MIDI start message is received, all playing patterns reset, all queued patterns (yellow play icon in grid cell) launch immediately.
  3. When a stopped message is received, all playing patterns stop

Ideally it would be possible to enable or disable behaviors 2 and 3 for every pattern independently (so that patterns could be allowed to play uninterrupted when an external sequencer is started or stopped), and also set whether each pattern stops immediately when MIDI stop is recieved, or plays to its end.

Just those changes would make it really capable for live sequencing and MIDI looping in sync with another sequencer or DAW.

1 Like

Hello,
How do you make a difference between pattern to start immediately and a pattern waiting for a start message ?
Right now pattern is green yellow or red, you will need an other color ?