Firmware version: 2.00
MidiALF user interface is composed of pages. Each page presents up to 8 parameters with abbreviated names and current values.
There are four types of pages: sequences tracks pages, sequence configuration pages, sequence step pages and command pages.
When MidiALF starts, the first page that is shown is the Note sequence track page. Rotating Encoder B will scroll through other sequence track pages as well as all the sequence configuration pages. You can quickly get to configuration pages and back by clicking Encoder B.
There are five sequence track pages: Note, Velocity, Gate, CC1 and CC2. These pages allow you to change step notes, their velocity, duration and step’s CC1/CC2 values by rotating the step encoder. In addition, each of sequence track pages has an extra toggle parameter: note page has step mute, velocity page — step skip, gate page — step legato, and CC pages have send/skip CC toggle.
Clicking step encoders 1-8 opens sequence step configuration pages where you can change step’s note, velocity and all other step specific parameters, like step play conditions, note re-triggering, randomization and more. Rotating Encoder B will scroll between step configuration pages and rotating Encoder A selects sequence steps.
Clicking Encoder A opens command pages where you can copy, rotate, randomize and perform other operations on the currently selected sequence. Rotating Encoder A selects the command. Clicking Encoder A again terminates command mode.
The switches on the left of the device are sequence switches A, B, C and D. Pressing any of these switches selects the corresponding sequence for viewing, editing and playing. If you need to view or edit a sequence that is not the sequence that is being played, press sequence switch while holding down the SHIFT key.
The switches on the right of the device are action switches. These switches allow you to run, save and load sequences. The lowest switch acts as a SHIFT key that alters operation of other switches and encoders which are operated while the SHIFT key is being held down.
Sequence track pages
C4 | C4 | C4 | C4 || C4 | C4 | C4 | C4 |mute| |mute|| |mute| |mute
Encoder A transposes all notes for all steps. Hold down SHIFT key to transpose in octaves.
Step Encoders transpose the corresponding step notes. Hold down SHIFT to transpose in octaves.
Step Switches mute step notes.
100| 100| 100| 100|| 100| 100| 100| 100 |skip| |skip|| |skip| |skip
Encoder A changes note velocity for all steps. Hold down SHIFT to transpose in tens.
Step Encoders change the corresponding step notes velocity. Hold down SHIFT to transpose in tens.
Step Switches skip sequence steps. Skipped steps are completely ignored, the sequence plays the next not skipped step. Note that definition of “next” varies depending on the sequence playback direction.
8th| 8th| 8th| 8th|| 8th| 8th| 8th| 8th lega| |lega| || | | |lega
Encoder A changes step’s notes duration for all steps.
Step Encoders change the corresponding step notes duration.
Step Switches toggle “legato” option for the step. Legato note plays until after the next note starts playing.
100| 100| 100| 100|| 100| 100| 100| 100 cc1| cc1| cc1| cc1|| cc1| cc1| cc1| cc1
Encoder A changes СС values for all steps.
Step Encoders change the corresponding step CC value.
Step Switches toggle “send” CC for the step. Note that if “send” is selected, the step’s CC will be sent event if the step’s note is muted.
Sequencer configuration pages
On these pages, rotating the step encoder changes the parameter value. The step switch action depends on the parameter value type:
- number – toggle between default and original value that was in effect when the configuration page was shown,
- note/CC# – “learn” the note parameter or CC# from MIDI keyboard connected,
- on/off setting or list of options – toggle setting or cycle through available values.
Configuration page 1
Chan|Temp|Step|Swng||Root|Tran|Xseq|Link 1 | 120| 8th|50.0|| C4 |note| imm| no
|Chan| – specifies sequencer MIDI channel, 1-16. This is the channel MidiALF receives and sends MIDI events on. Events on all other MIDI channels are passed through unchanged.
|Temp| – the sequence tempo from 25 to 250 beats per minute.
|Step| – the sequence step duration (from 64th to 2 bars).
|Swng| – the sequence swing value, from 0.1 to 99.9%. Default value of 50.0 means no swing.
|Root| – the root note of the sequence. Press the step switch to “learn” the root note. Root note is the note that the sequence is transposed relative to when a note is received while playing. Press the step switch to “learn” root note by playing it on the MIDI keyboard connected to MIDI IN.
|Tran| – the sequence transposition mode: none or on note on. If set to ‘note’, when a note is received on MIDI IN while playing, the sequence will be transposed in the direction and for the interval of the received note relative to the sequence root note. If set to ‘none’, sequence is not transposed and the received note is passed through. Useful if you want to play notes over the playing sequence.
|Xseq| – the sequence switch mode: immediate or on sequence end. If the latter is selected, pressing a sequence selection switch while playing will not change the playing sequence immediately. Instead, the the selected sequence will start playing when the current sequences plays to its end.
|Link| – the sequence link mode: 4×8, 2×16 or 1×32, allows you to chain sequences so that you have two 16 step sequence or one 32 step sequence.
Configuration page 2
Dir|Forw|Back|Repl||Itrv|Rept|Skip|Song forw| 0 | 0 | 0 || 0 | 0 | 0 | off
|Dir| – the sequence direction: forward, backward, pendulum or random.
The following 6 settings control non-linear sequence progression parameters borrowed from MIDIBox SEQ v4. Thank you, Thorsten, for allowing me to use these — they are lots of fun to play with!
|Forw| – how many steps to go forward before jumping back or replaying,
|Back| – how many steps to jump back,
|Repl| – how many times to replay the steps above,
|Intv| – interval for the repeat and skip parameters,
|Rept| – how many times to repeat the steps in the interval,
|Skip| – how many steps to skip after the interval,
|Song| – enables Song Mode in which MidiALF automatically plays sequences in the previously define order, specified number of times and with selected transposition, see Song Mode.
Configuration page 3
CC1| CC2|----|----|| Clk|COut|----|Strb 7 | 10 | | || int|wrun| | 1ms
|CC#| – the CC1 and CC2 numbers. Press the step switch below the parameter to “learn” the CC number by sending the Control Change message from a MIDI controller connected to MIDI IN.
|Clk| – the sequencer clock source, internal or external. Setting this to ‘ext’ allows you to sync MidiALF to external clock and transport commands. Note that sequence will not play if this is set to external clock and there is no MIDI Clock present at MidiALF’s MIDI IN.
|COut| – controls the sequencer’s MIDI clock related events output, which include MIDI Clock, Start, Stop, Continue and Song Position Pointer. Available options are:
- ‘none’ — MIDI clock related events are not sent to MIDI OUT
- ‘when running’ — MIDI clock related events are sent when the sequence is running
- ‘always’ — MIDI Clock events are sent even when the sequence is not running.
Set this to ‘when running’ or ‘always’ if you want to sync some other MIDI devices to MidiALF’s clock. These typically include other sequencers, arpeggiators, drum machines and rhythmic delays. However, if you don’t have any slave devices, setting this parameter to ‘none’ helps to tighten up output MIDI notes stream by eliminating MIDI Clock events.
Setting this to ‘always’ is useful when you are slaving modern sequencers with internal clock resolution higher than 24 PPQN. Such sequencers generate their internal clock by averaging the received MIDI Clock events period instead of just following them. Providing these devices with MIDI Clock before they are actually started helps to have them running smoothly on the clock they already locked to when the Start event is received.
|Strb| – gate strobe width, 1-5ms. Default value of 1ms works well with most devices however, some of the older ones may require longer strobes. This parameter is only available in /CV version of the firmware.
Configuration page 4
BnkM|BnkL|PgmC|----||PrgC|CtlC|----|---- -- | -- | -- | ||none|none| |
The first three settings allow you to select a bank and a program on the sound source that is controlled by MidiALF The Bank Select and Program Change messages are sent every time the sequence slot is loaded.
|BnkM| – most significant byte of bank number. (CC# 0)
|BnkL| – least significant byte of bank number. (CC# 32)
|PgmC| – Program Change number.
Press corresponding step switches to enable or disable sending bank select and program change messages.
|PrgC| – specifies if MidiALF will respond and send Program Change messages.
|CtlC| – specifies if MidiALF will respond and send Control Change messages.
CV and Gate configuration pages (/CV firmware only)
CV1| CV2| CV3| Cv4|| Gt1| Gt2| Gt3| Gt4 note|velo| cc1| cc2|gate |strb|lfo1|lfo2
|CV#| – specifies the CV# source. Available sources are:
- note – note pitch, 1V/Oct
- velocity – note velocity
- cc1/2 – CC1/2 value
- lfo1/2 – LFO1/2 value
- aftertouch — note or channel after touch value
- pitchbend — pitch bend value
Pressing the step switch below the CV parameter changes output CV range from 0-10V to -5+5V and back.
|Gt#| – specifies the Gate# source. Available sources are:
- Gate – gate is on when one or more notes are held, off when no notes are held
- Strobe – short pulse is sent every time a note is sent
- Clock – short pulse is sent along with 24 PPQN clock
- Start – the port is on when the sequence is running
- Sequence – short pulse is sent when the first step of a sequence is played
- lfo1/2 – shortt pulses are sent in sync with LFO1/2
Pressing the step switch below gate parameter changes the polarity of the gate signal.
LFO 1/2 configuration pages
LFO1| CC |Amnt|Cent||Rate|Sync|----|Reso none| 7 | 64 | 63 || 1b |free| | 64t
|LFOx| – LFO waveform, see Mutable Instruments MIDIPal CC LFO app for details
|CC| – LFO CC number. Press the step switch to “learn” CC number
|Amnt| – LFO amount
|Cent| – LFO center
|Rate| – LFO rate
|Sync| – LFO synchronization: free running, reset on start, on sequence start, or on sequence step.
|Reso| – LFO resolution. This parameter is common for both LFOs.
LFO implementation has been “stolen” from Mutable Instruments MIDIPal source code. Thank you Olivier, for generously sharing all your great work with us, it made projects like MidiALF possible.
Song mode configuration page
A:--|A:--|A:--|A:--||A:--|A:--|A:--|A:-- C4 | C4 | C4 | C4 || C4 | C4 | C4 | C4
The first row specifies the selected sequences and number of times to play them, up to 63. If number of times to play is displayed as ‘–‘, the song step is skipped. The second row specifies the transposition note. If this is set to the sequence root note, no transposition occurs.
Click Encoder A to toggle song mode.
Click the step encoder to select the song step. The selected song step is fully lit. Note that selecting the song step while the sequence is playing activates this song step, allowing you to change song step order on the fly.
Press the sequence switch on the left to select the selected step’s sequence.
Rotate the step encoder to set number of times to play the step’s sequence.
Press the step switch to “learn” song step’s sequence transposition note by playing it on the attached MIDI keyboard or by rotating the step’s encoder.
Step configuration pages
Step configuration pages are accessed by clicking on the step’s encoder and rotating the Encoder B.
Step configuration page 1
Note|Velo|Gate|Mute||Skip|Lega| CC1| CC2 C4 | 100| 16 | off|| off| off| -- | --
|Note| – step note.
|Velo| – step note velocity.
|Gate| – step note duration.
|Mute| – step note ‘mute’. If set to ‘on’, this step’s note will not be playing.
|Skip| – step ‘skip’. If set to ‘on’, step will be skipped.
|Lega| – step ‘legato’. If set to ‘on’, the step’s note Note Off event will be sent after the next step’s Note On event.
|CC1/2| – CC1/2 values. If set to ‘–’, the value will not be sent. Note that CC1/2 values are sent even if the step note is muted.
Step configuration page 2
Cond|CCC1|CCC2|Scle||RNot|RVel|RCC1|RCC2 -- | -- | -- |none|| 0 | 0 | 0 | 0
|Cond| – step note condition, see Conditions.
|CCC1/2| – step CC1/2 conditions.
|Scle| – step note randomization scale. If set to ‘none’, note randomization is chromatic in semitones, otherwise note randomization is in scale steps.
|RNot| – step note randomization. If set to N, a random number of semitones (or selected scale steps) in the range from 0 to N will be added to or subtracted from the step note value.
|RVel| – step note velocity randomization. If set to N, a random value in the range from 0 to N will be added to or subtracted from the step note velocity.
|RCC1/2| – step CC1/2 value randomization. If set to N, a random value in the range from 0 to N will be added to or subtracted from the step CC1/2 value.
Step configuration page 3
Trig|Velo|Tran|Scle||Cond|----|----|---- -- | 0 | 0 |none|| -- | | |
|Trig| – step note retrigger. If set to N, the step note will be played N times within the duration of the step. Please note that if set to a large value, the resulting ‘ratchet’ may exceed step duration.
|Velo| – specifies the velocity increment added to (if positive) or subtracted from (if negative) each re-triggered note velocity value.
|Tran| – specifies the number of semitones (or scale steps) to be added to (if positive) or subtracted from (if negative) each re-triggered note value.
|Scle| – step note transposition scale. If set to ‘none’, the step note transposition parameter specifies semitones. If set to a number, specifies the step note transposition scale and |Tran| value is interpreted as number of scale steps to transpose each note to.
|Cond| – step note re-trigger condition, see Conditions.
Command mode pages
In this mode first line one the page specifies the command associated with this page.
Click Encoder A to enter command mode. Rotate Encoder A to select a command page. Click Encoder A again to leave the command mode.
Copies currently selected sequence to another sequence. Press the blinking sequence switch on the left to select destination sequence.
Rotates steps of the currently selected sequence. Press the blinking step switch to make this step the first step of the current sequence. If the currently selected sequence is a linked sequence with 16 or 32 steps, use SHIFT+Seq switch to select the sequence part you are looking at.
Randomizes current sequence step notes according to the selected scale.
Rotate Encoder B to select the scale. Click Encoder B to randomize the entire sequence. Note that if the sequence has a 16- or 32-steps, than all steps in the sequence will be randomized, not just the ones displayed.
Rotate step encoder to select the next or previous note in scale for this step. Press the step switch to randomize this step only.
Initializes current sequence steps.
Click Encoder B to initialize the entire sequence. Note that if the sequence has a 16- or 32-steps, than all steps in the sequence will be initialized, not just the ones displayed.
Press the step switch to initialize this step only.
Send all 4 sequences in the selected slot as SysEx.
Rotate Encoder B to select the slot to send. Click Encoder B to send the selected slot.
Sysex all slots
Send all slots as a group of SysExes. Click Encoder B to start sending. Click Encoder B again to cancel sending.
Sysex note CVs tune data (/CV firmware only)
Send note CVs tune data as a SysExes. Click Encoder B to start sending.
Tune note CVs (/CV firmware only)
Click Encoder B to open Note CV Tuning page.
Note CV Tuning page (/CV firmware only)
By default, MidiALF pitch CVs are tuned to produce 1V/Oct scale. You can adjust the CV for each and every note to produce any CV value in the supported range.
Rotating Encoder A moves all CV values up or down. Clicking Encoder A allows to reset the entire tuning table.
Rotate Encoder B to select the range of notes you are viewing. Click Encoder B to leave Note CV Tuning page.
Save and Load pages
Snapshot of entire MidiALF state can be saved in one of the 64 memory slots for later recall. Saving and loading is fast enough to not to disturb playback if performed while playing.
Press Save switch on the right to save the current state. Rotate Encoder B to select target slot. Rotate Step 1 encoder to select slot name character and Step 2 encoder to move name character cursor. Click Encoder B to confirm save, or Step 8 encoder to cancel save.
Press Load switch on the right to load a previously saved state. Rotate Encoder B to select source memory slot. Loaded state will overwrite the current state of MidiALF.
Double click the Save switch to quickly save the current state in its memory slot.
Double click the Load switch to quickly load the saved state from its original slot, thus reverting all the changes made since it was loaded.
Conditions allow you to specify conditions that allow something to happen (or not to happen) during sequence playback. For example, adding condition to a step note will define if this step note will be played each and every time or not. Same for CC value to be sent, or step note retrigger to occur. This adds a controlled or random variance to certain aspects of the sequence playback, allowing you to create more dynamic sequnces.
MidiALF Conditions are fully modeled after famous Elektron’s Trig Conditions. Whoever invented them at Elektron is a genius. This invention made the whole concept of sequencing a lot more interesting musically. Thank you, Elektron!
Here are all the conditions available in MidiALF:
|SHF| – SHIFT key is pressed. Allows you to use SHIFT key to control conditioned events. For example, play a step note only when the SHIFT key is pressed.
|!SHF| – SHIFT key is not pressed Allows you to use SHIFT key to prevent conditioned event from occurring.
|PRE| – triggers if previous condition evaluated since the start of the sequence was triggered. Allows you to chain conditioned events. For example, if the previous random note has played, the one with PRE condition will be played too.
|!PRE| – triggers if previous condition evaluated was not triggered. Allows you to chain conditioned events in an inverted manner. For example, if the previous random note has played, don’t play this one.
|1ST| – conditioned event occurs only when the sequence is played for the first time.
|!1ST| – conditioned event occurs only when the sequence is played for the second, third and all other times.
|M:N| – conditioned event occurs on Mth out of N plays of the sequence . For example, if set to 1:4, the event will occur when the sequence is played first out of four times only. Often used to add or remove notes on each second (2:2) or fourth (4:4) repetition of a sequence. Fun with uneven settings like 1:3 or 2:5 applied over 4 repetitions patterns.
|NN%| – conditioned event occurs randomly with probably of NN percents. For example, if sequence is played 100 times, the event will occur approximately NN times, evenly distributed over 100 times. Following NN% with PRE conditions is a common way to add random animations to a sequence.
Sequence recording mode
Press SHIFT+RUN to activate sequence recording mode. Press SHIFT+RUN again to activate.
While in sequence recording mode, MidiALF records incoming notes, their velocity, legato and CC1/2, advancing sequence steps automatically.
MidiALF “song” is composed of up to 8 steps, each playing a selected sequence specified amount of times with the given transposition.
When song mode is enabled, MidiALF will automatically advance to the next song step when the previous step finishes playing specified amount of times.
When on the Song page, if step encoder is clicked while playing with the song mode enabled, the clicked step will start playing, thus allowing you to manually override sequence playback order. The same will happen if the song mode is disabled, thus allowing you to use Song Page as a performance controller where you manually select sequence and transposition note to play with a single click.
SHIFT+Encoder A – show note page.
SHIFT+Encoder B – silence all notes. Useful if you have stuck notes.
SHIFT+SeqX – changes viewing/editing page while keeping the playing page,
SHIFT+RUN – toggles sequence recording mode.
SHIFT+Encoder – rotation increases the step by 10 or 12 if note parameter is selected.
Double click Save Seq switch to quickly save the current sequence into its original slot.
Double click Load Seq switch to quickly load the current sequence from its slot discarding all changes made since it was last loaded.
Hold down Encoder A while powering up MidiALF to enter firmware update mode.
Hold down Encoder B while powering up MidiALF to force full device initialization.
Control Change messages
MidiALF recognizes the following control messages:
|108||0-3||Set link mode|
|109||0-20||Set step length|
|110||> 0||Increase tempo|
|111||> 0||Decrease tempo|
|112||BPM / 2||Set tempo|
|113||> 0||Toggle run mode|
|114||> 0||Stop sequencer|
|115||> 0||Start sequencer|
|116||> 0||Toggle recording mode|
|117||> 0||Stop recording|
|118||> 0||Start recording|
|119||0-1||Set sequence switch mode|
System exclusive message format
[TBD] See source code for now…
MidiALF firmware update steps:
- Backup your sequences to sysex file using Sysex All Slots command.
- Connect your MIDI interface output to MidiALF MIDI IN
- Power on MidiALF while holding down the Encoder A. MIDI LEDs will blink shortly then MIDI IN LED will stay steadily lit. The display will remain blank or contain a line of box characters.
- Send firmware update sysex file (*.syx) to your MIDI interface port with 250ms delay between sysex buffers. Elektron’s C6 works great on OS X and Windows. Classic MIDI-OX is also good on Windows. MIDI LEDs will be blink while firmware sysex is being received.
Firmware update takes a couple of minutes, MidiALF will automatically reset when the update is done. Check the version number display on MidiALF startup page.
Most firmware updates do not require MidiALF memory to be reset. However, if you don’t find your sequences after a firmware upgrade, reset the device and restore its state by sending the sysex back up you created at step 1 to MidiALF MIDI IN.
Power on MidiALF while holding down Encoder B to reset it to initial state. Note that this will wipe out device memory without any confirmation. Use this to restore MidiALF operation as the last resort.