Skip to content

Releases

v1.0.9

Choose a tag to compare

@github-actions github-actions released this 14 Nov 23:04

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 with flash_ok clear: 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.py refused 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 the web_cflags line — 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...

Read more

v1.0.8

Choose a tag to compare

@github-actions github-actions released this 12 Nov 05:25

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 with flash_ok clear: 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.py refused 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 the web_cflags line — 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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h...
Read more

v1.0.7

Choose a tag to compare

@github-actions github-actions released this 12 Nov 04:45

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 the web_cflags line — 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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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
      ...
Read more

v1.0.6

Choose a tag to compare

@github-actions github-actions released this 11 Nov 18:01

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 the web_cflags line — 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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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.
  • 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.

Read more

DUB-BOX 1.0.5 — the DUB pages' knobs as potentiometers

Choose a tag to compare

@altessproduction altessproduction released this 11 Nov 09:34

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_dub readback, 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

Choose a tag to compare

@github-actions github-actions released this 11 Nov 02:10

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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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.
  • 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

Installation and recovery

Licenses and third-party notices

LICENSE

Mozilla Public License Version 2.0
==================================
  1. 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...

Read more

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 11 Nov 00:26

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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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.
  • 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

Installation and recovery

Licenses and third-party notices

LICENSE

Mozilla Public License Version 2.0
==================================
  1. 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.

  1. 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...

Read more

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 10 Nov 23:43

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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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.
  • 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

Installation and recovery

Licenses and third-party notices

LICENSE

Mozilla Public License Version 2.0
==================================
  1. 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.

  1. 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...

Read more

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:39

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's cv_ band
    pattern takes the screen's y and lets cv_oy map 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 way fx/gui.h does.
  • The values with a unit lost their digits ("HZ", "MS", "DB" with no
    number): dub_ui_num/dub_ui_db return the buffer's start, so
    dub_ui_put(dub_ui_num(..), " HZ") overwrote the number with the unit.
    They now return the write cursor (as dub_ui_put always has), and
    dub_ui_val/dub_ui_val_db write 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 to app.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_UAC live path in host/plat_host.c's usb_play_take. Emulator
    checks in src/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.
  • 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

Installation and recovery

Licenses and third-party notices

LICENSE

Mozilla Public License Version 2.0
==================================
  1. 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.

  1. 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.

  1. Responsibilities

...

Read more

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 21:29

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.
  • 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

Installation and recovery

Licenses and third-party notices

LICENSE

Mozilla Public License Version 2.0
==================================
  1. 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.

  1. 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.

  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...

Read more