github Quixotic7/ChoralRootFM1 v0.30
ChoralRoot 0.30

latest release: v0.30-smk37
48 minutes ago

ChoralRoot 0.30 brings Bluetooth MIDI to the FM-1: a Mac, an iPad or an iPhone can play it and hear from it
without a cable. Incoming MIDI Start, Continue and Stop now work like the LOOP (PLAY) button whether MIDI Clock is
set to Out or In, and a Start takes the Arp back to its first step. To make room, the fonts moved out of the
firmware into a region of their own on the flash. Your settings, sounds, loops and favorites are stored as before.

Bluetooth MIDI (new in 0.30, FM-1 only)

  • Options > Bluetooth: On, then switch the FM-1 off and on. The radio starts only while the FM-1 starts up (until
    then the line under it reads on at the next power-on). Then it reads ChoralRoot 1A2B: visible (four characters
    of this unit's own).
  • Connect to ChoralRoot 1A2B: on a Mac in Audio MIDI Setup > MIDI Studio > Bluetooth, on an iPad or iPhone in
    the music app's Bluetooth MIDI page. The first time the two pair (no code to type); afterwards they reconnect by
    themselves. The line then reads connected.
  • The same MIDI as USB, on the same channels: the Perform, Bass and Raw Chord notes and the clock out; notes,
    program changes, the CCs, pitch bend, aftertouch, clock and transport in, and MIDI Keys. SysEx (backups, sound
    transfers, the editor) stays on USB. USB MIDI and the TRS jack keep working alongside it.
  • The radio measures itself at every start (about a tenth of a second, so starting up takes a moment longer).
    Measured on a unit with both cores: connected within 10 s of switching on, held for over 5 minutes with nothing
    lost, 98 of 100 notes from the Mac heard, and the clock out arriving about 13 ms after USB's.
  • Clock Out over Bluetooth stamps each pulse with the time it was sent. A Mac still delivers Bluetooth MIDI on
    the connection's 7.5 ms steps, so the clock it sees is less even than over USB: for tight sync, use USB or the TRS
    jack.
  • If the connection drops, the notes the computer was holding stop. Off stops the connection and hides the FM-1;
    On again shows it at once. Forget Bluetooth (OCT+ twice) forgets the paired computer; forget the FM-1 on that
    computer too.
  • The Bluetooth setting is kept apart from the others: Reset Settings leaves it, a backup does not carry it, Flash
    Data (SAFE MODE) clears it. If the FM-1 ever restarts by itself while its radio starts, the next start leaves the
    radio off; switching off and on tries again.
  • The radio's work runs at a lower priority than the audio's; with Bluetooth Off it does nothing. Measured with the
    link up on one core, the heaviest VA chords ran a few audio blocks late: with Bluetooth, keep Dual Core On.

Bluetooth comes from Melodee (Kerem Kilic, Ellic Studio): the bare-metal Bluetooth
stack Optimist (w0ts), and Charles Vestal's radio calibration. Thank you. Credits and licences: LICENSING.md.

MIDI transport and clock (new in 0.30)

  • Start, Continue and Stop from USB, Bluetooth or the TRS jack do what the LOOP (PLAY) button does, with Options >
    MIDI Clock set to Out (the default) as well as In. Off still ignores them. Until now they worked only with
    In.
  • A Start restarts the Arp and Pattern from their first step, in time with the master.
  • No echo: with MIDI Clock Out the FM-1 still sends start and stop with the loop, but not back for a start or
    stop that came in, so a master that echoes never loops with it. The LOOP button's own start and stop are sent.
  • Clock In: the tempo follows the incoming clock (and, since 0.29.2, the loop keeps time with its pulses). To see
    the tempo it set, switch Options > View to Geek Out. The Arp still follows the incoming tempo as a whole BPM.
  • Checked on a unit over USB, Bluetooth and the TRS jack (an OMX-27's Play and Stop).

Smaller changes

  • The crash screen reads CHORALROOT CRASH (it said FELUCCA CRASH).
  • The resource region: the fonts and the radio's start-up program now live in their own area of the flash
    (0x93000..0x9EFFF), which the installer writes with the firmware. If it were ever missing, the screen falls back
    to the small font and the splash says FONTS MISSING / INSTALL CHORALROOT AGAIN.
  • The 32 sounds of ChoralRoot 0.21 and older are no longer moved into the user slots: an FM-1 still on 0.21 or
    older goes through 0.29.2 first (the installer asks; see Installing).
  • The rest of Felucca's unused code is gone from the source; what you play is unchanged (the sound goldens all pass).

Installing

  • The web installer's default is 0.30: press Install. Options > Version reads ChoralRoot 0.30.
  • From 0.27 to 0.29.2 nothing needs doing: your sounds, loops, favorites and settings are all there. Bluetooth
    starts Off.
  • From 0.21 or older: the installer asks first. To keep the 32 sounds of 0.21, install 0.29.2 (Other
    versions), switch the FM-1 on once, then install 0.30. A backup made on 0.21 restores its settings, banks and loops
    on 0.30, but not its sounds: restore it on 0.29.2 and back up again.
  • A Single core package: the web installer's Advanced > Hardware fallback. Options > Version then reads
    ChoralRoot 0.30 1-core. Bluetooth works there too.
  • From another firmware, or with M-Flasher: use M-Flasher with the
    M-Bootloader and choralroot-0.30.fwsc; it carries the resource region. (Not yet tried on a unit by the project:
    report what you see.)
  • Signed builds: GitHub built these packages from the tag's source and signed them; 0.26.1.md
    "Checking a package" says how to check one (choralroot-0.30.fwsc).

Going back

  • To 0.29.2: the installer offers it under Other versions. 0.29.2 stores everything the same way, so your
    settings, sounds, loops and favorites stay. It has no Bluetooth (the FM-1 is no longer visible; the paired computer
    can forget it), and incoming Start and Stop with MIDI Clock Out are ignored again. Its fonts are in its own
    firmware, so it boots as before beside 0.30's region.
  • To another firmware: M-Flasher with the M-Bootloader (MANUAL.md
    "Switching firmwares"); back up ChoralRoot's data in the installer first. You never need to go through the stock
    firmware in between.
  • To the stock firmware completely: M-VAVE's own updater, M-Updater, which reflashes the firmware and its factory
    presets.

ChoralRoot 0.30 for the M-VAVE FM-1 (identity FM-1_920).

Install from the browser at https://quixotic7.github.io/ChoralRootFM1/ (Chrome or Edge, the FM-1 connected by USB), or with the command-line installer: python3 tools/fm1_install.py choralroot-0.30.fwsc.

choralroot-0.30-1core.fwsc is the same firmware on one processor core, for an FM-1 that crashes or freezes with the standard package (the installer offers it under Advanced > Hardware fallback). Settings, sounds and loops stay when you switch between the two.

SHA256SUMS lists both packages and their apps. GitHub built and signed each from this tag's source (The Firmware Hub's shared workflow); check one with gh attestation verify choralroot-0.30.fwsc --repo Quixotic7/ChoralRootFM1 --signer-workflow zvenson/fm1-build/.github/workflows/build.yml. The package holds three JieLi AC79 SDK files (Apache-2.0); LICENSE, LICENSING.md and LICENSES.zip carry every licence. Installing firmware is at your own risk.

Full Changelog: v0.29.2...v0.30

Don't miss a new ChoralRootFM1 release

NewReleases is sending notifications on new releases.