16 Track Live Step and Morph Sequencer + advanced Arpeggiator
Created 2003-2004
NOTE: This design is expired! In 2009 MIDIbox SEQ V4 has been developed which replaced the old version. See this page for more details.
Feature list of the OLD V2 version:
optimized for live playing and editing
every parameter can be modified in realtime w/o affecting the sequencer timings
one sequencer pattern consists of 4 independent tracks
four patterns can be played at the same time -> makes 16 tracks
Each track consists of 3 layers which can be assigned to
Note Number, Velocity, Gate Length (on Note Events, Aftertouch, etc..)
CC Number, CC Value, Gate Length (on Controllers)
Pitch Bender, Gatelength
CV Outputs
in drum mode, one track can play three drum lines, makes up to 48 drum lines
available modes for every track: Normal/Transpose/Transpose+Hold/Arpeggiator/Arp.+Hold/Drums/Controller
available directions for every track: Forward/Backward/PingPong/Random
available clock divider for every track: BPM/1, BPM/2, BPM/4, BPM/8, BPM/16, BPM/32, BPM/64
available length for every track: 1-16
step events can be triggered multiple times (up to 4 times per step) with a delay value of 1-31 to realize drumrolls, ratterbeats, flams...
two groove styles (shuffle and inverse shuffle), prepared for 16 styles
two morphing modes (smooth and threshold)
enhanced humanizer function (random modification of note/velocity/gatelength)
Manual step triggering
Simple Step Record function
comfortable step shifting function
tracks and single steps can be muted
parameters can be changed for a single or for multiple tracks and steps at the same time (with a single rotary encoder turn)
Accent/Slide/CC sequences
8 optional CV outputs for analog gear
128 patterns can be saved in every BankStick
additional BankStick for up to 16 songs with 16 parts, each consists of 8 pattern sets
pattern sets can be looped and chained in song mode
it's possible to switch between the 16 parts quickly without affecting the sequencer timings, so that a song can be divided into fills/breaks/chorus, etc...
pattern switching can be synchronized to the measure
works with quadrubled MIDI clock resolution (96 ppqn)
several hardware options (from vintage design with 64 pots to ergonomic design with two 2x40 LCDs and 17 rotary encoders)
Sequencer Demos
These samples are intended for people who want to know more about the advantages of a hardware step sequencer. Note that the parts are mostly played live within one evening regardless of the sound quality. You see: the results come fast and sound interesting :)
Very experimental (the original is about 3 hours long, but I forgot to record it ;-), many Fx have been added, some of them are controlled from the sequencer via CCs. all patterns made with MIDIbox SEQ and recorded with Logic whenether they worked (means: the MIDIbox SEQ didn't play the whole song in this example since the song mode was not implemented at this time)
Just an arpeggiator test, nothing more - edited within 5 minutes, played some random chords and took the best ones ;-)
This example demonstrates the "shuffle" groove style, where every second step can be shifted by up to 15 microticks (@96 ppqn) - the shuffle feeling can be changed continuously during the sequencer is playing w/o affecting the timings!
A morphed arpeggiator texture which consists of two 4-track patterns. Some three-finger chords are played with a keyboard, and the modulation wheel slightly "morphes" between the two patterns during the sequence is running. The resulting variations are nice and expressive and don't require additional edit effort.
A tutorial which introduces multi-arp events can be found here
Hardware costs
The MIDIbox SEQ can be extended successively from the minimal configuration to the complete control surface.
Please read also the discussion about the various hardware options before selecting the parts!
Here a list of the complete "MIDIbox SEQ V2" option - you can reduce the costs by choosing cheaper buttons, a cheaper case/panel and by organizing collective orders in the MIDIbox Forum!
Prices and ordering numbers are from Reichelt if not specified. A list of alternative electronic shops outside germany can be found at the WhereToOrder page.
A lot of additional informations on MIDIbox and MIOS
MIDIbox SEQ V2
Hardware Options
This page discusses various hardware options which are provided by MIDIbox SEQ. All these settings can be changed in the main.asm, resp. in the preconfigured setup_*.asm file. Once you've changed an option, you have to reassemble and upload the code to your MIDIbox like described in the GPASM tutorial
Pots or Encoders?
MIDIbox SEQ allows to modify step values with rotary encoders (endless knobs) or pots.
Since pot control sounds like "vintage", "old style" and "analog sequencer", and possibly could imply that pots are the best solution for perfect sequences, I want to warn you that this is just a popular fallacy and nothing else! In fact pots are only useful for sequencers which are controlling the analog gear directly, but for a MIDI sequencer you defenitely want to have features like "total recall" and "jumpless switching" between tracks, layers and patterns.
Therefore the most preferred option for MIDIbox SEQ should be rotary encoders!
There are two reasons why MIDIbox SEQ supports pots: 1) pots were used by the first PIC16F based implementation (MIDIbox SEQ V1) - users who already built this sequencer are able to upgrade to V2 by exchanging the PIC and the crystal in order to benefit from all the new features. 2) users who built the MIDIbox64 hardware are able to upload the MIDIbox SEQ firmware in order to have a lot of additional fun :-)
setup_*.asm
Two preconfigured setups are part of the MIDIbox SEQ package: setup_mbseq_vintage.asm (configuration with pots, called MIDIbox SEQ Vintage below) and setup_mbseq_v2.asm (configuration with rotary encoders, called MIDIbox SEQ V2 below). You can copy an existing setup to a new .asm file and change it for your needs if required. Keep in mind that changing the .asm filename also require to adapt the convert.bat script which converts the .hex binary to a .syx file. The third setup "main.asm" is similar to setup_mbseq_v2.asm, but different encoders types are specified - this file matches with my own hardware.
How many buttons?
If you are building a new MIDIbox SEQ it's highly recommended to mount at least the buttons which are used in the original V2 design to ensure best ergonomic handling. This means, that you want to use at least 44 buttons!
But this doesn't mean that you are not able to use MIDIbox SEQ without these buttons. The MIDI Remote feature allows you to trigger the remaining functions with a MIDI keyboard. However, the handling isn't so perfect like with dedicated buttons (especially since the LEDs are missing on a master keyboard), but it works!
It's also not required that the buttons are assigned to the same DIN input pins like predefined in the setup files. You are able to change the pinning for your (existing) hardware. But if you want to keep it compatible, then use exactly the same pinning like me.
Some button functions require a LED as some kind of feedback which is not given by the LCD. For example, the selected Track and Layer are normaly not displayed by the LCD, also Solo/Fast/All and especially the played (unmuted) steps.
This means that you want to have at least 30 LEDs. One additional LED can be added as beat indicator. Two others to display the MIDI Rx/Tx activity (I don't use these two LEDs for my own design).
By default the 16 "general purpose" LEDs (which belong to the 16 "general purpose" buttons) display the mute status of the current selected track. If the sequencer is running, they display also the current sequencer position by inverting the appr. step LED. MIDIbox SEQ supports an option to handle 64 LEDs for all 4*16 steps of a pattern (which consists of 4 tracks) for people who think that this might be useful. This option requires just 4 additional DOUT pins which are driving the cathodes of the LED rows (The LED rows are driven time multiplexed like known from the LED rings of MIDIbox64E).
Note: the LED matrix has to be enabled in the .asm setup you are using!
Which display size?
MIDIbox SEQ V1 provided only a 2x16 display, but it turned out that this is not enough for a sequencer, where you want to have an oversight over at least 4 beats. Therefore MIDIbox SEQ V2 supports up to 2x80 characters (two 2x40 displays).
Since especially the LCDs are different on some existing MIDIbox hardwares, MIDIbox SEQ supports following sizes:
two 2x40 LCD
all 16 steps are visible on screen.
2x40 LCD
only 8 steps are visible on screen (visible beats selected by last changed value).
2x20 LCD
only 4 steps are visible on screen (visible beat selected by last changed value).
2x16 LCD
only 4 steps are visible on screen (compressed without spaces, visible beat selected by last changed value).
Menu pages are still layouted for 2x16 characters to simplify the application development. For future releases it is planned to provide extented views for larger displays
two 2x40 LCD
menu pages are aligned to the right side of the first LCD.
2x40 LCD
menu pages are aligned to the right side of the LCD.
2x20 LCD
menu pages are centered on screen.
2x16 LCD
the whole menu page is visible on screen.
Note: If you are planning an upgrade to MIDIbox SEQ V3 later, two 2x40 LCDs are strongly recommended! This firmware won't support other display options anymore!
Left/Right button or Datawheel?
For the menu navigation and data entry either Left/Right buttons or a datawheel can be used. The datawheel (rotary encoder with big knob) should be the most preferred solution since it simplifies the selection of parameters with a wide value range (like BPM).
Banksticks
MIDIbox SEQ stores only a single pattern when no BankStick is connected!
With a 32k BankStick (24LC256) you are able to store 128 patterns
An additional BankStick (24LC256) is required to store 16 songs
Optionally you can use a 64k BankStick (24LC512) to store 128 patterns and 16 songs in a single EEPROM. This is the solution which I'm using for my own MIDIbox.
Multiple BankSticks for more than 128 patterns and 16 songs are not supported yet, but planned.
Keep in mind that every song consists of 128 positions, which can be looped up to 16 times. By setting jump points you are able to split a single song into multiple parts!
Detented or Non-Detented Encoders?
In difference to suggestions for MIOS based MIDI controllers, for MIDIbox SEQ I strongly suggest detented rotary encoders! Of course, MIOS provides three types, and all are working. But for a sequencer, where you want to select the notes exactly and not "smoothly", detented encoders are really the preferred ones.
For pots I solved this "problem" by reducing the value range of note values from 128 to 32 (the transpose function has to be used to select the octaves). This function could also be used for non-detented encoders, but this is only some kind of workaround and not what you really want for a sequencer.
CV outputs
MIDIbox SEQ can control up to 8 analog outputs by connecting an AOUT (mbhp_aout.pdf) module to the core. The interconnections are a little bit different from the schematic, since J10:RC is already allocated by the enable line of the second 2x40 LCD:
AOUT J1:Vs -> CORE J10:Vs
AOUT J1:Vd -> CORE J10:Vd
AOUT J1:CS -> CORE J10:SO
AOUT J1:DIN -> CORE J14 (different to standard wiring)
AOUT J1:SC -> CORE J10:MD (was J10:SC before, has been changed in V2.1!)
Tracks can be assigned to the outputs in the MIDI event menu. The AOUT "channels" route the events to following CV outputs:
Channel 1 routed to CV Out #1 and #2 and sets the gate #1 (for Notes)
Channel 2 routed to CV Out #3 and #4 and sets the gate #2 (for Notes)
Channel 3 routed to CV Out #5 and #6 and sets the gate #3 (for Notes)
Channel 4 routed to CV Out #7 and #8 and sets the gate #4 (for Notes)
Channel 5 routed to CV Out #1 and #2 and sets the gate #1 (for CCs)
Channel 6 routed to CV Out #3 and #4 and sets the gate #2 (for CCs)
Channel 7 routed to CV Out #5 and #6 and sets the gate #3 (for CCs)
Channel 8 routed to CV Out #7 and #8 and sets the gate #4 (for CCs)
Channel 9-16 routed to CV Out #1-8 (only the second MIDI byte is sent to the AOUT)
Since the AOUT module provides only two gate outputs, the remaining gates are available at pin RC0 (CORE::J6::RC) and RC1 (CORE::J6::SC) of the PIC
User Manual for MIDIbox SEQ V2
Buttons
GP #1-16
The "general purpose" buttons have various functions depending on following modes: In Edit Mode: the GP buttons are used to mute/unmute the steps. The appr. LED will be lit when the step is not muted, and therefore will be played by the sequencer once it passes the position. In Mute Mode: the GP buttons are used to mute/unmute the 16 tracks. In difference to edit mode the LED will be lit when a track is muted! In Pattern Mode: the GP buttons are used to select a pattern. The 8 buttons at the left side are used to select one of 16 Pattern groups (A-h - press the button twice to select a "lower case" group), the 8 buttons at the right side are used to select the pattern number (1-8). In Menu mode: the GP buttons are used to jump directly to a menu page (shortcut)
In Manual Trigger Mode: the GP buttons are used to trigger the step of all active tracks manually. In Step Record Mode: the GP buttons are used to select the step where the record function should start.
(Track) 1-4
Use these buttons to select the track(s) which should be edited. The track buttons behave like "radio buttons" if only one is pressed so that you can quickly change between the tracks views. It's also possible to select multiple tracks by holding one, and pushing the additional track buttons - in this case every parameter change will be done not only on one, but on all selected tracks.
In pattern and song mode these buttons are used to select the pattern group (1-4).
(Layer) A-C
Use these buttons to select the layer which should be edited. The layer buttons behave like "radio buttons", in distance to the track buttons multiple layers cannot be selected at once (since this doesn't make sense).
In song mode these buttons are used to select the song number/song position and loop points.
EDIT
Changes to the edit menu.
MUTE
Changes to the mute menu.
PATTERN
Changes to the pattern menu.
SONG
Change to the song menu.
SOLO
If this function is active, only the selected tracks of the current pattern will be played. All other tracks will be muted.
Note that the behaviour of this button can be changed in the setup file. It behaves like a toggle button by default.
FAST
Use this button to speed up the encoder and datawheel increments/decrements.
Note that the behaviour of this button can be changed in the setup file. It behaves like a toggle button by default.
ALL
If this function active, value changes will be made for all selected tracks, layers and steps. This feature is very powerfull in conjunction with the step mutes, since it allows you to change all selected notes, CC numbers, gatelengths, etc. at the same time.
Note that the behaviour of this button can be changed in the setup file. In the setup_mbseq_v2 it behaves like a toggle button, in setup_mbseq_vintage it behaves like a push button.
F1-F4
These are user programmable buttons, the function has to be changed in the source code (seq_buttons.inc).
Following functions are assigned to the F buttons by default: F1: shortcut to the save menu F2: shortcut to step record menu F3: unmutes all tracks F4: mutes all tracks
It's planned to provide much more alternative functions for these buttons later (e.g. a randomizer, etc...)
MENU
press this button together with a GP button in order to jump to a menu page directly. The page assignments are documented here.
SELECT
in most menus this button is used to select the parameter (cursor position).
EXIT
use this button to exit the current menu page.
LEFT/RIGHT or Datawheel
used to increment/decrement the selected parameter.
SCRUB
if active, the sequencer position can be shifted with the datawheel (smoothly!). Currently only the forward direction is supported!
Note that the behaviour of this button can be changed in the setup file. It behaves like a push button by default.
METRONOME
if active, the note for a metronome click will be sent on every beat. The note event can be configured in the setup file (C#1 by default), the MIDI channel can be selected in the appr. menu page.
Note that the behaviour of this button can be changed in the setup file. It behaves like a toggle button by default.
STOP
stops the sequencer.
PAUSE
halts the sequencer until pause is pressed again.
PLAY
resets the pattern/song position and (re)starts the sequencer.
REW
decrements the song position (in song mode only) If not in song mode, this button can be used to decrement the menu value alternatively to the datawheel
FWD
increments the song position (in song mode only) If not in song mode, this button can be used to increment the menu value alternatively to the datawheel
Menus
These snapshots are self explaining, no? ;-)
However, I never found the time to complete the description, and with MIDIbox SEQ V3 they got obsolete...
Display Page
Mute Tracks
Patterns
Song
Track Events
Track Mode
Direction
Clock Divider
Track Length
Track Transpose
Track Groove
Layer Assignments
Track Shift
Manual Trigger
Record Steps
Morphing
This menu allows you to configure the morphing features of MIDIbox SEQ. The screen shows the target pattern (Pt), the morphing position which can be modified directly with the datawheel or with the modulation wheel of an external keyboard, the selected track and the morphing mode.
Smth stands for "Smooth morphing": Layer A, B and C (on Notes: Note number, velocity, gatelength - on CC: CC number, value and gatelength) are faded smoothly from one to another pattern with the data/modulation wheel.
Thrs stands for "Threshold morphing" which has been implemented especially for Note events (Drum patterns): Note and Velocity (Layer A and B) are switched to an alternative track once the morph position (controlled from the menu or with a modulation wheel) passes the so called threshold level of the played step.
The threshold can be set for each step separately in Layer C (normaly used for the gatelength). In other words: the threshold levels of every step are used to determine at which morphing level the sequencer should play the note from another track.
The gatelength itself is fixed in this mode.
BPM
Save Pattern
Metronome
MBSEQ Options
MIDI Configuration
The MIDI merger allows you to plug the MIDIbox and a keyboard to a computer w/o the need for a second MIDI In interface. Just plug the MIDI Out of your keyboard to the MIDI In of MIDIbox and the MIDI Out of the MIDIbox to the MIDI In of your computer.
If you connect the MIDI In of the MIDIbox with MIDI Out of your computer, you should disable the MIDI merger in order to avoid endless feedback loops.
If multiple MIDIboxes should be cascaded based on the MIDIbox Link concept, all MIDIboxes have to be declared as MIDIbox Link Forwarding Point...
except for the last MIDIbox which has to be declared as MIDIbox Link Endpoint.
Note: In this menu, you are also able to enable the MIDIbox-to-COM option with the SELECT button. Find more informations at the MIDIbox-to-COM Interface Page!
Send SysEx
In this submenu the device ID can be selected, and a SysEx dump of the current pattern can be triggered manually with the SELECT button. Note that the device ID won't be saved in the EEPROM memory, it will be derived from the MIOS device ID after power-on.
NOTE: This design is expired! In 2009 MIDIbox SEQ V4 has been developed which replaced the old version. See this page for more details.