MidiSEQ sequencer

Overview

MidiSeq is a polyphonic MIDI step sequencer with some great features, such as note step advance, step modifiers (tie, half, strum, and accent), super stable internal clock, nice swing and two modulation sources with velocity, after touch and CC destinations.

Demo: http://www.youtube.com/watch?v=Pt7XrHZre04

MidiSeq#1_small

MidiSeq records and plays back sequences of steps with up to 15 notes per step. Maximum number of steps depends on amount of notes in each step. If all steps have only one note, the maximum sequence length is about 300 notes. Four notes per step sequences can have up to a 100 steps. Each note is stored with velocity.

MidiSeq can store 32 sequences, however, only one sequence can be played back at the same time. Sequences can be seamlessly changed on the fly without stopping the sequencer.

The sequences can be saved to an external storage as SysEx files one by one or in bulk. The saved SysEx files can be restored to the original or a different location.

MidiSeq features a super stable internal clock which works great as the master clock source for other devices. It can also be synchronized to an external clock. In addition, MidiSeq can run in external trigger mode in which steps are triggered by note events received on MIDI IN.

When playing, sequences can be transposed by playing notes on the external keyboard connected to MIDI IN. Transposition is done relative to a root note associated with every sequence.

In addition to standard tie and accent step modifiers, MidiSeq has two unique ones: strum and half. Strum modifier, just like its name suggests, will cause step notes to be strummed instead of being played all at the same time. Half modifier shortens the step notes duration to half of their original duration.

MidiSeq’s swing implementation has wide range of swing settings which can be adjusted in 0.1% increments allowing for some super sweet spots in sub-percent areas, thanks to super stable internal clock that does not dilute those subtle settings with instabilities.

Finally, two independent modulation sources can simultaneously modulate velocity, after touch, and any selected continuous controller value synchronously with sequence events using saw, triangle, square or random modulation waves.

Resources

MidiSeq runs on MidiGAL hardware, however you can also run it on MidiBUD and, with some limitations due to the lack of the switch, on any MIDIpal compatible hardware.

Firmware (.syx and .hex):midiseq_102 (use midiseq_pal.syx if your device has MIDIpal bootloader)

Firmware source code: midiseq_097a_src

User interface

Press the switch to start and stop sequencer.

Turn the encoder to move between pages. Most pages display a single parameter.

Click the encoder to enter parameter changing mode, which is denoted by brackets around the parameter value. Turn the encoder to change the value. Click the encoder again when done.

Double clicking the encoder saves the current sequence with all its parameters so it can be restored later.

Main page

01[SeqA]
1/8

Click encoder to enter sequence selection mode. Brackets appear around the sequence name. Turn the encoder to select another sequence. Click the encoder when done to load the selected sequence into memory. This can be done without stopping the sequencer.

Pressing the switch while a sequence name is displayed within brackets activates name editing mode. Turn the encoder to change the character under the blinking cursor. Press the switch to move the blinking cursor to the next character. Click the encoder again to exit name editing mode.

Saving the sequence on the Main Page is slightly differs from that on all other pages because it allows you to save the sequence into a different location: double click the encoder, turn it to select target location, then click it again to save. To cancel save, press the switch.

Recording page

Record
1/8

Click the encoder to activate recording mode.

Turn the encoder to change sequence step. The current step notes will be sent to MIDI OUT for auditioning.

The top row displays the recording mode which defines what will happen when the encoder is clicked. Turn the encoder while holding down the switch to change the recording mode.

Depending on the recording mode, clicking the encoder knob will:

  • [record] – stop the recording unless the switch is held down, in which case it will clear the sequence.
  • [rest] – add the rest step after the current step.
  • [tie] – toggle the “tie” modifier causing the step’s notes to sound for the whole step. If “tie” step is followed by one or more “rest” steps with “tie” modifiers, the notes duration will be extended to all the subsequent “tie” steps. If the switch is held down, clicking the encoder in this mode will set “tie” modifier on all steps in the sequence.
  • [half] – toggle the “half’ modifier causing the step’s notes to sound half the time they would sound otherwise. If the switch is held down, clicking the encoder in this mode will set “half” modifier on all steps in the sequence.
  • [strum] – toggle the “strum” modifier causing the step’s notes to be strummed with the interval selected on Strum page. If the switch is held down, clicking the encoder in this mode will set “strum” modifier on all steps in the sequence.
  • [accent] – toggle the “accent” modifier causing the step’s notes’ velocity to be increased by the value specified on the Velocity page. If the switch is held down, clicking the encoder in this mode will set “accent” modifier on all steps in the sequence.
  • [delete] – delete the current step, effectively shortening the sequence.
  • [clear] – clear the current step removing all the notes and modifiers essentially converting it to the rest step.
  • [patch] – toggles “patch” recording mode in which notes received on MIDI IN replace current step notes instead of being inserted after it. Patch mode is denoted by the % sign in the step display.

