Zynseq - A native step sequencer

Yep! It did grow quite big and will have more (or maybe different tutorials) as functionality is enhanced. Maybe the tutorial will replace much of the User Guide content which could then have a simpler overview of the functionality with reference to the tutorial. I have actually written several versions of documentation / blog posts / tests scripts and want to consolidate to fewer, public versions. This is an attempt at that. (Note: Much of my scribblings remain on local hard disks, not in the ether.)

1 Like

Which branch(s) are considered the head of the development branch for the wiki entry?

Iā€™ve switched to the features/step sequencer branch but It knocks out zynthian-webconf lacking:
File ā€œ/home/pi/zynthian-webconf/lib/wiring_config_handler.pyā€, line 32, in
Dec 06 10:58:11 zynthian-ceed zynthian_webconf.sh[11912]: from zynconf import CustomSwitchActionType, CustomUiAction, ZynSensorActionType

I find the wiki environment fairly clumsy any one any general style tips?

Waltā€™s personal branchā€¦ I havenā€™t yet committed these changes because they are broken and people use the feature/stepseq branch to which these features will be applied when I fix it.

I agree we need a wiki style guide. I just wrote all this in a text editor then added some titles but we should decide how we format various references etc.

IF we can configure the dev environment purely via the webconf repository options then that strikes me as a big gainā€¦

It keeps the grubby mishandling of git ( one of my personal bugbears) to an absolute minimum. Iā€™m trying to restrict my access to the webconf tools. Makes it easy to screen shot & make images . .

I end up re-learning the wiki each time I come to it. embedding images requires uploading the images to itā€™s CMS and then copying the title link and then using ā€˜|ā€™ options ( |200|right|alt Some Text | ) to get the image in the right place .

Using == & = to construct the menu structure seems to work quite well if properly obeyedā€¦

Ship it!

1 Like

What @Baggypants said!

BEST CHRISTMAS PRESENT EVER!

:gift: :gift: :gift:

So Iā€™ve been reading up on this thread and the wiki page and there is still one question in my mind,
Are there any plans on enabling midi recording through the sequencer, to then mangle midi with it or midi fx per layer? I come from a squarp pyramid which is a wonderful device but i find some limitations in it and dislike the interface in more than one way, and it seems like zynthian + zynseq could very well be exactly what i need.

Kindaā€¦ Adding notes to a pattern is already implemented in the development branch but pattern editing is isolated from performance workflow, i.e. when you are editing a pattern it is in isolation and no other sequences run.

There are currently no plans to implement another MIDI recorderā€¦ We already have one. There has been some discussion on whether that is up to scratch and hence whether a replacement is desirable. Integration with the sequencer may make sense.

The next update to the sequencer is likely to be missing the song editor. Once this is added back in there may be scope for recording tracks in a song but that is not currently implement or indeed compatible with current design.

Yeah, thatā€™s the impression i got from reading the materials mentioned so far.

One of the very useful features of the pyramid is the ability to record and loop sequences, as if you where looping sound but with midi, and there are not many devices that do this on the market, so there arenā€™t many examples on how to do this properly, but maybe the recorder and import of midi files could be integrated?

Just throwing ideas off the top of my head

Import MIDI already implemented. :grinning:

1 Like

Yeah, i know but maybe this could be integrated in a simpler way, i mean
Rec -> import with one button

Sorry @Pastitas, I donā€™t understand. Will you describe a workflow as you would like it so that we can better understand what you would like to achieve and how you envisage achieving it? I looked at the Pyramid and liked some of its features but stopped short of copying them because I didnā€™t think they were all required, some were quite complex and I want to get something working from which we can identify enhancements. I liked the way you can loop parts of a song but we have that feature with zynpads. I liked reversing and bouncing audio but I took that out (initially tried to implement) because you can achieve similar workflows in a more manual way. Let me know what you would like and I will let you know if it is / can be on the roadmap.

Cheers

A quick warning: I would recommend that no one switches to the feature/stepseq branch at the moment. I have pushed my recent changes but am still working through the tests and a significant backlog of issues. The library passes all my unit tests but when I actually plugged headphones in I heard timing issues that the tests had not identified. The unit tests validate the core functionality of the library but I am doing manual testing of the user interface by working through my last wiki post. You may track progress through my updates to the wiki. As I work through a section I add pictures. I am trying to work through from start to end, resolving substantial issues as I go and recording lower priority issues for later resolution.

