Overview
MidiSeq is a polyphonic MIDI step sequencer with some great features, such as: manual note step advance; step modifiers (tie, strum, and ratchet); a super stable internal clock with a nice swing; and two modulation sources with velocity, aftertouch, and CC destinations.
Firmware (.syx and .hex): midiseq_116 (use midiseq_pal.syx if your device has MIDIpal bootloader)
Demo: http://www.youtube.com/watch?v=Pt7XrHZre04
MidiSeq records and plays back sequences of steps with up to 15 notes per step. The maximum number of steps depends on the number of notes in each step. If all steps contain only one note, the maximum sequence length is about 300 steps. Sequences with four notes per step can have up to 100 steps. The recorded notes retain the velocity with which they were played.
MidiSeq can store up to 64 sequences; however, only one sequence can be played back at a 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, either individually or in bulk. The saved SysEx files can then be restored to the original location or a different one.
MidiSeq features a super stable internal clock, which works great as a master clock source for other devices. It can also be synchronized to an external clock. Furthermore, MidiSeq offers an external trigger mode, allowing steps to be advanced by note events received on MIDI IN.
When playing, sequences can be transposed by playing notes on an external keyboard connected to MIDI IN. This transposition is relative to a root note associated with each sequence. For added dynamics, MidiSeq can optionally play back the sequence notes using the velocity of a received MIDI note.
MidiSeq sequence steps use optional modifiers that affect how the step’s notes are played:
- tie: the step’s notes duration is extended to fill the entire step duration;
- strum: the step’s notes are strummed, playing sequentially instead of simultaneously;
- ratchet: the step’s notes are repeated (ratcheted) one, two, or three additional times within the step duration.
MidiSeq’s swing implementation offers a wide range of settings, adjustable in 0.1% increments. This precision allows for super sweet spots in sub-percent areas, thanks to the super stable internal clock which preserves those subtle settings without introducing instability.
Finally, two independent modulation sources can synchronously modulate velocity, aftertouch, and any selected Continuous Controller (CC) value, utilizing saw, triangle, square, or random waveforms.
User interface
Press the switch to start and stop the sequencer.
Turn the encoder to navigate 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-click the encoder to save the current sequence and all its parameters for later recall.
Main page
01[SeqA] 1/8
Click the encoder to access the sequence selection mode. Brackets will then enclose the sequence name. Turn the encoder to choose another sequence, and click it again to load the selection into memory. This operation does not require the sequencer to be stopped.
Pressing the switch while a sequence name is displayed within brackets activates the name editing mode. Turn the encoder to change the character currently under the blinking cursor. Press the switch to advance the blinking cursor to the next character. Finally, click the encoder to exit the name editing mode.
Saving a sequence on the Main Page is slightly different than on other pages because it allows you to save the sequence to a different memory location. To do this, double-click the encoder, turn it to select the target location, and then click it again to save. If you wish to cancel the save operation, simply press the switch.
Recording page
Record 1/8
Click the encoder to activate the recording mode. If the sequencer is running, it will be stopped.
Turn the encoder to change the sequence step. As you do this, the notes for the current step will be sent to MIDI OUT for auditioning.
The top row displays the action triggered when the encoder is clicked. To change this action, turn the encoder while holding down the switch.
Depending on the selected action, clicking the encoder will:
- [record] – toggle the recording mode. If the switch is held down, clicking the encoder will clear the current sequence.
- [rest] – add a rest step after the current step. A rest step is a step with no notes in it.
- [tie] – toggle the ‘tie’ modifier, the step’s notes will be sustained for the entire step duration. Furthermore, if a tied step is immediately followed by one or more rest steps that also have the ‘tie’ modifier set, the note’s duration will be extended across all these subsequent tied steps, creating a continuous sound.
- [strum] – toggle the ‘strum’ modifier, the step’s notes will be strummed sequentially using the duration selected on the Strum page.
- [ratched1|2|3] – toggle the ‘ratchet’ modifier, the step’s notes will be repeated (or ratcheted) one, two, or three times. The duration of these repeats is determined by the setting chosen on the Ratchet Gate page.
- [rotate] – rotate the sequence steps so that the current step will become the first step in the sequence. This effectively reorders the sequence so that playback starts from the current step.
- [delete] – delete the current step, which will shorten the overall sequence length by one step.
- [clear] – clear the current step, effectively removing all notes and modifiers. This action essentially converts the step into a rest step.
- [patch] – toggles ‘patch’ mode. When patch mode is active, notes received on MIDI IN will replace the current step’s notes instead of being inserted after them. Patch mode is visually indicated by a percent sign in the step number display.
Pressing the switch while recording mode is active will terminate that mode. Pressing the switch again will start the sequence playback.
Tempo page
Tempo 120
This page specifies the tempo at which the sequence will be played back.
Click and turn the encoder to select a tempo between 25 and 250 BPM. Click the encoder again to confirm the setting.
Press the switch repeatedly along with the quarter note beat to “tap the tempo”.
Root Note page
RootNote C4
This page specifies the root note relative to which the sequence will be transposed when a note is received on MIDI IN.
Click and turn the encoder to select the root note. Click the encoder again to confirm the setting
You can also ‘learn’ the root note by playing it on a MIDI keyboard connected to MIDI IN.
Setting the root note to its lowest value disables sequence transposition. In this state, received note events are passed through (not used for transposition), allowing you to play along with the currently running sequence.
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 two whole notes. Click the encoder again to confirm the setting.
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 two whole notes, or ‘auto’ or ‘step’ options. Click the encoder again to confirm the setting.
When set to ‘auto’, the note will be played for half the step duration.
When set to ‘step’, the step’s notes will sound continuously until the sequence advances to the next step. This feature is especially useful when KeySync is set to ‘step’ and the sequence is advanced by notes received on MIDI IN, enabling endless sounding notes and chords that are interesting for creating ambient music and drones.
Usually, note duration is shorter than the step duration; however, setting the note duration longer than the step duration can create interesting sequencing effects, especially when using long sustain sounds.
Strum page
Strum 1/64T
This page specifies the delay with which strummed notes are played.
Click and turn the encoder to select the delay between $1/64$th triplet and two whole notes. Click the encoder again to confirm the setting.
While the delay between strummed notes is usually short, using longer delays creates interesting sequencing effects that are somewhat similar to rhythmic delays.
Ratchet Gate page
RatchtGt auto
This page specifies the ratchet note duration.
Click and turn the encoder to select the step duration between 1/64th triplet and half notes, or ‘auto’. Click the encoder again to confirm the setting.
When set to ‘auto’, the ratchet notes will be spread equally within the step’s duration.
Swing page
Swing 50.0%
This page specifies the amount of swing used to play back the sequence, adding a shuffle feel.
Click and turn the encoder to select a swing value between 0.1% and 99.9%, with 50.0% representing the “no swing” setting. Click the encoder again to confirm the setting.
The swing value is adjusted in 0.1% increments, which allows for achieving subtle groove settings.
Key Start page
KeyStart off
This page specifies whether playback should be started when a note is played on the keyboard controller connected to MIDI IN. Note that the played note 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 to confirm the setting.
Key Sync page
Key sync off
This page specifies whether the running sequence should be re-started when a note is received on MIDI IN. This feature is useful 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 is received on MIDI IN. This functions similarly to the Roland SH-101’s External Trigger feature. If Gate is also set to ‘step’, the step’s notes will sound continuously until the next note is received..
Click and turn the encoder to set the value to ‘on’, ‘off’, or ‘step’. Click the encoder again to confirm the setting.
Loop Back page
LoopBack always
This page specifies whether the sequence should run continuously until it is stopped, or for a selected amount of times, after which the action defined on the ‘At The End’ page will be executed.
Click and turn the encoder to set the value to ‘always’ or to the number of times to play the sequence. Click the encoder again to confirm the setting.
At The End page
AtTheEnd stop
This page specifies the action to execute after the sequence plays back the number of times set on the ‘LoopBack’ page.
Click and turn the encoder to select the action: ‘stop’, ‘next’, or ‘prev’. Click the encoder again to confirm the setting.
- [stop] – stops the sequencer.
- [next] – loads the next sequence and continues playing.
- [prev] – loads the previous sequence and continues playing.
- [back] – loads the first sequence in the continuous range of preceding ‘Next’ sequences.
This allows you to effectively chain as many sequences as can be stored in the sequencer memory (64), creating complete songs.
Auto Strum page
AutoStrm off
This page specifies whether the ‘strum’ modifier should be automatically set when a step is recorded with more than one note.
Click and turn the encoder to set the value to ‘on’ or ‘off’. Click the encoder again to confirm the setting.
Chord Note page
ChrdNote off
This page enables the ‘chord note’ feature. When enabled, the step is triggered when the first note recorded in the step’s chord is received on MIDI IN. This effectively allows you to play the recorded chords using one finger.
Click and turn the encoder to set the value to ‘on’, ‘off’, or ‘mute’. Click the encoder again to confirm the setting.
When set to ‘mute’, the first note recorded in the step will not be played back, allowing you to trigger the sequence chords using the bass line notes.
Velocity page
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, ‘seq’, or ‘note’. Click the encoder again to confirm the setting.
When set to ‘seq’, the sequence notes will be played back with the velocity they were recorded with.
When set to ‘note’, the sequence notes will be played back with the velocity of the last note received on MIDI IN that was used to transpose the sequence or start playback. This is excellent for altering the sequence dynamic when playing live.
When set to a numeric value, the sequence notes will be played back with the selected fixed velocity.
Channel page
Channel 1
This page specifies the MIDI channel the 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 to confirm the setting.
You can also ‘learn’ the MIDI channel by playing a note on a MIDI keyboard connected 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 to confirm the setting.
Clock options are:
- [int] – sequencer runs on its internal clock with no clock sent to MIDI OUT.
- [ext] – sequencer runs on external clock received on MIDI IN with no clock sent to MIDI OUT.
- [intOut] – sequencer runs on its internal clock and sends MIDI Clock and Start/Stop events to MIDI OUT.
- [extOut] – sequencer runs on external clock received on MIDI IN and passes MIDI Clock and Start/Stop events to MIDI OUT.
Program Change page
ProgChng none
This page specifies the MIDI Program Change event handling options.
Click and turn the encoder to select an option. Click the encoder again to confirm the setting.
The MIDI Program Change event handling options are:
- [none] – when received, ignore and pass through.
- [recv] – when received, load sequence from the specified slot number.
- [send] – send when sequence is loaded from a slot.
- [both] – both receive and send, as above.
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 to confirm the setting.
Mod Length page
Mod1Leng seq
This page specifies the modulation period (or rate).
Click and turn the encoder to select the modulation period, which can be:
- Relative to the sequence step count (e.g., ‘seq’, ‘seq x 2’, ‘seq x 3’, etc.).
- An absolute value between 2 and 192.
Click the encoder again to confirm the setting..
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 to confirm the setting.
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 to confirm the setting.
Mod Ctrl page
Mod1Ctrl 0
This page specifies the control change modulation value.
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 to confirm the setting.
Mod CC# page
Mod1CC# 1
This page specifies the MIDI Control Change message number.
Click and turn the encoder to select the control change message number between 1 and 119. Click the encoder again to confirm the setting.
You can also ‘learn’ the MIDI Control Change message number by sending it to MIDI IN from your MIDI controller.
Controller CC# pages
Record CC#114
These pages specify the MIDI Control Change Numbers used to control the sequencer. These come handy when you want to control the sequencer using your MIDI controller keyboard knobs and buttons.
Click and turn the encoder to select the Control Change (CC) message number. Click the encoder again to confirm the setting
The following actions can be performed using the received MIDI Controller Messages:
- [Record] – toggle the sequence recording mode
- [Play] — start the sequencer if it’s stopped or re-starts the sequence from the beginning if running
- [Stop] – stop the sequencer
- [Add Rest] – adds a rest after the current step
- [LoadPrev] – load the previous sequence from memory
- [LoadNext] – load the next sequence from memory
- [LoadPrev] – loads the first sequence in the continuous range of preceding ‘Next’ sequences
- [Add Step] – add an empty step (a rest) after the current step
- [Del Step] – delete the current step, shortening the sequence
- [Clr Step] – clears the current step’s notes and modifiers
- [Clr Seq] – clears the sequence removing all steps
- [TogglTie] – toggles the ‘tie’ modifier on the current step
- [TglStrum] – toggle the ‘strum’ modifier on the current step
- [TglRtch1|2|3] – toggle the ‘ratchet’ modifier on the current step
- [ClrRtcht] – clear the ‘ratchet’ modifier on the current step
- [Rotate] – rotate sequence so that the current step becomes the first step
Click and turn the encoder to select Control Change message Number. Click the encoder again when done.
You can also ‘learn’ the MIDI Control Change message number by sending it to MIDI IN from your MIDI controller
Sysex page
Sysex cur
This page allows you to send current or all sequences to an external device as one or more SysEx messages for backup purposes.
Click and turn the encoder to select ‘current’ or ‘all’. Click the encoder again to confirm the setting.
Press the switch to send the SysEx message.
Send those SysEx messages back to MidiSeq when you want to restore them.
- A single sequence SysEx message will be received into the current sequence editing buffer, so you’ll need to save it afterward.
- Bulk sequence SysEx dumps will be stored in their original memory slots.
Step pages
1/8 C#4 110
These pages allow you to see and change the sequence steps by rotating the encoder.
Click and turn the encoder to select the steps note. Click the encoder again to confirm the setting
You can also ‘learn’ the step note or chord by playing it on a MIDI keyboard connected to MIDI IN.
If the MidiSeq action controller numbers were set on the ‘Controller CC# pages’, you can use your MIDI controller to add and remove steps and change the set modifiers..
Miscellaneous
Powering the device up with the switch pressed returns all MidiSeq settings to factory defaults, and erases all your stored sequences.
Powering the device up with the encoder knob pressed enters the firmware upgrade mode. In this mode, the device expects the firmware SysEx file to be sent to MIDI IN.

