MidiREX

MidiREX is a small but versatile MIDI loop sequencer created for live performance. It is designed to provide basic multi track recording and playback capabilities with minimal distraction to your inspiration.

MidiREX records MIDI events received on its MIDI IN (except Note Off velocity, system real time and SysEx data) and stores them in non-volatile memory for later playback. The recorded events can notes, controllers, pitch bend, after touch, program changes, etc.

MidiREX is MPE (MIDI Polyphonic Expression) compatible: it can record on multiple channels at the same time, fully supporting your Seaboard or Linnstrument controller, as well as other MPE instruments.

See this video  for a demo of MidiREX application.

MidiREX_#1

MidiREX_#2

Tracks

MidiREX can play up to 4 tracks simultaneously. Its memory capacity is approximately 9,000 notes, however various MIDI controllers like after touch, pitch bend, mod wheel, etc. will take up more memory, so the actual amount of note storage capacity will vary depending on how much these controllers are used.

Each set of 4 tracks is called a ‘part’. There can be up to 50 parts in MidiREX memory. These parts can be combined into lists of parts, which are called ‘songs’. There can be up to 50 songs, and each can contain a list of parts of up to 99 steps long.

Each track can have different length. The longest track in part defines the part length. When track is played to its end it loops back to the beginning and keeps playing. The track length is set when the track is recorded and can be changed at any time, even during play back. Changing track length does not add or delete recorded track MIDI events, it merely defines a point at which track is looped back.

Each track has its own MIDI channel assignment that could be set to MIDI channel (1-16) or to OMNI. Track events are stored in memory with the original MIDI channel they were received on and will be played back as is if the track’s MIDI channel is set to OMNI. However, if track’s MIDI channel is set to specific channel number, the track events will be played back on the selected MIDI channel, essentially overriding original MIDI channel on the fly.

To record a track it needs to be selected. Only one track can be selected at a time. MidiREX cannot record on more than one track.

Incoming MIDI events may be filtered and quantized. Both note position and note length quantization is supported.

When MidiREX is not running, MIDI events received on MIDI INPUT are sent to MIDI OUT on the selected track’s MIDI channel allowing you to monitor what you’re going to record. If MidiREX is running but selected track is empty or muted, the incoming MIDI events are still sent to MIDI OUT allowing you to rehearse or jam along with the previously recorded tracks playing. Note that you can hit RECORD at any time and record that wonderful phrase you just came up with without stopping the playback.

When MidiREX is running and selected track is not empty or muted, the incoming MIDI note events transpose notes in the part being played.

Parts

Parts are identified by a number (00-49) and 12 character part name. When running, MidiREX plays currently selected part endlessly until stopped.

Parts can be switched at any time, even during playback, and the switch moment could be quantized to the next beat, next bar or part end.

Songs

Songs are identified by a number (00-49) and 12 character song name. Each song can have up to 99 steps. Each step specifies number of the part to play, how many times to play this part, which tracks to mute and a note to transpose the part to.

When MidiREX is in Song mode, it will play currently selected song’s steps endlessly until stopped.

Song steps can be specified manually or recorded live using MidiREX buttons or MIDI keyboard connected to MIDI IN.

Case

Acrylic case plans are available in .eps files compatible with Ponoko.

MidiREX_Red_Tint_case

Specifications

Memory capacity: 64K
Parts: 50, each has 4 tracks
Songs: 50, each has up to 99 steps
Tempo range: 25-250 BPM
Clock resolution: 96 PPQN
Clock source: internal or external
Quantization: note and note length, 64th to 2 bar
Controls: RUN, REC, SW1-5, Clickable Encoder
Display: 16×2 character LCD
LEDs: MIDI IN, MIDI OUT, TRK1-4, SONG MODE
MIDI Connectors: MIDI IN, MIDI OUT
Foot switch connector: 3.5mm stereo, normally open or closed, momentary
Battery: CR2032, good for 10+ years
Power supply: 9VDC, center positive, 200mA

Acknowledgements

MidiREX is built around technology developed by Mutable Instruments: most of its hardware components can be found in various MI’s projects (mostly Shruthi-1 and Ambika), while software implementation uses quite a lot of code from MIDIpal. Not to mention the breakthrough Avril programming framework that brought modern C++ programming (read: productivity and sanity) to Atmel MCU world. Without this MidiREX project would not be possible, so thank you, Olivier, for sharing your talent with all of us!

