MidiREX Reference

User interface

MidiREX UI is a set of pages. Rotate encoder to select a page. Click encoder to enter page parameters editing mode. While in this mode, press SW1-4 to select parameter to change and use encoder to set parameter value.

MidiREX_ctrl (small)

A – RUN switch
B – REC switch
C – Track switches
D – SEL switch
E – Encoder
F – DC connector
G – Power switch
H – 3.5mm footswitch connector
I – MIDI IN connector
J – MIDI OUT connector


RUN switch toggles playback.

SEL+RUN toggles song mode. The LED above the SEL switch is fully lit on when MidiREX is in Song mode.

REC switch toggles recording and executes action on some pages. When recording a track the LED above the track switch is blinking with the beat. When recording a song the LED above SEL switch is blinking with the beat.

SEL+REC initializes currently selected track after confirmation.

SW1-4 toggle track mute when on the Main and Note Part Selector pages. On other pages SW1-4 select parameters. The selected parameter appears in square brackets.

SEL+SW1-4 selects current track. The currently selected track LED is fully on. When recording, the incoming MIDI events are stored on the currently selected track.


Encoder click toggles parameter editing mode.

SEL+Encoder click enters part or song name editing mode when on the Main page.

Encoder rotation selects user interface page or changes parameter value when in parameter editing mode. If SEL is held down while rotating the encoder, the parameter value is changed in decade or octave increments.

Double clicking on the encoder activates Main page.

Main page

01 LongPartName
1:1 of 16   120

SW1-4 toggles track mute. The muted track LED is off.

SEL+SW1-4 selects current track. Currently selected track LED is fully on.

Clicking the encoder toggles parameter editing mode. While in this mode pressing SW1 selects part or song name.

1:1 of 16   120

Encoder rotation while in parameter editing mode selects part if MidiREX is in part mode or song if song mode is in effect.

SEL+Click the encoder while part or song name is selected for editing enters name editing mode. In this mode you’ll see a blinking cursor. Use SW1 and SW2 to move the cursor, SW3 to insert a character, SW4 to delete a character. Rotate the encoder to change the character at the current cursor position.

Pressing SW4 selects part  or song tempo. Repeatedly clicking SW4 with the beat will automatically set the desired tempo (‘tap in tempo’).

01 LongPartName
1:1 of 16  [120]

Track length page

Track length
 8   16  4   32

SW1-4 selects a track to change the length for. Rotating encoder changes track length.

Note that track length is a logical value which is independent from the events recorded on the track. Any track (including an empty one) can be set to any length without affecting the track’s events. For example, track with full 8 bars of events can be set to be just 4 bars long so that only first half will be played back, or, if you set its length to 16 bars, it will be silent half the time.

Track length
[8]  16  4   32

Clicking the encoder toggles track length editing mode.

Track channels page

Track channels
 1   2   3   4

SW1-4 changes track channel. If track channel is set to OMNI (‘–‘), the track events will be sent to MIDI OUT with the original channel they were received on. This setting is useful when merging several tracks into one if you want the resulting track to play event on the original MIDI channels and for MPE (MIDI Polyphonic Expression) controllers support.

Track channels
[--] 2   3   4

Clicking the encoder toggles track channel editing mode.

SEL+Clicking the encoder saves current track channel configuration as default. Uninitialized parts will automatically assume default channel configuration. Pressing and releasing SEL switch with no other switches pressed restores default track channel configuration for the currently selected track.

Track transpose page

Track transpose
 on on on on

SW1-4 changes track transpose mode: if set to ‘on’, note events received on MIDI IN while playing will transpose this track notes relative to the part’s root note (see below). Disabling track transposition is useful for drum tracks.

Clicking the encoder toggles track transposition settings editing mode.

Track recording page

Track recording
 rx rx rx rx

SW1-4 changes track recording mode: if set to ‘rx’, the corresponding track will record MIDI events on the device’s global MIDI channel (the one set on the “MIDI RX Channel” page).

If set to ‘tr’, the corresponding track will record MIDI events on the MIDI Channel associated with the track (this is the one set on the “Track Channels” page). If the latter is set to OMNI (‘–‘), the track will record on all MIDI channels — this is useful for MPE (MIDI Polyphonic Expression) controllers.

Part root note page

Part root note

SW1-4 enters part root note editing mode.

If currently selected track is not muted or empty, note events received on MIDI IN while playing will transpose part relative to the selected root note. If note event is received while part root note parameter is selected for editing the part root note is set to the received note (‘MIDI note learn’).

Clicking the encoder toggles part root note editing mode.

Part switch mode page

Part switch mode
 on next beat

SW1-4 cycles through part switch mode options: immediate, on next beat, on next bar, on part end.

Clicking the encoder toggles part switch mode editing.

Start recording page

Start recording
 on command

SW1-4 cycles through start recording options: on command, on track start, on track end. These affect recording start only during playback and have no effect if recording is started while MidiREX is not running.

If recording starts at track start, all the existing events in track will be overwritten. If recording starts at track end, the new events will be appended to the end of the track, extending tack length.

Clicking the encoder toggles start recording mode editing.

Stop recording page

Stop recording
 on command

SW1-4 cycles through stop recording options: on command, on track end, on part end.

Clicking the encoder toggles stop recording mode editing.

Quantize note page

Quantize note
 8th  100%  off

