The FM-1's own screen, drawn by the firmware's own code (firmware/ax_ui.c)
over the platform's renderer, with a real module decoded through ahx-core. Everything on the panel
is under the mouse and the keyboard, and it plays: the module is mixed by the same call the device's
interrupt makes, on this page's audio callback, which is also what advances the transport, so the
playhead on the screen and the samples are one pass. Click once anywhere (a browser will not open an
audio device before a gesture) and then PLAY.
.ahx hereKeys: space play/stop, Enter edit, Tab next lane,
arrows row and lane, PgUp/PgDn song order, -/=
octave, ` the next screen, Home back to the start.
The notes are zsxdcvgbhnjm,l and q2w3er5t6y7ui.
The encoders carry the panel's own names. SELECT moves the row, ALGORITHM the lane, KNOB 1 the song order and PRESETS the instrument a note key sounds. KNOB 2 is the field under the cursor and KNOB 3 the same field by its coarse step; SEL walks the four cell fields (note, instrument, command, data) and FX jumps to the command. EDIT arms editing: a note key then writes the cell as well as sounding it, and a value turned below its first is how a field is cleared. REC makes a written note take the cursor down a row. The PLAY button on the panel toggles the transport, and the VIEW button here walks the four screens.
The module built into this page is none. The site is served at
build/site/ahxbox/; this page is also readable straight from the file system, which is
why the module travels inside it.
SEQ, ENV and GLO open the three panels: the pattern grid, the instrument with its plist, and the module's own configuration. SEL walks the fields of the panel that is open, and ENV / LFO / FX jump to their own part of it; on the instrument panel that is the envelope, the modulation and the plist's effects, and every field of the instrument and every step of its plist is editable there. On GLO the two fields are the frame multiplier and the position a song restarts from, which are the header's own two that move nothing; the rest of the header, and the title, are drawn and not edited, because they size the blocks below them. SAVE stores the edited module in the device's flash library as a new entry - this page has no flash, so it answers no library here and the panel says so. Holding GLO for a second switches to the input readout.