If you are extremely brave or extremely daft then you might want to cut yourself on the bleeding edge but this may leave you scared and scarred!

Previously created sequences will not be loaded so if you have any master pieces I recommend avoiding this or at least saving the file elsewhere. (If there were sufficient call, I might provide a conversion but for now it is simpler to just mark old versions as incompatible.) I will continue to chip away at this but make no promises about when it will be ready for general consumption.

1 Like

It is not quite there but recent updates have made it more useable. It now converts older file format saved sequence to current (v3). Most of the functionality required for the next release is implemented. It is failing some unit tests so I need to investigate that. Zynseq now provides the master timebase so we can lose ā€œMIDI Clock Internalā€ but other modules (like recorders) depend on clock so I need to make these compatible. I made a recording and although the audio recorder complained it did work and started and stopped recording in time with the step sequencer. That is interesting but not necessarily desired behaviour, e.g. it cut off the decay of the song.

Here is that recording:

I am using a 2A PSU on that dev unit so got some xruns and I was using X-forwarding which was a little unresponsive so the recording was not quite what I wanted to do but it shows how you can chuck something together in a matter of minutes :wink:.

This version in github feature/stepseq branch fairly closely follows the wiki tutorial. There are some things that donā€™t quite work as described but the general usage is the same.

There is no linear song editing / playback enabled in this version. I need to get this stable before tackling that.

I am quite pleased with this. It is far from perfect but starting to shape up. I have not tested it extensively but it hasnā€™t upset me too much in my playing this evening. I was certainly able to create that small song without too much hassle. One or two workflow tweaks could be done to make things a bit easier but I will look into that once this is stable.

Feel free to have a play and let me know what you think. I will continue to improve over the next few days but might have Christmas day off to play with my toys, drink, eat and be merry.

[Edit] I have merged master into feature/stepseq branch so you can enjoy all the joy of the master branch too.

12 Likes

Hi riban.
Once again, great job ! Iā€™ve played a bit with the latest stepseq commits. Wiki page was really helpfull because itā€™s been a while I didnā€™t played with the sequencer.

Iā€™m building a new zynthian unit and for now Iā€™m using with its touchscreen interface only.

Some feedback:

  • Interface/menu/workflow => this is really good job.
  • Adjusting note velocity and duration with touch interface works great
  • the keyboard is so good, I think it opens a bunch of other use case. But it lacks some characters like -_-
  • For importing MIDI sequences, why donā€™t you use zynthian ā€œcaptureā€ location, and so we can go without an USB stick ?

Found some bugs:

  • when in stepsequencer, in ā€œPad Editorā€, clicking ā€œtransportā€ button drives you to PROG MIDI-LEARN screen, waiting for a ā€œprogram Changeā€
  • Iā€™m able to save a song but when I open a song itā€™s empty
  • My recorder is brocken: when trying to use midi or audio recorder, Iā€™ve got an error message ā€œzynthian_gui object has no attribute zyntransportā€. So sorry, no :face_with_monocle: (yet)

To be tested

  • External trigger
  • Adding Notes With MIDI Controller
  • Import MIDI Files

Nice 5inch DSI display from Aliexpress

1 Like

Thanks for the kind words. I will look at those issues. I had mentioned the recorder issue. The recorder uses JACK transport but I have changed how that works. We need to decide how to handle it now. I like the idea of offering the ability to control recorder from transport, e.g. start when sequence starts but how to decide on the behaviour and when things start and stop? I have some ideas but suggestions gladly welcome.

Nice looking screen. I have a 7" HDMI +USB for touch. I fancied a DSI but they were inexplicably more expensive.

I agree it would be a good idea to be able to upload MIDI without restoring to USB. Iā€™ve not tested it recently because it meant finding a USB flash drive! I will consider whether to use the existing MIDI file location or a different one. Probably the easiest :wink:.

I will see what character can be sacrificed on the QWERTY keyboard. We could / should make it configurable, e.g. to support other layouts.

I think the pad editor / MIDI learn issue is because I removed the linear song functionality and that exposed default behaviour for the button. I will mask it until I reintroduce the feature.

Odd about save / load. I will check whatā€™s happening.

Recorder does work but complains. I was able to record the :zynthianic: with it.

