Quick Function Index

Click a menu button in the table below for more information on the menu functions available via that button.


Quick Start

OK so I know you just want to get started… So connect up your MIDI keyboard to MIDI in, and a sound module to MIDI out. Switch on the ARPIE.. after a short delay (1-2 seconds) the 16 blue data display LEDs should light and the CLK LED should start blinking.

Hold down a chord on the MIDI keyboard. The RX LED should blink as notes are received, and the TX LED should blink rapidly as notes are sent. Press the HOLD button once, the HOLD LED should illuminate. Now when you play a chord, the Arpeggiator continues to play after you have released the keys.

If you don’t have a keyboard handy, turn on HOLD, press INST and then press the small button below the right-most blue LED. This should start playing a C major chord arpeggio.

OK, now we’ve broken the tension lets move on!

Introducing ARPIE

ARPIE is a MIDI arpeggiator based around open-source software and hardware. The Arduino-based firmware allows maximum hackability and the hardware is designed for easy DIY assembly and customisation.

Despite its simple construction and appearance, ARPIE is full featured with various chord arpeggiation, tempo synchronisation and standalone features to enable ARPIE to be used creatively with or without an attached MIDI keyboard.

A distinctive feature of ARPIE is the minimal control surface. While this has only simple LEDs for visual feedback, it is easy to use once you get familiar with it.

Basic Operations

When you play a chord into ARPIE, it takes the notes of that chord and builds them into an “arpeggio” based on the selected arpeggio mode (MODE button).

The argeggio is extended over multiple octaves, based on the selected octave span (SPAN), and transposed up or down by whole numbers of octaves selected by the octave shift (SHFT) setting, and by a number of notes based on the note transpose (TRAN) setting.

This argeggio is then extended based on the selected note insertion (INST) mode, for example by inserting the lowest note of the sequence between all other notes.

ARPIE plays the arpeggio sequence through the MIDI out port at a rate based on the tempo and synch settings (SYNCH) and the playback rate (RATE) setting.

The output channel, volume and duration of the note are controlled by the MIDI channel (CHAN), note velocity (VELO) and gate length (GATE) settings.

Notes in the arpeggio sequence can be selectively muted using the rhythmic pattern (PATN) which loops, independently of the arpeggio sequence, at a selectable rhythmic pattern length (PLEN). The interplay between the arpeggio and the pattern can create interesting variations and grooves.

ARPIE has loads more features up it’s sleeve such as accent and glide patterns, polyphonic chord gating and force-to-scale. Read on to find out more!

Know Your ARPIE

Control Surface

Rear Panel Connections

The rear panel of ARPIE is shown below:

Left Side

Right Side

Front Side

General Use


Rhythmic Pattern

ARPIE’s rhythmic pattern is a sequence of up to sixteen steps that can each be set to play or rest. This pattern loops alongside the arpeggio and plays an arpeggio note or rests for a step, adding a rhythmic groove to the argeggio.

Depending on the arpeggiator settings and the PLEN setting, the rhythmic pattern can be longer or shorter than the arpeggio sequence, resulting in interesting rhythmic effects and shifting interactions as the two patterns repeat at different points.

To edit the rhythmic pattern, press PLEN. Press the data buttons to toggle the LEDs on and off. When the LED is on, the corresponding note of the arpeggio plays. When the LED is off a rest is inserted.

The skip on rest option in in performance options allows you to decide whether to mute a given arpeggio step and skip over it, or just to insert a rest without missing any notes from the arpeggio sequence.

PATN allows you to groove up your arpeggio with rests, rather than having to play a note at every step. This can be especially effective when used with the tied GATE mode.

PATN is the default function, and ARPIE returns to it when you don’t press anything for a while (you can turn this off via the preferences menu). You can also return by pressing the PATN button at any time.

Accent And Glide

If you hold the PATN button for a few seconds, you will go to the accent or glide pattern edit mode (according to the setting of PATN secondary function in performance options)

Accent and glide are are edited rather like the usual pattern of notes and rests and have a length determined by the PLEN setting. The patterns start out blank and you press data buttons to enter accent or glide steps.

If you do not press any key for a while ARPIE will revert back to the normal PATN mode.

Note that the rhythmic, accent and glide patterns are all active together - even though only either accent or glide can be edited at a given time.


Rhythmic Pattern Length

Press the PLEN button to view and change the loop length of the rhythmic pattern (from 1-16 steps). The current pattern length is indicated with a brighter LED and can be changed by pressing the corresponding data button.

The rhythmic pattern (and accent/glide) loops for the number of steps defined by PLEN. Setting a shorter PLEN does not clear the later steps in these patterns, so you can bring them back later.


Press and hold PLEN to access the configuration preferences

