github Quixotic7/ChoralRootFM1 v0.22-beta1
ChoralRoot 0.22-beta1

pre-releaseone hour ago

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), after 00 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.
  • 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.
  • 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 major I for C, V for G, vi for 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 reads I at 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 (snap shows 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 reading On · 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 says dual core off: crash after the restart (or hang, gave up), the line under Options > Dual Core gives the reason (off after a crash on 2 cores), Geek Out says c1 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. --debug now 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.
  • 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, failed or gave up otherwise), 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 says 2 cores or 1 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 INIT cannot).
    • 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 says no favorites: all.
    • Chord or bass. KNOB 3 gives a sound a type: Both, Chord or Bass. 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,
      --favorites prints them as text and --restore-favorites writes such a text back.
  • 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 reads ChoralRoot 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 reads 1 core build, and the
    version ChoralRoot 0.22-beta1 1-core (Options > Version shows it as 0.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, --info lists every FM-1 with
    its ID, and --unit ID makes 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 --info list an FM-1 on 0.21 without one, and
    --unit cannot 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

Don't miss a new ChoralRootFM1 release

NewReleases is sending notifications on new releases.