github Quixotic7/ChoralRootFM1 v0.17
ChoralRoot 0.17

pre-release3 hours ago

ChoralRoot 0.17 is a playing release: the dancing arp is back, the keys' lights now show the key and the notes
that sound, Key Mode can guard single notes or give you the whole keybed as an ordinary keyboard, LOCK has its own
small menu, and every layer closes the same way. It also fixes several things found on the unit after 0.16.

Updating from 0.16 keeps your settings, sounds and loops. 0.17 is built on 0.16's boot stub: an interrupted update
comes back in update mode (three flashes), and holding OCT- alone while switching on does the same on purpose.

The screen

The dancing arp is back on the Chord view. While an arpeggio or a pattern is playing and the view is Chord, the
screen shows the chord's name, its notes on a line and the sounding note hopping from one to the next, as it did
up to 0.13. It shows only while notes are being stepped: let go of the keys (without LATCH), switch the
performance off, press PANIC or stop the loop that was playing it, and the plain chord view is back. LATCH keeps it
going, and so does a playing loop with no key held. The Keyboard, Notes, Geek Out and Scope views are never replaced,
and Strum, Slop and Harp keep the chord view. It shows whatever Options > Motion says.

The PERF layer shows the arpeggio too. While an arpeggio or a pattern is playing, the top half of the PERF layer
(hold ARP) shows the chord's name and the hopping note instead of the mode picker; the four knob cells under it
stay. The picker always comes first: for two seconds after the layer opens and after every turn of SELECT you see
the mode's name large, also while LATCH keeps the notes going, and then the animation returns. Turning KNOB 1 to
KNOB 4 does not interrupt it.

The sound read-out's stripes move from where they were. Turning PRESETS or ALGORITHM used to empty the row of
stripes at every click and fill it again from the left up to the new place. Now a step only moves the difference:
going up, the stripes between the old place and the new one light one after another; going down, they go out. That
holds while the read-out is showing and also when it comes back after it has gone, as long as it is the same part
and the same engine. The first read-out after switching on, and the first after you change the engine, still fills
from the left. A long way, such as from the last preset round to INIT, takes under half a second, as a full fill
did. Turn the knob quickly and the stripes follow it. The bass read-out works the same; its 00 off now shows the
bass engine's own row of stripes, all dark, instead of a row of twelve. The other read-outs (tempo, octave, effect
amount) are unchanged: they already moved from the value before.

The lights

The keys light the notes that sound, in every octave. While a chord sounds, every root key that carries the name
of one of its notes is now lit: if the chord has a G in it, both G keys light. Until now a note lit only the one key
of its exact pitch, so a chord that KNOB 1 had voiced above or below the two octaves of the root keys lit nothing
at all, and so did one moved out of range by Transpose. Now D major lights the D, F# and A keys in both octaves
however it is voiced. The lights show what sounds: with Transpose at +5, D4 alone lights the two G keys, not D4.
The chord keys never light for a note; they keep showing the chord type and LOCK. The rest follows the same rule:
the note an arpeggio is playing blinks on all its keys, a playing loop's notes glow dim on all theirs, on the Full
keyboard all 27 keys take part, Key Mode's scale lights lie underneath as before, and Options > LEDs on Stock darkens
the same keys instead of lighting them. The bass part's own note still does not light the keys.

Key Mode lights the scale on the keys. With Key Mode on, the root keys now show the key: the notes of the scale
glow, the tonic's keys glow brighter, and the keys outside the scale are dark, the white ones too (before, only the
black keys outside the scale went dark, so in most keys every white key glowed). The notes you play are fully lit on
top. It shows wherever the roots play, so you also see at a glance that Key Mode is on. The key lights have a new
middle brightness for this: low for the scale, middle for the tonic, full for sounding notes. With Options > LEDs on
Stock, which has two levels, the scale's keys are lit and the others dark.

Key Mode off: dark roots, and a fainter chord row. With Key Mode off the root keys no longer glow when idle: they
are dark until a note sounds on them (a playing loop's notes still glow), and on the Full keyboard all 27 keys are
dark until played. The chord keys and B3 keep their meaning (lit while held, latched, or LOCK on), but their idle
glow is a new, lowest brightness, under the scale's glow: four levels in all, faint (idle chord keys), low (the
scale, idle buttons), middle (the tonic), full (what sounds or is on). Options > LEDs > Stock is unchanged (idle
keys lit, roots too).

