Zynseq - A native step sequencer

When on the Pads or Pattern Editor screen, spinning the Snapshot encoder will adjust the tempo, with the current BPM being displayed in the status are at the top left.

1 Like

This would be perfect!

Another question regarding ZynSeq, is there a technical reason why .zynseq files binary instead of plain text?

For the sake of openness and hackability, having the patterns stored in a standard open plaintext format (maybe SMF?) with the rest of the settings settings stored in JSON or similar would offer some interesting possibilities.

I’m thinking things like quickly generating Bank/Song templates with mappings, drag and drop replacement of individual patterns, programmatic creating of entire songs etc etc.

I’m also thinking of a simple desktop sequence editor, which is possible anyway of course, but would be far easier to put something together in other languages if the file format was plain text and in some kind of standard format.

(Apologies if this has changed since in recent updates, my digging around happened the other day immediately after the update.)

@Jtunes as @gr0k says, Tempo can be adjusted with the SNAPSHOT encoder and also from the menu, e.g. for touchscreen-only users. The current tempo (and beats per bar / time signature) are saved in the snapshot. There will be the ability to add tempo changes during a sequence but that is not yet fully implemented. That would allow you to have a sequence that adjusted the tempo, e.g. slow everything down or set the tempo for a song and will also allow changes of tempo during a traditional linear song, i.e. use one pad as your full length song.

@gr0k the file started as a JSON file and the code started as Python but it soon became obvious that Python would not pass muster so the c++ library was created at which point it became easier and faster to use a standard IFF type binary file than a human readable file like JSON. The file format is described in the source code repository so anyone can see it and interface with it. I did start to write a Python interface to the binary code when we had some file version compatibility issues recently. (You may have sore memories of that!) It isn’t too difficult. I don’t mind which we use as long as it is performant and extensible. I want to avoid changing things unless we need to so don’t propose changes to file format today. :wink: The library could be used to interface with the file, e.g. load the library in an application (c++, c, Python, whatever), load the file, manipulate the data, save the file but I guess that is what Zythian does!

1 Like

Ooops, I hadn’t seen that file! Thanks for pointing it out.

If there are advantages to the the binary format I’m happy, so long as the format is open and documented. Your documentation is better than most, I think I’ll be able to hack it up in PHP, because I like doing stupid things with inappropriate tools.

Turns out it’s not that stupid after all, I just found this page that explains things.

hahahaha oh wait, it’s back to being stupid, this article is from a series called ā€œYou Want to Do WHAT with PHP?ā€

But I have been daydreaming about a decent tool to manage / tag / etc my recordings. Why has no-one made a decent stand-alone media manager?! (for Linux)

Edit: the connection between the media manager and wanting to read/edit ZynSeq files in PHP is that I’m dreaming about a web interface for ZynSeq files that I could similarly catalogue and visualise.

Edit2: the file format documentation looks to be describing the old format, using songs instead of banks? It doesn’t reference midi input channel, trigger channel, or note-on bindings. (which might explain why trigger channel doesn’t appear to stick - it defaults to 16, but I should change to that anyway - hopefully avoiding existing bindings haha)

No rush on the updates tho, the new features are well worth outdated documentation :slight_smile: I’ve already got lots to play with right now, and am way behind work as it is because of it hahah

1 Like

