Zynseq - A native step sequencer

Another update to feature/stepseq branch:

  • You can now add notes to a pattern with an external keyboard
  • You cannot add a pattern to a song if there is insufficient space (avoids accidental removal of patterns with touchscreens)
  • Fixed a sync issue
  • Fixed a segfault if you played an empty song then played a populated song

[Edit] To use MIDI input you need to select the MIDI input channel on which to receive using the “MIDI Input” menu option in the Pattern Editor then each NOTE-ON will add / remove a note at the current playhead position, advancing to the next step (if not in playback). Note velocity from the keyboard (not the Zynthian config) is used.

3 Likes

Sorry Henry, but I had to try this …
6/8 on stepseq: Theme from A Summer Place.
… and because it’s summer :sunglasses:

theme from a summerplace

4 Likes

That is cool. I love the fact thatyou are up to pattern 45 :grinning:.

I notice you have tempo markers which reminds me that these do not work. I can detect tempo markers but there isn’t a simple way to subsequently influence the master clock which is a different module without MIDI input and there isn’t currently a channel between the sequencer library and the clock. I shall ponder some more… I am fairly sure we won’t be able to influence an external MIDI clock, e.g. a drum machine driving the Zynthian.

Don’t be fooled by the numbers. I organize the patterns in generous steps of 4 or 8 so that I can later insert patterns and then e.g. with the bass parts from 41-48. So I don’t have to write on notes.
(…I assume that we will have 128 patterns per song later?) :thinking:

Tempo marker? They came in there by chance. I was looking for a way to save the song tempo, which I still can’t. And with the gui-redraw it is a real patience to crank down from 120 bpm to 60. :sweat:

I will try to enable some form of tempo control soon. It looked so good but has proven to be rather tricky.

There are currently an arbitrary 999 maximum patterns which are not tied to individual songs. So you can have 128 patterns per song if you have 7.8 songs :wink:.

2 Likes

7.8 songs? That means I would need 1.42 zynthian for a live performance. Let’s see if jofemodo deliver it like this. :grimacing:

2 Likes

Of course you might find that your songs are not so complex and individual to require 128 unique patterns each! And there is always the chance I might add the feature to load and save different files… The maximum patterns was chosen to be higher than I reckoned anyone could be bothered to scroll the selector, and hence higher than is practical to manage within a single session.

1 Like

How is the file laid out ? would it still convert to something MIDI ish or would it need to be more of an individual song export?

In your opinion, which is/are the best synths to be put in a layer in order to have a drum kit with the most common sounds: bass drum, snare drum, 2 or 3 toms, open/closed hi hats, cymbals ?
The sounds should be adjacent, to be easy to input in the sequencer without scrolling up and down.

1 Like

Is this plugin supported by Zynthian? I don’t have my unit at hand now but I seem to remember that Red Zeppelin is in the LV2 plugin list in webconf … is it the same ?

1 Like

File format is detailed in a text file in the source code. It is a bespoke RIFF file. If there were a standard file interchange format for MIDI sequences then I would use it. @mheidt has considered / suggested we provide import from / export to MIDI File Format which is captured as requirement S18.

@lisacld Requirement P25 describes having a constrained list of notes which is what you want. I did bump this into the last sprint (after finding use rather awkward as you say) but then demoted it again when more urgent issues needed resolving. It is unlikely to be in the next because again there are issues that must be resolved and it will take a bit of thought but I hope to get something out soon.

Not exactly the same plugin, but the drum sets made of Zeppelin and Black Pearl can be installed via webconf. Incidentally, like most drum kits on zynthian, they are programmed in the gm standard format - so that the standard sounds are next to each other anyway.

Thanks both @riban & @spurkopf

Update in feature/stepseq branch:

  • Fixes sync issues (hopefully the last one!)
  • Fixes replay issues