Pressing the switch while in recording mode terminates it. Pressing the switch again starts the sequencer.

Root Note page

RootNote
 C4

This page specifies the note relative to which the sequence will be transposed.

Click and turn the encoder to select the root note. Click the encoder again when done. You can also play a note on the keyboard controller connected to MIDI IN to “learn” the root note.

Setting the root note to the lowest value disables sequence transposition and received note events are passed through, so you can play along with the playing sequence.

Tempo page

Tempo
 120

This page specifies the tempo with which the sequence will be played back.

Click and turn the encoder to select the tempo between 25 and 250 BPM. Click the encoder again when done.

Press the switch repeatedly along with the quarter notes beat to “tap tempo”.

Step page

Step
 1/8

This page specifies the sequence step duration.

Click and turn the encoder to select the step duration between 1/64th triplet and 2 whole notes. Click the encoder again when done.

Gate page

Gate
 auto

This page specifies the sequence note duration.

Click and turn the encoder to select the note duration between 1/64th triplet and 2 whole notes or “auto”, which means “half the step duration”. Click the encoder again when done.

When set to “step”, the step’s notes will sound until the sequence is advanced to the next step. This is useful when KeySync is set to “step” and the sequence is advanced using notes received on MIDI IN, allowing endless sounding notes and chords, interesting for ambient and drones.

Most of the time note duration will be shorter than the step duration, however setting note duration longer than step duration could create interesting sequencing effects, especially with long sustain sounds.

Strum page

Strum
 1/64T

This page specifies the delay between strummed notes.

Click and turn the encoder to select the delay between 1/64th triplet and 2 whole notes. Click the encoder again when done.

While strummed notes delay is usually pretty short, using longer delays creates interesting sequencing effects somewhat similar to rhythmic delays.

Swing page

Swing
 50.0%

This page specifies the amount of swing to playback the sequence with for added shuffle feel.

Click and turn the encoder to select the swing value between 0.1% and 99.9%, with 50.0% being the “no swing” setting. Click the encoder again when done.

Swing value is adjusted in 0.1% increments which allow for some subtle groove settings.

Key Start page

KeyStart
 off

This page specifies if the playback has to be started when a note is played on the keyboard controller connected to MIDI IN. Note that the note played will also transpose the sequence relative to the root note.

Click and turn the encoder to set the value to “on” or “off”. Click the encoder again when done.

Key Sync page

Key sync
 off

This page specifies if the running sequence has to be re-started when a note event is received on MIDI IN. This comes handy when playing live.

If the sequence is not running and Key Sync is set to “step”, the sequencer will play the current step and advance to the next one every time a note event is received on MIDI IN. This is similar to Roland SH-101 External Trigger feature. If the Gate is set to “step”, the step’s notes will sound until the next note is received.

Click and turn the encoder to set the value to “on”, “off” or “step”. Click the encoder again when done.

Velocity

Velocity
 key

This page specifies the velocity to play the sequence notes back with.

Click and turn the encoder to select the velocity value between 1 and 127 or “key”, which means the velocity the note was recorded with. Click the encoder again when done.

Accent

Accent
 32

This page specifies the value to add to the velocity of the accented notes.

Click and turn the encoder to select the velocity addendum value between 1 and 127. Click the encoder again when done.

Mod Wave page

Mod1Wave
 saw

This page specifies the modulation wave shape.

Click and turn the encoder to select the wave shape: saw, triangle, square or random. Click the encoder again when done.

Mod Length page

Mod1Leng
 seq

This page specifies the modulation period.

Click and turn the encoder to select the modulation period which could be relative to sequence step count (seq, seq x 2, seq x 3, etc.) or an absolute value between 2 and 192. Click the encoder again when done.

Mod Velocity page

Mod1Velo
 0

This page specifies the note velocity modulation value.

Click and turn the encoder to select the note velocity modulation value between -127 and 127 with 0 being the “no modulation” value. Click the encoder again when done.

Mod Aftertouch page

Mod1Atch
 0

This page specifies the after touch modulation value.

Click and turn the encoder to select the after touch modulation value between -127 and 127 with 0 being the “no modulation” value. Click the encoder again when done.

Mod Ctrl page

Mod1Ctrl
 0

This page specifies the control change message number.

Click and turn the encoder to select the control change message number between 0 and 119. Click the encoder again when done.

Mod CC# page

Mod1CC#
 1

This page specifies the control change modulation number.

Click and turn the encoder to select the control change modulation value between -127 and 127 with 0 being the “no modulation” value. Click the encoder again when done.