Pingback: New MidiGAL firmware: MidiSeq | MidiSizer
would be nice to put the instructions in a downloadable pdf (or similar)
🙂
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.
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!
Unfortunately, no. I also want this feature, however there is no more room left in the program flash memory 😦
Oh well! Thank you.
Hi,
possible to trig the sequence like on some Roland sequencers;; ?
Thanks
Not sure what exactly do you mean, however MidiSeq step can be triggered / advanced by incoming note.
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
No, MidiSeq has no audio inputs. It’s MIDI only.
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.
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.
Yeah, that would be a good option to add. Hopefully there is still space in the flash memory for another feature.
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?
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.
Yes, it does. Tie between adjasent notes causes note off of the first note to be send after the note on of the second note.
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
Sounds really strange, you may want to run test firmware to see if you’ll see any difference: https://midisizer.files.wordpress.com/2022/07/midigal_110.zip
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
Interesting… the MISO port is being reused as an input port, and it has internal pullup resistor enabled in software.
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
Are those SMD or through hole boards? Moving around MCUs would have eliminated damaged internal pullups/
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?
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
email me at the address specified at the ordering page
Hello!
Maybe an odd quiestion, but will MidiSeq run on the MidiREX hardware?
No, this would require major firmware re-write, the hardware is very different.
Why?
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.