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

  1. Hi Peter – could you post something about the footswitches? I’m assuming that since two are supported, and the connector is a 3.5mm stereo jack, any pair of momentary on switches bridging the tip/ring to the sleeve would work? Are there commercial dual 3.5mm switches that you were thinking of?

    I think I’ll probably just use a midi footswitch I have lying around, but I figured I’d ask since there seems to be no info on the 3.5mm footswitch setup.

    • Correct. Any pair of momentary foot switch pedals will work if you connect them using 3.5mm stereo to 2 x 1/4″ mono Y cable like Hosa CMP153.

      Both normally open and and normally closed foot switches are supported, the polarity is determined when MidiREX is switched on.

      You can also use just one foot switch connecting it with mono cable.

  2. Now that I’ve built and played with it a bit, here are a couple of pesky feature requests:

    – an overdub recording mode, where the track loops while recording, and new notes played are merged with the track. This would be by far the most important feature for me…

    – an erase feature where pressing and holding a button deletes the notes on the track, clearing the part of the track the button is held for.

    – a “quantize to scale” feature that would shift incoming notes to a selected key/scale while recording. This could also be applied after recording, like the other quantize functions can.

  3. Can the loop play function be turned ‘OFF’? I’d like to have it send one shot CC msgs to a digital mixer. Awesome idea! And how do I order the kit?

  4. Hi Peter
    I’ve sent emails to Frank at this address and his other one, but he hasn’t replied to any of them. I realise that he’s busy with other projects, but I’d really like a case for my Midirex. Do you have any other suggestions?

  5. Hi kvitekp!
    I have a small suggestion:
    It would be nice if the MidiRex also sends out the current leds status via some CCs.
    This is usefull for people who like to control the MidiRex with Midi only.
    Best regards
    Marxon

  6. And another one:
    a option to disable MidiRex from passing Midi In directly to Midi Out,
    so it sends recorded Midi events only.

    • Of course it does record note velocity, all controllers, both channel and note after touch, and pitch wheel. The only midi event that is not currently recorded (but may be in the future), is SysEx.

  7. holycrap ! if i understand this correct its like having 4 202 sequencers in one !
    can the u run multiple sequences of different lengths together at the same time ?

    • yeah, pretty much. Sure, each of four sequences can have different length — the shorter ones will be looped back when playing along with the longer ones, for example 2 bar sequence will be played twice during the 4 bar sequence.

  8. Hi kvitekp,
    This looks like quite a fantastic bit of kit. A couple of questions, if you don’t mind:
    Does it record polyphonic note data?
    And are there videos online where I can see a MIDIRex doing it’s thing (preferably polyphonic)?
    Thanks in advance!
    -Banana Apparatus

    • Thank you! MidiREX records everything on its iMIDI IN with exception of sysex and real time (ie clock, active sense, etc) messages. This includes all note data, control change, pitch bend, after touch etc.

      I’m not aware of any videos yet that demo polyphonic recording, sorry.

  9. Hi, a midi looper is very good idea.
    Probably the project can be good if you can merge inside this little box the idea of loop that we find on boss loop station rc 505 ( obiovsly refered to midi) and on SND acme-4 (flexible midi start-stop) .. the link http://www.s-n-d.com/acme4e_a.html
    In any case i would like to see many demo on you tube. It is possible.
    Midi rex is a Great Job!!
    Diego

  10. Hi, I’m fairly new to this kind of thing… Just a few questions if you have the time
    1)Can it record polyphonic information?
    2)Can it record parts in ‘free-time’ i.e like a boss looper where you don’t play to a click and the phrase length is determined by when you pressed start and stop?
    3) If so, can you jump between these different parts easily.
    4)Can you increase the speed of the recorded part after it has been committed to memory?

    Sorry for the list! It looks very interesting, thanks in advance.

    • 1) yes, it can record polyphonic info
      2) yes, it can do free form recording, until you stop recording, then loop
      3) yes, you can switch between 4 parts with a switch press
      4) yes, you can record at the comfortable tempo, then play it back at any tempo you like.

  11. it seems i bricked the song mode in my midirex. without any midi devices, i went button mashing on it – recording 4 bars of nothing, having it play, and switching song/pattern mode while play. switching back and forth, stopping, starting again… until the beatcounter went up really high – to 89.88, midi out led is permanently lit and the unit is unresponsive, needs to be powered off-on to work.

    it is no matter which song number i choose, it always counts up and crashes. i don’t really know why it’s possible to change modes while in play, though it was an empty pattern, but since it was possible i just tried around how far it can go. i tried the 1-3-5 factory reset and also took out the lithium batt, the problem still exists. it seems i did something noone did before… maybe flashing firmware can solve it, but maybe you want to look into it why it happened.

    also what puzzles me a bit is the record button behaviour, as it is adaptive (first i thought my used tactiles have some debounce issue). on an empty pattern you have to press record twice to start recording. and normally, the pattern runs on when you press record again – so you can change track and re-engage record. but on an empty pattern, it stops playback when you press record.

    i think usability wise it would be good to have the record button function always the same, regardless of the content of the pattern – first press is start play&record, second press is disable record, not stop to play.

    also the encoder doubleclick to escape from menu is a bit tough to do haptically, when in the process changing values, double clicking the encoder whilst changing values is a bit dangerous as one could twist for one in/decrement by accident and then escape with a wrong value set. maybe there is a way to have a “back to homescreen” from within any point in the menu with a single button press.

    • Removing the battery should certainly clear all memory and reset the unit. If it does not, there is hardware problem. Regarding record button — it functions consistently on all my units. Would it be possible to record a short video demonstrating it? Yeah, i don’t like double click as well, however i dont see any other way to implement Home function.

      • i re-flashed the firmware but still the problem is there. when i go on the “empty” unit into song mode and press play, it counts up, overflows and crashes. though pattern mode works all normal. i double checked all soldering and parts, cannot imagine much went wrong there.

        my other unit had the same problems with the record button behaviour, i will check the song mode there and look to make a video. it is not consistent, mostly when i go to an empty pattern i have to press record twice. sometimes i have to press only once.

        i thought, wouldn’t it be useful if the song mode main page appears always when switching with sel+play into song mode? when i am in the option menu in pattern mode and switch to song mode, “sel” led lights up, but i am still in option menus. only when i return to mainpage i see the song page.

        this could maybe also be used differently when in options menu: sel+play always goes to main page without changing the mode, next time sel+play changes pattern/song mode. this could be easier/faster than the doubleclick for “going home” and seems intuitive to me.

        what i couldnt solve, i think others also requested this – is it actually possible to record 4 or more bars always looping in overdubbing mode, in a way that the recording is only started once and always is enabled and looping, and it does not change the length of the part? the way it can be used now, always arming the recording an then only having 4 bars once to record seems contraproductive. i tried with all the start/stop recording settings, but could not find a combination that allows “endless loop recording”. maybe it is possible to have the “length” setting to be used as a given length that will not be extended on recording, when someone wants to record longer patterns the length can always be increased to 99 and then trimmed down after recording.

      • Gert, would it be possible to split your questions/requests into several comments? Dealing with one long comment containing half a dozen different topics is suboptimal

      • “i thought, wouldn’t it be useful if the song mode main page appears always when switching with sel+play into song mode? when i am in the option menu in pattern mode and switch to song mode, “sel” led lights up, but i am still in option menus. only when i return to mainpage i see the song page.” — i’m not sure i understand what you mean here… switching the unit on while holding down sel+play? Or sel+play acting as “home” ?

      • “endless loop recording”.recording is not really possible with a kind of serial memory MidiREX uses — it will have to append new copy of the track each time it loops back, quickly exhausting all available memory.

  12. sorry, will post more structured next time. sel+play – yes i meant sel +play acting as home, and then when on home screen it changes pattern/song mode.

  13. for “endless loop recording” – i thought in theory, as long as no notes are played or other values are sent in record mode, there would be nothing to write to memory? as in, what has been recorded already is played back, what is played additionaly in record mode overwrites the old recording or is written into the gaps – where no notes have been recorded previously.

    • there are no gaps — events are written continuously, each having a time stamp with resolution of 96PPQN. Having gaps is not an option, the memory will be wasted almost immediately.

  14. Hi, one simple question: can it be synced to an external clock, e.g. a drummachine? In this case can i predefine the loop length e.g. looping two bars, or can i just quantize the loop length to the next beat?
    Thanks & greets, Roland

    • Yes, MidiREX can be configured to run on external clock. Loop and each track lengths are quantized to the beat. By default, loop length is equal to the length of the longest track, however you can specify loop length manually, in which case it could be shorter or longer than the longest track.

  15. hello, yu good .. nice device overhere

    midirex is a big midiseq ? almost same ..
    any vidéo , with poly chords , bass, mélodie will be great .. in non stop flow
    yu make a pattern / save , do new one .. it don’ t stop
    how long for france for complete kit , yu think ..
    cheers

    • MidiREX is 4 x track MIDI event sequencer, MidiSeq is a polyphonic step sequencer.

      Sorry, we don’t offer complete kits, only PCB and pre-programmed MCU, or a fully built unit.

      • you provide nice pcb and programed servo, great..
        or what price for a fully built for france, ready to ship ?
        how you apply kind of shuffle, by trying different quatitize .. can’t find video .. cheers

      • $160 for pre-build MidiRex, $15 shipping to Europe. This includes metal stand offs to make it usable w/o the case, however no case. Proven case files are available, case can be ordered at any laser cutting service, like Ponoko.

  16. would it be possible to implement this :-a function to trim recorded parts” — like in “remove everything from beginning to this point” and “remove everything from this point to the end”

    • Device model is implemented in dev.h/.cc, feature ui pages in ui_pages folder. Use a similar feature implementation as a starting point, for example, Quantize Notes page.

  17. instead of adding an extra function to trim recorded parts” — like in “remove everything from beginning to this point” and “remove everything from this point to the end” could i edit the event editor page so i could delete individual event steps ?

  18. My setup would be
    midirex out -> microkorg in
    microkorg out -> midirex in
    Now how would I midi sync them to more gear? Use a midi splitter on the midirex out to clock an additional unit? Or is there a more straight forward method?

  19. Hey Peter, I love my MidiRex and couldn’t live without it anymore 🙂 Unfortunately my tactile buttons have bouncing issues… Is there anything one can do about that (e.g. on the firmware side)?

  20. Im very interested in buying one.

    Can I record midi cc with it (without recording any notes)? If so, how many CCs can it record per track? And what would be the resolution of the recording? (how many changes is it recording per beat?)

    Thanks!

    • MidiREX records all incoming MIDI events except for Sysex messages, so it will certainly record lone CCs without any notes.

      Recording is done with resolution of 96PPQN — 94 changes per quarter note, or 4 times the standard MIDI Clock.

  21. I’ve had a lasercut wooden case made for it I’ve designed based on the MI Shruthi acrylic case. If anyone is interested I can send the .eps files.
    Thanks again kvitekp for your work, amazing piece of hardware. If only that overdub feature could happen, but nevertheless it’s already great as is.

  22. his device seems very cool !

    I have a small question, is it possible to play tracks of different parts simultaneously with Midirex?

    Here is an example to be more specific :

    I play track 1 and track 2 on part #1. While playing ( without interruption), I want go to part #2 and play track 3 & 4 of the part #2 (simultaneously with track 1 & 2 of part #1). Then later I want to go to part #3 and play track 4 of part #3 (which will end the track 4 of part #2). Is something like this possible with MidiRex ?

    Thank you,

  23. Hi,
    Your device seems awesome ! I just have a question about the polyphony : how many voices are there ? How many notes can I play simultaneously and loop them ?
    Thanks,
    Louis

    • MidiREX does not have any limit on amount of simultaneous notes played. Every played notes is stored as note number, velocity and duration, so as long as these three bytes fit into available memory, they will be recorded.

  24. Hi
    I really want one of these, but the main limitation for me is the only 4/4 time signature. Having at least 3/4 would make for interesting plyrhytmic options (ie it also means all tracks would need to NOT reset on the first beat of the longest track obviously).
    Is it a feature that is likely to materialise?
    thanks
    Erwan

  25. Hi
    Got my midirex and absoutely love it, but I get confused as to how channels “take over” sometimes. The reference page is a bit unclear in that sense.
    I have the RX channel as 1, the first track has recorded data on channel 5, and somehow anything going thru on channels 1&2 is being routed to channel 5. is it normal? it feels like thru data is being rerouted to the recorded channel. Maybe I’m missing something..
    thanks for shedding any light..
    Erwan

    • 1) the max sequences length is limited by memory which can hold about 10K notes. If you record pitch bend and CCs, this number is lower, since they also take space.

      2) Yeah, however there always is some minor quantization equal to internal sequencer resolution of 1/96 of quarter notes.

  26. Hey Peter!

    I sent you an email re: exactly what I’m looking to accomplish, but thought I would ask here as well in case others are interested:

    Can the MidiREX and MIDI2CV board be sandwiched/configured to play nicely together? If so, is this something you would consider offering as part of a fully assembled MidiREX order?

    • That would be a pretty ugly frankenstine type of the setup. Will need a custom firmware for MidiREX and/or Midi2CV Mk2 to prevent CC conflicts. I don’t think it’s going to be on my todo list anytime soon. Midi2CV is open source, so someone can come up with a board for MidiREX that is smilar to MidiALF/CV extension board.

  27. Hi, is there any other way to trigger the start of a song/sequence over midi or does the RUN button need to be physically pressed? I want to send midi PC’s to my guitar fx pedals in short sequences of 4 or 5 bars (at various points over this duration) but I need to be able to trigger the sequence and don’t want to use a laptop/daw. I noticed it doesn’t support realtime start/stop but not many guitar midi foot controllers support that anyway. If it could control START/STOP over midi CC or PC then that would be awesome!

  28. I’m Felix from Goa, India.
    I’m a One Man Band.
    I’m looking for a midi player to contain my huge performance repertoire for my gigs.
    I’m very impressed with the MidiRex.
    The internal capacity stated of 64K is not sufficient for me! Is there an option for extending the memory by using an SDHC memory card or a USB pen drive or an external hard drive?
    Does the MidiRex have its own internal Sound & Drum patches? Or do I have to midi-out to a sound module?
    What is your competitive price + including shipping it to Goa, India.
    Where & how to order?

    Best wishes!
    FELIXXX

    • MidiREX insterna memory is limited to 64K. It does not have memory cards, USB support, or internal sounds. It’s a simple 4 track MIDI sequencer. Purchase options are available in the web site above.

  29. Hi Pete!

    We did some tests with older and also the latest midirex firmware and found some issues with part changing when running on external midi clock.
    Our complete setup is running on a midiclk, clock is distributed to various parts of the setup and also to the midirex. Also, CC controller data is merged to the midirex as we tried patternswitching by remote.

    The issue is, after switching parts back and forth several times the midirex is losing sync. After switching parts some more times it even goes to the offbeat area. First we thought it only happens with CC command, but also part switching by encoder shows this issue.

    We just had some drumbeats on the midirex and recorded with lenght “1” as the idea was to use it as a fixed drumbeat machine that is switched by CC.

    We spent several hours trying all available options on the midirex but could not solve the issue on external clock. Using another sequencer in place of the midirex (zaquencer) worked flawless, also the rest of our setup did not have a syncing issue.

    Could it be that the midirex is missing some clock pulses when switching to a different part?

      • Thank you for your fast response.

        Unfortunately i do currently not have physical access to the two midirex’ that we used.

        Maybe already in the recording process something went wrong, for now i can only describe what we did:

        Update firmware to 0.97
        Reset memory with switch C1 C3 D on powerup

        We set up each part with identical part options and set global as following:
        Track length 1 1 1 1
        Track channels — — — —
        Track transpose off off off off
        Track recording tr tr tr tr
        Part root note C4
        Part switch mode on part end (we also tried next bar)
        Start recording on track start
        Stop recording on part end (should be same like track end in this setup)
        Quantize note off
        Quantize length off
        Midi RX channel 1 (for CC control later)
        MIDI RX filter PC CC AT EX (we did not send any of these anyways)
        MIDI clock external
        MIDI ctrl change receive
        Click mode none
        Click bars off

        For recording we hooked up the Zaquenzer to the midirex midi in and sent midiclock and notes from Zaquenzer, from midirex out we went to our midichain of drummachines and sampler.

        Part 00 was left empty as a mute option.

        Part 01 consisted only of 4x kickdrum

        Part 02 was 4x kickdrum with a hihat inbetween.

        And so on. Very simple beats all with one bar length, sent on midi channel 9.

        We checked with our midi monitor that we are really only sending start/stop, clock and the drum notes.

        Recording was done by starting Zaquenzer and having midirex running with the external clock, 120 bpm, then pushing record on midirex to transfer one bar of drumbeats. It all looked and sounded ok in this transfer process.

        When all beats were in the midirex, we hooked the midirex to our external master-midiclk that was merged with controllerdata for CC switching. We noticed the lag issue mostly because the same master-midiclk also went into a MMT-8 that was playing basslines and leads, the clock was split before the midirex, so independently distributed.

        As said, after several times switching parts on the midirex we noticed a drift in comparison to the parts on the MMT-8, also when switching parts with the encoder.

        We monitored what is happening at all times with a midi monitor, that nothing is sending data unwanted (modulation wheel etc.).

        We also transferred the recorded data to a second midirex and had the same issues, also with older firmware and same data (which was compatible to dump) the gap issue ocurred.

        It seemed like a really small gap that added up with every time a part was switched.

        I hope to have access to the midirex’ in the following weeks to send a dump.

Leave a reply to Dave Cancel reply