I don’t think there are any new features in this update. It was one of those sprints where I spent many days tracking down many bugs which manifests in changes to just a few lines of code but there is really good news in here… the core library is now pretty much feature complete and the most severe bugs are resolved so we should have a fairly robust sequencer which should have few changes to the core library / file format. There is still the possibility that a few things may change but I hope we are mostly there with that bit. This means I can turn my attention to features and improving performance / UI responsiveness.

(Copy song and a few other things are still not working which are on my list for next sprint / update.)

8 Likes

And another one…

  • Click and drag to move around grid when adding a note in pattern editor
  • Click and drag to adjust velocity and duration of existing note in pattern editor
3 Likes

@riban BTW (and I don’t know if you solved this already), you remember that problem where long notes got cut off prematurely? It looks like the sequencer sends a NOTE_OFF 24 clocks before the actual end of the note.

Now, again, I haven’t been keeping up to date with the stepseq branch (I’m not very brave :grimacing:), so you might have solved this already! In which case…

Will a :face_with_monocle: suffice for an apology? :slightly_smiling_face:

I did a lot of work on sync and JACK scheduling to remove issues with events being incorrectly scheduled. (If you schedule out of order, JACK says, “No!”.) I do remember you mentioning bad behaviour with notes ending prematurely but then promptly forgot :blush:. I have not noticed the issue occurring in the feature branch but have also been rather focused on specific issues so not taken it for a long ride.

… so I hope it is fixed but haven’t specifically addressed it!

3 Likes

Hmm. I think I will try the stepseq branch.

I just updated feature/stepseq branch to add drum maps and scales in the pattern editor. A new menu option allows loading a map / scale and another menu option allows selecting the root note of a scale. The default is Chromatic which is the behaviour we have seen before. For this to work you need some map files in /zynthian/zynthian-my-data/sequences. Here are a few I have created:

[Content deleted]

Let me know what you think. I know this isn’t perfect (yet), e.g. you keep having to manually select them. Maybe someone has a good idea on how these might bind to certain conditions???

Enjoy xxx

Question to the class:

What workflow do we want to (automagically) select keymaps? I looked at some DAWs but could not see that they do it at all (or I just don’t know how to use them!!!). Some ideas:

  • Link map to pattern so that every time you edit the pattern the map is selected.
  • Link map to song track so that every time you access track 10 you get the map allocated to track 10. I don’t think this is very flexible although it may work within a single session which may be sufficient.
  • Link map to current song’s tracks so that every time you access track 10 in a particular song, you get the map allocated to track 10 in that song.
  • Link map to current instrument, so if Black Pearl drums are used by track 10* then you will get the map for Black Pearl drums.
  • Linking to instruments may prove challenging as there isn’t necessarily a direct link between a song’s track / patterns and the instrument and this may change over time.

Also, where should such linking be saved? With the song? As a global setting so it gets restored with each reboot but spans songs?

…to answer my own question (but opinion is still very desirable), I played with it and think that each track of each song should have a map saved. This might be a scale or a drum map. I think they are probably the only two options. We could define each scale with an index and flag the drum maps with a specific index. It would be good if we could then look up what map is required for the instrument connected to that channel. I would like to open pattern 5 in track 4 of song 6 which is configured to play on MIDI channel 10 and see the map for GM-Drums if channel 10 is feeding Fluidsynth + FluidR3 GM or see the map for AVL Drums if channel 10 is feeding JV/Black Pearl 5.

@jofemodo can you think of a way that the Python code can find out what instrument (engine / preset) is connected to a particular MIDI channel?

This would also need a mapping of instruments (engine + preset) to maps but that will be the next problem to solve if this is all feasible.

I have figured out how to map the instrument on a particular MIDI channel to a map and have it working in my lab. I just need to redo it using the MIDI standard for note naming (instead of the custom JSON I had initially used). I hope to get this out later today but there are a couple of bugs to iron out and I have to add the XML handling for the MIDI names…

3 Likes

I’m struggling a bit with these. Maybe I’m doing something wrong… Hard to explain exactly what’s happening… probably easier in our next jitsi or maybe with a video?