Channel page

Channel
 1

This page specifies the MIDI channel number device is receiving and sending MIDI messages on.

Click and turn the encoder to select the MIDI channel number between 1 and 16. Click the encoder again when done.

You can learn the MIDI channel by sending a note to MIDI in.

Clock page

Clock
 int

This page specifies the MIDI Clock options.

Click and turn the encoder to select an option. Click the encoder again when done.

Clock options are:

  • [int] – sequencer runs on internal clock
  • [ext] – sequencer runs on external clock relying on MIDI Clock and Start/Stop events received on MIDI IN
  • [intOut] – sequencer runs on internal clock and acts as Master device sending MIDI Clock and Start/Stop events to MIDI OUT
  • [extOut] – sequencer runs on external clock relying on MIDI Clock and Start/Stop events received on MIDI IN and passing them to MIDI OUT

Program Change page

ProgChng
 none

This page specifies Program Change handling options. Click and turn the encoder to select an option. Click the encoder again when done. Press the switch to set the default value of ‘none’. Press the switch again to restore the original value.

Program Change handling options are:

  • [none] – ignore and pass through
  • [recv] – load sequence from the specified slot
  • [send] – send when sequence is loaded from a slot
  • [both] – both receive and send, as above

Controller # pages

Stop
 CC#114

These pages specify the MIDI Control Change Numbers used for various sequencer actions. These come useful when you want to control the sequencer from your controller keyboard.

  • [Stop] – stops the sequencer
  • [Playback] — starts the sequencer if it’s stopped or re-starts the running sequence
  • [Record] – toggle the sequence recording mode[Add Rest] – adds a rest after the current step
  • [Add Tie] – toggles the “tie” modifier on the current step
  • [Add Half] – toggle the “half” modifier on the current step
  • [Add Strum] – toggle the “strum” modifier on the current step
  • [Add Accnt] – toggle the “accent” modifier on the current step
  • [Del Step] – deletes the current step
  • [Clr Step] – clears the current step notes and modifiers
  • [Clear Seq] – clears the sequence removing all steps

Note that “Add …” CCs act both during recording and playback. When received during playback they temporarily modify the next played step without affecting the stored sequence. Good for live playing! Click and turn the encoder to select Control Change Number. Click the encoder again when done. Press the switch to set the default Control Change Number. Press the switch again to restore the original value.

Sysex page

Sysex
 cur

This page allows you to send current or all sequences to an external storage device as one or more SysEx messages for backup purposes.

Click and turn the encoder to select “current” or “all”. Click the encoder again when done.

Press the switch to send the SysEx message.

Send those SysEx messages back to MidiSeq when you want to restore them. Single sequence SysEx will be received into current sequence editing buffer so you’ll need to save it afterward. Bulk sequence SysEx dumps will be stored in the original slots.

Miscellaneous

Powering the device up with the switch pressed returns all MidiSeq settings to factory defaults erasing all your stored sequences.

Powering the device up with the encoder knob pressed enters the firmware upgrade mode: device expects firmware sysex file to be sent to MIDI IN.

