Zynseq - A native step sequencer

I’m sure I’ve seen a python MIDI file library that provides an API for moding a MIDI file, but I’ve seen a lot of Python MIDI libraries. . .

Yup, there are any number of Python libraries that support manipulating MIDI files, so that part is easier than inventing your own format. SMF does support free-form text events, and also sequencer-specific meta-events.

And if you’re going to import, you’ll need to have the code to normalize and quantize anyway…

@riban
This is your call? Is it possible to use .mid directly or do we need an import from .mid to your format.
I could look into a conversion if needed. (I haven’t looked into your file yet)

I suspect someone is probably talking a contemplatory walk along Clacton Sea front . . . .

Probably walking widdershins . . . . :roll_eyes:

I considered using MIDI file format but it may not fit this use case. The current implementation of stepseq is very much based on old-school step sequencers with patterns that have quantized steps that can be added to tracks in songs. I spent some sleepless hours last night considering how best to implement variable duration events. If I decide to use a timestamp MIDI event approach then it may be appropriate to use MIDI file format to store the data which may allow import of similar files (with appropriate transformation to filter unwanted events and map the rest to patterns / songs). I have added the requirement to interchange MIDI file format so one day it may be implemented but for now I continue to consider the most appropriate format for the data…

I will be taking a promenade along the sea front later but need to finish working first. This day job gets in the way :-(. I may still be awake to watch the meteor storm this evening.

I’ve been thinking about pattern editing modes and i would like to propose 3 modes:

  • Notes: the current one
  • Percussions: replacing the piano-roll by percussion-names, according to GM (kick, tom1, ride, snare, hit-hat, etc)
  • Controllers: allows to create CC envelopes.
    • A poly-line with num-steps dragging-points should be shown. X axis is step, Y axis is CC value.
    • A drag-point can be set or unset. When it’s set it marks a point of the envelope. When not, its value is interpolated.
    • Regarding sequencing, the CC values have to be interpolated per audio-frame, sending new CC messages when needed (value change).
    • Basic envelope shapes could be available, like triangle, saw, sin, etc.
    • If we are super-exquisites, different interpolation methods should implemented: linear, quadratic, etc.

What do you think? :wink:

Regards,

Big :+1: to this, a piano keyboard view is terrible for programming drums :grin:

1 Like

I have a requirement listed to be able to change the keys for drum map and scales (missing some keys). I think this is what is being discussed but may need to look at some examples.

Controllers are on my mind but haven’t made it to the requirements list yet. I will add them when I get home.

1 Like

If the step sequencer could receive midi från something like a launchpad, Akai APC mini or custom built controller and also send back midi data. Well then we would have a hardware controller that can show and control the steps. I don’t know if it’s even possible but think about the possibilites. We’re talking a Zynthian based groove box.

1 Like

Onemore suggestion i have been missing in many sequencers (but the pyramid in a way) : Program Changes events editor !
It does not make a lot of sense in a small 4 beats loops but is really usefull to me when building songs.
It would be wonderfull if your implementation may reserve some space for this.

@MrD I think this might be possible. The sequencer can be slaved to internal or external clock and in the future will be able to record incoming MIDI messages. Any recorded or programmed messages are sent out to all MIDI devices including Zynthian engines and MIDI output.

@jerash this is now captured as requirement S19. I am not sure whether it would be at pattern boundaries (most likely) or freely set anywhere in the timeline (more complex). I have not started work on the song editor yet.

I would like to note that Program Change message can be sent on a time-line, but the program change itself would take some time, so composers/arrangers should take this into account …

1 Like

Could you integrate start (FA) and stop (FC) midi system real-time messages?
Than I could use my master-midikeyboard to control the step-sequencer.

2 Likes

Already done! I recently disabled sending these messages from the sequencer because I was getting two and we hadn’t sorted autoroute out. I will look at re-enabling but it already responds to incoming start / stop / continue. :grin:

1 Like

Can’t make it work. Step-Sequencer only responds when it receives a midi clock signal.
Edit:
Ah sorry, couldn´t work, the masterkeyboard only sends CC or MMC.

The latest version has a menu option to select the source of clock including internal clock which is default with tempo control. I need to check how that works with autoroute.

I’m not sure this has to be a StepSequencer Option … but i’ve to think about it :wink:

Hi,
I’ve applied yesterday evening the latests commits :slight_smile:

  • UI looks much better :clap:
  • I can’t start stop sequencer anymore with any of the zynthian controller ?!
  • I can select the clock source (great feature) and control zynthian sequencer start/stop with external hardware
  • Changing tempo from my external source work too but the tempo shown in the status bar doesn’t change accordingly

Keep on the good work guys :wink:

By default the sequencer is configured to use internal clock. Pressing the Snapshot button will toggle START / STOP. The internal clock is provided by jack-midi-clock which needs to be enabled in the Admin menu. @jofemodo: Why don’t we just enable this by default and lose the admin configuration.

Tempo adjusts the rate of the internal clock rate. Using an external clock, the sequencer will clock at the incoming clock rate. There is no message to indicate what the external clock rate is, the sequencer just counts clocks ticks.

1 Like

My proposal is to enable/disable the internal clock from Admin. ZynthStep shouldn’t know about this. It simply takes the MIDI clock from the step_out port from the ZynMidiRouter. When internal MIDI clock is enabled, external MIDI clock messages will be filtered, for avoiding confusion (it’s not done yet).

Think that ZynthStep wont be the only app using MIDI clock …

Regards,

1 Like