Repository navigation
Releases
v1.0.9
DUB-BOX 1.0.9
The tape echo's top of course — the sound-system's infinite tape — and the
synare, the last white key's own drum:
- The DLY page's K2 FEEDBK holds the tail forever from the 90th share of its
course (114 of 127): what was played darkens pass by pass (the damping,
the soft clip) and settles into a low sing that never dies. The loop sits a
hair past unity there — the clip's own fixed point keeps the residue a dark
bass hum (the host suite watches the tail still singing 30 s after one
burst, its level held). Below the share the knob keeps its own decay — the
boot's 70 and every value under 114 are bit-exact what they were. - Past the share the loop builds into the larsen. The excess over unity
grows to +10 % at the 100 %, and the loop's gain walks a slow random path
block to block: the scream breathes, and at the low excesses it dips back
under unity and dies away before it builds again. A hiss a few LSBs wide
(about −60 dB) seeds the loop out of silence — park the knob at 100, walk
away, come back to the tape screaming. The soft clip holds whatever it
becomes: the scream settles near −4 dBFS at the 100 %, never a number that
leaves Q15. The FEEDBK row turns orange at the share and red in the larsen,
and the tape's room stays held while the knob sits there (the waveform and
spectrum captures wait until it comes back below, the displays say so). - The SYNARE page and the last white key (F5) — the syn-drum the
sound-systems dub with: a press strikes, the hit rings out, a new press
re-strikes, and the tail is the tape's. The sine starts at K1 PITCH
(120–800 Hz) and glides down K3 DROP's course (up to two octaves over some
30 ms — the "doom") while K2 DECAY's envelope fades (80–840 ms); K4 SEND
throws the hit into the tape echo (0 DRY, 48 at boot, as the siren's). The
key works from any screen, dub on or not, its LED lit while the hit sounds.
The strike's room follows the siren's: the tape's tail keeps the work area
five seconds past the last hit. - Settings carry v20 (the synare's five appended to the v19 record;
v19/v18/v17 records load unchanged, the synare keeping its fresh boot's
voice). The emulator rebuilt with the same firmware (emcc 7.0.0, 176 111 B
wasm), its page parses the 31-byte readback and the SYNARE page's caps sit
at the firmware's real values; its manual documents the drum and the zone.
The host suites cover the hold, the runaway, and the drum (the onset hot,
gone within its decay, the pitch fallen, the send reaching the tape); the
memory contract holds for the captures with SBC (margin 8 B) and AAC, the
aptX corner degrades as 1.0.0 documented.
Package identity FM-1_2345, dub-box-1.0.9.fwsc (613 178 B,
sha256 8cc61f63…aa9333).
DUB-BOX 1.0.8
The newer FM-1 units work — their settings persist and their updates install:
- The newer units' flash chip (JEDEC B3 60 14) is accepted at boot — until
now the firmware checked the part against the stock Puya only (85 60 14) and
anything else booted withflash_okclear: the settings, the autosave and
the M-UPGRADE staging stayed in RAM (the hub listing's warning, "saves to RAM
only, update may fail"). The boot check takes both 1 MiB parts now; the
storage, the OTA and the loader run the same generic SPI NOR commands on
either part, so nothing else moves — settings land in the flash and an
update stages, installs and resumes like on the stock units. - The rescue tool accepts the newer part too (
fm1_rescue.pyrefused it
with "this is not the FM-1's chip and flash"; it now takes 856014 or b36014),
and the hwtest example names both parts. A part that ignores the erase
suspend (75h) keeps the sliced erase's own fallback — the window waits the
erase out in one hold (fm1_flash_slice.h), as the stock part never needs it. - The dub pages and the emulator are the 1.0.7 build's, unchanged.
Package identity FM-1_2345, dub-box-1.0.8.fwsc (613 178 B,
sha256 739b734d…748400).
DUB-BOX 1.0.7
The sources' own sends, and the dub module on the eighth black key:
- The DUB page's K1–K4 are pots, the same 300-degree course (twenty
detents, one share a detent however fast) as the other DUB pages: the filter's
whole lowpass–flat–highpass course, the isolator's mix, and the two new
throws. - K3 is the USB in's send into the tape echo, K4 the BT in's — two throws
the tape reads separately. The render hands the USB in bus over before the
Bluetooth mix joins it; the BT throw is the mix minus that USB in, taken
before the isolator and the filter touch the bus. A send at 0 is DRY; both
send levels are 0 at boot. - The eighth black key (A♯4, the GLO print) turns the DUB module on and
off — its LED is lit while the module is on, and the module is on at
boot. The old switch is gone: SEL on the DUB page does nothing now (SEL
keeps the siren's wave on SIREN and the kills' lift on ISO). - The ninth (C♯5, the MONO print) and tenth (D♯5) black keys arm the USB in
and the BT in sends, each LED lit while its send is armed — both arms are
on at boot, so the send delay is active with its send levels at 0. - The tape's room is held only while a send is connected or the siren sings
(its tail keeps the room a few seconds past the gate) — at rest the work area
stays whole for the waveform and spectrum captures. The status bar's DUB
badge is gone: with the module on at boot it would have eaten the CPU and
battery text for good. - Settings carry v19 (the BT throw's level and the two arms appended to the
v18 record; v17/v18 records load unchanged, their sends defaulting to armed
at 0). The emulator's page parses the 26-byte readback and the DUB page's
caps sit at the firmware's real values like the other pages'; the wasm
rebuilt (emcc 7.0.0).
Package identity FM-1_2345, dub-box-1.0.7.fwsc (613 178 B,
sha256 e56e676f…6e0f0).
DUB-BOX 1.0.6
The firmware-hub submission release — the files the firmware
hub reads are in place:
- fmhub.json completed: the card's description, the author, the kind
(other— a dub station, not a synth or a groovebox), the emulator as the
hub's Play link, the card image (assets/github/dubbox.png, 240×240,
43 KB) and the card colour (DUB-BOX orange,#FF621A). - The package identity is the firmware's own hub ID, plain
FM-1_2345—
unique on the hub (checked against the catalog; sloop-DUB keeps
FM-1_234), no version digits appended; the Git tag names the release
(1.0.6). - The v1.0.5 tag's CI failure fixed: fm1.toml carried a C-style comment
(/* … */) on theweb_cflagsline — TOML only takes#. The 1.0.5
package itself was sound (built and published from the same source); only
the workflow's parse of the config was broken. - The browser emulator's wasm rebuilt with the 1.0.6 label (the same code,
emcc 7.0.0): the Play page on the hub runs the real 1.0.6 firmware.
Package identity FM-1_2345, dub-box-1.0.6.fwsc (613 178 B,
sha256 4627fb5e…a0e447).
DUB-BOX 1.0.5
The DUB pages' knobs feel like the pots they are named after — sloop 2.9.8's
potentiometer feel, on the device and in the emulator:
- The continuous K1–K4 of SIREN, SIREN 2, DELAY and ISO are pots: a detent
sweeps its share of the range, the whole course runs in some 300 degrees
(20 detents; an FM-1 turn is 24 detents), one share a detent however fast —
no acceleration, a turn never outruns the pointer. The siren's pitch crosses
220–1200 Hz in 20 detents, the delay's time 40–740 ms in 20, the ISO gains
−24…+12 dB in 18. TYPE and WAVE stay lists, a step a detent (five names over
300 degrees would crawl). - The emulator's K1–K4 match: the caps show the 300° travel with the part
of the course already covered in the knob's colour, the pointer sits at the
value the firmware really holds — a new readback (web_dub, app.c's APP_WEB
export, published with each frame) keeps them honest through SEL turns, the
saved settings at boot and page walks. Turn them by dragging up/down, by a
circular turn around the knob, or a detent a wheel notch; the DUB page and
the lists stay free-spinning encoders. - The RAM-code vouch list follows the newer JieLi clang's inlining (the vouched
uECC entries appear as their internals; the gone symbols are marked with?).
Package identity FM-1_235, dub-box-1.0.5.fwsc (613 534 B,
sha256 c61824c2…91d0d).
DUB-BOX 1.0.4
The dub pages carry sloop-DUB's full settings, on the knobs they sit on there:
- The SIREN page is sloop's SIR page: K1 the LFO type (WAIL, HILO, RAMP,
SWEEP, SPACE), K2 the wave (SQR, PLS, SAW, TRI, SIN — SEL still turns it),
K3 the pitch 220–1200 Hz, K4 the send — the siren's own throw into the
tape echo, 0 DRY. The send defaults to 48, sloop's dubby echo: the siren
feeds the tape from the first boot, and what it threw keeps ringing after
the gate opens — the tail is the tape's. - A second siren page, sloop's SR2: K1 the rate 1–16 Hz, K2 the depth
(the pitch sweep's amplitude, two octaves at 127), K3 the LFO's symmetry,
K4 the level the last black key sounds at. DEPTH joins the persisted
settings (v18 appends it; v17 records keep their saved values and the
fresh-boot depth). - The fourth setting lives on K4 everywhere — the delay's tone and the
isolator's TOPS band move from the ALGORITHM knob to K4, sloop's knob order
(KNOB 1..4 rule the page's settings). ALGORITHM is the router's FX knob
again. - The knob turns clamp in int before the cast: no more wrap-to-max jump when
a value at its floor turns down. - The browser emulator runs the same firmware; its manual documents the five
pages. The host suites cover the siren's own send (DRY leaves no tail, the
send does) and the delay's K4.
Package identity FM-1_235, dub-box-1.0.4.fwsc (size noted on the release).
DUB-BOX 1.0.3
The siren...
v1.0.8
DUB-BOX 1.0.8
The newer FM-1 units work — their settings persist and their updates install:
- The newer units' flash chip (JEDEC B3 60 14) is accepted at boot — until
now the firmware checked the part against the stock Puya only (85 60 14) and
anything else booted withflash_okclear: the settings, the autosave and
the M-UPGRADE staging stayed in RAM (the hub listing's warning, "saves to RAM
only, update may fail"). The boot check takes both 1 MiB parts now; the
storage, the OTA and the loader run the same generic SPI NOR commands on
either part, so nothing else moves — settings land in the flash and an
update stages, installs and resumes like on the stock units. - The rescue tool accepts the newer part too (
fm1_rescue.pyrefused it
with "this is not the FM-1's chip and flash"; it now takes 856014 or b36014),
and the hwtest example names both parts. A part that ignores the erase
suspend (75h) keeps the sliced erase's own fallback — the window waits the
erase out in one hold (fm1_flash_slice.h), as the stock part never needs it. - The dub pages and the emulator are the 1.0.7 build's, unchanged.
Package identity FM-1_2345, dub-box-1.0.8.fwsc (613 178 B,
sha256 739b734d…748400).
DUB-BOX 1.0.7
The sources' own sends, and the dub module on the eighth black key:
- The DUB page's K1–K4 are pots, the same 300-degree course (twenty
detents, one share a detent however fast) as the other DUB pages: the filter's
whole lowpass–flat–highpass course, the isolator's mix, and the two new
throws. - K3 is the USB in's send into the tape echo, K4 the BT in's — two throws
the tape reads separately. The render hands the USB in bus over before the
Bluetooth mix joins it; the BT throw is the mix minus that USB in, taken
before the isolator and the filter touch the bus. A send at 0 is DRY; both
send levels are 0 at boot. - The eighth black key (A♯4, the GLO print) turns the DUB module on and
off — its LED is lit while the module is on, and the module is on at
boot. The old switch is gone: SEL on the DUB page does nothing now (SEL
keeps the siren's wave on SIREN and the kills' lift on ISO). - The ninth (C♯5, the MONO print) and tenth (D♯5) black keys arm the USB in
and the BT in sends, each LED lit while its send is armed — both arms are
on at boot, so the send delay is active with its send levels at 0. - The tape's room is held only while a send is connected or the siren sings
(its tail keeps the room a few seconds past the gate) — at rest the work area
stays whole for the waveform and spectrum captures. The status bar's DUB
badge is gone: with the module on at boot it would have eaten the CPU and
battery text for good. - Settings carry v19 (the BT throw's level and the two arms appended to the
v18 record; v17/v18 records load unchanged, their sends defaulting to armed
at 0). The emulator's page parses the 26-byte readback and the DUB page's
caps sit at the firmware's real values like the other pages'; the wasm
rebuilt (emcc 7.0.0).
Package identity FM-1_2345, dub-box-1.0.7.fwsc (613 178 B,
sha256 e56e676f…6e0f0).
DUB-BOX 1.0.6
The firmware-hub submission release — the files the firmware
hub reads are in place:
- fmhub.json completed: the card's description, the author, the kind
(other— a dub station, not a synth or a groovebox), the emulator as the
hub's Play link, the card image (assets/github/dubbox.png, 240×240,
43 KB) and the card colour (DUB-BOX orange,#FF621A). - The package identity is the firmware's own hub ID, plain
FM-1_2345—
unique on the hub (checked against the catalog; sloop-DUB keeps
FM-1_234), no version digits appended; the Git tag names the release
(1.0.6). - The v1.0.5 tag's CI failure fixed: fm1.toml carried a C-style comment
(/* … */) on theweb_cflagsline — TOML only takes#. The 1.0.5
package itself was sound (built and published from the same source); only
the workflow's parse of the config was broken. - The browser emulator's wasm rebuilt with the 1.0.6 label (the same code,
emcc 7.0.0): the Play page on the hub runs the real 1.0.6 firmware.
Package identity FM-1_2345, dub-box-1.0.6.fwsc (613 178 B,
sha256 4627fb5e…a0e447).
DUB-BOX 1.0.5
The DUB pages' knobs feel like the pots they are named after — sloop 2.9.8's
potentiometer feel, on the device and in the emulator:
- The continuous K1–K4 of SIREN, SIREN 2, DELAY and ISO are pots: a detent
sweeps its share of the range, the whole course runs in some 300 degrees
(20 detents; an FM-1 turn is 24 detents), one share a detent however fast —
no acceleration, a turn never outruns the pointer. The siren's pitch crosses
220–1200 Hz in 20 detents, the delay's time 40–740 ms in 20, the ISO gains
−24…+12 dB in 18. TYPE and WAVE stay lists, a step a detent (five names over
300 degrees would crawl). - The emulator's K1–K4 match: the caps show the 300° travel with the part
of the course already covered in the knob's colour, the pointer sits at the
value the firmware really holds — a new readback (web_dub, app.c's APP_WEB
export, published with each frame) keeps them honest through SEL turns, the
saved settings at boot and page walks. Turn them by dragging up/down, by a
circular turn around the knob, or a detent a wheel notch; the DUB page and
the lists stay free-spinning encoders. - The RAM-code vouch list follows the newer JieLi clang's inlining (the vouched
uECC entries appear as their internals; the gone symbols are marked with?).
Package identity FM-1_235, dub-box-1.0.5.fwsc (613 534 B,
sha256 c61824c2…91d0d).
DUB-BOX 1.0.4
The dub pages carry sloop-DUB's full settings, on the knobs they sit on there:
- The SIREN page is sloop's SIR page: K1 the LFO type (WAIL, HILO, RAMP,
SWEEP, SPACE), K2 the wave (SQR, PLS, SAW, TRI, SIN — SEL still turns it),
K3 the pitch 220–1200 Hz, K4 the send — the siren's own throw into the
tape echo, 0 DRY. The send defaults to 48, sloop's dubby echo: the siren
feeds the tape from the first boot, and what it threw keeps ringing after
the gate opens — the tail is the tape's. - A second siren page, sloop's SR2: K1 the rate 1–16 Hz, K2 the depth
(the pitch sweep's amplitude, two octaves at 127), K3 the LFO's symmetry,
K4 the level the last black key sounds at. DEPTH joins the persisted
settings (v18 appends it; v17 records keep their saved values and the
fresh-boot depth). - The fourth setting lives on K4 everywhere — the delay's tone and the
isolator's TOPS band move from the ALGORITHM knob to K4, sloop's knob order
(KNOB 1..4 rule the page's settings). ALGORITHM is the router's FX knob
again. - The knob turns clamp in int before the cast: no more wrap-to-max jump when
a value at its floor turns down. - The browser emulator runs the same firmware; its manual documents the five
pages. The host suites cover the siren's own send (DRY leaves no tail, the
send does) and the delay's K4.
Package identity FM-1_235, dub-box-1.0.4.fwsc (size noted on the release).
DUB-BOX 1.0.3
The siren answers to one key and behaves like a held note:
- The last black key (F♯5) is the siren's only trigger — a gate, not a
switch: hold it and the siren sings at its LEVEL, release it and it stops.
REC and a held SEL no longer sound it (SEL on the DUB screen is back to
being just the page's switch, REC is out of the siren's way). - The release actually stops the sound. The old release cleared the
siren's active flag but left its level hot, so the note rang forever; the
gate now drops the level back over a few milliseconds (no click) and the
voice sleeps. - The delay tail stays. Whatever the siren threw into the tape echo (the
DUB page's K3 throw, or its own send) keeps ringing after the release — the
tail is the tape's, not the key's, and it dies away with the repeats. - The siren key's LED is lit while the key is held and rests dim after.
- The browser emulator's page runs the same firmware and documents the gate;
the host suites cover the release (a short fall, then silence) and REC's
new neutrality.
Package identity FM-1_235, dub-box-1.0.3.fwsc (size noted on the release).
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.h...
v1.0.7
DUB-BOX 1.0.7
The sources' own sends, and the dub module on the eighth black key:
- The DUB page's K1–K4 are pots, the same 300-degree course (twenty
detents, one share a detent however fast) as the other DUB pages: the filter's
whole lowpass–flat–highpass course, the isolator's mix, and the two new
throws. - K3 is the USB in's send into the tape echo, K4 the BT in's — two throws
the tape reads separately. The render hands the USB in bus over before the
Bluetooth mix joins it; the BT throw is the mix minus that USB in, taken
before the isolator and the filter touch the bus. A send at 0 is DRY; both
send levels are 0 at boot. - The eighth black key (A♯4, the GLO print) turns the DUB module on and
off — its LED is lit while the module is on, and the module is on at
boot. The old switch is gone: SEL on the DUB page does nothing now (SEL
keeps the siren's wave on SIREN and the kills' lift on ISO). - The ninth (C♯5, the MONO print) and tenth (D♯5) black keys arm the USB in
and the BT in sends, each LED lit while its send is armed — both arms are
on at boot, so the send delay is active with its send levels at 0. - The tape's room is held only while a send is connected or the siren sings
(its tail keeps the room a few seconds past the gate) — at rest the work area
stays whole for the waveform and spectrum captures. The status bar's DUB
badge is gone: with the module on at boot it would have eaten the CPU and
battery text for good. - Settings carry v19 (the BT throw's level and the two arms appended to the
v18 record; v17/v18 records load unchanged, their sends defaulting to armed
at 0). The emulator's page parses the 26-byte readback and the DUB page's
caps sit at the firmware's real values like the other pages'; the wasm
rebuilt (emcc 7.0.0).
Package identity FM-1_2345, dub-box-1.0.7.fwsc (613 178 B,
sha256 e56e676f…6e0f0).
DUB-BOX 1.0.6
The firmware-hub submission release — the files the firmware
hub reads are in place:
- fmhub.json completed: the card's description, the author, the kind
(other— a dub station, not a synth or a groovebox), the emulator as the
hub's Play link, the card image (assets/github/dubbox.png, 240×240,
43 KB) and the card colour (DUB-BOX orange,#FF621A). - The package identity is the firmware's own hub ID, plain
FM-1_2345—
unique on the hub (checked against the catalog; sloop-DUB keeps
FM-1_234), no version digits appended; the Git tag names the release
(1.0.6). - The v1.0.5 tag's CI failure fixed: fm1.toml carried a C-style comment
(/* … */) on theweb_cflagsline — TOML only takes#. The 1.0.5
package itself was sound (built and published from the same source); only
the workflow's parse of the config was broken. - The browser emulator's wasm rebuilt with the 1.0.6 label (the same code,
emcc 7.0.0): the Play page on the hub runs the real 1.0.6 firmware.
Package identity FM-1_2345, dub-box-1.0.6.fwsc (613 178 B,
sha256 4627fb5e…a0e447).
DUB-BOX 1.0.5
The DUB pages' knobs feel like the pots they are named after — sloop 2.9.8's
potentiometer feel, on the device and in the emulator:
- The continuous K1–K4 of SIREN, SIREN 2, DELAY and ISO are pots: a detent
sweeps its share of the range, the whole course runs in some 300 degrees
(20 detents; an FM-1 turn is 24 detents), one share a detent however fast —
no acceleration, a turn never outruns the pointer. The siren's pitch crosses
220–1200 Hz in 20 detents, the delay's time 40–740 ms in 20, the ISO gains
−24…+12 dB in 18. TYPE and WAVE stay lists, a step a detent (five names over
300 degrees would crawl). - The emulator's K1–K4 match: the caps show the 300° travel with the part
of the course already covered in the knob's colour, the pointer sits at the
value the firmware really holds — a new readback (web_dub, app.c's APP_WEB
export, published with each frame) keeps them honest through SEL turns, the
saved settings at boot and page walks. Turn them by dragging up/down, by a
circular turn around the knob, or a detent a wheel notch; the DUB page and
the lists stay free-spinning encoders. - The RAM-code vouch list follows the newer JieLi clang's inlining (the vouched
uECC entries appear as their internals; the gone symbols are marked with?).
Package identity FM-1_235, dub-box-1.0.5.fwsc (613 534 B,
sha256 c61824c2…91d0d).
DUB-BOX 1.0.4
The dub pages carry sloop-DUB's full settings, on the knobs they sit on there:
- The SIREN page is sloop's SIR page: K1 the LFO type (WAIL, HILO, RAMP,
SWEEP, SPACE), K2 the wave (SQR, PLS, SAW, TRI, SIN — SEL still turns it),
K3 the pitch 220–1200 Hz, K4 the send — the siren's own throw into the
tape echo, 0 DRY. The send defaults to 48, sloop's dubby echo: the siren
feeds the tape from the first boot, and what it threw keeps ringing after
the gate opens — the tail is the tape's. - A second siren page, sloop's SR2: K1 the rate 1–16 Hz, K2 the depth
(the pitch sweep's amplitude, two octaves at 127), K3 the LFO's symmetry,
K4 the level the last black key sounds at. DEPTH joins the persisted
settings (v18 appends it; v17 records keep their saved values and the
fresh-boot depth). - The fourth setting lives on K4 everywhere — the delay's tone and the
isolator's TOPS band move from the ALGORITHM knob to K4, sloop's knob order
(KNOB 1..4 rule the page's settings). ALGORITHM is the router's FX knob
again. - The knob turns clamp in int before the cast: no more wrap-to-max jump when
a value at its floor turns down. - The browser emulator runs the same firmware; its manual documents the five
pages. The host suites cover the siren's own send (DRY leaves no tail, the
send does) and the delay's K4.
Package identity FM-1_235, dub-box-1.0.4.fwsc (size noted on the release).
DUB-BOX 1.0.3
The siren answers to one key and behaves like a held note:
- The last black key (F♯5) is the siren's only trigger — a gate, not a
switch: hold it and the siren sings at its LEVEL, release it and it stops.
REC and a held SEL no longer sound it (SEL on the DUB screen is back to
being just the page's switch, REC is out of the siren's way). - The release actually stops the sound. The old release cleared the
siren's active flag but left its level hot, so the note rang forever; the
gate now drops the level back over a few milliseconds (no click) and the
voice sleeps. - The delay tail stays. Whatever the siren threw into the tape echo (the
DUB page's K3 throw, or its own send) keeps ringing after the release — the
tail is the tape's, not the key's, and it dies away with the repeats. - The siren key's LED is lit while the key is held and rests dim after.
- The browser emulator's page runs the same firmware and documents the gate;
the host suites cover the release (a short fall, then silence) and REC's
new neutrality.
Package identity FM-1_235, dub-box-1.0.3.fwsc (size noted on the release).
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
...
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
v1.0.6
DUB-BOX 1.0.6
The firmware-hub submission release — the files the firmware
hub reads are in place:
- fmhub.json completed: the card's description, the author, the kind
(other— a dub station, not a synth or a groovebox), the emulator as the
hub's Play link, the card image (assets/github/dubbox.png, 240×240,
43 KB) and the card colour (DUB-BOX orange,#FF621A). - The package identity is the firmware's own hub ID, plain
FM-1_2345—
unique on the hub (checked against the catalog; sloop-DUB keeps
FM-1_234), no version digits appended; the Git tag names the release
(1.0.6). - The v1.0.5 tag's CI failure fixed: fm1.toml carried a C-style comment
(/* … */) on theweb_cflagsline — TOML only takes#. The 1.0.5
package itself was sound (built and published from the same source); only
the workflow's parse of the config was broken. - The browser emulator's wasm rebuilt with the 1.0.6 label (the same code,
emcc 7.0.0): the Play page on the hub runs the real 1.0.6 firmware.
Package identity FM-1_2345, dub-box-1.0.6.fwsc (613 178 B,
sha256 4627fb5e…a0e447).
DUB-BOX 1.0.5
The DUB pages' knobs feel like the pots they are named after — sloop 2.9.8's
potentiometer feel, on the device and in the emulator:
- The continuous K1–K4 of SIREN, SIREN 2, DELAY and ISO are pots: a detent
sweeps its share of the range, the whole course runs in some 300 degrees
(20 detents; an FM-1 turn is 24 detents), one share a detent however fast —
no acceleration, a turn never outruns the pointer. The siren's pitch crosses
220–1200 Hz in 20 detents, the delay's time 40–740 ms in 20, the ISO gains
−24…+12 dB in 18. TYPE and WAVE stay lists, a step a detent (five names over
300 degrees would crawl). - The emulator's K1–K4 match: the caps show the 300° travel with the part
of the course already covered in the knob's colour, the pointer sits at the
value the firmware really holds — a new readback (web_dub, app.c's APP_WEB
export, published with each frame) keeps them honest through SEL turns, the
saved settings at boot and page walks. Turn them by dragging up/down, by a
circular turn around the knob, or a detent a wheel notch; the DUB page and
the lists stay free-spinning encoders. - The RAM-code vouch list follows the newer JieLi clang's inlining (the vouched
uECC entries appear as their internals; the gone symbols are marked with?).
Package identity FM-1_235, dub-box-1.0.5.fwsc (613 534 B,
sha256 c61824c2…91d0d).
DUB-BOX 1.0.4
The dub pages carry sloop-DUB's full settings, on the knobs they sit on there:
- The SIREN page is sloop's SIR page: K1 the LFO type (WAIL, HILO, RAMP,
SWEEP, SPACE), K2 the wave (SQR, PLS, SAW, TRI, SIN — SEL still turns it),
K3 the pitch 220–1200 Hz, K4 the send — the siren's own throw into the
tape echo, 0 DRY. The send defaults to 48, sloop's dubby echo: the siren
feeds the tape from the first boot, and what it threw keeps ringing after
the gate opens — the tail is the tape's. - A second siren page, sloop's SR2: K1 the rate 1–16 Hz, K2 the depth
(the pitch sweep's amplitude, two octaves at 127), K3 the LFO's symmetry,
K4 the level the last black key sounds at. DEPTH joins the persisted
settings (v18 appends it; v17 records keep their saved values and the
fresh-boot depth). - The fourth setting lives on K4 everywhere — the delay's tone and the
isolator's TOPS band move from the ALGORITHM knob to K4, sloop's knob order
(KNOB 1..4 rule the page's settings). ALGORITHM is the router's FX knob
again. - The knob turns clamp in int before the cast: no more wrap-to-max jump when
a value at its floor turns down. - The browser emulator runs the same firmware; its manual documents the five
pages. The host suites cover the siren's own send (DRY leaves no tail, the
send does) and the delay's K4.
Package identity FM-1_235, dub-box-1.0.4.fwsc (size noted on the release).
DUB-BOX 1.0.3
The siren answers to one key and behaves like a held note:
- The last black key (F♯5) is the siren's only trigger — a gate, not a
switch: hold it and the siren sings at its LEVEL, release it and it stops.
REC and a held SEL no longer sound it (SEL on the DUB screen is back to
being just the page's switch, REC is out of the siren's way). - The release actually stops the sound. The old release cleared the
siren's active flag but left its level hot, so the note rang forever; the
gate now drops the level back over a few milliseconds (no click) and the
voice sleeps. - The delay tail stays. Whatever the siren threw into the tape echo (the
DUB page's K3 throw, or its own send) keeps ringing after the release — the
tail is the tape's, not the key's, and it dies away with the repeats. - The siren key's LED is lit while the key is held and rests dim after.
- The browser emulator's page runs the same firmware and documents the gate;
the host suites cover the release (a short fall, then silence) and REC's
new neutrality.
Package identity FM-1_235, dub-box-1.0.3.fwsc (size noted on the release).
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
DUB-BOX 1.0.5 — the DUB pages' knobs as potentiometers
The DUB pages' knobs feel like the pots they are named after — sloop 2.9.8's potentiometer feel, on the device and in the emulator:
- The continuous K1–K4 of SIREN, SIREN 2, DELAY and ISO are pots: a detent sweeps its share of the range, the whole course runs in some 300 degrees (20 detents; an FM-1 turn is 24 detents), one share a detent however fast — no acceleration, a turn never outruns the pointer. The siren's pitch crosses 220–1200 Hz in 20 detents, the delay's time 40–740 ms in 20, the ISO gains −24…+12 dB in 18. TYPE and WAVE stay lists, a step a detent.
- The emulator's K1–K4 match: the caps show the 300° travel with the covered course in the knob's colour, the pointer sits at the value the firmware really holds (a new
web_dubreadback, published with each frame — honest through SEL turns, saved settings and page walks). Turn them by dragging up/down, by a circular turn around the knob, or a detent a wheel notch; the DUB page and the lists stay free-spinning encoders. - The RAM-code vouch list follows the newer JieLi clang's inlining.
Package identity FM-1_235, dub-box-1.0.5.fwsc — 613 534 B, sha256 c61824c258bad60ddd614291f760202a03851a14c0fa5c40363317022cb91d0d.
Install with M-Flasher (m-bootloader, bootloader replacement disabled) — the installer walks it. Try the pots in the emulator.
v1.0.4
DUB-BOX 1.0.4
The dub pages carry sloop-DUB's full settings, on the knobs they sit on there:
- The SIREN page is sloop's SIR page: K1 the LFO type (WAIL, HILO, RAMP,
SWEEP, SPACE), K2 the wave (SQR, PLS, SAW, TRI, SIN — SEL still turns it),
K3 the pitch 220–1200 Hz, K4 the send — the siren's own throw into the
tape echo, 0 DRY. The send defaults to 48, sloop's dubby echo: the siren
feeds the tape from the first boot, and what it threw keeps ringing after
the gate opens — the tail is the tape's. - A second siren page, sloop's SR2: K1 the rate 1–16 Hz, K2 the depth
(the pitch sweep's amplitude, two octaves at 127), K3 the LFO's symmetry,
K4 the level the last black key sounds at. DEPTH joins the persisted
settings (v18 appends it; v17 records keep their saved values and the
fresh-boot depth). - The fourth setting lives on K4 everywhere — the delay's tone and the
isolator's TOPS band move from the ALGORITHM knob to K4, sloop's knob order
(KNOB 1..4 rule the page's settings). ALGORITHM is the router's FX knob
again. - The knob turns clamp in int before the cast: no more wrap-to-max jump when
a value at its floor turns down. - The browser emulator runs the same firmware; its manual documents the five
pages. The host suites cover the siren's own send (DRY leaves no tail, the
send does) and the delay's K4.
Package identity FM-1_235, dub-box-1.0.4.fwsc (size noted on the release).
DUB-BOX 1.0.3
The siren answers to one key and behaves like a held note:
- The last black key (F♯5) is the siren's only trigger — a gate, not a
switch: hold it and the siren sings at its LEVEL, release it and it stops.
REC and a held SEL no longer sound it (SEL on the DUB screen is back to
being just the page's switch, REC is out of the siren's way). - The release actually stops the sound. The old release cleared the
siren's active flag but left its level hot, so the note rang forever; the
gate now drops the level back over a few milliseconds (no click) and the
voice sleeps. - The delay tail stays. Whatever the siren threw into the tape echo (the
DUB page's K3 throw, or its own send) keeps ringing after the release — the
tail is the tape's, not the key's, and it dies away with the repeats. - The siren key's LED is lit while the key is held and rests dim after.
- The browser emulator's page runs the same firmware and documents the gate;
the host suites cover the release (a short fall, then silence) and REC's
new neutrality.
Package identity FM-1_235, dub-box-1.0.3.fwsc (size noted on the release).
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
Firmware: dub-box-1.0.4.fwsc
SHA-256: 6726acadf89c1b75c4405418efdbd6fe6ef5f023b16880e1a7b03648094c5dc6
Licenses and third-party notices
LICENSE
Mozilla Public License Version 2.0 ==================================
- Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.1.3. "Contribution"
means Covered Software of a particular Contributor.1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.1.5. "Incompatible With Secondary Licenses"
means(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.1.6. "Executable Form"
means any form of the work other than Source Code Form.1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.1.8. "License"
means this document.1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.1.10. "Modifications"
means any of the following:(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software.1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the...
v1.0.3
DUB-BOX 1.0.3
The siren answers to one key and behaves like a held note:
- The last black key (F♯5) is the siren's only trigger — a gate, not a
switch: hold it and the siren sings at its LEVEL, release it and it stops.
REC and a held SEL no longer sound it (SEL on the DUB screen is back to
being just the page's switch, REC is out of the siren's way). - The release actually stops the sound. The old release cleared the
siren's active flag but left its level hot, so the note rang forever; the
gate now drops the level back over a few milliseconds (no click) and the
voice sleeps. - The delay tail stays. Whatever the siren threw into the tape echo (the
DUB page's K3 throw, or its own send) keeps ringing after the release — the
tail is the tape's, not the key's, and it dies away with the repeats. - The siren key's LED is lit while the key is held and rests dim after.
- The browser emulator's page runs the same firmware and documents the gate;
the host suites cover the release (a short fall, then silence) and REC's
new neutrality.
Package identity FM-1_235, dub-box-1.0.3.fwsc (size noted on the release).
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
Firmware: dub-box-1.0.3.fwsc
SHA-256: b5ad9b62acce238e92437cd93a12d6f3f2a4d87e401b33d091d55ba88731c7c1
Licenses and third-party notices
LICENSE
Mozilla Public License Version 2.0 ==================================
- Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.1.3. "Contribution"
means Covered Software of a particular Contributor.1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.1.5. "Incompatible With Secondary Licenses"
means(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.1.6. "Executable Form"
means any form of the work other than Source Code Form.1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.1.8. "License"
means this document.1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.1.10. "Modifications"
means any of the following:(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software.1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.1.13. "Source Code Form"
means the form of the work preferred for making modifications.1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
- License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, dis...
v1.0.2
DUB-BOX 1.0.2
The keyboard joins the performance — the black keys drive the dub:
- The last black key sounds the siren, from any screen, like REC: hold it
and it sings, release it and it dies away. REC and a held SEL (on the DUB
page) keep working; the three share one hold, and the siren stops when all
are up. The key's LED is lit while the siren sounds. - The first four black keys (F♯3 G♯3 A♯3 C♯4, the OP1–OP4 prints) kill the
ISO bands — SUB, BASS, MIDS, TOPS, one toggle each, from any screen (the
kills used to sit on the first four white keys and only on the ISO page).
All four together is the total kill, SEL on the ISO page lifts every kill,
and a kill wakes the module (DUB ON) if it was off. The keys' LEDs show the
kills on every screen; the ISO page's hint now reads "BLACK KEYS KILL". - The mixer's white mute/solo keys (F3–B3 / F4–B4) are unchanged.
- The browser emulator's manual documents the keys; the host suites (445
checks) exercise the keys from the HOME screen.
Package identity FM-1_235, dub-box-1.0.2.fwsc (size noted on the release).
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
Firmware: dub-box-1.0.2.fwsc
SHA-256: 53688fbd718418bf5c85ae163c03c4c0441a9e8282bcc3b3816b2e7166678a31
Licenses and third-party notices
LICENSE
Mozilla Public License Version 2.0 ==================================
- Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.1.3. "Contribution"
means Covered Software of a particular Contributor.1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.1.5. "Incompatible With Secondary Licenses"
means(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.1.6. "Executable Form"
means any form of the work other than Source Code Form.1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.1.8. "License"
means this document.1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.1.10. "Modifications"
means any of the following:(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software.1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.1.13. "Source Code Form"
means the form of the work preferred for making modifications.1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
- License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:(a) for any code that a Contributor has removed from Covered Software;
or(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Ver...
v1.0.1
DUB-BOX 1.0.1
Two drawing fixes on the DUB screen (they hit the device the same way they hit
the browser), and the web emulator now runs the real firmware:
- The DUB pages drew nothing (the status bar only):
dub_ui.h's header
band loop subtracted the band from its own y (the platform'scv_band
pattern takes the screen's y and letscv_oymap it), and the value rows
drew after the loop with the canvas still 16 rows tall — everything landed
outside it. The page now draws the whole DUB screen inside the band loop,
the wayfx/gui.hdoes. - The values with a unit lost their digits ("HZ", "MS", "DB" with no
number):dub_ui_num/dub_ui_dbreturn the buffer's start, so
dub_ui_put(dub_ui_num(..), " HZ")overwrote the number with the unit.
They now return the write cursor (asdub_ui_putalways has), and
dub_ui_val/dub_ui_val_dbwrite the number and the unit in one call. - The browser emulator runs the firmware itself:
tools/build.py --web
(fm1-base's target, ported) compiles the whole app toapp.wasm— screen,
menus, sound, saved settings are the firmware's own code, with the FM-1
faceplate after sloop-DUB's emulator. The page's source (built-in dub beat,
microphone, audio file) plays through the emulated USB port via a new
FM1B_EMU_UAClive path inhost/plat_host.c'susb_play_take. Emulator
checks insrc/tests/emu_test_dubbox.mjs; host suites pass (all current
project suites, dub modules included).
Package identity FM-1_235, dub-box-1.0.1.fwsc (613 178 B).
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
Firmware: dub-box-1.0.1.fwsc
SHA-256: 1dc8fb763aff52c7fa098e4547be22d421ba861f8f68141e0591495e29baf192
Licenses and third-party notices
LICENSE
Mozilla Public License Version 2.0 ==================================
- Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.1.3. "Contribution"
means Covered Software of a particular Contributor.1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.1.5. "Incompatible With Secondary Licenses"
means(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.1.6. "Executable Form"
means any form of the work other than Source Code Form.1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.1.8. "License"
means this document.1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.1.10. "Modifications"
means any of the following:(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software.1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.1.13. "Source Code Form"
means the form of the work preferred for making modifications.1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
- License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:(a) for any code that a Contributor has removed from Covered Software;
or(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
- Responsibilities
...
v1.0.0
DUB-BOX 1.0.0
The first release. The FM-1 audio router gains a dub station on top:
- The DUB screen — press OCT− from anywhere — with the four pages:
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
center detent, the sweep glides), the module's mix, and the throw (SEND)
into the tape echo. - SIREN: the dub siren from sloop-DUB — five LFO types (WAIL, HILO, RAMP,
SWEEP, SPACE) × five waves (SQR, PLS, SAW, TRI, SIN), pitch 220–1200 Hz,
rate 1–16 Hz, level. REC (or SEL held) sounds it from any screen. - DELAY: the tape echo — time 40–740 ms, feedback, level, tone. The time
glides like a tape's sag, the head wanders (wow 0.7 Hz, flutter 6.3 Hz) and
the repeats pass the damping and the soft clip, warming pass by pass. - ISOLATOR: four bands (SUB 90 / BASS 420 / MIDS 2600 / TOPS), gains
−24…+12 dB, kills on the mixer's mute keys — all four is the total kill.
- DUB: the DJ filter (bipolar, lowpass left, highpass right, FLAT at the
- The dub chain sits between the USB+BT mix and the master FX; at rest it is
bit-transparent (host-tested), and the whole module switches off. - The dub state persists: settings v17 carries it across boots, migrating the
router's v16 records untouched. - Everything the router does stays: USB 2in/2out, the Bluetooth receiver
(SBC/AAC/aptX/aptX HD), mixer, EQ/limiter, meters, waveforms, spectrum.
Package identity FM-1_235 (fixed across releases, in sloop-DUB's own-identity
scheme). Install with M-Flasher on the m-bootloader — see the install page or
docs/INSTALL.md. The dub DSP's browser port is validated bit-exact against the
firmware C; host suites pass (445 checks).
Engineering note: the dub modules cost ~6 KiB of SRAM-resident code, which this
build spends on the audio router's memory contract's aptX corner. SBC and AAC
keep the full guarantee (display capture + USB-OUT recording route + decoder);
for aptX/HD the corner degrades the router's own graceful way — the spectrum
view can then report DISPLAY MEMORY FULL (it keeps retrying) and the USB OUT
route can refuse with a notice. No crash, no audio damage, the dub chain at
rest is bit-transparent. See src/tests/cpu2_runtime_test.py.
Firmware: dub-box-1.0.0.fwsc
SHA-256: f31d5826c74230fceda820ed48858bcaafd52621ce9c83e53cf025715fd031f3
Licenses and third-party notices
LICENSE
Mozilla Public License Version 2.0 ==================================
- Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.1.3. "Contribution"
means Covered Software of a particular Contributor.1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.1.5. "Incompatible With Secondary Licenses"
means(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.1.6. "Executable Form"
means any form of the work other than Source Code Form.1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.1.8. "License"
means this document.1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.1.10. "Modifications"
means any of the following:(a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software.1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.1.13. "Source Code Form"
means the form of the work preferred for making modifications.1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
- License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:(a) for any code that a Contributor has removed from Covered Software;
or(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
- Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With S...