SW1-2 selects quantization grid parameter: note position will be moved towards the closest grid measure.

SW3 selects quantization strength parameter: if set to 100% note positions will be moved exactly on the selected grid measure, if set to 50% they will be moved half way.

SW4 toggles ‘quantize-while-recording’ mode.

Press SEL+REC to quantize notes on the currently selected track. When prompted, press SW3 to confirm quantization or any other switch to cancel operation.

Quantize length page

Quantize length
 8th   100%  off

SW1-2 selects quantization grid parameter: note lengths will be adjusted towards closest grid measure.

SW3 selects quantization strength parameter: if set to 100% note lengths will be adjusted exactly on the selected grid measure, if set to 50% they will be adjusted half way.

SW4 toggles ‘quantize-while-recording’ mode.

Press SEL+REC to quantize all note lengths on the currently selected track. When prompted, press SW3 to confirm quantization or any other switch to cancel operation.

MIDI RX channel page

MIDI RX channel

SW1-4 selects MidiREX global MIDI channel. This is the channel MidiREX receives its commands on. This is also the channel the tracks record on unless track recording is set to record on the track channel, see ‘Track recording’ page.

Clicking the encoder toggles receive MIDI channel editing mode.

MIDI RX filter page

MIDI RX filter
 PC  CC  at  ex

SW1 toggles program change events filtering.

SW2 toggles control change events filtering.

SW3 toggles after touch events filtering.

SW4 toggles system exclusive events filtering.

Clicking the encoder toggles MIDI receive filter editing mode.

Lowercase parameter value means events are filtered: they will not be recorded or passed to MIDI OUT.

Note that MIDI event filtering affects only events received on selected MIDI receive channel.

MIDI clock page

MIDI clock

SW1-4 toggles MIDI Clock source setting: internal or external.

Clicking the encoder toggles MIDI clock source editing mode.

MIDI ctrl change page

MIDI ctrl change

SW1-4 changes MidiREX control change messages handling to: none, receive, send, both. For the list of recognized control messages see “Advanced features” section.

Clicking the encoder toggles MIDI control change editing mode.

Click mode page

Click mode
 when recording

SW1-4 cycles through click mode options: none, precount only, when recording, when running.

Clicking the encoder toggles click mode editing.

Click note page

Click note velo
 F4   80  ch:10

SW1-2 selects click note parameter. Rotate the encoder or play a note into MIDI IN to set the click note (‘MIDI note learn’).

SW3 selects click note velocity parameter. Rotate the encoder or play a note into MIDI IN to set the click note velocity (‘MIDI note velocity learn’).

SW4 selects click note channel.

Press RUN switch to send click note to MIDI OUT.

Press REC switch to send louder (strong beat) click note to MIDI OUT.

Clicking the encoder toggles click note parameters editing mode.

Click bars page

Click bars

SW1-4 selects number of bars to play click sound before recording starts. If click bars count is set to ‘off’ recording will start immediately.

Clicking the encoder toggles parameter editing mode.

Foot switch 1/2 page

Foot switch 1

SW1-3 selects foot switch action: none, toggle run, toggle record, switch to next part, and switch to previous part.

SW4 selects footswitch 1 or 2.

Foot switch 2

Clicking the encoder toggles footswitch parameter editing mode.

Both normally open and normally closed momentary switches are supported. The normal state is read when MidiREX is powered up. If your pedal action seems reversed, make sure it is connected and not stepped on when MidiREX is being powered up.

Merge page

This page merges one track into another combining all events in both tracks into resulting track, similar manner to track bouncing used in multitrack recording. Note that resulting track may contain events on different MIDI channels and if its track channel is set to OMNI (‘—‘) that track will play more than one MIDI channel.

Merge track
01 LongPartName

SW1 selects part with source or destination track. Rotate the encoder to select the part.

SEL+SW1-4 select tracks to merge.

Step by step procedure:

  1. Select source track part by pressing SW1 and rotating the encoder
  2. Select source track by pressing SEL+SW1-4
  3. Press REC switch
  4. Select destination track part by pressing SW1 and rotating the encoder
  5. Select destination track by pressing SEL+SW1-4
  6. Press REC switch
  7. Press SW3 to confirm merge action, or any other switch to cancel operation.

If the source track is already selected steps 1 and 2 are not required.

Move track/part/song page

This page moves selected track, part or song to another location. Original item becomes empty.

Move track
01 LongPartName

SW1 selects source part or song. Rotate the encoder to select the part or song.

Move track

SW2-4 selects item to move: track, part or song.

01 LongPartName
01 LongPartName
01 LongSongName

SEL+SW1-4 selects track to move (if moving track).

Step by step procedure:

  1. Press SW2 to select item type
  2. Select source part or song by pressing SW1 and rotating the encoder
  3. Select source track by pressing SEL+SW1-4 (only if moving track)
  4. Press REC switch
  5. Select destination part or song by pressing SW1 and rotating the encoder
  6. Select destination track by pressing SEL+SW1-4 (only if moving track)
  7. Press REC switch
  8. Press SW3 to confirm move action, or any other switch to cancel operation.

If the source item is already selected steps 2 and 3 are not required.

Copy track/part/song page

This page copies selected track, part or song to a new location. Original item is not changed.

Copy track
01 LongPartName

SW1 selects source part or song. Rotate the encoder to select the part or song.

SW2-4 selects item to copy: track, part or song.