This would certainly be an elegant solution (at the expense of an extra prompt at snapshot load time.) Maybe at this prompt show high level the snapshot contents (#layers, #sequences or something of that sort as a confirmation) and allow for a cancel option…

This path leads us to a question of how to organise and find back the pure sequences (or other blocks in the future…) among the varied snapshots.
It actually might help to be able to see on device if a snapshot contains layers, sequences or both since it might get confusing quickly. Or possibly simply a manual or automatic ā€˜bank’ / folder to organise the pure sequence snapshots. Renaming in webUI would still be possible naturally, but that’s off device.

Actually having the sequence data in the snapshots opens the door to be able to inspect the snapshot/sequence contents at higher level from the webUI.
Possibly view/edit even in the future.

I’m not sure if any of this is helpful or makes a lot of sense at this point, I’m sure something nice will evolve as the community will wholeheartedly adopt zynseq soon!

1 Like

I’m not convinced that such a workflow is optimal but if we go down this route we could have the same snapshot behaviour as now, i.e. short press to load and then add context menu to build press including showing each element allowing loading of each and deletion of snapshot.

Not sure if it will help or confuse things, but I’ve basically been treating snapshots like songs.

I don’t know if this is how others are doing it, but without being able to make on-device presets for effects and instruments I can’t figure out a better way.

Very much open to suggestions tho.

Edit: which is why I’m keen to be able to peek inside the zynseq files, and be able to transplant sequences etc from my computer.

I’m not convinced either. I think we should keep things as simple as possible for a time. Let’s wait to have more feedback about how the zynseq+layers+snapshots are used together and make the right movement then. In the right time, the right solution will emerge.

Until then, let’s play with it as much as we can!! :grin:

Enjoy!

2 Likes

@riban @gr0k Thanks for the help. Unfortunately, I independently discovered the tempo control this morning! :laughing:

I better compensate you guys for your trouble with a :face_with_monocle:! Stay tuned…

2 Likes

Thinking aloud and briefly exploring the space of more complexity and possibly confusing everybody even more, what is the worst that would happen if we combine both storage approaches?

Is there any harm in having an extra (optional) load/save/copy/paste/clone of just the sequences in zynseq? The file format could also be 100% compatible with the snapshot format, by using a strict subset and only saving sequencer data. The implementation would, while more complex, remain consistent.

This would allow more varied workflows but still easy, self-contained snapshot+sequence files that can be shared, loaded instantly and ready to go.

At least in some synths containing a sequencer the complexity is similar, sequences are combined with presets for instant ā€˜track’ loading, but it’s usually possible to clone/copy a sequence for reuse or ā€˜musical mutation’ even to other presets.

Or maybe this is where the analogy of an external sequencer with its own memory completely independent of the instruments/presets also holds, and the question then becomes if zynseq should also be able to fully behave as one and retain a certain amount of independence for its sequence storage as well… (for example to operate without Zynthian midi layers and interface with external devices).

It really depends on the fact if zynseq wants to be a virtual ā€˜independant’ external sequencer, an integrated sequencer like many synths have, or - quite possibly - both, retaining the best of both worlds into something uniquely Zynthian.

Confusing indeed, there are many workflows possible, but it’s also prudent to stabilise the storage model before too many masterpieces get saved as well and things get lost in translation/migration.

I hope this doesn’t launch a full philosophical debate on this…

Full snapshot loading/saving, partial snapshot loading, pure sequence saving/loading all seem to be compatible enough to facilitate various creative workflows. But it might get confusing.

I’m very confident an enlightened path will emerge after some more sequence workflow experimentation :blush:

Sequence on!

1 Like

would zynseq run successfully on a Pi zero…?

5 Likes

@wyleu - very nice question !

@wyleu - possibly!
@dhrupadiya - stop encouraging him!

5 Likes

@riban - too late… @wyleu is all into it probably :)))

1 Like

I discovered a bug which will delay shipping so whilst I spend the next few hours / days banging my head against a black, wedge shaped box I thought it might be interesting to compare some of the features provided by ZynSeq and those provided by Pyramid which is mentioned a lot as a competitor! Let’s take Pyramid’s list of features and see how ZynSeq compares. (Note that Pyramid is a most excellent product and I have not tried to emulate it so this will be interesting to see how the different approaches compare.)

