epicMIDI

operation manual · iOS 0.5.000

logic behind epicMIDI

How to run 0.5.000: the pages, playback, files, and where MIDI goes.

1. What it is

epicMIDI is an iOS MIDI studio: a launch-pad sequencer, an arrangement timeline, a MIDI clip bank (plus a read-only archive), a piano roll, dual performance surfaces with a generative engine, a circle-of-fifths instrument, and (when the engine is Host) a mixer that hosts third-party AUv3 generators and effects. It can make sound with a small onboard GeneralUser GS sound set, or run silent as a MIDI brain for other apps and hardware.

2. Chrome

epicMIDI top bar and pattern bar
Top bar and the pattern bar. Play sits in the header. RAM, BANK, and edit sit on the right of the clips.

Two strips sit above every page. Menus, the clock, volume, and other popouts open in their own box. Tap or swipe outside to close one. Save, load, confirm, about, and the other dialogs use that same glow.

  1. Top bar — logo (tap for about), play, record, measure, clock, the pages, the mixer, volume, settings, and panic. Play sits between the mark and record. It is the same size as the other header buttons. Tap it to play or stop. A small chevron in its corner opens NULL, SEQ, PAT, RNG, or GEN on a hold. A grey play mark leads the page name whose snap is the running mode. In the folded page list the name stays centered and the mark sits to its left. The mixer button sits left of volume on every page except MIX. It opens the mixer beside that page. Landscape puts the mixer on the right. Portrait puts it on the bottom. Raising the keyboard on a narrow page keeps it on the bottom. An open BANK panel keeps the page, and the BANK button is green while it is on. SEQ edit closes the mixer panel. On a wide screen the MIDI monitor sits on the right. On a phone it moves into Settings, and the logo goes with it. When the bar runs out of room, it scrolls.
  2. Pattern bar — the pattern tiles. On SEQ and RNG the right side holds RAM and BANK. RAM’s expand and settings appear while RAM is on. The keyboard button follows BANK on RNG. SEQ adds the screwdriver. The trash shows while the bar is focused. On a narrow screen those buttons drop to their own bar.
ControlDoes
LogoTap for credits: the mark, epicMIDI, © Timothy Capelle 2026, and the chord archive credit (SHLD Free MIDI Chords, © 2019 Ludovic Drolez, MIT). Tap anywhere to close. On a very small screen the tile sits in Settings. The tap is the same.
PlayBetween the mark and record, the same size as the other header buttons. Tap plays or stops. A small chevron sits in the corner. Hold the button for NULL, SEQ, PAT, RNG, or GEN. A grey play mark leads the page name whose snap is the running mode. In the folded page list the name stays centered and the mark sits to its left.
Record ●Arm. Live keys and incoming MIDI write into the active pattern, or into an armed arrange track, while playing. The button pulses red with the clock when recording. Recording stays inside the clip’s STEPS and does not grow the clip.
Bar.beatPlayhead readout, next to the clock.
ClockOpens BPM, tap tempo, and the metronome, then time signature and length in bars. PAT loops the clip. Arrange has its own length. Slide BPM sideways, tap the number for the number pad, and tap or swipe away to close. The pad takes tenths. While playing it flashes green on the beat and brighter on the downbeat.
MixerLeft of volume, on every page except MIX. Opens the mixer beside the page. Landscape puts it on the right. Portrait puts it on the bottom. Raising the keyboard on a narrow page keeps it on the bottom. That half stays one column. An open BANK panel keeps the page. The BANK button is green while it is on. SEQ edit closes the mixer panel.
VolSpeaker button. Opens a vertical fader, with mute under it. Mute parks the slider at 0; dragging unmutes. The level and the mute are the mixer master.
GearSettings rail from the right.
Panic △All notes off and sustain off. Also sends CC120 and CC123. The button is the caution triangle.

3. Transport