176 thoughts on “MidiREX

      • Yes, all intervals will be preserved, so a minor chord will remain minor.

        Unfortunately, my music theory knowlege is quite limited, could you please provide me with some pointers where I can read about “in-scale transposition” ?

      • With in-scale transposition (or in-key) transposed notes will not leave the selected scale.
        Say we have C major scale, pattern C E G (C major chord).
        Normal transposition by 2 semitones will result in D F# A (D major chord), doesn’t belong to C major scale anymore.
        In-scale transposition will result in D F A (D minor), so it remains in C major scale.
        Pretty much like having MidiGAL with Scale app (Scale and harmony processor) after normal transposition.

        Best,
        Denis

      • I see., thank yo ufor explaining! So in addition to the root note, one will also have to select the target scale, which could be any known scale, correct?

      • Yes, scale needs to be set upfront by user.
        Here is an example for Elektron Analog Four:
        https://www.elektron.se/wp-content/uploads/2016/05/analog-four_manual_OS1.23.pdf, page 35 Keywords “TRK KEY SCALE”, “TRK KEY NOTE”
        There you can set scale per track and that will be taken into account when transposing.

        I like how MidiRex can transpose while playing the pattern. If the notes remain in scale it would be more musical.

        Crazy idea.
        What if there was a special transposition track? This way with a simple pattern on other tracks one can make a nice harmonic progression (single note defines a chord for known scale). Maybe I’ll make an iOS app for that 🙂

        Best,
        Denis

  1. Hi Pete,
    I would like to create an bass loop with intro.
    The sequence is 4 bars, but intro is the 3 first bars. When track arrives ar the end, then track is looped on the fourth bar.
    Is it possible to do this, and specify a second point of start loop in a track ? It is a feature i have on my Kross sequencer.

  2. Hi kvitekp,
    I want to order or build one, how can we arrange this?
    If I decide to build one from scratch (order PCBs, solder, and program using your software) can I get specs for PCB/parts needed?
    Can I burn the firmware with AVRdude?
    Kind regards

    • You can order fully assembled MidiREX in acrylic case for $200 plus shipping or you can order partial kit (PCB and optional pre-programmed MCU), then order parts using MidiREX BOM and build it youself. Sure, you can use AVRDude to program MCU, in this case you don’t need pre-programmed MCU from me.

  3. hi i would like to order one Midirex midi looper. i honestly don’t understand the parameters you mention i just want what is done in the vid from my synth(the looping)

    Please assist me in getting one..i stay in Cape Town, South Africa.

  4. I suggest looking into yamaha QY sequencer range for in-scale transposition. You would need to input chord, usually lower part of the keyboard, 1-1-5 oct would be enough.

  5. Hi! thinking about getting one of this cuties! Two questions:
    1. I would like to place the midirex between my sequencer (Octatrack) and my synths. So I can loop the incoming notes from the Octatrack, and once looped ignore them, and just play the loop. But i’ve read that when midirex is running, the incoming notes will transpose the recorded notes. So if the sequencer keeps running it will keep transposing the looped notes. Am I right? And in this case, can it be avoided?

    2. Are you shipping to Spain, with all this covid shit? 😦

    Thanks!

  6. I’m a little confused about loop length. Can I pre-determine a loop length? Like 2 bars, 4 bars, 16 bars, 32 bars etc..? I would not want to push a button to close the loop since I’m playing keys.

  7. 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,
    tinsmith2

  8. Maybe a silly question: I recorded a track and want to record a second one on top while playing the first one. How could I achieve this? So far I could record on different tracks but only separately.

  9. Pingback: Non-Euro Synth Builds – wolfeffect

  10. Bonjour je suis a la recherche d’ un MIDIREX monté si vous voulez me faire des propositions .
    par contre je suis bien conscient que cette page n’est pas dédié a la vente j’espère que ce méssage ne gène pas la bonne marche du site .
    Merci

  11. Hi ! This look good (but hard to reach with Google) but I don’t find the related pages as manual, bom, buy, etc.

    Plus one question as I see the parts around the power socket and the quarts : is it mostly an Arduino board redesigned ?

  12. Hello Pete,
    I’ve been using the midirex for almost 10 years, I love it, I use it in concert, it’s an incredible tool.
    Unfortunately, while trying to update the firmware, there was a bug.
    I received the midi data well (by computer and midiox) and at one point the midi in LED froze.
    She finally died and nothing happened…
    I resolved after ten minutes to turn off and turn on the midirex, since then it remains on the waiting page and no longer receives the midi data…
    What should I do please?

      • Thanks a lot for your help.
        I tried by changing the buffer and with another interface, another cable… Nothing. What worries me is that the midi IN LED no longer flashes at all. As if the midirex no longer received the MIDI message

Leave a comment