The first eight LEDs control built-in functionality for the hack header (the small expansion header on the ARPIE base board). This is quite a big subject and has it’s own section later in the manual!

B1B0Long Press Time
ONON1.5 seconds
OFFON1 second
ONOFF0.5 seconds
OFFOFF0.25 seconds
B1B0Recommended for LED type
OFFOFFVery high intensity (e.g. bright white)
OFFONHigh intensity (e.g. bright blue/green)
ONOFFMedium intensity (e.g bright red)
ONONLow intensity (e.g standard red/green)

All of these settings are saved in EEPROM. This means they are remembered when ARPIE is switched off.


Arpeggio Mode

This option allows you to select between ARPIE’s basic arpeggiation modes:

- Poly Gate plays all the notes of the chord at the same time. Thicken up with SPAN and add some groove with PATN to get dancey chord stabs!

Pattern Fill

The far right data entry buttons can be used to reset the PATN and PLEN information.

Accent and Glide patterns are not affected.

Performance Options

Press and hold MODE to access the Performance Options. This menu contains settings that control other ARPIE functions, changing ARPIE’s musical performance.


Octave shift

This function transposes the arpeggiated sequence up or down by up to three whole octaves. The default, no shift, position is indicated by a slightly brighter LED.

Force To Scale: Root Note

Hold the SHFT button to access the Force to Scale Root note option.

This option works with force to scale mode to set the root note of the musical scale to which notes are being forced. For example if force to scale root note is set to D# and force to scale mode is Locrian, notes will be forced into a D# Locrian mode. See force to scale mode for more information.


Octave Span

This option determines the number of octaves the arpeggiated sequence will be extended over. This also works in polyphonic gate mode to layer additional octaves worth of notes on the chord.

Force To Scale: Mode

The force to scale function is accessed with a long press to the SHFT button. When enabled, this feature makes sure that all notes output from ARPIE fits within a specific musical scale (or “key”). This can sound especially good when transposing held arpeggios, as the note intervals within the chord change to keep it in key.

A musical key is made up of a root note (for example “C”) and a set of note intervals which together give us a scale (e.g. “C minor”).

These sets of note intervals have wierd names derived from ancient Greek tribes! Don’t let that put you off though - they are just the sequences of note intervals you get when you play along the white notes of a piano starting at different points

For example if you play white notes C through C you play a Major scale, which happens to be the same as the “Ionian” mode. If you play white notes A through A you are playing a Minor scale, or “Aeolian” mode. The other modes are just the sets of intervals you get by playing sequences of white notes with different start points… simple! but each mode has a different “feel” and we can have fun playing with them!

As well as changing musical mode, force-to-scale lets us select the root note (we need both a musical mode and a starting note to define a scale) and control how out of scale notes are corrected.

Force To Scale: Note Correction

So - if you want to make an omelette you need to break a few eggs - and if you want to force a sequence of notes into a musical scale some of them just might not fit!

This option is accessed by a long press to the SPAN menu. It lets you decide what to do with these outlying notes. Each option has a different musical feel, so have a play!


Time Division

This option sets the length of notes in the arpeggiated sequence, as a fraction of a beat. While the BPM stays the same, the arpeggio will play faster or slower as the beats are divided up differently.

The default “normal” note time (at least in 4/4 time) is one sixteenth of a beat, so for example selecting eigths will play notes half the speed for a given BPM.


MIDI Velocity

This menu controls the MIDI velocity of the notes output by ARPIE. There are two velocity modes, described as follows:

Select MIDI Velocity

This mode allows you to override the velocity of all arpeggiated notes to one of 16 specific levels (0,9,17,26,34,43,51,60,68,77,85,94,102,111,119,127). In this mode the original velocity information from the controller keyboard is ignored.

To switch to original velocity mode, press the first data button (zero velocity) two times.

Original MIDI Velocity

Original velocity mode plays each arpeggiated note using the velocity of the note as it was played on the controller keyabord. This mode can be identified by the left and right-most LEDs being on and all the others off.

To switch back to selected velocity mode, press any velocity button, including zero.


MIDI Note Gate Length

Controls the gate length of the MIDI notes played by ARPIE. You can select a proportion of a “full step” or you can “tie” notes together.


Arp Note Insert

Extends the length of the arpeggiated sequence by repeating notes from the chord according to specific modes:

Chord Insert

To the right of the screen are some options for inserting chords without a keyboard. The HOLD function must be on for this to work!


Clock Source And BPM

This screen controls the ARPIE’s MIDI synch mode and it’s internal metronome (BPM).

The internally generated BPM is approximate (but good enough for most stuff). However, an external clock source is recommended if a precise BPM is needed or if you need to sync to other gear as a slave.

MIDI Routing Options

These options give you control over how ARPIE internally routes MIDI information.