Play lives on the top bar, between the mark and record, at the same size as the other header buttons. Tap plays or stops. Hold the button for the mode. A grey play mark leads the page name whose snap is that mode. In the folded page list the name stays centered and the mark sits to its left.

ModeWhat plays
NULLNothing from the sequencers. Surfaces still play.
LQDInheritance. The page keeps the mode you arrived with. MIX and HARM’s default. Not a running mode, so it is not on the play button’s menu.
SEQGrid tiles, each looping or firing by its own mode. A roll-mode row walks left to right through the tiles that are on.
PATOnly the selected pattern-bar clip, looping on its STEPS.
RNGThe arrange timeline. The playhead only moves on the RNG page.
GENThe generative surface. PERF’s default. A new project starts with it on. Opening PERF does not turn it off.

Time signature lives in the clock popdown (2/4 … 12/8). It drives bar lines, metronome accents, and bar length. Metronome is a short click with its own level in Settings. The playhead follows the audio device, not a wall timer. If the clock jumps, notes already started are released.

Follow-playhead (the left/right triangle) on ROLL and RNG chases the playhead inside the relevant length. A 1-bar clip in a 4-bar song stays on that bar.

Snap playback mode to page is in Settings. On by default. Opening a page sets that page’s mode. Defaults: SEQ → SEQ, RNG → RNG, ROLL → PAT, PERF → GEN, HARM → LQD, MIX → LQD. LQD leaves the running mode alone. NULL still quiets the sequencers. Changing the play button’s mode does not turn the snap off. The next page change applies that page’s mode again. A new project restores the defaults. A saved project stores the snap and each page’s mode.

4. Pattern bar

The screwdriver is on SEQ only. The pattern can shows while the bar is focused, and while a tile is lifted. Deleting a pattern selects the one after it, or the one before it if it was last. A touch outside the bar clears that focus. Both cans accept any dragged tile. RAM and BANK live on the SEQ and RNG bars. The keyboard button follows BANK on RNG.

5. Lift / drop

Drop onDoes
Trash (any can)Deletes that tile, clip, or pattern immediately. A drop on a can wins over whatever sits under it. The lifted tile outlines in red, and the badge turns − over a can.
Pattern bar slotReorder, or insert a bank / GEN-RAM / archive clip as a new pattern. Bar parts existing tiles while you drag.
Pattern bar +Copies the dropped pattern onto the end. The + stays after the last tile.
SEQ padPlace / swap. Bank clips become a pattern on that cell, on by default.
Arrange laneInsert at the leading snap. Length is the clip’s actual length — not a bar of loops.
FolderMove a bank clip into that folder.

Hold-to-delete on a can fills red for one second, then deletes the can’s active item (pattern, selected grid tile, or bank clip). A short still-hold starts a drag. A flick scrolls.

6. SEQ

epicMIDI SEQ grid in edit
SEQ in edit. The rail is tile 20: loop, sync, chance, channel 2, Clavinet.

Buttons on the right of the pattern bar (or their own bar when the width is tight): RAM and BANK. RAM’s expand and settings buttons appear flush to its left only while RAM is on. SEQ is the page you are on. Edit (screwdriver) collapses the RAM and BANK panels so the grid has the room; the buttons stay. On a narrow screen the edit rail becomes a two-column panel under the grid: tile settings on the left, the grid and the can on the right, each scrolling on its own.

Rows are tracks. Track letter is a colored button (tap opens dest and channel). Mute is lavender. Solo is gold. The fourth button cycles loop, roll, and one clip. Loop is the paired arrows. Roll walks left to right through the tiles that are on, and those tiles are orange. One clip is repeat.1 in blue, and the track holds a single clip. The playing clip keeps the blue outline and the progress fill until its replacement starts. The yellow inset marks a clip cueing in, and the red inset marks a clip cueing out. Choosing another cues the current clip out and the new clip in. Leaving roll for one clip turns that row’s clips off. Turning roll on while SEQ is playing waits for the next bar. The row keeps its sequence until that bar, then the walk starts. Tap it again before the bar and the track goes to one clip. The walk keeps going when the song loops. Turning a tile on or off adds it or removes it, and the other tiles stay in order. A tile that is playing finishes its clip before it leaves. Default grid is 6 × 6. Rows and columns each run from 2 to 16. The tiles stay one grid, and the spacing tightens as the count climbs.