Feature Pyramid ZynSeq
Core player
Maximum number of tracks played at the same time 64 Unlimited
Maximum number of patterns per track 32 Unlimited
Maximum number of sequences (group of tracks & patterns) 32 Unlimited
Maximum number of projects 256 64 banks per snapshot, unlimited snapshots
Maximum number of events (notes, CC, …) per project 10000 Unlimited
Maximum number of effects per project 320 Unlimited (MIDI FX in Layers)
Track length 1/4 bar (a quarter note) to 384 bars Unlimited
Track time signature 1/1 to 24/16 or 1:1 to 24:16 1 to 64 beats per bar global
Recording resolution 96ppqn 24ppqn
Tempo 10.0 to 999.9 BPM 1 to 480 BPM
Tracks
Maximum number of notes per step (polyphony) unlimited 127
Maximum number of CC automation per step unlimited Not yet implemented
Maximum number of FX automation per step unlimited Not yet implemented
Maximum number of effects per track 5 Unlimited (MIDI FX in Layers)
Maximum number of assignations per track 131 ???
Note pitch C-1 to G9 C-1 to G9
Note velocity 0 to 127 0 to 127
Note width 1/96th to 384 bars 1 step to length of pattern
Note Offset 0% to 99% Not yet implemented
Zoom /4 (1 step = 4 quarter notes) to x16 (1 step = 1/64th note) 1 to 64 beats in arranger
Automation recording, drawing, importing, exporting CC0 to CC119, pitch, mono pressure, program change, effects parameters, BPM Not yet implemented
Inputs
MIDI in 1 1
Plug and play USB MIDI in Y Y
CV in [0 to 5V] 4 4 (with expansion board)
PEDAL in 2 up to 16 (with expansion board)
Outputs
MIDI out 2 1
Plug and play USB MIDI out Y Y
DYN sync out Y N
CV out [0 to 5V] 1 up to 16 (with expansion board)
ENV out [0 to 5V] 1 0
GATE out [0 to 5V] 1 up to 16 (with expansion board)
User interface
backlit silicon button pads 35 None
Menu clickable encoder Y Y
assignable clickable encoders 5 4
Assignable touchpad 105x65mm XY Controller on touch screen
Display White backlit high contrast LCD screen (15µm dot gap) 3.5" colour touchscreen
SD card slot Y Not removable but can use USB flash
Other
Power supply mini USB bus (5V, 500mA) (included) USB-C (not included)
Housing machined aluminium 2mm, dark black machined steel 2mm, dark black
Size 206x268x44mm 173x102x57mm
Weight 1.6 kg (3.5 lbs) 472 g (1 lbs)
Kensington security lock Y N

Not everything has an exact like-for-like comparison but it is pretty close. Most workflows can be achieved by both devices. ZynSeq currently lacks sequencing of continuous controllers but the concept is designed in awaiting implementation. Some of the unlimited parameters are not tested to destruction so there may be some real-life limitations that will need to be identified during testing. Some workflows can be achieved in different ways and each probably has its own unique elements but the comparison chart shows they are quite similar devices.

Of course the real test comes when we release this and users start exercising it to see how it really works under demand. It would be good to see an independant review.

10 Likes

Don’t forget the midi usb host functionality of the zynthian, it’s pretty huge for some setups.

As I said I do have one, so, if you need any info on how some workflows are implemented on the pyramid, or some of the gripes/limitations it has, we can have a chat and I can show you, I could actually loan you the unit but covid/brexit make it hard to feel safe about shipping anything

2 Likes

The Pyramid can also generate Euclidian Rythm tracks like these which is really handy to very quickly generate known or novel pleasing sounding patterns into a track.
The number of parameters are easily operated with a few turns of an encoder (#on notes, total notes, note width, note offset)

Maybe an idea for a far future, post-shipment :slight_smile:

1 Like

I based the comparison chart on the list of Pyramid features and did not add any unique to Zynthian.

Hi @zynthianers!

I’m really excited with the imminent merging and the official release of the zynstep. It’s been a HUGE effort from Mr. @riban (almost 1 year of work!!!) , and i must say that the result is absolutely amazing and so fuuuuuny to use!! Yessssss! :heart_eyes: :star_struck:
Zynstep closes the loop and transform zynthian in a self sufficient machine. My (our?) uDAW dream is now almost a reality. Of course, the room for improving and adding new features is also huge. We (all of us wanting to collaborate) have to sit down and think about it for a time, but why not, we can brainstorm too. The excitement is so big that it will be difficult to stop it :grin:

But before all this, a last breathe before the merging … and a HUGE acclaim for Mr, @riban!!
You really did it, mate!!! Congratulations and infinite gratitude for making zynthian bigger and better!!!

Enjoy!!!

14 Likes

10 months and 600 posts later

And the winner is… @riban!

:grin:

2 Likes