MidiArp arpeggiator

Overview

MidiArp is an advanced MIDI arpeggiator module that has all standard and a few unique features, such as very musical latch mode, super stable internal clock, nice swing and two modulation sources with velocity, after touch and CC destinations.

MidiArp is designed as a performance instrument suitable for both studio work and live performance.

MidiArp#1

MidiArp runs on MidiGAL hardware, however you can also run it on MidiBUD and, with some limitations due to lack of the switch, on any MIDIpal compatible hardware.

Firmware (.syx and .hex): MidiArp_095a (use midiarp_pal.syx if your device has MIDIpal bootloader)

Firmware source code: midiarp_095a_src

Direction, octave range and length

Supported direction modes are: UP, DOWN, AUTO (it’s up or down, depending on if the second pressed note is above or below the first one), UP/DOWN, UP/DOWN2 (this one has doubles end notes), ORDER (notes are played in the order the keys were pressed), CHORD (all notes at once), and RANDOM.

Available octave ranges span up to 4 extra octaves up or down. In addition to the standard octave playback, ranges above 1 can be played in both directions: original octave, 1 octave above, 2 octaves above, then 1 octave above again, then back to original.

Arpeggiator cycle can be limited by LENGTH parameter. For example, if LENGTH is set to 8 and you play triad CEG, the arpeggiator will play CEGCEGCE then repeat, which is useful when you play triads in 4/4 measure or for creating some complex arpeggiator figures with fancy measures.

Tempo, swing and step/gate length

Tempo can be set anywhere between 25 and 250 beats per minute. The internal clock generator is super stable and supports swing from 0.1% to 99.9% with .1% increments which allow some very subtle grooves.

Default arpeggiator step duration is 1/8th, however it can be set to anywhere between 1/64th triplet and 2 whole notes. Gate duration default is half the step duration and can be set to any duration in the same range, including values longer than the current step setting, creating interesting effects if used with polyphonic sound sources.

Latch, key sync and key start

LATCH mode: when set to on, the arpeggiator will keep playing notes even after you release all keys. MidiArp’s latch mode implementation is special in that it not just merely adds each played note to the playing set until you release all keys. Instead, it reloads arpeggiated notes set with currently held notes every time the key is released making the latch mode much more musical.

KEY SYNC mode: when set to on, the arpeggiator clock is restarted when you play notes after releasing all keys. This is sometimes indispensable when you play live, however may confuse slave MIDI devices if you have any.

KEY START mode: when set to on, the arpeggiator is automatically started when you play notes and it is stopped. Normally you’d have to press the switch to get the arpeggiator going, however with this setting it will be started when you start playing.

Keyboard zones and velocity

ZONE LOW/HIGH: specifies the range of notes that arpeggiator responds to so that you can have you right hand playing arpeggios and your left hand playing a non-arpeggiated bass line, or your left hand playing arpeggios and your right hand playing a solo.

VELOCITY mode: when set to ‘key’ (default), the arpeggiated notes will be played back with their original velocity. Setting this to a value between 1 and 127 will result in fixed velocity which is useful for steady arpeggios and when you want to apply predictable modulation, see below.

Modulation

MidiArp has two modulation sources, each with saw, triangle, square and random waveforms, which can modulate arpeggiated note’s velocity, after touch and controller of your choice, all at the same time.

Modulation period is specified as a number of arpeggiator steps and can be set to ARP (equal to the number of currently played notes), OCTAVE (number of currently played notes multiplied by the number of octaves set by RANGE parameter), or any constant number between 2 and 127.

Modulation amount is specified as a value between -127 and 127 with 0 meaning no modulation. Modulation value is 0 at the start of the modulation period and it reaches the set amount by the modulation period end.

Modulation value is added to the original modulation destination value received by the arpeggiator. Negative amounts subtract modulation value, changing raising saw waveform to inverted saw, triangle to inverted triangle and low/high square to high/low square.

Both modulation sources can be set to the same destination resulting in some complex modulations with two standard waves superimposed on each other. Try setting both modulation sources to CC#10 (pan position), Mod1 length to OCT and Ctrl amount to 127, Mod2 length to ARP with Ctrl amount to 63 and you end up with an arpeggio sound walking from left to right with each octave notes starting to the left from where the previous octave note ended!

User interface

MidiArp user interface consists of pages which are selected by encoder rotation. Each page displays a single parameter value.

Clicking the encoder toggles parameter editing mode. Double clicking the encoder saves all arpeggiator setting in the currently selected memory slot on all but Main pages. Main page allows you to save current arpeggiator setting into a different memory slot.

Unless parameter editing mode is in effect, pressing the switch starts the arpeggiator if it is stopped, and stops it if it is running. When running with LATCH mode set to on, pressing the switch will silence the currently playing notes without stopping the sequencer. Press the switch again with no notes playing if you need to stop the arpeggiator completely.

Pressing the switch while editing the parameter resets the parameter value to its default setting, or restores the previously reset value on all but Main and Tempo pages. This behavior allows you to temporary reset the setting to its default value then back while auditioning the effect.

Pressing the switch while on the Main in parameter changing mode enters the name editing mode in which switch advances editing character position and encoder rotation select the character under the cursor. Clicking the encoder accepts the edited name.

Repeatedly pressing the switch on the Tempo page in parameter changing mode allows you to set tempo using tap tempo feature.

Parameter “learn”

MIDI Channel, Velocity, Zone High/Low and Mod CC# pages will “learn” the parameter setting if the related MIDI event is received while in parameter editing note. For example, instead of checking what MIDI channel your MIDI keyboard is set to, you can just go to the MidiArp’s MIDI Channel page, play a note, and the channel will be set to the received note’s channel. Or on the Velocity page you can repeatedly play a note adjusting required fixed velocity setting by ear rather than manually.