Performance (edit off)

Edit (screwdriver)

Opens the right rail. Tapping a tile selects it and does not trigger. Double-tap opens ROLL. A green outline marks edit mode. Hold a selected tile, then tap another slot to duplicate there. Child copies letter a, b, c after the parent number.

ControlDoes
Project transposeSession-wide. Independent of clip transpose. Does not rewrite notes.
Clip transposeThis tile. Pad badge shows the sum. Rail does nothing if no grid tile is selected.
On / offWhether this cell is sounding. Independent of loop / 1-shot / hold.
Loop / 1-shot / HoldThe top right label is @ for loop, ! for 1-shot, and # for hold. Switching to Hold clears a carried loop immediately.
Chance0–100% a loop cycle fires. A short % sits under that label. 100 stays blank.
Undo / RedoSEQ-edit only (32 steps). Next to GRID.
Sync / FreeStart quantized to the measure, or immediately. In sync, that measure’s notes are already in the player before the bar arrives. Once the tile is on, later loops play the whole pattern.
MIDI dest + CHPer-tile. Ø on the channel is off: that tile sends nothing. Omni is the letter's MIDI in. New tiles inherit dest from the parent, then stay independent.
EditOpens ROLL for the pattern. BACK TO SEQ appears on the roll until you leave.
BankOpens the BANK panel on this page. Same library as the one on RNG. Edit mode hides the panel, not the button.
EmancipateBakes transpose into a new pattern, retargets the tile, appends the bar, scrolls to it.
GRIDColumns × rows, at the end of the rail. Swing and humanize sit under that.

Toggled-off tiles keep a ghost of their notes. Empty unused slots stay dark.

7. RNG

epicMIDI arrangement
RNG — thirty-two bars, a 1/4 grid, the playhead, and the keys.

Its own page. A song editor, always editable — no side rail. RAM and BANK sit with the same buttons as SEQ, and the keyboard button follows BANK. Under 420pt that row is its own bar, and BARS and the grid snap follow the keyboard. Timeline is bars (default 8, range 1–1024). Snap is 1/1 through 1/16, plus FREE. FREE keeps the bar lines and the bar numbers. Zoom and scroll are remembered when you leave the page.

The first finger holds a point on the page. The second finger scales by its full distance from that point. One finger scrolls. A drag on an empty cell, or on a clip that is not selected, scrolls.

8. RAM loop

Recent takes, on SEQ and on RNG. It is not the bank and not the pattern bar. Collapsed, a column of tiles sits beside the track heads. Expand pulls it in from the left in landscape, or as a strip under the grid in portrait. SEQ, RNG, and GEN each keep their own length, position, and whether RAM is open. The takes themselves stay one history on SEQ and RNG. It does not scroll — tiles stretch, and it will not take more than half the page. In landscape with BANK open, BANK owns half and RAM stacks with the grid in the other half. On a narrow page, raising the keyboard keeps BANK under the grid. Portrait expanded RAM scrolls with the page.

Settings sit flush against RAM: length, COL to RNG (dump the column to the arrangement), GRID to RNG (converge the loop onto the timeline, appending bars if needed). A transposed pattern is a new set of notes and gets its own loop. Eight tiles show. Sixteen are kept, so a tile you are holding is not dropped when the list moves. Double-tap or drag like bank clips. GEN has its own RAM, numbered by instrument, not role.

9. BANK

epicMIDI chord archive open on RNG
The chord archive on RNG. v – Gm7 is selected. KEY, KIND, MODE, MOOD, and STYLE filter the list.

