ZynSeq Pads [SOLVED!]

I have a question / idea (maybe I overlooked something and it’s already implemented):
In Pads/Grid View, would it be useful to somehow visibly see if a pad has any notes in it? Maybe a symbol or any “empty” pads would be more greyish/desaturated? That would be different from a slot on the grid that has yet no pad at all, as that simply has no color and shows an empty grey slot, which is fine.
That way one could distinguish on the grid any slots with empty pads vs those pads who already have playable notes in it.

I suppose we could add a stopped icon to the pad for sequences with content.

You mean a little square? Sounds great! :slight_smile:

Yep! That kinda makes some logical sense. I just took a look at the code and it will be a little tricky and needs some design decisions.

A pad triggers a sequence. A sequence is a set of one or more tracks. A track contains zero or more consecutive, non-overlapping patterns. Patterns each have a user defined quantity of steps. Each step may contain zero or more notes.

Do we want to indicate that a pad will trigger an sequence that will or will not play notes? In this case we need to check whether there are any events in any patterns in any tracks within the sequence triggered by the pad.

Now, that isn’t in itself too tricky but it needs to be done efficiently to reduce impact on performance. The code may be optimised in one direction and we may be swimming up tide!

Right.
Default, all pads are initialized with an empty pattern, I assume that was done being able to longpress and add notes right away?

So the tricky question is when to check for changes, so the program can decide to place a stop icon or not?

Yes! We redesigned the system to allow a simple, instant access to patterns where by default each pad triggered a sequence that had a single track which had a single pattern at time zero. It is quite a neat approach because we can use the same interface for tracker style sequencing and linear track based sequencing (and interesting hybrid operation too).

I am looking at the code now and think I can add a function to the library which indicates whether a sequence is empty. I will see what I can do.

Awesome!

Btw. was this inspired by Ableton Live? It kinda reminds me of it, but in a good way given the reduced screen real estate.

I still need to wrap my head around its possibilities…
Like e.g. Arranger mode is not 1:1 mapped to a layer, or is it? I first thought all same colored pads are assigned one specific layer, so then it could show that preset name also in pads view? or maybe allow naming a colored column/track in arranger a chosen name via longpress → virtual keyboard popup?

Maybe i’m still confusing things though :slight_smile:

I have never used Ableton Live so I think I can defend my statement that it wasn’t directly inspired by it. Most of the inspiration came from step sequencers and drum machines I used in the 1980’s, updated with experience of various apps I have used since. I think there are some novel workflows in ZynSeq which don’t appear elsewhere - or at least not in the combination we have implemented. I am quite pleased with the integration of different workflows into (what I think is) a unified, consistent and fairly intuitive workflow.

Arranger mode allows access to some of the complexity that underlays the overall operation. As described above, there is a hierarchical structure which by default implements a simple, single pattern and hence out-of-the-box it appears like a direct mapping of one pad to one pattern. That pad may be assigned a channel which in turn aligns with a layer. (This may change in the future but let’s stay on topic…)

What Arranger does is expose the fact that each sequence may have multiple tracks and it is the track that has a MIDI channel assigned. The fact that simple mode has only one track makes it appear that the pad is associated with a layer but in fact it may drive multiple layers.

The sequence name (and hence the pad label) may be configured by the user using the on-screen keyboard.

Colours are associated with mutually exclusive groups which are used to control how sequences interact with each other, e.g. starting a sequence when another stops. This is also indicated by the letter shown at the bottom left of the pad and the name prefix in the title bar of Arranger.

Do take a look at the wiki for a (fairly) complete description of the sequencer.

I have added a feature request for this.

I have added the feature to display a grey square (stop symbol) on a pad if the sequence is stopped and the sequence contains content otherwise a stopped sequence shows no icon. This is implemented in the feature/747_indicate_empty_sequence branch and may be tested by switching to it with webconf and updating. I think it is okay so I will submit a pull request to merge to testing later today which, when merged will allow wider testing.

2 Likes

Sounds really great, thank you for adding this! Will test it too next time I update my zynthian.

just an FYI :- I am currently using an empty (no notes) pad almost like a start/stop button for midi clock.

1 Like

Indeed this is a valid (and documented) workflow which remains available. Now you know that the pad you hit will not trigger events :wink:.

This is now available in the testing branch. Switch to testing with webconf, update and enjoy. If you are less intrepid then wait until the next stable release which is not yet scheduled but hopefully soon.