All MidiArp’s parameters can be altered on the fly without stopping the arpeggiator. The current version does not support arpeggiator parameter setting by external controls, however this could be (and probably will be) implemented in future versions of the firmware.

Persistent memory

Snapshot of the arpeggiator settings can be stored into one of the 100 named nonvolatile memory slots for later recall. Saving and loading do not require stopping the arpeggiator which is great for live performance. Each memory slot has a number (00 to 99) and a user definable name which can be “peeked at” during save/load operations.

Miscellaneous

Powering the device up with the switch pressed returns all MidiArp settings to factory defaults erasing all your stored arpeggio settings.

Powering the device up with the encoder knob pressed enters the firmware upgrade mode: device expects firmware sysex file to be sent to MIDI IN.

39 thoughts on “MidiArp arpeggiator

  1. Pingback: New MidiGAL firmware: MidiArp | MidiSizer

  2. This looks great! My PCBs arrived last week and BOM is on the way, can’t wait to get this together to try it out. Thank you for all your hard work.

  3. Hey,
    No matter what, I could not upgrade the MidiGAL with the MidiArp 0.94 firmware.
    I’m using MIDI-OX, 250ms delay between messages, Akai EIE Pro MIDI interface on a Wintel 8.1 computer.
    Upgrading MidiClk 0.93 to 0.96 worked like a charm with so I’m wondering if there’s something wrong with the SysEx IDs.
    MidiClk 0.93 or 0.96 header : F0 29 47 41 4C 00 00
    MidiArp 0.94 header : F0 29 42 55 44 00 00
    It’s just like the unit is ignoring the SysEx going into it. Fortunately, it boots up with MidiClk at the next power cycle.
    Thanks for your help.

  4. I just flashed my MidiBud with the MidiArp and it’s a blast to play! I had a couple questions & suggestions.

    – On the MidiPal Arp app, it seems like it remembers the notes that were played even when the external clock is stopped. That way when you send a start command it just automatically starts again with those notes. With the MidiArp, it seems like you actually have to enter new notes in, to trigger the arp. Since I have everything synced, it is very nice to have everything start at the same time and not have to remember to trigger the notes from the controller. I looked at the manual but couldn’t figure out how to put it in this mode.

    – I really like the patterns on the MidiPal app, any way to get them transferred to the MidiArp? Maybe a way to create new/random patterns?! (I know this may be asking too much)

    – I always have this hooked up between my controller and my MPC, is there any way to quickly bypass the MidiArp (besides setting it to ‘int’). On the MidiPal, I would just long press the main encoder button and then it would disable the app.

    Thanks again for you’re great work here Peter!

    • MidiArp clears the note stack when it is stopped, this is my design. I can probably add a feature that would save currently playing notes with the sequence, so they will be playing when you load the sequence.

      Patterns may be added to one of the next versions of MidiArp, however there are no plans for this at this point — MIDIpal’s arp implementation does them well, used it!

      To bypass MidiArp you can just stop it by pressing the switch. AutoStart mode should be off if you don’t want it to start on the next note played.

      • It would be great if there was a mode where the notes were saved between sequences, this way I could start and stop the external sequencer without having to enter the notes again.

        Can’t wait for the next version. Thank you.

  5. Hi
    I’d like to know if I can have a MidiArp built (I am not so good with solder) and shipped to Italy.
    How much would it cost?
    Should it have the right firmware? I’m interested in the arpeggiator functions.
    Thank you very much
    Massimo

  6. maybe a stupid question, but can a midiClk be transformed to be a midiArp via midi / is the bootloader the same? this would allow easy change of devicetype. i just thought i ask before i brick something.

  7. So, if you are using , say MIDIArp on MIDIgal and you send MIDISeq sysex to MIDIGal you will be using MIDISeq instead? Like an App?
    And what happens to any saved info in the last App? Am I thinking about this the right way or am I completely off?
    Thanks-Tim

    • Yeah, MidiGAL is a hardware platform which can run different variants of firmware. Each variant of the firmware implements certain functionality: MidiClk, MidiSeq, MidiArp or Mutable Instruments MIDIpal. Only one firmware variant can be loaded at a time. Firmware is loaded using specially formatted sysex message sent to MIDI IN after powering up the unit while holding down encoder knob. The application specific data saved on the device needs to be backed in a sysex file stored on a computer before firmware is changed. It can be restored by sending that sysex back to the device when the original firmware that created it is restored.

  8. Am I too stupid to work this or is something wrong? Press start button, play chord, only one note sounds, no arpeggiation (monosynth). Same thing on Key Start. MidiSeq works great, MidiPal firmware too, including the Arp. One weird thing: Clock setting shows a square then “Clo” which changes to Internal or External on moving the encoder. Clock Out shows a comma and a bracket between two squares, again changes to On or Off when moving the encoder. Once set it sends clock out OK.

    Tried redownloading, reflashing, same thing. Am I just being dim here?

      • Yeah I thought so too. Power cycled everything, downloaded the firmware again in case it was corrupted and refreshed via SysEx, anything else I can try?

      • OK so I just reflashed with MidiARP firmware to no avail again, to my surprise when I went back to MidiSeq my patterns are still there, I guess they are stored on the EEPROM? Could something be corrupted there to explain the strange behaviour I’m seeing with MidiARP? How best to clear it?

  9. Yup, that’s the one. Probably missed that in the docs somewhere, although in my defence I did have a good look. Thanks for that, all good now.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s