epicMIDI

operation manual · iOS 0.4.646

logic behind epicMIDI

How to run 0.4.646: 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 On) a mixer that hosts third-party AUv3 generators and effects. It can make sound with a small onboard dummy synth, or run silent as a MIDI brain for other apps and hardware.

2. Chrome

epicMIDI top bar and pattern bar
Top bar (logo, record, bar/beat, clock, pages, vol, settings, panic) and pattern bar under it.

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.

  1. Top bar — logo (tap for about), record, measure, clock, the pages, volume, settings, and panic. On a wide screen the MIDI monitor sits on the right. On a phone it moves into Settings, and on a very small screen the logo goes with it. When the bar runs out of room, it scrolls.
  2. Pattern bar — play/stop (pinned on the left), playback (NULL / SEQ / PAT / RNG / GEN), and 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 and trash. 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.
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.
VolSpeaker button. Opens a vertical fader, with mute under it. Mute parks the slider at 0; dragging unmutes.
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 pattern bar, left edge, and stays pinned while tiles scroll.

ModeWhat plays
NULLNothing from the sequencers. Surfaces still play. HARM’s default.
LQDInheritance. The page keeps the mode you arrived with. MIX’s default. Not a running mode, so it is not on the pattern-bar menu.
SEQGrid tiles, each looping or firing by its own mode. A roll-mode row walks left to right.
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.

Lock 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 → NULL, MIX → LQD. LQD leaves the running mode alone. NULL still quiets the sequencers. Changing the transport menu does not turn the lock off. The next page change applies that page’s mode again. A new project restores the defaults. A saved project stores the lock and each page’s mode.

4. Pattern bar

The screwdriver is on SEQ only. Trash is on every page. 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 with the bank panel
SEQ with the bank panel open. Edit mode hides that panel.

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 is roll-track: when on, that row plays left-to-right one tile at a time while SEQ is playing. 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 / HoldMarks on the pad: an infinity, a single repeat, or a numbered square. Switching to Hold clears a carried loop immediately.
Chance0–100% a loop cycle fires. Small % on the pad.
Undo / RedoSEQ-edit only (32 steps). Next to GRID.
Sync / FreeStart quantized to the measure, or immediately.
MIDI dest + CHPer-tile. Ø on the channel is off: that tile sends nothing. Omni is only In CH in Settings. 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 with the RAM column
RNG — bars, snaps, playhead, and the RAM column. The keys start open.

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

Pinch on any axis is horizontal zoom.

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. 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 bank panel on SEQ
BANK opened on SEQ — folders, the file rail, and the grid beside it.

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. It is the MIDI clip library — independent of the pattern bar and of the grid.

10. ROLL

epicMIDI piano roll
ROLL — four bars of D dorian and a velocity wave. STEPS 64, 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 narrower tall screen the bar splits. Selection, the tools, and the pins move to the second bar. A short window stays one bar. PAT # never moves.

ToolBehaviour
DrawTap plants a note at snap length and auditions it. 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 in any direction. Dup | move | stretch sit on the selection. Stretch (|→) pulls tails only. 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. Each strip has its own dest, channel, and scale.

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.

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).

12. GEN

epicMIDI GEN with a track roll open
GEN — the step grid, an open roll, and the settings card.

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. Bass is the chord root in the low octave. Chords are the root, third, and fifth. Arp and lead stay on those three tones and ride the same two-octave line. Drums use that grid: kick when the chord changes, snare halfway through it, hat and open hat on the other hits. The notes are ordinary MIDI. Dummy and a plug-in hear the same pitch, velocity, length, and channel.

13. HARM

epicMIDI circle of fifths
HARM — one or two circles, independent C1 / C2.

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 hosting Waldorf Blofeld
MIX — engine On. The plug-in UI opens under its row.

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

15. Surfaces / manuals

16. Settings

epicMIDI settings rail over GEN
Settings over GEN. Manual sits beside the light-mode switch. The header reads the build.
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 / Dummy / On, same control as the MIX bar. Off is pure MIDI and greys MIX. Dummy is the role synths, edited on MIX. On is the AUv3 host; leaving it keeps the rack for the next On. On is standalone only. The MIDI processor plug-in stays Off. The instrument plug-in is Off or Dummy. Metronome level. Background audio toggle (default off).
MIDI ROUTINGInput port, In CH (Ø / Omni / 1–16), MIDI thru. Dest and channel live on each surface. No master Out CH. MIDI In defaults to Ø.
MIDI CLOCKOff / Int (sends clock to the output and the epicMIDI port) / Ext (follows incoming start/stop/clock).
PLAYBACKLock playback mode to page, with one menu per page.

On a narrow screen the MIDI monitor migrates here. 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 lock. 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. Eight bars, D dorian, 104 bpm, 4/4. SEQ opens as the live rig. RNG is the arrangement. GEN opens in D dorian with the song. The surfaces start fresh. MIX opens on Dummy. The letters are drums, bass, chord, lead, arp, and drums again, and 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. Engine On loads App Store generators and effects. The plug-in UI expands in the mixer row. MIX keys target the expanded unit only.
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. Dummy puts a role on each track and that sound leaves the stereo output. Neither hosts other plug-ins.

The dummy synth is a small set of voices: keys, bass, chord, arp, lead, and drums. Standalone Dummy uses it. The instrument plug-in uses it too. The MIDI processor does not. 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
Automation laneCLRAsks, then clears the open lane
PEDALHoldSustain (CC64)
Dotted gripDragResize a lane, the keyboard, or a plug-in panel
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.