32 thoughts on “MidiSEQ sequencer

  1. Pingback: New MidiGAL firmware: MidiSeq | MidiSizer

  2. I have the original midipal that I bought preassembled from MI in 2013. I tried to install midiseq_pal but it didn’t work. Is there any chance that it could work?

    • I believe back then Olivier used different bootloader and sysex manufacturer code, so the modern MIDIpal sysexes don’t work with it.It’s still possible to re-flash your device with alternate firmware, but this will require Atmel programmer. Or a lot of trial and error tweaking the firmware sysex generator Python code.

  3. Can patterns be made to start once the currently playing pattern has completed? Or do patterns only load instantly when changed on the hardware or when receiving a program change message? Thanks!

  4. I meant to trig the sequence with an incoming signal (like a rim shot from TR 909 to the SH-101 sequencer) so we can “play/break” the sequence. Is it possible ?
    Thanks

  5. modcc# section and modctrl section seem to be mixed up. also, is there anyway to set the baseline value for cc modulation wave? currently, im using it to modulate the cutoff on a waldorf rocket, but it seems to start the cutoff at 0 and then goes up/down from there. this means that the rocket is essentially inaudible for a lot of the sequence, so id like something more moderate, like starting from 64 or something, or being able to define a range of values to modulate within, like set 30-80 and then define the wave and period for that. is that possible somehow that im not seeing or should i actually invest in an avr isp ii this time around?

    i tried using the mod1velocity to effect this behavior, but i guess i dont really understand what that does since it didnt help with this.

  6. I am in love with MidiSeq, so useful and so much fun.

    Is there any way to continue to send Midi clock while stopped? Might seem an odd ask but would be very useful for Korg Volca owners (amongst others?). Problem is the Volcas only have Internal or Auto as clock sync options and when set to Auto it reverts from External to Internal after a couple of seconds. Means they start out of sync on next play and need stopping and restarting to sync again. Why they don’t have an External option is beyond me.

  7. Idea for workflow: Master keyboard – MidiArp – MidiSeq – MidiThru – several synths on different channels. Any reason why I couldn’t generate some random sequences with MidiArp then record them into second MidiGAL running MidiSeq for further editing? Both firmwares have thru option so I should still be able to use the keyboard to play the synths whether or not the MidiGALs were running right?

  8. Does midiseq allow you to place ties between different notes of different pitches so they’re overlapping, functioning as legato? This would allow me to program slides on certain synths, but I can’t tell from the instructions if that’s possible.

  9. Hi Pete,
    I recently updated my MidiSeq firmware from v0.97 to v1.01 then v1.02 and have noticed a possible small bug?
    On power up the encoder switch does not operate to allow selection of parameters on any page. The selection will only operate correctly if the other push button switch is pressed to start and then stop a sequence. After that the unit operates correctly.
    It behaves like this on both units I have built with v1.01 and v1.02 firmware.
    Going back to v0.97, the encoder switch operates as expected after initial power on allowing selection straight away.
    Not a show stopper, but perhaps something you could confirm is a big that has crept in or a deliberate change?
    Thanks very much,
    Bob

    • I could not reproduce the described behavior on any of my MidiSEQ’s running v1.02, all behave as expected — select a page, click the encoder, change a parameter.

      • Hi Pete,
        Thanks for confirming that, really did not imagine you would have released firmware behaving in that manner.
        Spent the morning programming chips with SEQ v0.97c, 1.00, 1.01, 1.02 as well as ARP v1.02, Clock v1.01 and DISP v1.00.
        Two of my units work as expected with all of the above versions of firmware.,
        The other two units work as expected with ARP, CLOCK, DISP and SEQ v0.97c.
        With SEQ v1.00, 1.01 and 1.02 they exhibit the issue.
        If you Initialise it on power up the encoder select switch works correctly, but next time you cycle power the select switch no longer operates until you first press the other switch to ‘run’.
        A very subtle issue which I will try to get to the bottom of, but does not stop me using them.
        Thanks again for taking the time to look,
        Regards,
        Bob

  10. Hi Pete,
    A quick follow up, after a bit of probing around I found that adding a 10k pull up resistor from the MISO line to +5V resolved the issue on the two boards that would not work with v1.02 firmware. There was nothing obvious, it appeared to be pulled up and grounded correctly but on fitted the resistor on a whim (desperation 🙂
    Really do not know, anyway, both are now operating as you would expect.
    Cheers,
    Bob

      • Hi Pete,
        Strange indeed!
        As the boards had been running fine with 0.97 for a couple of years along with the other different firmware options, did not think it was a build error, but did check very carefully.
        It was the two working, two failing with v1.0 and later that made no sense.
        Wondered if it was a power up or noise problem, checked logic levels with a scope, all looked good, concentrated first on the encoder switch, tried adding a capacitor then a pull up with no effect.
        Seeing the faulty boards worked correctly after operating the other switch to ‘run’ after power up, tried the same things, adding the 10k pull up cured the problem and they have both worked consistently with the later firmware, cycled power dozens of times over the last couple of days.
        As the problem seemed to be confined only to SEQ firmware versions v1.0 and later, first random thought was that the internal pull up on the MISO pin had accidentally not been enabled, but that would not explain why two boards seemed to work consistently. Wondered if I had a couple of damaged controllers but reprogramming them with different firmware and moving them around the 4 boards the results were very consistent.
        Definitely one of life’s mysteries, not the first time I have come across this, now retired after working for 40+ years in electronics and as a radio ham and hobbyist.
        Thanks again for your comments, appreciated,
        Bob

  11. Hi Pete,
    Just tried and both ‘suspect’ boards work fine with the MidiGAL 110 test firmware with the pull up on the MISO line removed. From initial power up, encoder select switch works correctly on the Midi channel page.
    Cheers,
    Bob

    • Would it be possible to check with a DMM or, better yet, an oscilloscope, if the switch pins are properly pulled up right after initial power up with SEQ firmware?

  12. Hi Guy‘s
    I Really like the MidSeq and would like to use it for my live performance.were i can order one and how much it will coast.

    Greetings,
    Goerge

      • I was just wondering. Can’t really decide whether to build a MidiSeq or MidiREX, but I think I will go for the latter, since it seems to have all the functionality of the MidiSeq (and more!)
        Thanks.

Leave a comment