ChoralRoot 0.22-beta1 is a beta of 0.22: a sixth engine, P5, 128 sound slots shared by all engines, favorites, FM TONE
in the Digitone's own ranges and times with Digitone sounds to import, knobs that accelerate, and velocity and
aftertouch from the FM-1's own keys. It is opt-in: the web installer offers it only when you tick Show beta
releases under Other versions, and 0.21 stays its default. A beta may have bugs (please report them on GitHub), and
the next stable release, 0.22, replaces it. Updating from 0.21 keeps your settings, sounds and loops; going back to
0.21 is possible at any time (the last section says what it means).
Sounds and engines
- A new engine: P5, the Prophet-5 model of Melodee (Kerem Kilic's FM-1 firmware): two oscillators with sync and
Poly-Mod, the four-pole filter in its Rev 1/2 and Rev 3 characters, two envelopes and the wheel's modulation. It
comes with 115 of the 200 factory programs Sequential made for the Prophet-5 (picked by ear), after00 INIT.
Choose it as any engine: hold OPT (printed GLO) and turn PRESETS for the chord part or ALGORITHM for the bass.- Its sound editor is the Prophet-5's front panel, drawn by the FM-1: framed sections, knobs with a printed 0 to
10 scale and the value in the knob, buttons with their LED and the wave they switch drawn over them. EDIT shows
the panel's sections on eight screens: OSC A with the mixer and OSC B (OSC), the filter with its envelope (FILT),
the amplifier (ENV), the LFO and the wheel (LFO), Poly-Mod and the voice with UNISON, voices, detune, glide,
priority and Vintage (MOD), then EXPR as on every engine. Each screen has two or three rows of controls: SELECT
moves from row to row (the row on the knobs is in colour, the others grey) and KNOB 1 to 4 turn that row's places
from left to right; a place with nothing in it does nothing. Only P5's editor looks like this. - UNISON. A program whose UNISON switch is on loads in UNISON: one note on up to four stacked voices (a chord
plays its lowest or its last note, as the program's key priority says). The next program without it plays chords
again. - Voices. With Dual Core on (the new default, below) the chord part plays up to eight P5 voices, shared between
the chip's two cores. A P5 bass gets up to four (a UNISON stack), but the chord comes first, and the bass always
keeps one voice. With one core P5 plays four voices, three while a P5 bass sounds, and a P5 bass plays one. When
you hold more keys than there are voices, the oldest held note that is not the lowest fades out quickly to make
room. - Level. P5 plays a little quieter than the other engines (a four-note chord about 4 dB under FM6 and 6 dB under
the VA), so that UNISON programs and big chords stay clear of the output's limiter.
- Its sound editor is the Prophet-5's front panel, drawn by the FM-1: framed sections, knobs with a printed 0 to
- FM TONE in the Digitone's ranges. FM TONE's values now read like the Digitone's, so a sound can be compared and
copied number for number: FREQ (the cutoff, now the Digitone's number instead of Hz), RESO, BASE and DTUNE from 0.00
to 127.00 with two decimals, HARM from -26.00 to +26.00, the filter envelope's DEPTH and each LFO's SPEED and DEPTH
from -64.00 to +63.99, FDBK from 0 to 127, LEVEL a whole number from 0 to 127, and AMP DEC and AMP REL whole numbers
from 0 to 126, then INF. AMP DEC at INF holds the level the attack reached, as the Digitone's DEC 127 does (AMP REL's
INF is as before). VEL, the operators' KEY and the filter's SUS and KTRK read 0 to 127 instead of a percentage. - FM TONE sounds from before 0.22 are converted when they load (your saved sounds, the factory sounds, the last
session, backups and sound files): each value is carried over into its new range. The conversion is close, not
exact, so a sound may come out a little different; an AMP DEC that was at its top (127) is INF now, so the sound
holds its level instead of falling slowly to SUS. The times keep their numbers, which now mean the Digitone's times
(below). The next save keeps the sound in the new form. - FM TONE's LFOs reach all 57 of the Digitone's destinations, listed in the Digitone's order on the DEST cell. New
are LFO 1's own SPEED, MULT, FADE, WAVE, start phase, MODE and DEPTH (from LFO 2 and 3), RATIO ALL, A and B together
(LEV, ATK, DEC, END, DLY), DRIVE, the reverb, delay and chorus sends, and the filter envelope's DELAY. - FM TONE's times are the Digitone's. Every envelope (the amp's, the filter's, operators A and B), the DELAYs
and the LFOs' FADE now take as long as on a Digitone at the same value, measured on a real Digitone, so a sound
copied number for number also has the Digitone's timing. The time cells show numbers from 0 to 127, as the
Digitone does, instead of milliseconds and seconds. The operators' attack rises the Digitone's way (slowly, then
fast at the end); the DELAYs (A, B and the filter's) count 32nds of a beat at the part's tempo (16 is half a beat);
a FADE of -16 takes 0.05 s, -32 about 0.8 s, -48 about 12 s. INIT is now the Digitone's init sound, so a sound
started from INIT begins where one on the Digitone does. The factory FM TONE sounds were set again on the new
times, so they keep their timing.- FM TONE sounds you saved before keep their numbers, so their envelopes now run on the Digitone's times: most
times are longer than before, many much longer (an AMP DEC of 96 fell away in about 1.6 s and now takes about
15 s), the amp's attack changes least. Set the times again by ear where a sound needs it. - Digitone sounds imported before: import them again. Their times were translated for FM TONE's old times, so
they now play longer than on the Digitone; imported again, the times are taken as they are.
- FM TONE sounds you saved before keep their numbers, so their envelopes now run on the Digitone's times: most
- Digitone sounds into FM TONE. The device manager takes sound files exported from an Elektron Digitone (
.dnsnd,
several at once) and turns each into an FM TONE sound that you place in a slot like any other; the installer page's
Sounds section imports them one at a time. The files are read on your computer: nothing is uploaded. The algorithm,
the ratios, the operators' envelopes and levels, the filter and its type, the amp envelope, the LFOs and their
destinations, DRIVE, the decimals and, where it can, the sound's octave are carried over; what does not translate,
or only roughly, is listed beside each sound before you place it. An imported sound is close to the Digitone's, not
the same: the file format was worked out from exported files, and the levels are approximations. The times are
taken as they are, now that FM TONE's are the Digitone's. - Replace the factory sounds in one go. In the device manager, Replace factory puts the sounds you selected in
the library (Digitone imports or any other sounds of one engine) in the places of that engine's factory presets, in
order: PRESETS then steps through your sounds where the factory ones were. Each takes a user slot; more sounds than
factory presets are added after them while free slots last. Restore factory order brings the factory presets
back and keeps your sounds as added ones. The factory sounds stay in the firmware either way. - Factory presets back, or a clean start. In the device manager, Restore brings back the factory presets you
select, all of one engine's or all of every engine's, and deletes your sounds that took their places; Delete all
user sounds and Reset sounds to factory empty all 128 slots in one go and take the favorite marks off your own
sounds (marks on factory presets stay). Each asks first, offers a backup on the spot, and Undo puts everything back
while the page is open. - P5 in the device manager. P5 has its own tab: its programs in the order the FM-1 shows them, then your P5 sounds,
which you can place over a program, restore, delete or keep as files like any engine's (P5's factory programs
themselves cannot be saved as files), and every tab shows your favorite stars as the FM-1 does. - VA: a finer filter envelope and more sync rates. The filter envelope's depth (FENV) has two decimals, -64.00 to
+63.99, so a small amount such as 0.04 is possible. A synced LFO's RATE is a list of 42 rates: 8, 4, 3, 2 and 1
bars and 1/2 to 1/256, each dotted, straight and triplet, then 4, 3 and 2 ms. It moves one rate a detent; with OPT
held it steps the straight ones. VA sounds from before 0.22 are converted exactly and sound as they did. - The delay at half rate. The delay now runs at 22.05 kHz, as the reverb always has: its repeats lose what is
above 11 kHz, which is less than Tone takes at its default (judged on the unit by ear). It gives back 65 KB of the
chip's buffer memory for what comes next. The longest time is still 0.74 s.
Playing and editing
- Chord numerals in Key Mode. A new setting, Numerals, on the KEY layer's second page (hold KEY, turn SELECT,
KNOB 4). It is off until you turn it on. With Key Mode on, the Chord view then shows the Roman numeral of the chord
you are playing, in blue above the chord's name: in C majorIfor C,Vfor G,vifor Am. Capitals are chords
with a major third, small letters chords with a minor third. The numeral is the degree you played: Transpose is
left out, so the tonic chord readsIat any Transpose, while the name shows the chord you hear. Hold SAVE to keep
the setting. Nothing you hear changes. - The knobs accelerate. A value knob turned slowly moves its finest step (1, or 0.01 on a value with decimals);
turned quickly it moves up to a twentieth of the range a detent, so a quick turn of about one revolution crosses
the whole range. That is every value in the sound editor of every engine and most value knobs outside it (the
effects, the BASS layer's level, Options > Velocity). Lists (presets, algorithms, named choices, the VA's sync
rates) still move one item a detent, and so do the tempo, the PLAY menu's Level and the click level. - Hold OPT to snap. While you hold OPT (printed GLO), a value knob jumps to round values: 0, 16, 32 .. 127 on a 0
to 127 value, steps of 8 on -64 to 63, whole numbers on a value with decimals, 8, 16, 32 and 64 on an LFO speed,
octaves on a value in semitones. In the sound editor GLO is SHIFT: hold it, or tap it to keep snapping until you
tap it again (snapshows in the title line). Until 0.21 SHIFT gave fine steps in the editor; a slow turn does that
now. OPT's other jobs (with PRESETS, ALGORITHM, KNOB 1 and SELECT) are unchanged. - Dual Core is on by default. A new FM-1, and one whose settings you reset (Options > Reset Settings), now uses
the chip's second core: the bass plays there with its own voices, and P5's chords get their eight voices. Updating
does not change your setting: if your FM-1 had Dual Core Off, it still has. To turn it on, set Options > Dual Core
to On and switch the FM-1 off and on. Should the second core keep the FM-1 from starting, the next start comes up on
one core with Dual Core readingOn · restart, so that you can switch it Off there.- After a crash beside the second core, Dual Core turns itself off. If the FM-1 crashes, hangs or gives the
second core up while Dual Core is On, the screen saysdual core off: crashafter the restart (orhang,gave up), the line under Options > Dual Core gives the reason (off after a crash on 2 cores), Geek Out saysc1 off · after a crash, and the FM-1 stays on one core over power cycles until you set Dual Core On again (a Reset
Settings straight after keeps it Off too). Until 0.21 such a crash restarted the FM-1 with Dual Core still On, so
it could crash again and again. If your FM-1 ever crashes or restarts while playing and Dual Core is still On, set
it to Off and switch off and on. - With Dual Core On, the chip's regulator (VDC14) goes to 1.50 V before the second core starts (it was 1.45 V;
the core voltage stays at 1.35 V). Some FM-1s crash with both cores running (issue #9 here; fm1-x0x #10 and #21,
where fc79 and zednaked measured it), and every report agrees this voltage is what matters: at 1.50 V the affected
units ran clean where 1.45 V still crashed. fm1-x0x ships 1.50 V since 1.0.7, the chip's data sheet allows 1.55 V
and the stock M-VAVE firmware runs 1.60 V. With Dual Core Off nothing changes. - If your FM-1 turns Dual Core off by itself, please tell us (with
fm1_install.py --debug): it means this unit
does not run both cores at 1.50 V either, and that is worth knowing.--debugnow also prints the last crash
(what the crash screen showed for four seconds: the vector, the program counter, the return address, the debug
unit's word and the uptime; kept until the FM-1 is switched off) and why the last restart happened.
- After a crash beside the second core, Dual Core turns itself off. If the FM-1 crashes, hangs or gives the
- Geek Out 2: the cores' load and the memory as meters. A sixth view, after Scope in the HOME cycle and in the
view menu (hold HOME: the white keys D4 to B4 choose the view, Lock moves to C5; Options > View): four tall meters.
CORE 0 (blue) is the audio engine's share of the first core over the last second, CORE 1 (orange) the
second core's share when Dual Core is On (off,failedorgave upotherwise), RAM (white) and POOL
(green) how much of the chip's two memory regions this firmware takes. The bars glide to each second's figure; a
tick above a bar marks the second's peak. The title line says2 coresor1 core. - The screen is faster. Its bus runs at 20 MHz instead of 12, so a full redraw takes 46 ms instead of 77; nothing
looks different (judged on the unit by eye). - Velocity and aftertouch from the keys. The FM-1's keys can sense how hard you play and how hard you lean on a
held key, with no change to the hardware (the carbon contact under each key is read as a resistance; the idea and
the method are Charles Vestal's, from his Velo and MONK-1 firmwares). Off until you turn it on: Options > Key
Touch is Fixed (every key at Options > Velocity, as before), Dynamic (each chord at the velocity it was
struck with) or Velocity + Aftertouch (and pressing harder on a held key moves the sound). Velocity Sens
and Aftertouch Sens (Low / Mid / High) set how much. The keys that sense are F3 to C5; the top seven (C#5 to
G5) follow the velocity you have been playing. A struck chord sounds a few milliseconds later than with Fixed,
because the key is measured after it lands. With Key Touch on, every engine's level follows the velocity (FM6 and
CZ-1 included), and with aftertouch the held pressure opens the filter; MIDI notes and aftertouch from USB do the
same, and the keys' velocity and pressure go out over MIDI. - Expression, per sound. In the editor, the MOD group's last screen is EXPR: velocity (VEL) and aftertouch (AT)
each to a destination (level, cutoff, shape, pitch, pan, the sends, the LFO's rate or vibrato, the engine's own
parameters) by an amount, saved with the sound. A sound that routes nothing uses the defaults (velocity to level,
aftertouch to cutoff); turn the Dest or Amount cell to take them over, Dest OFF switches a default off.
Saving and favorites
- 128 user sound slots, shared by all engines. Save up to 128 of your own sounds, of any engine, in any mix (until
now 32). The slots are numbered U001 to U128. Your 32 sounds from 0.21 are copied into U001 to U032 the first time
the FM-1 starts with 0.22, each with its own patch. The device manager and the installer page's Sounds section work
with the 128 slots, and with a 0.21 FM-1's 32 as before. - P5 sounds can be saved. SAVE on a P5 sound offers Overwrite and Save as new like every engine: the whole program
is kept with the sound, edited or not, and loading it brings back exactly what you saved, with its UNISON. The
device manager exports and imports P5 sounds as sound files. - Naming a sound has a cursor. When you Save as new, SELECT moves a cursor along the name (turned right on the
last letter it adds one), KNOB 1 changes the letter under it and KNOB 4 to the left deletes it, so a name can be
written with the knobs alone. The keys still type, just after the cursor. The other knobs do nothing while you name
a sound: PRESETS and ALGORITHM no longer change the sound under the name, and KNOB 2 no longer changes the last
letter (that is KNOB 1 at the cursor). - Favorites, with a filter. Mark the sounds you like, then step through just those. Tap SAVE: in the save menu
KNOB 4 marks the sound (right) or takes the mark off (left); nothing is saved or overwritten. Or mark while you
browse: in the sound editor turn PRESETS and use KNOB 4 on the sound you are hearing. A marked sound shows a small
yellow star before its name when you turn PRESETS or ALGORITHM. Factory presets, P5's programs and your own sounds
can be marked (00 INITcannot).- The filter. In the save menu KNOB 2 turns the favorites filter on or off. While it is on, PRESETS and
ALGORITHM step through the favorites of the engine you are on and nothing else; a yellow line under the meter
(favorites 03/07) shows that it is on. An engine without a favorite steps through all its sounds and saysno favorites: all. - Chord or bass. KNOB 3 gives a sound a type:
Both,ChordorBass. With the filter on, Chord sounds
are offered to the chord part only and Bass sounds to the bass part only. The type stays with the sound when you
take its mark off and put it back. - The save menu now works like the Options: SELECT picks one of five entries (Overwrite, Save as new, Favorite,
Favorites filter, Favorite type) and KNOB 1 changes the selected entry's value. KNOB 1 no longer moves between
Overwrite and Save as new: use SELECT. - The marks, the types and the filter are kept by themselves and are part of a backup. With the command-line tool,
--favoritesprints them as text and--restore-favoriteswrites such a text back.
- The filter. In the save menu KNOB 2 turns the favorites filter on or off. While it is on, PRESETS and
- Fewer pauses when the FM-1 writes to flash. A flash write used to stop the sound for about 18 ms. The FM-1 now
clears the space ahead of time, at power-on or after ten seconds of quiet, for your favorites, for what SAVE held
keeps (the sounds and the state you come back to) and for the 128 slots, so those writes no longer pause the sound
(a second favorite change soon after waits for a quiet moment; a second save soon after pauses as before).
Changing an Option still pauses once, after you stop playing, as in 0.21, and so does saving a loop. Taking a
backup, or reading the favorites from a computer, no longer writes anything to the FM-1. - Back up before you try another firmware. Some other FM-1 firmwares (Melodee, a remix of ChoralRoot) use the part
of the flash where 0.22 keeps your favorites and your sounds. A full backup from the installer page or the device
manager keeps everything; restore it when you come back.
Installing
- A beta, opt-in. In the web installer tick Show beta releases under Other versions (the page remembers it in
that browser), choose 0.22-beta1 and press Install. Without the tick the installer offers 0.21, the latest stable
release, as before. On an FM-1 that runs the beta, "What is on my FM-1?" says so, and Install then writes 0.21 unless
you choose the beta again. Options > Version readsChoralRoot 0.22-beta1. - A Single core package, for FM-1s that have trouble with Dual Core. The web installer offers it under
Advanced > Hardware fallback: the same firmware, built so that the second core is never started. Choose it if
your FM-1 crashes or freezes with the standard package. Options > Dual Core then reads1 core build, and the
versionChoralRoot 0.22-beta1 1-core(Options > Version shows it as0.22-beta1 1-core, the line being too short
for the whole name). Your settings, sounds, loops and favorites stay when you switch between the two. - Several FM-1s on one computer: the unit ID. Each FM-1 now has an ID of its own, 8 characters such as
A1B2C3D4,
read from its flash chip, so it stays the same through every install and reset. Options > Version shows it on the
line under the version (unit ID A1B2C3D4). "What is on my FM-1?" shows it too and lists each FM-1 when several
answer; Install, Back up, Restore and the Sounds then refuse, writing nothing, until only one is connected. The
device manager asks which FM-1 to open and shows its ID. With the command-line tool,--infolists every FM-1 with
its ID, and--unit IDmakes any command use that FM-1 alone, through an install's restarts too.
Going back to 0.21
The installer offers 0.21 at any time: it is the default. 0.21 has none of the above, and:
- Your sounds. 0.21 shows its 32 slots as they were when you updated: 0.22 never writes them. Sounds saved under
0.22, in any slot, are not there; they are still in the 128 slots when you come back. Sounds you save under 0.21 are
not copied by themselves when you return: the device manager's Import the 0.21 slots copies 0.21's 32 slots into
U001 to U032 again, over what is there (U033 to U128 stay). - A sound saved under 0.22, taken to 0.21 (export it with the device manager, then place it on 0.21): P5 sounds
cannot go, 0.21 has no P5. The device manager converts FM TONE and VA sounds to what 0.21 reads and says what
changed: values with decimals are rounded, an FM TONE LFO aimed at one of the destinations new in 0.22 is switched
off, an AMP DEC at INF becomes 0.21's longest decay, and a VA LFO synced to a rate 0.21 does not have takes the
nearest one it has. An FM TONE sound's times keep their numbers, which 0.21 plays on its own times: most of them
come out much shorter there. - The sound you left playing. A part left on a P5 sound starts on 0.21's default sound. 0.21 does not read FM TONE
and VA sounds in their 0.22 form either: a part left on one may start on another sound, or on INIT. - Favorites. 0.21 has none: it ignores the marks, the types and the filter, and leaves them alone, so they are
still there when you come back. - Numerals and Key Touch. 0.21 has neither (its keys play at Options > Velocity, as before) and nothing else is
lost or reset, but it does not keep them: once 0.21 saves its settings (you hold SAVE or change an Option there),
Numerals is off and Key Touch is Fixed, with Velocity Sens and Aftertouch Sens at Mid, when you come back. - Dual Core and the single-core package. 0.21 keeps the Dual Core setting as it is (On on an FM-1 that was new or
reset under 0.22; Off if 0.22 turned it off after a crash) and has no single-core package: on an FM-1 that needs one
core, set Options > Dual Core to Off on 0.21 straight after installing it. With Dual Core On, 0.21 sets the
regulator to 1.45 V again, and it does not turn Dual Core off by itself after a crash. - The unit ID. 0.21 has none: the pages and
fm1_install.py --infolist an FM-1 on 0.21 without one, and
--unitcannot choose it. - Geek Out 2. 0.21 has five views: with Geek Out 2 as the saved view (Options > View), it starts on the Chord
view. - The knobs move in fixed steps again, and SHIFT in the sound editor gives fine steps again.
- Backups. A backup made with 0.22 holds the 128 slots and the favorites; restored on 0.21 it brings back the
settings, the FM6 and CZ-1 banks and the loops, but not the sounds or the favorites. A backup made with 0.21 restores
on 0.22 into U001 to U032.
ChoralRoot 0.22-beta1 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.22-beta1.fwsc.
choralroot-0.22-beta1-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. 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.21...v0.22-beta1