Key Mode and the keyboard

The KEY layer has a second page. In the KEY layer SELECT now turns the page instead of changing the tempo (the
top line says 1/2 or 2/2). Page 1 is Tonic, Scale, Transpose and Single as before. Page 2:

  • Key plays (KNOB 1): Chords (default: a lone root plays the scale's chord, as before) or Notes. With Notes,
    Key Mode makes no chords: the roots and the chord keys behave exactly as with Key Mode off, but a root outside the
    scale does nothing (no sound, no MIDI, nothing in a loop). Key Mode becomes a guard against wrong notes and a
    guide on the lights.
  • Keyboard (KNOB 2): Chords (default: the usual chord keys and roots) or Full. Full turns all 27 keys, F3 to
    G5, into an ordinary chromatic keyboard of single notes. There are no chord keys and no LOCK there (B3 is a note;
    what you had latched is kept and is back when you return to Chords). KNOB 1 on the main screens changes the octave
    instead of the voicing. With Key Mode on, the notes outside the scale do nothing and the scale shows on all 27
    keys. The bass, the performance modes, the looper and MIDI out follow what you play.

Single: Full, Split Oct, Split Bass. Single (KEY layer, KNOB 4; Options > Single Notes) has a third value.
Split Oct is what Split was. Split Bass makes two instruments side by side: the keys below the split play the
bass part's sound alone, the others the chord part alone. On the usual keyboard the split is the split point you
already have (OPT + KNOB 1, F by default: the roots C to E are bass notes); on the Full keyboard it is fixed at the
second F: F3 to E4 is the left side, F4 to G5 the right (Split Oct plays the left side an octave lower there).
While Split Bass is on, the bass does not follow the chords, and Bass on / off and the Bass Behaviour are kept and
ignored. A loop plays bass-side notes back with the chord sound (not built yet).

The KEY layer: MAJ and MIN set the scale, with LOCK on too. In the KEY layer (hold SEL) the MAJ and MIN chord
keys now pick the scale at the press. Before, MIN only counted while it was held down together with a root, so with
LOCK on (where a chord key is tapped, not held) a minor key could not be set from the keys. In this layer MAJ and
MIN are no longer chord keys: the chord you have latched with LOCK is untouched and is back when the layer closes.
A root on its own now sets the tonic and leaves the scale alone (it used to switch back to major).

The KEY layer lights its scale keys. While the layer is open MAJ and MIN glow at half, the key of the selected
scale is fully lit, and the other chord keys are dark. With Options > LEDs on Stock, which has no half level, only
the selected scale's key is lit. Outside the layer the chord keys' lights mean what they always did.

The KEY layer's keys can play. Tap GLO (OPT) in the KEY layer and its keys play as they do outside the layer,
chord keys and LOCK included, so you can hear the key while KNOB 1 to KNOB 4 change the tonic, the scale, the
transposition and Single. Tap GLO again and they pick the key as before (a root = the tonic, MAJ / MIN = the scale).
The top of the layer says keys pick or keys play, GLO is lit while they play, and the choice is remembered after
switching off (it starts on pick). GLO does not open the Options from this layer.

LOCK

A LOCK layer: hold B3. Holding B3 (LOCK) past the hold time opens a small layer with two settings for how LOCK
latches. A tap of B3 is still LOCK on / off. Both settings are remembered, and their defaults are what LOCK did
before.

  • Type key (KNOB 1): Clears (default) or Keeps. With Keeps, a type key changes the type and leaves the
    latched extensions on: with 6 and 9 on, going from MAJ to MIN keeps them.
  • Ext keys (KNOB 2): Toggle (default) or Pushed. With Pushed the extension keys work as a set, like the
    type keys: press one or several, let go, and that is the set; the next extension key you press starts a new set.

In Pushed, the one extension that is on, pressed once more on its own, goes off when you let go. With Keeps and
Pushed together a type key changes only the type and an extension key only the extensions.

LOCK: press the latched type again for single notes. With LOCK on and one chord type latched, pressing that same
type key again on its own switches the type off when you let go: the roots play single notes. Until now the top row
had no way back to no chord while LOCK was on. The extensions you had latched are not cleared: they stay lit, do
nothing while there is no type, and apply again as soon as you press a type key. With MAJ and M7 latched: MAJ again,
and D4 is a single D with M7 still lit; MAJ once more, and D4 is Dmaj7. This always applies with LOCK on; there is
no setting for it. A second chord key pressed while the type key is down cancels it, as keys held together latch
together.

Fixed: LOCK in the Advanced and Free play styles. With LOCK on, the chord keys now mean the same in all three
play styles, with Ext keys on Toggle or Pushed. Before, Advanced and Free also toggled the extension inside the
sounding chord on every press, on top of what LOCK did: with a root held, an extension you switched off stayed in
the chord and came out only on the next press, so it had to be pressed twice and the lights disagreed with the
sound. In Free the last chord also kept sounding for as long as anything was latched, and collected every
extension pressed since. Now the lit keys are the chord: a root you are holding follows them at once (Advanced and
Free), and Free sounds the last root again only while you hold a chord key. With LOCK off nothing changed.

One thing behaves slightly differently everywhere: B3 now switches LOCK when you let go of it (or when you press
another key while holding it), not at the moment you press it, because holding it has a job.

Layers and Options

One rule for OCT- and OCT+ in every layer. OCT- is back, OCT+ is confirm. In the PERF and FX layers OCT+ used to
switch the performance or the effects on and off; in the PLAY menu it did nothing. Those layers have nothing to
confirm, so OCT+ now closes them, like OCT-. On / off is a tap of the layer's own button, with the layer open too
(the footer says ARP: on/off, FX: on/off). Where there is something to confirm OCT+ still does it: the engine
picker's sound, the loop slots' Save / Load / Delete, the save dialog, Options > Calibrate, a rest in step entry.

Holding a layer's button again closes the layer. The way in is the way out: KEY, PERF, FX, BASS, METRO, LOOP,
EDIT (the engine picker keeps its sound) and HOME (the view menu). Holding another layer's button still switches to
that layer.

Options > Reset Settings. A new last entry in the Options puts every setting back to what a new FM-1 has:
turn SELECT to the end of the list, press OCT+ twice (OCT+ again: reset after the first; anything else cancels).
Play Style is Simple again, Key Mode off, the tempo 120, Motion, LEDs, Hold Time, MIDI, USB, Dual Core, the
looper's and the layers' options, the performance modes and the parts' sounds all at their defaults, saved at once.
Your saved sounds, patches and banks, your loops and the panel calibration are not touched. What was sounding stops,
as with PANIC. If Dual Core was On, it goes off at the next power-on. Handy when the FM-1 does something you cannot
explain, and when you want to be sure of the starting point.

Fixes

Fixed: Options > Version showed 0.1. The Version entry in the Options read ChoralRoot 0.1 on every build:
it had a number of its own. It now shows the version that is installed, the same one the splash shows and the
installer and device manager read from the unit.

Fixed: PANIC with LATCH on left the next chord latched. PANIC switched the LATCH light off but the next chord
you played still stayed on after you let go, until LATCH was tapped twice. PANIC now switches LATCH off for good.

Fixed: a restart asked from the computer no longer swallows its own answer. After a restore, and when the
installer tool asks the boot stub for its test or for update mode, the FM-1 answers "accepted" and then restarts.
In 0.16 about one such restart in four left the USB bus before the computer had read that answer: the FM-1 restarted
all the same, but the tool had to guess from the restart that its request was taken ("no answer was seen"). 0.17
leaves the bus only once the computer has taken the answer: about 150 ms after the request as before, later if the
computer is slow to read, and after half a second whatever the computer does.

Tools and the site

  • tools/fm1_install.py no longer needs mido (python-rtmidi alone) and can no longer hang while closing its MIDI
    port; if macOS leaves the FM-1's MIDI port offline after a restart it says so, and --rescan-midi brings it back.
  • tools/uac_check.py judges a USB recording by what the FM-1 itself counted, not by the length of ffmpeg's file.
  • The landing page has a button of its own for the web device manager.

Going back to 0.16

The settings record is version 14. 0.16 reads it, with three exceptions until you set them again: with the KEY
layer's keys left on play, or a LOCK setting off its default, it reads the looper's record mode as Overwrite and the
PLAY menu's Keys as Play; with Key plays on Notes or the Keyboard on Full it reads Key Mode as off; with Single on
Split Bass it reads Full. Nothing else changes, and with these at their defaults nothing changes at all.


ChoralRoot 0.17 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.17.fwsc.

SHA256SUMS lists the package and the app. 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.16...v0.17

Don't miss a new ChoralRootFM1 release

NewReleases is sending notifications on new releases.