BANK is a panel on SEQ and on RNG, the same library either way. It is not a page. Edit mode on SEQ hides the panel. While BANK is open it keeps the page, and the mixer panel waits. Raising the keyboard on a narrow page keeps BANK on the bottom. The BANK button is green while it is on. It is the MIDI clip library — independent of the pattern bar and of the grid.

10. ROLL

epicMIDI piano roll
ROLL — pattern 29, sixty-four steps, snap 1/16, the lane on curve at 1/4, keyboard open.

No ROLL label. Bar leads with PAT [#], then a scroller: STEPS · snap · outlet · key · keyboard · follow · SEL / Q / HUM · draw / erase / select / move. Undo / redo / delete pin right (plus BACK TO page until you leave).

On a narrow screen PAT sits above the page and SEL follows inside it, so a stacked half still has one bar. On a wider screen that is still tight, both bars stay on the page, PAT then selection. A short window stays one bar. PAT # never moves.

ToolBehaviour
DrawTap plants a note at snap length and plays it on the pattern’s output. None is silent. Drag moves pitch. Tap a drawn note to delete it. Drag the body to move. Pull the tail to stretch.
EraseTouch a note to remove it. A drag removes every note the finger crosses. One undo puts that stroke back.
SelectDrag a rectangle over the bars you see, or tap one. A short hit uses that bar. Selected notes take a green wash. Dup | move | stretch sit on the selection. Stretch (|→) pulls tails only. The first move lands on the next snap in that direction, then steps by the snap. Every selected note changes by that same amount. Independent tail-drag still works on one note inside a selection.
MoveOne-finger pan. Two-finger pinch pans and zooms. Zooming out fits the rows, and the clip plus one bar across.

11. PERF

epicMIDI performance page with two keyboards
PERF — two keyboards. The upper strip has an XY. Both have gliss, latch, poly, and pedal.

First open: GEN on the upper surface, lower off. Picking keys on the upper opens the lower at half the page. On a portrait iPhone, picking GEN opens a shorter lower strip. Drag the dotted grip to set that height. A new project clears it. You can pair keys with keys, knobs with faders, or XY with XY. Circle and pads show alone.

The lower button is the keyboard glyph. It shows or hides the lower surface. The keys button carries a +. Tap it to open the other surfaces. Settings show the rest of that surface’s controls. On a portrait iPhone, destination and channel sit behind the outlet, and scale, root, and octave sit behind the quarter-note. The bar scrolls when it does not fit. Keys start with extras closed. Keyboard settings open above the keys. Playing the keys leaves that box open.

In a short landscape window the two surfaces sit side by side, unless either one is keys, in which case they stay stacked. Drum pads are 3 by 4 when the window is narrow and tall, and 4 by 3 when it is wide and short.

GEN is not allowed on lower. Surfaces: keys, XY, knobs, faders, circle, pads, GEN (upper).

With the mixer open, the lower surface sits under the mixer, across the width, the same as the other pages’ lower strips. Opening the mixer leaves it up.

12. GEN

epicMIDI GEN with the wrench card and a track roll
GEN on the upper surface. The wrench card is open, and one track’s roll is down.

A generative MIDI surface. The step grid starts empty. GEN itself starts on. The small switches in each track header arm that track. The label shows the current state.

Dice writes one score, then every voice plays it. The seed composes each part. Chords are the root, third, and fifth, and the voicing moves. Bass walks the scale and lands on the chord. Arp breaks that chord. Lead walks it too. Drums compose their own kick, snare, and hat rhythms, and a step can carry a sidestick, an open hat, or a tom. The dice on a track composes a new part for that track and leaves the others. The notes are ordinary MIDI. Int and a plug-in hear the same pitch, velocity, length, and channel.

13. HARM

epicMIDI harmony circles with the layout rail
HARM — two circles. C1 is D dorian with the layout rail open. C2 is C chromatic.

Menu: C1 OCT | C2 | dipswitch | C2 OCT | GLISS. OCT shifts every ring of that circle by a whole octave, plus or minus 3. The dipswitch shows the second circle. Dest and channel sit at the bottom of that circle’s rail. GLISS is off until you turn it on. Expand takes the circles fullscreen.

14. MIX

epicMIDI mixer with soundfont racks
MIX — engine Int. Two columns. Racks open under the letter tracks.

The bar has the same Off, Int, and Host control as Settings. The rows are the letter tracks shared with SEQ, RNG, and GEN. Off greys them. Int gives each letter a rack. Host puts an AUv3 on each track. Hosted inside AUM, Host is refused.

15. Surfaces / manuals

16. Settings

epicMIDI settings over the harmony page
Settings over HARM. The header reads iOS 0.5.000. Manual sits beside the light-mode switch.
BlockContents
Moon / SunLight mode. Notes, previews, and keys shift. Keys go purer white.
ManualSits in the header, between the title and the light-mode button. Opens this book in the app, filling the page. Close returns to Settings. The link at the top opens epicmidi.com/manual.
PROJECTNew, Load, Save, SMF, and Demo, then Import and Export. Load and Save use the library inside the app. A name already there asks before it replaces the file. SMF writes Type 1, one track per pattern. Import and Export move a file in or out. Demo loads oxide-lattice.
BANKNew / Load / Save the MIDI clip library only. New Bank does not touch the pattern bar or grid. First launch seeds kit clips plus the archive.
AUDIO ENGINEOff / Int / Host, same control as the MIX bar. Off is pure MIDI and greys MIX. Int is the soundfont racks, edited on MIX. Host is the AUv3 host; leaving it keeps the rack for the next Host. Host is standalone only. The MIDI processor plug-in stays Off. The instrument plug-in is Off or Int. Metronome level. Background audio toggle (default off).
MIDI ROUTINGOne chip per input, including epicMIDI In. Several can be on. No channel here. MIDI thru is for input no letter claimed: it plays the focused letter, and thru also sends it to that letter's out. Each letter has its own in, in channel, out, and out channel.
MIDI CLOCKOff / Int (sends clock to the output and the epicMIDI port) / Ext (follows incoming start/stop/clock).
PLAYBACKSnap playback mode to page, with one menu per page.

On a narrow screen the MIDI monitor migrates here, and the logo sits beside it. BPM stays behind the clock.

17. Files

KindDefault nameContains
Project.epicprojThe song and the session: patterns, the grid, the timeline, the mixer, GEN, both circles, the performance surfaces, routing, clock, and the page snap. Notes you are holding, the pedal, light mode, and background audio stay on the device.
Bank.epicbank. project + “ bank”, or “bank”MIDI clips and folders only. Archive is app-shipped and is not stored in the project or the bank file. Loading either puts the archive root back if it was missing.
MIDI clipclip titleSMF. Type 0 = one clip. Type 1 import = one clip per track. The time signature in the file is the clock’s.
Project SMFsession / project nameType 1. Conductor + one named track per pattern-bar clip. Transpose and channel baked. The conductor’s time signature is the clock’s (2/4 … 12/8).

The app also keeps a recovery copy of the session and opens it on the next launch. Projects and project SMFs live in the app’s own library. Import and Export are how a file moves in or out. The standalone app and the plug-in each keep their own library. The recovery copy does not contain the clip library. That already lives in the bank. The recovery file is not in the Load list.

Settings → Project → Demo loads oxide-lattice, the song shipped in the app and in the plug-in. Thirty-two bars, D dorian, 80 bpm, 4/4. SEQ opens as the live rig, eight columns of clips across the six letters. RNG is the arrangement. GEN opens in D dorian with the song. The surfaces start fresh. MIX opens on Int. The letters are Standard 1, Finger Bass, Clavinet, Italian Accordion, Marimba, and Standard 1 again. Letter G is Grand Piano, with no clips, for playing along. Both circles send to it. Each pattern points at one of those instruments. Each pattern’s roll is chromatic, so every note has a row. The song stays D dorian for GEN. GEN’s parts follow the first six letters: drums, bass, chord, lead, arp, drums. On a wide page those tracks run in two columns at most, at the same widths as MIX. Beside the mixer they stay one column. The clav plays four equal chops a bar: beat 2 and the sixteenth after it, then beat 4 and the sixteenth after it. The accordion plays a moving line around those chops, long notes and short notes, and stays off them. The bass walks the changes, one note a beat. The hats sit on the beats, track F plays eighths, and the kick and side-stick land together on beat 3. Each drum clip is one bar, repeated through its phrase. The mix keyboard starts on Track.

18. MIDI I/O & clock

The green monitor is a 4-line trace. It is not a log you can export. MIDI 2.0 is not implemented.

19. AUv3

WhereWhat epicMIDI is
Standalone appAUv3 host. MIX is always a page. Host loads App Store generators and effects. Several plug-in panels stay open together. Leaving MIX keeps those panels and their sizes. MIX keys target the one opened most recently.
Inside AUM / Logic / GarageBandTwo plug-ins. epicMIDI is the MIDI processor. It sends MIDI through the host and does not play. epicMIDI Engine is the instrument. Int puts a soundfont rack on each track and that sound leaves the stereo output. Neither hosts other plug-ins.

Standalone Int plays each letter’s soundfont rack. The instrument plug-in plays a sine. The MIDI processor does not play. Its output stays silent, because the host is the one making sound.

20. Gesture sheet

WhereGestureResult
Any tileHold still ~0.2s, then moveLift. Scroll cancelled.
Any tileFlick / pan before 0.2sScroll only.
Pattern barHold a tile on either edgeWhen the tiles overflow, the strip scrolls. Tiles stay put until the finger leaves the edge
Pattern bar +Drop a patternCopies that pattern onto the end. The + stays put
A number boxBrief still, then slideChange the value. The − and + buttons are taps, not the drag.
GEN stepsRelease / paint after stillToggle. Page scroll wins if you move first.
GEN rollDrag up or downScroll the pitches. A tap toggles a cell
Roll grid1 finger (draw / erase / select / move)Plant / erase / select / pan
Roll grid2 fingersPan + zoom. Horizontal zoom is shared with the lane. Cancels a just-planted note
Measure bar / piano keysPinchZoom horizontally / vertically
Arrange rulerTap / pinch / drag triangleSeek / zoom X / scrub
Automation laneDrawWrites the division under the finger. Bar holds the cell. Line joins the points. Curve flows through them.
Automation lane2 fingersPinch zooms horizontally, the same zoom as the roll.
Automation lanePoint, tapAdd a point. Double-tap removes one.
Automation lanePoint, drag a pointMove that point. It stays on its division.
Lane gutterDrag up or down, or holdThe wheel writes the open lane while record is armed, including while the finger stays still. On pitch bend it rests in the middle, and letting go writes zero while the song is playing
Automation laneCLRAsks, then clears the open lane
PEDALHoldSustain (CC64)
Dotted gripDragResize a lane or the keyboard
Key rail gripSwipe or double tapOpen or close that rail
Plug-in stripDrag the left side / the right sideShade the panel / set its size. Double tap either side to return to the height it opened at. A shaded panel scrolls. The left side shows when it is covered
Home indicatorSwipe up from the bottomOne swipe leaves the app
TrashHold 1sDeletes the can’s active item
Bank / RAM clipDouble-tapAppend to pattern bar
Pattern / SEQ pad (edit)Double-tapOpen ROLL
CircleMulti-touchMultiple chords held
PopoutTap insideStays open. Tap or swipe outside to dismiss.