Note that MIDI thru is handed in ARPIEs firmware (there is no hardware thru) which can cause latency if the arpeggiator engine is busy - and possibly even dropped messages in situations of very high thru volume.


MIDI Output Channel

When pressed, selects and displays the MIDI channel for output

MIDI Input Channel

If the CHAN button is pressed and held for a couple of seconds, you can Select The MIDI Input Channel. By default ARPIE will accept input from any MIDI channel (OMNI mode) but you can also select a specific channel, which affects MIDI Thru behaviour (see below)

OMNI mode is indicated by all the LEDs being ON. Pressing any single button will select an individual input channel. Pressing the same button again will restore OMNI mode.


Chromatic Transpose

Transpose the MIDI output. Buttons represent -3. -2, -1, 0, +1, +2 through to +12 semitones. The default (no shift) position is indicated with a brighter LED.


Normal Operation

Before we look at the HOLD function, lets look at how things happen when when the HOLD function is switched off:

Hold Function

The HOLD function can be activated by pressing the HOLD button, lighting the HOLD LED. When the HOLD function is enabled:

HOLD can be activated or deactivated while notes are already held.

Hold Button Secondary Function

When the HOLD button is held for a few seconds, the HOLD LED starts to blink, indicating that the hold button secondary function is active.

There are two functions available and you can select between them from the performance options menu (long press MODE). These are described below.

MIDI Lock function

This function can be used to “lock” the arpeggiator engine and start passing MIDI notes from input to output. This allows you to hold an arpeggio and then play over it.

MIDI lock can also be useful if you chain together multiple ARPIEs and want to play into a single one at a time while the others are playing sequences in hold mode.

Exit MIDI lock by pressing HOLD again. ARPIE will return to the previous HOLD mode.

MIDI Transpose function

This function works a bit like MIDI lock, except that instead of passing input notes through to the output, a held arpeggio is transposed according to the interval between the note you play on the input and the lowest note in the arpeggiated chord.

This function is designed to work with the HOLD feature. You can have great fun when using this with force-to-scale options.

Clock/Message Routing

This block diagram shows how data is routed around ARPIE

Hack Header Modes

Control Pots / Switch

You can connect up to three potentiometers (100kOhm - 1Mohm recommended) to ARPIE’s hack header, configured as voltage dividers between 0 and 5V, and have them control various internal or MIDI parameters. You can also connect an active low switch to PB3 and have it trigger some predefined specific actions.

The following table shows how to configure hack header LEDs B7 - B0 on the system preference menu. 1 indicated LED is ON and 0 indicates OFF. A dot means this LED is not relevant to this setting.

00......PB3 Switch MUTE MIDI output
01......PB3 Switch Restart Bar
0.00....PC0 Pot Disabled
0.01....PC0 Pot ARPIE BPM
0.10....PC0 Pot ARPIE Gate Length
0.11....PC0 Pot MIDI CC#
0...00..PC4 Pot Disabled
0...01..PC4 Pot ARPIE Velocity
0...10..PC4 Pot MIDI Pitch Bend
0...11..PC4 Pot MIDI CC#
0.....00PC5 Pot Disabled
0.....01PC5 Pot MIDI Mod wheel
0.....10PC5 Pot ARPIE Transpose
0.....11PC5 Pot MIDI CC#

The default MIDI CC numbers assigned to the three pots when in MIDI CC# mode are as follows

PC0 PotCC#16General purpose
PC4 PotCC#17General purpose
PC5 PotCC#18General purpose

Of course if you are prepared to dirty your hands in the code, you can make it do anything you like!

Turning it off

The hack header should always be disabled, unless you specifically want to connect something to it. Otherwise you may get random things happening if pots are not connected … or maybe you want that!

00000000Hack header disabled

Pulse clock

Alternatively you can connect a 5V pulse clock to the header. To use pulse clock you need to set the hack header mode LEDs to the following

10000000Pulse Clock

The default settings are designed to work with 15ms high-pulse-per-step (e.g. Korg Volca) but you can edit and recompile the ARPIE source code to support other time formats.

The pin assignments on the header in this mode are

PC5Enable pulse clock (active low)
PC4Pulse clock OUT
PC0Pulse clock IN
PB3Not used

You’ll need to restart ARPIE after changing the pulse clock settings

Other Possibilities

The hack header brings out 4 of the ATMEGA328 I/O pins. These pins can support some interesting functions that open up other possibilities for experimentation (as long as you are able to get your hands dirty in the code!). In future some of these might be implemented in the main firmware releases.

Since the header breaks out the I2C bus, peripherals such as DACs, EEPROMs, Accelerometers etc could be supported with additional firmware code.

The presence of a PWM output allows generation of a control voltage that could be used to drive external equipment(although only 8 bit resolution is supported by Arduino analogOut)