01 LongPartName
01 LongPartName
01 LongSongName

SEL+SW1-4 selects track to copy (if copying track).

Step by step procedure:

  1. Press SW2 to select item type
  2. Select source part or song by pressing SW1 and rotating the encoder
  3. Select source track by pressing SEL+SW1-4 (only if copying track)
  4. Press REC switch
  5. Select destination part or song by pressing SW1 and rotating the encoder
  6. Select destination track by pressing SEL+SW1-4 (only if copying track)
  7. Press REC switch
  8. Press SW3 to confirm copy action, or any other switch to cancel operation.

If the source item is already selected you may skip steps 2 and 3.

Send track/part/song/all page

This page sends selected track, part, song or all parts and songs to MIDI OUT as system exclusive message for backup purposes. The resulting sysex may be sent back to MIDI IN to restore the data it contains.

Send track
01 LongPartName

SW1 selects source part or song. Rotate the encoder to select the part or song.

SW2-4 selects what to send: track, part, song or all parts and songs.

01 LongPartName
01 LongPartName
01 LongSongName

SEL+SW1-4 selects track to send (if sending track).

Step by step procedure:

  1. Press SW2 to select what to send
  2. Select part or song by pressing SW1 and rotating the encoder
  3. Select track by pressing SEL+SW1-4 (only if sending track)
  4. Press REC switch to start sending sysex message.

Init track/part/song/all page

This page initializes selected track, part, song or all parts and songs on the device.

Init track
01 LongPartName

SW1 selects part or song. Rotate the encoder to select the part or song.

SW2-4 selects what to initialize: track, part, song or all parts and songs.

01 LongPartName
01 LongPartName
01 LongSongName

SEL+SW1-4 selects track to initialize (if initializing track).

Step by step procedure:

  1. Press SW2 to select what to initialize
  2. Select part or song by pressing SW1 and rotating the encoder
  3. Select track by pressing SEL+SW1-4 (only if initializing track)
  4. Press REC switch to perform initialization.

Song editor page

This page allows you to manually specify currently selected song steps.

1 of 8 C4  12
01 LongPartName

Click encoder to enter parameter editing mode. While in this mode:

SW1 selects song step.

SW2 selects song step count.

SW3 selects song step root note: the step’s part will transposed to this note when playing. If a note event is received on MIDI IN the step’s root note will be set to that note (‘MIDI note learn’).

SW4 selects step repeat count: the step’s part will be played this many times.

SEL switch selects step’s part, Rotate the encoder to change it.

In normal mode SW1-4 toggle step’s part tracks mute.

Event editor page

This page allows you to view currently selected track events. Click encoder to select the event.

 1:1.0   Note 01
 C#2 76  0.16

SEL+SW1-4 selects current track.

Clicking the encoder toggles event selection mode.

Event editing is not implemented in the current version of the firmware. Future versions will allow track event editing.

Note part set page

This page allows you to quickly switch parts by playing notes into MIDI IN. Here’s the idea: you select base note and part and when the base note or any note above it is received the base part (or consecutive part relative to the selected base part) is loaded. Notes below base note are handled as normal notes, only base note and the notes above it cause part switching.

Part set: C6
01 LongPartName

Note that part switching can be quantized to the next beat, bar or part end, see ‘Part switch mode’ page above.

To change base note or part, click encoder to enter parameter change mode. In this mode:

SW1 selects base part. Rotate the encoder to change it.

Part set: C6

SW2-4 selects base note. Rotate the encoder to change it, or play a note into MIDI IN to ‘learn’ the base note.

Part set:[C6]
01 LongPartName

If page is not in parameter change mode, pressing SW1-4 toggles track mute, just like on the Main Page.

Press REC to start song recording. The LED above SEL switch will blink with the beat. Change parts by playing notes above the base note, play notes below the base note to transpose the part, mute part tracks by pressing SW1-4 – all these actions will be recorded in the currently selected song steps along with the number of times each step part has been played by MidiREX.

Switch part set page

This page allows you to quickly switch between up to 4 parts by pressing SW1-4. The base part will be loaded on SW1, the part next to the base part on SW2 and so on.

Part set: SW1-4
01 LongPartName

Click the encoder to select the base part.

Part set: SW1-4

Note that part switching can be quantized to the next beat, bar or part end, see ‘Part switch mode’ page above. When there is a pending part switch request LED above the new part switch is blinking.

Press REC to start song recording. The LED above SEL switch will blink with the beat. Change parts by pressing SW1-4, play notes to transpose the current part – all these actions will be recorded in the currently selected song steps along with the number of times each step part has been played by MidiREX.

Advanced features

Control Change messages

MidiREX recognizes the following control messages:
105track indexToggle track mute

CC Value Action
102 > 0 Clear all tracks
103 track index Clear track
104 > 0 Pause clock
106 track index Select track
107 part number Switch to part
108 > 0 Switch to previous part
109 > 0 Switch to next part
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 Clear selected track

Sysex data format

Sysex message format:

0xf0, // Sysex
0x29, // PPG manufacturer ID
'R','E','X',0x00, // REX Product ID
// * Command byte (SysexCmd)
// * Argument byte (flags | index)
// * Payload bytes (nibbelized)
// * Checksum byte (nibbelized)
0xf7 // Sysex end

Sysex message commands:

0x01 // Track data: cb, trk info, length, data[]
0x02 // Part data: cb, part name, tempo, root note, info
0x03 // Song data: cb, song name, tempo, step_count, step data[]
0x04 // Memory dump: cb, version, dump data[]
0x11 // send track request, argument specifies track number (0x7f for current track)
0x12 // send part request, argument specifies part number (0x7f for current part)
0x13 // send song request, argument specifies song number (0x7f for current song)
0x20 // send all parts and songs request
0x21 // send memory dump request

See firmware source code for track and song data format details.

Firmware update

MidiREX firmware update steps:

  1. Backup your parts and songs to sysex file using Send All page
  2. Connect your MIDI interface output to MidiREX MIDI IN
  3. Power on MidiREX while holding down the encoder. 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.
  4. 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, MidiREX will automatically reset when update is done. Check the version number display on MidiREX startup page.

Most firmware updates do not require MidiREX memory to be reset. However, if you don’t find your parts and songs after firmware upgrade, please restore them by sending the sysex back up you created at step 1 to MidiREX MIDI IN.

Device reset

Power on MidiREX while holding down SW1, SW3 and SEL to reset it to initial state. Note that this will wipe out device memory without any confirmation. Use this to restore MidiREX operation as the last resort.

105 thoughts on “MidiREX Reference

  1. Looking forward to using the event editor function!
    Question about midi receive: Would it be possible to add an option to record midi on all channels (not necessarily simultaneously)? I’m using MidiREX to send midi to a couple of synths and each time I want to record a new phrase for a different synth, I have to manually change the MIDI RX channel.

    • You can just set MidiREX to the same channel as your MIDI controller connected to MidiREX’es MIDI IN and set individual track MIDI channels to the MIDI channels your synths receive on. Then selecting a current track will elt you play and record the target synths track.

      • Thanks! I tried this before with no luck; What I had missed was that the MidiREX and the controller were not set to the same channel set. Works now..!

  2. I must say that this is a very handy and useful device. Great work, Peter!

    Hence, another feature request: A (global) setting for transposing to affect ONLY the currently selected track. Why?
    A) This way you could, for example, create quick melodic variations here and there by simply pressing the keys – and without affecting everything else.
    B) It would also help arrange / change the “scene” after it has been recorded: for example, 2 tracks 1 octave down and 1 track 17 semitones up, etc.
    C) Yet another reason is that transposing the recorded tracks with just playing on a master keyboard is so convenient and easy, it could be put into further use. I’ve had many nice accidents with it.

    (Btw. I am aware that transposing can be turned on/off per track, and that the upcoming Event Editor would partly resolve the “problem”.)

    • I’m a bit confused: are you asking for on-the-fly transposition (i.e. temporarily transpose selected track only while playing) or destructive transposition that would permanently transpose track notes?

      • I think I was mostly thinking about on-the-fly transposition (point A). Perhaps so that there is a “transpose per track” page somewhere for more deliberate controlling of transposing (point B). But now that you asked, it would be very nice if the current transposing settings for the tracks could be applied destructively as well.

        —> So, there could be two different kind of transposing:
        1) “Temporary”: Tracks would be transposed via the keyboard on a per track basis non-destructively. (Usually done via a master keyboard.)
        2) “Permanent”: The “temporary” transposing settings for each track could also be applied destructively afterwards (all 4 tracks at once). After doing so, the temporary transpose settings for each track would be cleared (=0 st.) – to avoid doubling the transposing. (This “permanent transposing” could be done, for example, in a “Transpose Per Track” -page, so you could see all the transposing settings per track before applying them destructively.)

      • I believe (1) is already done. (2) may be implemented with Transpose page where you will have +- semitones settings for each track, pressing REC will apply selected transposition.

  3. (1) I’m talking about an option to transpose only the selected track, whereas now all 4 tracks (even on different midi channels) are transposed when hitting a key – which is good for other uses. Or am I missing something again?
    (2) Great to hear!

  4. Powered up my Rex last night and it works perfectly 🙂
    I think I need to build an Alf now!
    thanks for the fine projects,

  5. Another MidiRex comes alive! Built mine yesterday while watching football, good instructions. Working great! What’s IC2 spot for? I noticed there’s only one on the BOM and in the pic from the build instructions. I thought I was short a part but works fine without it. On to the MidiAlf after I build my first Shruti.

  6. this looks very interesting, a pity the memory is so small and it’s only 4 track. it seems like an ideal follow up and sidekick to my trustee mmt-8. i have some questions i cannot figure out from the given informations: how does the unit behave in recording mode – is it possible to record a loop, then in the next cycle i record on the same track again and the unit is merging my recorded notes? that would be awesome. or – is it possible just to change the selected track and merge these together later? and furthermore, does it have functions to merge different midi channels to one track and maybe even extract a single channel to another track? it would also be cool to build several of these units and link them up via midi so that optionally they are synced in pattern changes, that way several units could be built for having more tracks, while they behave in a live pattern performance “like one”. ah yes, and how to switch parts without messing things up, is it possible via a midi keyboard or CC, so i can use the pads on a beatstep to switch between 16 different patterns? +1 / -1 by footswitch is very cumbersome if you have songs with many parts, also menu diving and encoder turns for pattern changes are not really a good thing to do in a live performance.

    • When recording on the existing track, MIDI events are either replaced or appended, depending on where recording begins. If you need to record on top of the existing MIDI events, you need to record on different thread. Yes, you can merge several track into one track merging all the events. When merged, MIDI events preserve their channel. When played back, you can choose to override event’s MIDI channel with track’s MIDI channel, or play them back as is on the original MIDI channels. There is no function to split track by MIDI channel.

  7. You can hook more than one MidiREX to MIDI splitter (MidiThru works great for this) and feed them the same MIDI Clock, Start/Stop and Program Change commands — they will all play in sync thus extending number of available channels.

  8. Hi there, I got a problem, Im trying to update the firmware, but if I power it on while holding down the encoder I don’t get anything differently on the screen then if i simply power it on. So how to proceed?

      • Is there some way to have the track lengths be remembered when you initialize the track or is there some other way to clear the data?

      • When I play live (techno), I usually want predefined track lengths. It’s better for them to be different but 1 synth, for example, might always be a 1 bar seq. initializing the track clears it and works fine, but there is an extra step to go in and change the length. I am having other issues with the one I bought though. It drops notes and seems erratic on the midi output. It also forgets everything when it’s turned off. Is there a save command or is it supposed to just store it automatically?

      • There is no save command, recorded material and settings are saved automatically. When the unit is switched off, the memory is backed up by the on-board battery, so if you unit loses its memory you need to check the battery.

        Erratic MIDI output: please contact me using the email found in the ordering section and we’ll try to figure out what’s going on.

        Initializing track versus clearing track — thank you for explanation, i’ll check what can be done.

  9. Can someone explain what the different quantize options are? Cycling through gives me x, xt, xth, xd for each 2, 4, 8, 16, 32 etc. “th” I understand but what are the others?

    • k64tNoteTicks = 1; // 64th triplet
      k32tNoteTicks = 2; // 32nd triplet
      k32ndNoteTicks = 3; // 32nd
      k16tNoteTicks = 4; // 16th triplet
      k16thNoteTicks = 6; // 16th
      k8tNoteTicks = 8; // 8th triplet
      k16dNoteTicks = 9; // 16th dotted
      k8thNoteTicks = 12; // 8th
      k4tNoteTicks = 16; // 4th triplet
      k8dNoteTicks = 18; // 8th dotted
      k4thNoteTicks = 24; // 4th
      k2tNoteTicks = 32; // 2nd triplet
      k4dNoteTicks = 36; // 4th dotted
      k2ndNoteTicks = 48; // 2nd
      k1btNoteTicks = 64; // 1 Bar triplet
      k2dNoteTicks = 72; // 2nd dotted
      k1bNoteTicks = 96; // 1 Bar
      k2btNoteTicks = 128; // 2 Bar triplet
      k15bNoteTicks = 144; // 1 Bar dotted
      k2bNoteTicks = 192; // 2 Bars

  10. So, as I understand it (as a potential user), the notes may be left unquantized but the length of each loop must be quantized to full bars? Is this right? Is it possible to start record with a command and end record with a command and thus determine loop length?

      • Thanks for speedy reply. So MidiRex can perform as 4 independent real time loopers, each like an audio looper, except the data is midi? What would the track length parameter do in this case? Could individual tracks be triggered independently via midi?

      • Track are not independent, they play their own set of notes on their set channels. The total length of a loop is defined by the length of a longest track. Shorter tracks are repeated inside the loop, so, for example, if you have Track1 4 bars long, Track2 2 bars long and Track3 1 bar long, the loop will be 4 bars long and Track1 will play once, Track2 twice and Track3 4 times for each loop. You can also set loop length manually to be longer or shorter than longest track length.

  11. Thanks.
    I’m starting to understand, I think…
    If track lengths are set via command, are those commands necessarily quantized. Meaning – can track lengths be unquantized?
    If so how is looping calculated?
    Is there a maximum track length?
    I had 3 tracks and the second was longer than the first and the third was longer than the second, then before adding a fourth track the looping would be based on the length of the third track… could I then add a very long 4th track, maybe empty, to control how the tracks repeat against each other?

    • Track lengths are quantized down to a beat. Track length is limited by the memory, tracks with sparse events can be very long (64K 96PPQN ticks). Yes, you can add long 4th track to specify loop length. If it’s empty, you can just set loop length manually.

      The idea is — you played bass line, for example 8 bars, then, while having them playing, played pads on top, ending recording right after 4 bars… your sequence is now 8 bars long with pads repeating every 4 bars. After that you played a melody line on top of all which is 32 bars long, so now you lave 32 bar long loop. Now you copy this sequence into a next slot, and while having it played, silence the melody line, then replace the bass line with a fancier variant, then add a snappy sequence on track 4, then play another melody variant on track3, save it, go to slot 1 to play the original melody line… now you put this all into a song, so that sequence transitions are automated.

      I should really make a video one day, similar to the one i did for MidiSeq, answers lots of questions 😉

  12. Midirex is looking very interesting. I have a question about recording overdubbing, though: What happens when I hit record on a track that already has some notes recorded to it, will they be erased or will the new notes added to them? I’d prefer the latter but if that isn’t the case, I should be able to “oberdub” with merging tracks, correct?


  13. I just finished building a fabulous MidiGal and a fabulous MidiRex, they work great.
    I just wanted to ask if there are any plans to expand the memory on the Rex.

  14. Hello Pete, I think I found a little bug…
    I’m trying to control the Rex from an external midi footboard, when I send the CC to “switch to next part” and “switch to previous part” the part does change, however the display does not. For example, if I switch from part 1 to part 2, the midi events change but the display keeps showing “Part 1” even though what is actually playing is “Part 2”. Can you verify if this is a bug or something on my end?
    Thanks I’m really enjoying the Rex, its perfect for my needs!

  15. Hello, I just finished my midrex and have a user question.

    I use a novation remote 25 keyboard to control synths (notes and cc) and it’s templates are allowing me to switch between one synth receiving on midi channel 1 and another one on channel 2. I intent to use the midirex as a live looping device and while recording it seems that I have to choose a unique channel to talk to the midirex (“midi rx channel”) and let the midirex do the playback to channel 1 or channel 2 according to the setting of the track i’m recording in.

    1) I understood that i could set “Tracks channels” to “–” to have a kind of channel learn : for exemple having my template playing on Channel 2 and the midirex playing back the loop to that same channel. Currently with “MIDI RX channel” set to 1 and “Tracks channel” to “–” it’s not working, the midirex does not playback the loop, as if i did not entered any notes. Changing “MIDI RX channel” to 2 is working.

    2) I also figured that it’s possible to change the root note during the gap while the midirex does the loop : it’s a nice trick to use with an arpeggiated synth as it changes the note of the arpeggio, it also transposes the notes of the loop. But this can be a problem as it also can happen when not wanted (in this case it’s not the “MIDI RX channel” that dictates witch channel enters notes). Also all of this seems erratic : to play-back the loop with the original root note i need to randomly press all notes on the keyboard, sometimes pressing to many keys stops playback.

    I hope my message is clear enough.

    Thanks a lot

  16. Is it possible to record midi on a empty track and that the lenght is fixed when I hit stop? Or do I have to setup the length before?

    • Recording on an empty track with its length defined when you stop recording is the default operation mode. You can also specify length in advance so the recording will stop when track end is reached. In addition, you can change track length after recording is finished (this is not changing recorded notes in the track, so you can shorten the track to play less notes, then increase length to play all recorded notes).

  17. Hi peter,
    I have a couple of questions regarding the midirex:
    1) Internal and external clock. I have set the clock to internal and it records fine, but when I set it to external (using a Behringer BCR200 with Zaquencer software as the master) the Midirex doesn’t record anything. ANy ideas why this might be?
    2) I use a sustain pedal for the recordings, but when it is playing back the sustain is not recorded, and the sustain pedal will affect the playback as well as anything I play live. Is there a way to have the sustain recorded and played back, and for the sustain to not affect the recorded notes?

  18. Hi, I had MIDIrex running perfectly, plugged in and out with other midi instruments : keyboard and sampler. When I copied a track to another song, while it was playing in the background, it create a midi larsen, my synth was squaking and glitching, glitch at the midirex screen too, I had to restart and now midi rex lights on but with a blank screen ! what should I do . It’s the first time I was playing with the midirex and more than 1 MIDI instruments plugged in … nightmare !

      • thanks for your quick answer ! thanks so much ! Now it works … but I’ve lost all my tracks.
        How can I recover them ? If there’s no way, how can I save them ? via sysex ? thanks

      • After device initialization all the tracks are lost. You cannot restored then unless you previously backed them up to a computer using sysex.

  19. I have some problems with my actual sequencer working in loop mode. The first beat notes are played back like it where cutoff. It happens when I recorded it just behind the first beat. For example in a 4 bars loop, if I record a note on time 4:4:478 (assuming a hole bar is 4×480) and pretending to play the note on 0:0:000 with a lenght of 0:1:000, what I obtein after the sequencer quantize the note is a 0:0:002 length note in 0:0:000 position.
    Obviously I am not gonna hit the 0:0:000 position ever, and I can´t always force to play after the fist beat, so it quantize backwards with the hole length.
    ¿Do the midirex record in the same way? I mean is he going to catch the hole message/lenght of a midi note that is near/just behind to the one beat or is he going to cut the length by playing it back because that sound is OFF the loop.
    Hope u have understand me.

    • I think i do. however, it’s hard to reproduce. Do you think it would be possible to record the actual notes you are playing into a software sequencer and play them back into MidiREX to make sure we’re talking about the same thing?

      • I don´t have MIDIREX …almost yet. That´s why I am asking how MIDIREX works. I am talking about my YAMAHA MOXF built in sequencer running in loop in pattern mode. But I can tell you what to play in terms of how my MOXF sequencer is segmented by bar:
        For example: 2 bar loops consist in 2×480 steps where 120 steps is a quater note (total 8 quater notes = 2 bars) So the loop goes from 1:000 to 2:479 step
        I quantize the loop to a quaver…for example.
        If I try to record a quater note on the one beat it can occurs 2 things:
        1. To play it a few steps forward of the one beat. For example a note of aproximatly one quater note about 127 steps length on 1:012 step/ position.
        In this case the in the playback NO PROBLEMS occurs, ´cause the sequencer position it to 1:000 step with the hole length recorded 127 steps….PERFECT.
        2. To play it a few steps behind of the one beat. Same note of 127 steps length on 2:467 step/position. What MOXF sequencer does is to consider all sound that is OFF the loop as something to cut. So ….when it plays back the position of the note is correct quantize to 1:000 step BUT IT HAS ONLY 479-467=12 steps length.
        Hope you can reproduce it now….seems very easy just hitting a note behind the one for a long time and wait to see how it reprduce it.
        I think YAMAHA hasn´t do the things right….the midi message of that note should be complete played back with only changing the position following the quantize parameter set. Istead…they cut the note for beeing OFF THE LOOP.
        Thankyou so much for your time….

  20. Hi Peter,

    I have some questions about programming the MIDIREX
    Is it possible to program the MIDIREX so, that each track has its own MIDI RX input channel?

    As an an example:
    I use it for live performances and want to use it as a recorder for MIDI CC data.
    I have 4 different synthesizers and each sends data on its own channel into the MIDIREX.
    The data of all channels are passed through the MIDIREX to the MIDI output and sent back to the corresponding synthesizer. that’s good.

    But :

    The MIDIREX only records data on 1 selected channel. AND: It routes (even without recording is activated) the received data from this MIDI RX channel to the channel of the selected track.(Also, it would be good to have a function in which none of the tracks are selected)

    So every time I want to record CC data (a movement of a cutoff knob), I would need to set the MIDI RX channel to the channel of the synthesizer I want to play, and also make sure that the correct track is selected, that all the data comes back to the right synthesizer. (also for pre-listening) I can play all the Synths with 1 keyboard, but only Notes…The MIDI Controllers i can only move with the user interface of the specific synthesizer which sends and receives data with a specific channel / CC.

    2 options:


    a function that allows you to select a separate input channel for each track in the MIDI RX window.
    (If i select a different channels for input and output in one Track, the MIDIREX could also be used as a MIDIROUTER. at the same time (to rechannelize max. 4 specific channels)


    a function in the MIDI RX window, = like “AS TRACK”
    = by selecting a track, the MIDI RX input channel changes to the same channel that is selected as the output for that specific track. This creates 4 separate data cycles between MIDIREX and 4 hardware devices. Each track is connected to a specific synthesizer.

    So you could move controllers of any synthesizer but only the knobs of the selected track /
    the selected synthesizer will be recorded on his specific track. and no Data is sent to the wrong Synth.

    Is that possible with the existing source code oder firmware update?

    best regards

    PS: please excuse my bad english

    • MidiREX can only record into one track at a time, so the only feasible option is to add a way to have recording MIDI Channel to follow the currently selected track MIDI channel., which, i believe, is your option #2.

      This may be done by adding another UI page “MIDI Rec channel” that would present options for all 4 channels, each allowwing the following settings:

      RX — track records on the RX channel (current behavior)

      TRK — track records on the track channel (your option #2)

      1-16 — track records on the specified channel

      ALL — track records on all channels (OMNI mode).

      Will this work for you?

    • Andi — I have a preliminary version of the new MidiREX firmware that allows recording on track channels. Please contact me using email on the ordering page if you’d like to try it.

  21. Hi Peter,

    thank you very very much !!!!!.

    Yes! That should work. That’s exactly what I was looking for. I will send you an email and test the program. I’ll post again here if I tested the MIDIREX on my next concert.

    best regards from Germany


  22. Hi,
    I have just bought a second hand midirex. I have somme questions:
    1- Is it possible to programme 3X4 sequence, to product 24 steps sequence ?
    2- are midi channels (out) per track differents per parts ? I mean part 1 track 1 on channel 4 to volca keys and on part 2 track 1 on channel 5 to volca FM. Then, you can use different synth depending the part.
    3- Is it possible to have 2 controleur to the impur ? A keybord and a sequencer like korg SQ1?
    If possible , Which gear can be used to plug the two controleur?

    Tanks a lot
    Laurent from France

    • 1) MidiREX is not a step sequencer, so does not record patterns, instead it records streams of notes and controller events, just like Cubase or Ableton.

      2) Each track may have a different MIDI channel. Tracks may have different channels settings in different parts. Part contains a full configuration of the sequencer.

      3) Any MIDI merger will work for merging input streams.


      • Hi Pete,
        1- does it mean I can record from my DAW a synth sequence with 24 notes during a 1 bar and half on the daw, and on the second track a 1bar drums ? The 2 tracks will loop at its own end ?
        The drum track will not wait the end of the synth track to loop ?

  23. I recently built a midirex. I am delighted, really like! thank! But I have some minor problems with it:
    1. When recording the first track (number 1, 2, 3, 4 – not important) everything is fine. But when I record the next track or just play, without recording, and the midirex is running, some notes disappear (they are not played or recorded).
    2. If the last recorded note was not released on the keyboard until the end of the track, it will continue to play indefinitely until it is pressed again and released.
    Could it be hardware problems? Where should I look for an error?

  24. Is it possible receive only the tempo data from an incoming device to play a sequence stored in the midirex at that tempo on another device?

      • Thank you for the quick reply. What I’m asking, more specifically, is will it be able to ignore note data coming in from the clock source. Specifically, I am trying to see if it is possible to run an electribe into the midirex to use as a clock source through the midi out, not the midi thru, then have the midirex act as a sequencer for another synth with sequences I’ve prerecorded into it. That way I can have the electribe and synth playing separate sequences in time with each other.

  25. Hi Pete, I updated the firmware on my midiREX, and now the lower switches are assigned “mirrored”, 1 is Select, 2 is 4, 3 is 3 and Select is 1 – it’s quite confusing! Is there a fix / setting I need to change? Thanks a lot for your time
    BTW the function to assign a MIDI channel to each track is great!

  26. Hi Pete!
    First off, this is probably the most used device in my studio, it’s great. Just a couple of questions:
    1. My device doesn’t seem to load the saved sysex dumps. I can update the firmware no problem, but when I send the sysex the led just goes out and nothing happens. Is there some different way sysex dumps have to be sent other than the firmware?
    2. Some way to convert the sysex to standard midi file to view in another application would be amazing.
    3. Will alternate time signatures be a feature available in future releases?

    • 1) That sounds strange! Could you please forward one of the sysex dumps you’re unable to load to the email address specified at the ordering page so i can check it out?
      2) Yeah, that would be great. I should take my MMT8Ex utility and adapt it to MidiREX. Someday.
      3) Definitely yes, it’s on top of the wish list.

  27. Hi Peter,

    In the last few months I had some concerts and a lot of time experimenting with the Midirex.

    With the new possibilities of the RX Channel administration, the Midirex can be integrated into a live setup in astonishingly diverse ways. Above all, the Midirex can now also be used as a kind of midi router at different points in the signal chain.
    This increases the possibilities of Midirex so much.

    Thank you again.

  28. Hello, just bought the kit, thanks for the fast order process !!

    i’d like to be able to record “tempo-less” for ambient music, where i improvise without a metronome and no bars reference at all.

    One scenario i can actually use is :
    -set any default tempo
    -set track length to maximum or high number
    -record events
    -on record stop, loop is active
    -modify track length to what is necessary
    -> but the loop would still stick to bars so the loop may not be exactly where needed

    what would be the ideal scenario (1) :
    -all track empty
    -set any default tempo
    -set track length to “R” for “length of recorded events” (length limited to the maximum available)
    -record events
    -on record stop, set recorded track length to the tick position
    -track loop is active
    -move to another track and do the same, so all tracks have independent lengths

    scenario (2) would force empty tracks to be a multiple of first recorded track length, in ticks.

    After reading a bit of the code, it does not look impossible, but would probably need to define a new MODE.

    Would you be interested in implementing this feature ?

    • You don’t need to set track length in advance, so you can just record the first track for as long as you need. If you want other tracks to have the same length, set “Stop recording” page to “part end”.

      • Ok now the kit is running i inderstand that.
        But it means that the first recorded loop sets a maximum length. Not exactly what expected.
        Second problem with my expected scenario is that the second recorded loop is not independent from the first. If I start recording at position 3:1 then the first two measures will be empty.
        I would like the second track to loop from where the recording was started (not from the part beginning) up to where the recording was stopped (independently of any other track or measure position).
        I’m not sure this is how midirex is intended to work, so does it looks possible ?

      • “it means that the first recorded loop sets a maximum length” — no, this is not correct. The longest recorded loop sets the part length.

        “I start recording at position 3:1 then the first two measures will be empty” — yes. Otherwise i don’t see how the track loops can work together in a normal scenario, which is most common.

      • ” no, this is not correct. The longest recorded loop sets the part length.” – unless touvset the record stop on part end if im not mistaken

        “I start recording at position 3:1 then the first two measures will be empty” — yes. Otherwise i don’t see how the track loops can work together in a normal scenario, which is most common. >> yes you are right and i understand that. Now my expected use case in NOT common. I need no sync at all, just independent looping tracks. May we discuss by email about this feature ? I could getvinto the code if you give me some starting points on the elements involved in the looping part.

  29. Hi, I have a question : I have version 0.94c
    When I’m looping and recording, if I re-record over a selected track, or erase a one or the 4 track during looping and playing, the track remains not fully erased and there’s always the first note of the fist time that is not erased, of the very last one of the pattern, I don’t know, it’s really annoying, I don’t know how to fully delete a track while looping and playing so that not any note will remain.
    I mainly use the record fonction without stopping it by hand, and I quantize 85% … is there an option I need to deactivate, is there a total clear track command while playing and looping , without stopping everything ?

      • Finally, I have the same problem with OS 0.97 …. sometimes random notes are held pressed and long unwanted notes appear in the track … really weird.
        Sometimes it’s when I stop recording while a note is pressed … the later is latch for 1 bar or more, sometimes it doesn’t end and is replayed and latch at the beginning of the track … My main MIDI keyboard is a PSS 580 (only midi out is plugged) and it controls an other PSS 580 (only midi in is plugged).

      • I’ve only seen a problem similar to this once — and it was tracked down to a weird MIDI loop in the setup. Any chance you could use some other MIDI controler just for tests?

  30. Hello ! I’m tryinh to backup my parts via sysex, some parts are sucessfully sent, and some others , the midirex seems to freeze, with midi out led lit forever. Some others parts, when I send them to midi ox, are sending infinite midi sysex …. I went to 10 mo and I had to stop because I’m sure it doesn’t work.
    I’m on 0.93c version, I’d like to switch to 0.97 version but before I have to backup my parts … so that’s the problem.
    Is there another way to save these parts ? bug ?

  31. Hello,
    Is it possible to “Quantize note” for all 16 MIDI channels at once?
    Is it possible to change the quantize grid measure in “Quantize note” e.g. from 1/4 to 1/2 via CC MIDI controller?
    The plan is not to change the quantize grid measure with knops at the device but through incoming MIDI commands.
    Many thanks,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s