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.
- iPhone and iPad. Adaptive interface.
- Opens on SEQ. A new project starts with one empty pattern and GEN on. The on-screen keys start collapsed, and the octave count follows the screen size.
- Pages: SEQ · RNG · ROLL · PERF · HARM · MIX. BANK is a panel on SEQ and RNG, not a page. MIX is always there. The same letter tracks run through SEQ, RNG, GEN, and MIX. Off greys them. Int puts a soundfont rack on each track. Host puts an AUv3 on each track and brings the saved rack back.
- Timebase is 1920 PPQN. Pattern STEPS are 16th notes. Arrange counts bars: 16 sixteenths per bar in 4/4.
- Every Note On is paired. Panic flushes sounding notes and sustain.
2. Chrome
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.
- 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.
- 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.
| Control | Does |
|---|---|
| Logo | Tap 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. |
| Play | Between 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.beat | Playhead readout, next to the clock. |
| Clock | Opens 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. |
| Mixer | Left 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. |
| Vol | Speaker 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. |
| Gear | Settings 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.
| Mode | What plays |
|---|---|
| NULL | Nothing from the sequencers. Surfaces still play. |
| LQD | Inheritance. 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. |
| SEQ | Grid tiles, each looping or firing by its own mode. A roll-mode row walks left to right through the tiles that are on. |
| PAT | Only the selected pattern-bar clip, looping on its STEPS. |
| RNG | The arrange timeline. The playhead only moves on the RNG page. |
| GEN | The 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
- Tap a tile to select it and focus the bar. The border is white while the bar is focused, and darker when focus is elsewhere. Double-tap opens ROLL for that pattern.
- Hold still ~0.2s, then drag to reorder. Linear position is the pattern number; grid tiles that point at it update. A flick without the hold scrolls the bar. When the tiles overflow the strip, holding that drag on either edge scrolls the strip, and the tiles stay in place until the finger leaves that edge.
- The dashed
+stays after the last clip, with empty room after it for one more tile. Tap it to append an empty pattern and open the roll. When the tiles overflow the strip, that tap scrolls the strip so the + stays in view. Drop a pattern on it to copy that pattern onto the end. A new project starts with one empty pattern. - The selected pattern in the bar does not play from transport by itself. SEQ, PAT, and RNG do.
- Tiles inherit dest and channel. They pass those to children. A letter’s instrument is its soundfont rack.
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 on | Does |
|---|---|
| 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 slot | Reorder, 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 pad | Place / swap. Bank clips become a pattern on that cell, on by default. |
| Arrange lane | Insert at the leading snap. Length is the clip’s actual length — not a bar of loops. |
| Folder | Move 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
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)
- Tap an empty slot’s
+to drop the selected pattern onto it. New tiles come on. A swipe across empty slots paints that pattern. A swipe across tiles that already have a pattern toggles them. - Loop: tap toggles. Turning a playing tile off cues it, and the clip finishes before it stops. That clip does not play again on the next repeat. Tap the cued tile again to keep it on. Playing tiles fill grey left-to-right. A cued tile keeps an inset red stroke until the clip ends.
- 1-shot: tap plays through once. Tap again while it is waiting cancels it. Tap while it plays, and it finishes, then stops.
- Hold: sounds only while the finger is down.
- Last-touched tile is the implicit selection for delete / opening edit. No yellow outside edit. Hold-to-delete fills that pad red with the can.
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.
| Control | Does |
|---|---|
| Project transpose | Session-wide. Independent of clip transpose. Does not rewrite notes. |
| Clip transpose | This tile. Pad badge shows the sum. Rail does nothing if no grid tile is selected. |
| On / off | Whether this cell is sounding. Independent of loop / 1-shot / hold. |
| Loop / 1-shot / Hold | The top right label is @ for loop, ! for 1-shot, and # for hold. Switching to Hold clears a carried loop immediately. |
| Chance | 0–100% a loop cycle fires. A short % sits under that label. 100 stays blank. |
| Undo / Redo | SEQ-edit only (32 steps). Next to GRID. |
| Sync / Free | Start 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 + CH | Per-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. |
| Edit | Opens ROLL for the pattern. BACK TO SEQ appears on the roll until you leave. |
| Bank | Opens the BANK panel on this page. Same library as the one on RNG. Edit mode hides the panel, not the button. |
| Emancipate | Bakes transpose into a new pattern, retargets the tile, appends the bar, scrolls to it. |
| GRID | Columns × 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
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.
- Draw, erase, select, and pan sit left of duplicate and follow. Draw plants the open pattern. Choosing erase clears the clip selection. Erase rubs clips away, and a tap on empty ground clears the selection. Select draws a box and toggles a clip. A tap off the selection clears it. Duplicate, move, and trim sit on one side of that selection and stay there while the finger is down. Move shifts the group by one snap and keeps the gaps. Trim’s first move lands on the next grid line in that direction, then steps by the grid. Every selected clip changes by that same amount. Pan scrolls. The can is dim when nothing is selected.
- In draw, tap a clip to select it. Drag the body to move (snaps). Drag the tail to trim / extend. Extend past the source adds empty time. The notes stay on their ticks while the tail moves. Hidden notes still exist, they just do not play. No looped MIDI revealed by stretching.
- Undo and redo sit between the divider and the trash. They step through clip moves, trims, deletes, drops, and the bar count.
- Clips dropped from bank / seq / pattern bar land at the leading snap at actual clip length.
- Duplicate appends a copy behind the selection at the next free snap.
- Follow playhead starts on. It uses the same button as ROLL. Tap the ruler, or drag the triangle, to seek. The track headers stay put.
- The track letter opens Out and Ch. Mute is lavender, solo is gold. Arm is a small filled circle, red while recording, and it pulses with the record button.
- Arm is the input. The track letter is the output (Out and Ch). With RNG playing, an armed track hears live keys and incoming MIDI on that output. Record writes into the clip under the playhead, in the clip’s own time, and stops at the clip end. Several armed tracks all hear and record. No clip under the playhead means you hear the track and nothing is written.
- Keyboard starts open and sits across the bottom, the same as on ROLL, including under the mixer. Closing it stays closed until you open it. New project opens it again.
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
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.
- Folders at the root. Tap a folder to enter; BACK returns. Folders save and load with the bank file.
- archive is read-only and ships with the app. KEY, KIND, MODE, MOOD, MOOD2, and STYLE each pick one value. MOOD and MOOD2 match in either order. STYLE is the progression rhythm: Straight, Pop, Pop2, Hiphop, or Soul. The files are SHLD Free MIDI Chords by Ludovic Drolez, copyright 2019, under the MIT license. That license is included with the archive. AUD plays a clip when you select it. CLR clears the filters. Loading a project, a bank file, or NEW BANK does not remove the archive.
- Tap a clip to select. Double-tap appends it to the pattern bar and scrolls to it (does not open ROLL). Hold ~0.2s and drag onto the pattern bar, arrange, a folder, or a can.
- Play in the rail auditions without the main transport. AUD trails PLAY on the user-bank rail.
+ Dirmakes a folder.Del Dirasks ARE YOU SURE? Clips stay, moved to root.- MIDI Import / Export. Type 1 SMF splits to several clips. Export bakes clip transpose. Import scrolls to the new clip(s).
- BANK FILE Load / Save is the whole library (clips + folders). Settings NEW BANK asks ARE YOU SURE and wipes clips only — not the pattern bar, not the grid.
- ADD SEQ TO BANK writes the current pattern-bar clip into the library.
10. ROLL
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.
| Tool | Behaviour |
|---|---|
| Draw | Tap 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. |
| Erase | Touch a note to remove it. A drag removes every note the finger crosses. One undo puts that stroke back. |
| Select | Drag 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. |
| Move | One-finger pan. Two-finger pinch pans and zooms. Zooming out fits the rows, and the clip plus one bar across. |
- STEPS is clip length in sixteenths. A sideways drag stops on 1, then 16, 32, 48, and so on, from any starting length. Drag up or down for one step, or double-tap for the number pad. This control runs from 1 to 8192. A pattern already stored at 0 still plays no notes until that length changes. Snap only changes note length, not pattern length.
- The snap button toggles snap. The division menu (1/1, 1/2, 1/3, 1/4, 1/6, 1/8, 1/12, 1/16, 1/24, 1/32, 1/48, 1/64) is mounted on that button. 1/1 is a whole note. Faint verticals follow the snap. A new note centers on the cell under the finger. A bar you are holding snaps from the point you grabbed.
- HUM nudges the start and velocity of each selected note. Q moves each selected note onto the nearer snap line. A note past the middle of a division goes to the next line. On those selected notes, Q clears HUM: start and velocity go back to where they were before humanize, then the start takes that nearer line. Notes that are not selected stay as they are.
- Out and Ch sit on the outlet button. It lights when the pattern leaves Default or channel 1. Default sends to the mix track that is selected. While Int is on, the destination list shows the instruments that are on a letter. A letter’s instrument is its rack.
- The quarter-note button opens key and scale. Key is the root. Each of those notes in the gutter shows its name and octave, such as C4. Scale belongs to the open pattern. A pattern with no scale of its own uses the project scale, the same one as the first harmony circle. The grid and the gutter show only the notes in that pattern’s scale. A note outside it leaves the row and comes back when the scale includes it. Chromatic shows every note. The button lights when the key leaves C chromatic.
- Destination, the quarter-note, and the keyboard sit together, and the keyboard is last. It shows and hides the keyboard under the roll.
- The graph under the grid is velocity, probability, pitch bend, or a controller. The closed menu stays VEL, PROB, CC1, or PB. The list spells those out, then scrolls controllers 0–119. Lanes that hold data are marked in green. While Int is the engine and the pattern’s output is a rack, the soundfont’s controllers sit above the green rows, in the track color. Volume, expression, pan, and modulation move that voice. Reverb moves a reverb module on the rack. Chorus moves a chorus module. A rack knob can be assigned its own controller. The row reads CC, the module, and the knob, and the lane adds the value. The card’s color square is that row’s color. AMP ENV starts red. Tap the square to change it. A controller that also holds a lane joins the green rows, and its line in the list turns green. While Host is the engine and the pattern’s output is a plug-in, that plug-in’s parameters sit in those same rows, under their own names, and a lane moves the parameter. The lane shows that parameter’s own reading: its range and unit, a toggle’s words, or the step name. Draw writes a point on each cell. Line joins the points. Curve flows through them. The point tool edits individual points. The graph runs from 0 to 16,383. A controller or velocity sends that height as 0–127. Drawing velocity shades those notes while the finger is down. Probability sends 0–100. Pitch bend sends the graph value. CLR asks, then clears the open lane. Two fingers zoom horizontally with the roll. With record on, an incoming controller, pitch bend, or the wheels write the open lane. On pitch bend the lane wheel rests in the middle, and letting go writes that zero while the song is playing. A wheel held still keeps writing.
- Pitch lane runs the full MIDI range, 0–127. A pinch zooms out until that range fits, and until the clip plus one bar fits across. Snap-to-view still frames the notes.
- Snap-to-view (the eye) sits on the measure bar, left of beat 1. It fits the active steps and the used octave. It is not a toggle.
- The keyboard under the roll works like the lower PERF surface, with its own scale. Default dest follows the roll pattern’s dest, including an internal instrument. A dest picked on the keys overrides that. The dotted grip resizes it. A short window collapses the lane to that grip; drag it back up to open the lane.
11. PERF
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
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.
- A new session opens six letter tracks. Bass, chord, arp, and drums start on. Lead and a second drums start off. The floor is 2 tracks and the ceiling is 16. SEQ’s rows and GEN’s plus and trash change that set on every page.
- The main bar holds TURN, STEP, SPAN, the part line, root and octave, scale, STEPS, SWING, HUM, EVOLVE, DENSITY, and DYNAMIC. The wrench folds those into a card when the bar is tight. A swipe outside closes it.
- TURN rotates the rhythm. STEP is the leap, 0 through 7. SPAN is how many steps a chord lasts: 1, 2, 4, 8, or 16.
- A sideways drag changes a number. An up or down drag scrolls the page. Double-tap a number and the number pad opens beside it. A card that is already open stays open. Tap outside the pad and the pad closes. Octave is the exception: it drags in the number box and does not open a keypad.
- DENSITY and per-track DEN only open and close steps that already have notes. A dice roll composes the rhythm, and 100 plays that rhythm. Lower closes some of those steps. It does not fill a step the roll left empty. Moving TURN, STEP, or SPAN composes the rhythm again, so a rest can return. Key and the master octave move non-drum pitches. A track octave moves that track, drums included. Scale revoices the same part. DYNAMIC rewrites velocity. SWING and HUM only move playback.
- A fixed DUR stores that length immediately, drums included. RAND waits for the next dice, TURN, STEP, or SPAN, then rings 1, 2, or 3 steps from the line. A new drum track starts at half a step.
- Each track’s row is role, dest, channel, octave, density, and duration. On one column they stay behind the wrench. Role is the part. Dest Track plays that letter’s instrument, and the list offers those instruments by name. Dice rerolls that track. Store writes the sounding notes to the pattern bar. Batch store writes every instrument as its own pattern. The can uses the one-second red hold.
- On a landscape iPhone the keyboard button leads the upper bar, then GEN, then dice, store, init, and add track. Reroll, the roll, store, and delete stay on each track.
- While GEN is on top, the lower keyboard belongs to GEN. The letter stroke follows the selected track. Track plays that letter. Tapping a letter on GEN selects the track. Leaving GEN leaves the lower keyboard’s own destination where it was.
- Step tiles toggle on release, so the page can still scroll. A short still-hold paints. Painting a step off silences it. Painting it on locks it lit. Dice clears those locks.
- Expand opens a piano roll under the steps. The roll scrolls every pitch. Opening it sizes the roll to the notes. An empty part is 12 notes around middle C. Drag the grip to resize it. Drag up or down to scroll the pitches. A tap toggles a cell. The velocity lane edits sideways.
- EVOLVE walks the harmony one chord-step on a schedule and revoices every role that already has notes, drums included. Rhythm, locks, and lengths stay. EVO 0 holds the part. EVO 100 moves every loop. Dice draws a new seed, TURN, and SPAN, composes every part again, starts the harmony over, and writes every part. STEP stays where you left it. The dice on a track writes only that track. The grid starts empty; the first roll is already a part.
- The RAM button sits on the left of the upper bar, ahead of the surface button. Expand and settings stay flush on its left while RAM is on. It shows 8 and keeps 16. Each take is numbered by its instrument.
13. HARM
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.
- Hold a chord, then another — both sound. Center is a single root note and does not follow chord presses.
- Layouts in the side rail are 1/5, 1/4, and 1/12. Scale and root sit above Rings. Each ring has its own octave. Drag the dotted grip to collapse a rail.
14. MIX
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.
- A new project opens six empty letters. The mix bar’s plus adds a letter, up to 16. Two letters is the floor. Tap a letter to select it. Hold a letter and drag to reorder.
- On a wide page the letter tracks run in two columns at most, left to right. Each column scrolls on its own. A column taller than the page gets the scrollbar. A rack stays as tall as its cards. One column keeps the page scrollbar. The mixer button on the other pages opens this mixer beside that page, and that half stays one column.
- The instrument menu is NEW SF INST, NULL, the instruments on the letters, then pinned presets. A pinned name has a small pin beside it. Each rack is listed once, and it stays in the menu when no letter is using it.
- Pins belong to the project. A new project has none. The pin sits beside Pan on the voice card. Pinning keeps that preset on this project's instrument menu, and unpinning removes it.
- Every Int letter is a rack and has the slider button. Opening the rack selects that letter. A new project’s six letters are empty. Putting an instrument on a letter names the track after that instrument. Letters can share a rack. A change on that rack shows on every letter that uses it.
- Each rack plays GeneralUser GS, and drums is the standard kit. The meter sits on the level slider. Level, mute, and solo sit on the row, and a spectrum of that track sits on their right. Tap the spectrum to select the track. The letter fader and mute reach that rack while GEN is playing.
- Filter, EQ, comb, drive, ring, expander, phaser, chorus, delay, repeater, reverb, and convolution process the sound. Resonance narrows the filter. Size sets the room. Mix sets the wet signal, and delay has feedback. Filter envelope amount opens the filter all the way.
- An LFO can move any knob on the rack. Its rate can snap to a note value, and it has a wave, a phase, and a per-key restart. A moving knob shows the LFO, and a line marks the setting underneath. The LFO card is two columns. The rack’s spectrum button opens a taller one.
- Volume is CC7. NULL clears the letter. Its rack leaves the list. NEW SF INST makes a rack on GeneralUser GS and opens it, which selects that letter. The voice menus are the General MIDI groups, then one drum-kit list. A variation sits with the instrument it varies.
- A sustaining note keeps the loop the font marked until the key is released. A one-shot plays through once. A release sample plays its tail after the key lifts.
- On Int the spectrum sits with the level, so the trash stays inside the column. The rack opens from the slider button on that track. Add is a dotted 80-point tile, as tall as the cards beside it, with the Add menu in the middle. Sliders stop at 144.
- The track chip draws a spectrum of that rack. The name is edited on the rack, next to RACK and the number. Rack card buttons are squares: delete, fold, move, power, and the pin beside Pan. Move shows while the card is open. It stays in the menu until that track is deleted.
- The row shows the rack’s modules. Under the mixer they are panels in a row. Hold a panel’s title still, then drag to reorder it. A flick without the hold scrolls the row. The knobs stay free. The lifted panel’s ghost pops into the slot under the finger, and the others close up behind it. You can remove every panel, including the last one.
- The voice card is poly until Mono is set. A rack sounds 32 notes at once. A further note takes one that is already releasing, then the oldest. A note held by the sostenuto pedal goes last. If the notes cannot finish in time, the rack lets go of the ones already releasing, then the oldest, and the buffer stays whole.
- Legato keeps the envelope while a key is already held. Portamento glides one octave in the time on the slider.
- CC 5 sets that time, CC 65 turns the glide on or off, CC 68 is legato, and CC 126 and CC 127 are mono and poly. CC 66 holds the notes that were down, CC 67 softens them, and CC 71 through CC 78 move resonance, release, attack, brightness, decay, and vibrato. The pitch wheel uses the bend range.
- The voice card is one column. The ... beside the arrows opens two more columns. Load Font, mono, legato, and portamento are the second. Modulation, expression, reverb, and chorus are the third. Reverb and chorus stay grey, with no controller, until that effect is on the rack.
- The reverb card has predelay, damping, and modulation as well as size and mix. A control that already has a controller shows that number beside it. The color square sits between the card number and the name. The X fills red and empties over one second. A second tap while it is red removes the card.
- An SFZ plays its samples, key and velocity ranges, tune, envelope, loop, and choke group. A first layer plays on the opening key. A legato layer plays only while another key is held. A release layer plays when the key lifts. GS returns to GeneralUser.
- Trash opens Cancel, Clear instrument, and Delete track. Clear instrument takes the rack off that letter and leaves the rack in the menu. On Host it unloads the plug-in. Delete track removes the letter and tells you how many clips it has placed. The can on the rack deletes that rack from every letter.
- The outlet opens MIDI in, in channel, MIDI out, out channel, and thru. In channel is Omni or 1–16. Out channel is 1–16. A letter with an out sends the notes it plays, including a rack, whether or not thru is on. Thru also forwards the CC, bend, and aftertouch that letter accepted. Changing in, out, channel, or thru releases the notes already out on the old port. Panic releases every letter, then the same release on every channel of every connected destination. With the engine Host, effects on a track hear its MIDI in even when no instrument is loaded.
- Tap the icon or the plug-in name to open its panel under that row. Opening another panel leaves the others open. One dotted strip sits under the panel. The left side shades it. That side shows an up mark, and up and down when the panel is covered. The right side, marked ±, resizes the pane, whether or not it is covered. Dragging past the shortest or tallest height does not have to be retraced. The return starts at once. Either side brightens when it is not at the height the panel opened at. Double tap either side to return to the height it opened at. A shaded panel scrolls. A project file stores each plug-in’s own state. If one is not on this device, the slot stays empty and makes no sound.
- Loading or opening a plug-in on a Host track selects that track. Each Host track and the master row have a thin meter under the volume slider. It follows that channel, including the slider and mute, rising with the sound and falling as it goes quiet. The master row is the same level and mute as the header volume.
- The keyboard’s Track destination follows the selected mix letter. Another destination stays until Track is chosen again.
- FX rows have delete, wetness, and up/down. A second copy of a plug-in is named with a 2.
15. Surfaces / manuals
- ROLL / MIX key strips are copies of PERF lower (separate instances, own dest/CH/scale/surface). ROLL’s Default dest follows the pattern dest. No shared rails. The strip keeps 8pt along the bottom. Opening it on Mix leaves the page as it was. The scrollbar follows the shorter window. A plug-in does not gain empty space inside itself.
- Octave count starts from the screen: one on a phone, up to four on a wide iPad. Load and new project both take that count again. You can still change it. Octave range and root live on the menu bar while that bar is showing.
- Velocity from vertical position is off by default (a key press is a key press). Enable it in settings if you want it.
- Left rail: PB and MOD sit under the wheels. Each thumb is a square fitted inside its track, with a 3 by 3 stipple, and the two tracks share the left rail. The stipple beside them leaves their presses alone. The pitch wheel rests in the middle. Letting go writes that return to zero while the song is playing, and a wheel held still keeps writing.
- Right rail, keys only: GLISS, LATCH, MONO/POLY, and PEDAL. A swipe on a side-rail grip opens or closes that rail. A double tap does the same.
- When a strip is short, its menu folds into a … button. The height grip shows up and down at its top-right and bottom-right. Closing the right rail on that short strip leaves the thin grip. It shows left and right, with up at the top, and it resizes the strip. Lifting that grip until the menu bar returns keeps the drag, and the bar grip takes the height. XY, knobs, faders, the circle, and pads fold the same way.
- Gliss: slide across keys, polyphonic if POLY is on.
- Latch: tap to hold, tap again to release. Turning LATCH off sends note-offs for anything you are not still holding — unless PEDAL is down.
- PEDAL is hold-only. Down keeps sounding notes (CC64). Up sends note-offs for notes not still pressed and not still latched.
- Mono: last-note priority. Hold C, tap E, C goes quiet; release E and C resumes. Same surface only.
- XY / knobs / faders: assignments live on that bank’s extras bar. On the circle, the outlet and CIRC stay on the bar in every orientation. Destination and channel stay in the outlet. There is no sliders button. The CIRC popout does not dismiss when you tap inside it. Pads: bottom-left is 1, left-to-right then bottom-to-top; last-hit note/vel in extras.
16. Settings
| Block | Contents |
|---|---|
| Moon / Sun | Light mode. Notes, previews, and keys shift. Keys go purer white. |
| Manual | Sits 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. |
| PROJECT | New, 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. |
| BANK | New / 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 ENGINE | Off / 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 ROUTING | One 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 CLOCK | Off / Int (sends clock to the output and the epicMIDI port) / Ext (follows incoming start/stop/clock). |
| PLAYBACK | Snap 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
| Kind | Default name | Contains |
|---|---|---|
| Project | .epicproj | The 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 clip | clip title | SMF. Type 0 = one clip. Type 1 import = one clip per track. The time signature in the file is the clock’s. |
| Project SMF | session / project name | Type 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
- Virtual source: epicMIDI. Other apps hear what this app sends. Other apps play epicMIDI by sending to epicMIDI In. That port is one of the input chips. A letter can choose it. The app does not play the MIDI it just sent.
- Each letter has an in channel and an out channel. Omni hears every channel on the devices that letter selected. Panic sends note-offs to the hardware ports that are still sounding.
- Dest + CH are per surface. The monitor prints that surface’s channel. Thru does not remap to a global Out CH (there isn’t one).
- You can change ports while playing.
- Background audio is off until you turn it on. Then MIDI keeps flowing when the app is minimized.
- CC1 = mod, CC64 = sustain, pitch bend, CC120/123 = panic. Note On velocity 0 = Note Off.
- Resolution is 1920 ticks per quarter note. MIDI clock is 24 per quarter. Song position follows the audio clock. External clock follows incoming MIDI 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
| Where | What epicMIDI is |
|---|---|
| Standalone app | AUv3 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 / GarageBand | Two 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
| Where | Gesture | Result |
|---|---|---|
| Any tile | Hold still ~0.2s, then move | Lift. Scroll cancelled. |
| Any tile | Flick / pan before 0.2s | Scroll only. |
| Pattern bar | Hold a tile on either edge | When the tiles overflow, the strip scrolls. Tiles stay put until the finger leaves the edge |
| Pattern bar + | Drop a pattern | Copies that pattern onto the end. The + stays put |
| A number box | Brief still, then slide | Change the value. The − and + buttons are taps, not the drag. |
| GEN steps | Release / paint after still | Toggle. Page scroll wins if you move first. |
| GEN roll | Drag up or down | Scroll the pitches. A tap toggles a cell |
| Roll grid | 1 finger (draw / erase / select / move) | Plant / erase / select / pan |
| Roll grid | 2 fingers | Pan + zoom. Horizontal zoom is shared with the lane. Cancels a just-planted note |
| Measure bar / piano keys | Pinch | Zoom horizontally / vertically |
| Arrange ruler | Tap / pinch / drag triangle | Seek / zoom X / scrub |
| Automation lane | Draw | Writes the division under the finger. Bar holds the cell. Line joins the points. Curve flows through them. |
| Automation lane | 2 fingers | Pinch zooms horizontally, the same zoom as the roll. |
| Automation lane | Point, tap | Add a point. Double-tap removes one. |
| Automation lane | Point, drag a point | Move that point. It stays on its division. |
| Lane gutter | Drag up or down, or hold | The 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 lane | CLR | Asks, then clears the open lane |
| PEDAL | Hold | Sustain (CC64) |
| Dotted grip | Drag | Resize a lane or the keyboard |
| Key rail grip | Swipe or double tap | Open or close that rail |
| Plug-in strip | Drag the left side / the right side | Shade 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 indicator | Swipe up from the bottom | One swipe leaves the app |
| Trash | Hold 1s | Deletes the can’s active item |
| Bank / RAM clip | Double-tap | Append to pattern bar |
| Pattern / SEQ pad (edit) | Double-tap | Open ROLL |
| Circle | Multi-touch | Multiple chords held |
| Popout | Tap inside | Stays open. Tap or swipe outside to dismiss. |