I may not do much over the next few daysā€¦ Or if I do it may have dubious quality. :santa::beers:

1 Like

Hello, I was looking for the answer to this question in this thread but couldnā€™t find them. Forgive me if the answers are in here somewhere! Is the sequencer currently capable of playing back 32nd and 64th notes, as well as implement swing? Thanks in advance!

Hi @Hitachii!

You can configure the steps per beat for each pattern from the values: 1, 2, 3, 4, 6, 8, 12 & 24. You can configure the beats in each pattern to any value. You can configure the beats per bar for each song to any value so this will allow 32nd notes: 4 beats per bar, 4 beats in pattern, 8 steps per beat. To do 64th beats you would have to double the tempo. There is no horizontal zoom on patterns so high quantity of notes in pattern may be difficult to work with on screen.

There is currently no swing option. (I spent a lot of time getting rid of jitter :wink:.) It is something I have considered and will add to the list of future features. Thanks for the suggestion.

Note that this response refers to the development branch, not the alpha version in the main firmware.

Hi @le51,

I have pushed fixes for the issues you reported:

  • Improvement in touchscreen control of duration and velocity - now only one may be adjusted at a time (the first direction you leave the cell, up/down or left/right) and adjustment is relative to where you first press
  • Location for import is now same as MIDI sequence captures (I am wondering if we want something else but letā€™s use it and see)
  • On screen buttons now show correct labels and do as expected
  • Loading file now works (it was getting the full path when it expected just the filename)
  • Audio and MIDI recorders now working. (I need to talk to @jofemodo about this - I have removed the sync with JACK transport which I donā€™t think changes current behaviour significantly. We may want an option for sync but that needs more thought.)

So no excuse for :zynthianic: now :wink:.

For the rest of you - the branch is pretty much useable. I do want to fix the failing unit tests but I suspect the tests may be flawed rather than the implementation. The small amount of testing I have done seems to work. I would quite like to stop development for a few days and play with it to see how well it works. I encourage others to do the same but remember this is not yet stable (fully tested) so caveat emptor.

5 Likes

Looking at @jofemodoā€™s suggested UI in detail for the first time since he posted it a couple of months ago I see his logic. This does align more closely with the wider Zynthian user interface workflows. That said, I am not sure I necessarily agree that the wider Zynthian user interface workflows are optimal :wink:. Of course I am a mere moral wandering aimlessly in this labyrinth of Python infested codebaseā€¦

The current version in feature/stepseq does not implement all of these suggestions but some were already implemented to some degree:

  • short-snapshot => START/PAUSE - This kinda works but currently toggles between START and STOP, i.e. it recues to start of pattern. This is not the intended behaviour but I need to do some work around this to reimplement the intended START / PAUSE / STOP (RECUE) functions.
  • rotate-snapshot => velocity adjustment. It should have a visual feedback on screen that would be hidden after 1-2 seconds of inactivity. - The velocity is shown permanently on screen by the small yellow bar in the lower left corner. I did have an idea to show a toast (temporary on screen indication) for another workflow but I would prefer to keep the screen clear of obstruction as far as possible. It may not be intuitive but maybe once you know the yellow bar exists you may be satisfied. Also, the opacity of the note indicates velocity. None of these present absolute values to the user but we are musicians, not scientists - right?
  • bold-layer => screen specific menu - This is currently implemented with short-layer. If / when I implement other recommendations this would change.
  • short-select => add/remove note - Implemented.
  • bold-select => ā€œnote-adjustā€- mode => short/bold-select for returning to edit-mode - Note adjust mode is currently enabled by default. If / when I implement other recommendations this would change.
    rotate-select => move cursor on time axis
    (ā€˜note-adjustā€™ mode) => adjust duration (1st derivate of time) - Cursor move implemented. Duration is currently adjusted by Layer encoder.
  • short-back => exit from stepseq - Implemented
  • bold-back => main menu - Damn! I should have picked that one up myself! Now implemented.
  • rotate-back => move cursor over keys (notes)
    (ā€˜note-adjustā€™ mode) => adjust velocity (itā€™s the other param in the MIDI event) - Cursor move implemented. Velocity is currently adjusted by Snapshot encoder.

If you donā€™t mind, I may take a short break from development to allow me to play. When I return I will review these comments and make changes as appropriate.

So - users may continue to play and test this branch but be aware that user interface may change (before we merge into main?).

4 Likes