Felucca 1.6.1
A small update to 1.6: LARGE values keep one size per knob, updates check the package's size on the FM-1 before anything is erased, and the FM-1's second core as an opt-in beta (OFF unless you turn it on). Five engines also move to their own repository, Felucca-Engines, under the MIT licence; Felucca itself stays GPL-3.0-only. Projects, sounds, presets and settings stay in 1.6's formats: they move between 1.6 and 1.6.1 both ways, and every saved sound plays exactly as before.
Install: the web installer (Chrome or Edge, USB) installs 1.6.1, over 1.6 or any earlier version.
Try it first: Felucca in your browser runs 1.6.1, the same firmware compiled to WebAssembly, with the panel on screen (one core: the second core is the FM-1's).
Display
- MENU > LARGE keeps one size per knob (#251). With LARGE on, each value picked its own size, so a knob jumped between big and small digits as its number got longer (CUT 30 Hz large, 306 Hz smaller, and back; −98 to −100; SIN to SAW). Now each knob shows all its values in one size, the one its longest value fits: knobs whose values all fit stay large, the others stay one size down instead of switching back and forth. On HOME and every page (FX, SCL, ENV, LFO, EDIT, ARP and the hold layers). No new fonts, nothing else on the screen moves.
Updates
- A package made for another device is refused before anything is erased. The FM-1's update entry and the update loader now take only a package whose firmware area is exactly the FM-1's. A package of another device with the same chip used to get as far as erasing the update area before it failed; it is now refused at once, and the FM-1 plays on. The update screen shows FAILED -15 (the update loader answers -14). The FM-1's own packages install as before, Felucca's and the official V15 alike.
- The check comes with the update loader inside each 1.6.1 package, so it applies from the first update made with one; older packages keep their own loader as they were.
Second core (beta)
- MENU > SYSTEM > 2ND CORE (Discussion #141, PR #247). The FM-1's chip has a second processor core, unused until now. Set 2ND CORE to ON (BETA) and it renders some of the four parts of each audio block while the first core renders the others. The sound is meant to be exactly the same, bit for bit; what changes is the headroom, so dense patterns and USB audio have more room before the FM-1 runs out of time.
- It is a beta, so it is OFF unless you turn it on, and an update from 1.6 or earlier comes up OFF. With OFF the second core is never started and the FM-1 plays on one core, as 1.6 did.
- Turn it on, then restart: a change applies from the next power-on. The menu says "2ND CORE ON: RESTART" (or OFF); turn the FM-1 off and on again.
- If the second core misbehaves on your unit (it reads a wrong job or stops answering), the FM-1 goes on with one core, shows "2ND CORE MISREAD: OFF" and sets 2ND CORE back to OFF. Setting it to ON again tries again at the next power-on.
- The serial console's
statusshowscpu2_set(the setting) andcpu2(1 while the second core runs), with what it did:cpu2_blocks,cpu2_wait_max_us,cpu2_gave_up,cpu2_stack. - If you try it, please tell us in Issues: whether it ran well over a long session (on battery and on USB), with saves while playing and with USB audio; whether updates and UPDATE MODE work with it on; any crash screen (a photo of it) and whether "2ND CORE MISREAD" appeared; and if a sound differs between ON and OFF, the project or preset that shows it.
- Contributed by gospodindilly-ops (PR #247). The second core's start-up, mailbox and safety checks come from X0X by charlesvestal, with the dual-core findings of Melodee by keremimo, and the way the parts are split between the cores, the measurements and the hardening from Jangada by zednaked: all GPL-3.0 FM-1 firmwares, each credited in LICENSING.md and in the files.
Felucca-Engines (MIT)
- ANALOG, LOFI, TRIO, WHEEL and NOISE now live in their own repository, Felucca-Engines, under the MIT licence, together with the engine interface, the shared DSP helpers and the generator of their tables. Use them in your own projects under MIT's simple terms. Felucca includes them as a git submodule (
firmware/engines/), and the sound is unchanged (the same golden renders, the engines' own tests run with Felucca's). - Felucca stays GPL-3.0-only as a whole, the firmware built with these engines included. The rest of Felucca (the other engines, the sequencer, the UI, the tools) is GPL-3.0-only as before.
- Getting the source: clone with
git clone --recurse-submodules https://github.com/hugelton/Felucca.git(in an existing clone,git submodule update --init). GitHub's "Source code" archives below leavefirmware/engines/empty, so this release also hasfelucca-1.6.1-source.tar.gz: the complete source of this release, the submodule's files included. If you share Felucca or firmware built from it, share that complete source. - Changes to the five engines go to Felucca-Engines, under MIT.
Compatibility
1.6.1 opens everything 1.6 and earlier saved, and plays it as before. Nothing is stored differently: projects, sounds, user presets and settings are 1.6's formats.
- 2ND CORE is a bit of the settings that 1.6 does not know: on 1.6 the FM-1 plays on one core and keeps the setting, so it is as you left it when you come back to 1.6.1.
Web
- The web editor at webapp/editor (developed in Felucca-WebApp) shows 2ND CORE in Settings (SYSTEM): OFF or ON (BETA), from the next power-on. Reload the page so it is the new one.
- The installer installs 1.6.1; Try Felucca at webapp/try runs 1.6.1.
- ⚠ The full backup still does not include the FM6 voice bank: keep the .syx file to send it again.
Coming from 1.5.1 or earlier
Read 1.6's notes first: Felucca 1.6. Everything there holds for 1.6.1, among it that a project with conditional steps does not open on 1.5 or 1.5.1.
Going back
- To 1.6: everything you saved opens as it is, in the same formats. The FM-1 plays on one core there (the 2ND CORE setting is kept), and LARGE switches sizes as before.
- To 1.5.1 or earlier: as from 1.6, see 1.6's Going back.
Thanks
- gospodindilly-ops for the second core (PR #247), and to charlesvestal (X0X), keremimo (Melodee) and zednaked (Jangada), whose work it builds on
- Yeremel for the LARGE value sizes (#251)
Files
felucca-1.6.1.fwsc: the package the web installer installs (identity FM-1_916, version v1.6.1)felucca-1.6.1-app.bin: the firmware app alonefelucca-1.6.1-source.tar.gz: the complete source of this release, with the Felucca-Engines submodule's files (GitHub's "Source code" archives leavefirmware/engines/empty)
Licences (as of this release): LICENSE (GPL-3.0-only) · LICENSING.md · LICENSES/ (among them MIT-Felucca-Engines.txt) · sample attribution. The package holds three unmodified JieLi AC79 SDK files under Apache-2.0 (Apache-2.0.txt). The source of this release is the tag v1.6.1 with its submodule Felucca-Engines @ c46e008, also as one archive: felucca-1.6.1-source.tar.gz.
SHA-256 felucca-1.6.1.fwsc (610,090 bytes): dff3a38f7e5b9833e15aba322558c9485e9e422e3ff813c616c91b3584a2d909
SHA-256 felucca-1.6.1-app.bin (511,472 bytes): 9f28dbc78dc1a52faa1caf0eb0dd86b2a9a553bf8336dd8d9bd922c0f60bace3
SHA-256 felucca-1.6.1-source.tar.gz (5,729,664 bytes): d78074d8299eb16e1fc8f4faa38ac7801502d48985ff983f35e3f8f85c18bb57