Skip to content

Releases: Worldwave/Wakes

Wakes v0.8.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 03:42
da0a787

What's New in v0.8.0

  • Storage: v0.8.0 introduces device storage. While in STANDBY (OFF, with USB plugged in), Wakes behaves like a removable card reader, and the SP-1 shows up on your computer as a drive. While storage activity is ongoing, you'll see a dancing pattern on the face LED's. Wait until the lights are fully dark before unplugging or trying to turn the SP-1 ON, otherwise you risk file corruption.
  • First-time users: flash wakes-sp1-fresh.bin once. It formats the SP-1's 4GB eMMC card and prepares Wakes' folders. This clears any data on the eMMC card. After that, use wakes-sp1.bin for future flashes to keep your storage.
  • PRST: save and retrieve full Wakes patches as .prst files, across four onboard slots. When turned ON, Wakes always loads the last-loaded slot. It saves to the currently selected slot when turned OFF or to STANDBY. Everything is saved except DJVU and VOL.
  • PRST browser: while holding SHFT, tap PLAY once (instead of holding it to ROTC) to see which slot you're on via a blinking LED. While the animation is still playing, tap PLAY again quickly to flip to the next slot. Letting go of SHFT or waiting a short moment takes you out of the browser. Moving to the next slot doesn't save the one you were on.
  • PRSTs on your computer: go to <SP-1>:/WAKES/PRST to find a folder for each of the four slots. The first file in alphabetical order loads into that slot, and any other files are ignored. If you rename .prst files, keep to simple characters.
  • 30s emergency shutdowns skip saving. Regardless, It's good to periodically back up your storage card.
  • ROTC has a new animation, and Ripping Out Marbles' Cables now leaves t2 > TRIG and X2 > FREQ connected, so PLAY's behaviour stays consistent.
  • Any Plaits engine from a PRST: a .prst can load any Plaits engine, even one that isn't in your engines.csv. This case has a special glyph: A fast flicker on all four face LED's.

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Wakes features new storage protocols for the SP-1. If you've never used Wakes before, you need to format your storage partition.
    To do that, Download the latest fresh bin below.
  2. If you've used Wakes before, and want to avoid touching your storage, Download the latest regular bin below.
  3. Older Wakes versions and release notes are available through the repo's releases page.
  4. Open https://solderless.engineering. Hold down T1+T4. Keep them held while connecting the SP-1 over USB-C.
  5. Follow solderless.engineering's instructions on how to connect to your SP-1 to flash it.
  6. Select the .bin in Solderless Engineering's "firmware utility" page, flash it, and once done, you can unplug.
  7. The first time you turn Wakes ON after flashing a fresh bin, it will perform a short format of the eMMC card. Give it a moment.

wakes-sp1.bin and wakes-sp1-fresh.bin are the same files as the versioned bins, under a fixed name, so the README's download link works.
When in doubt, check the files against SHA256SUMS before flashing.

Storage: wakes-sp1 vs wakes-sp1-fresh

  • wakes-sp1-*.bin never formats the SP-1's internal storage (the eMMC). Flash
    it to update: your presets and files stay where they are.
  • wakes-sp1-*-fresh.bin FORMATS the eMMC the first time it turns ON, and
    erases everything on it, including whatever another firmware left there (stock
    stems, tape-looper recordings). Flash it once to set the storage up, or to start
    over; a progress bar shows on T1-T4 while it formats. Flashing the same fresh file
    again does not format a second time. wakes-sp1-fresh.bin is the same file under
    a fixed name.
  • Without a formatted card, Wakes can still operate, but the storage features get turned off.

wakes-sp1-v0.8.0-fallback.bin is the test-tone recovery build. Plaits and Marbles are offline.
It never touches the eMMC, and is for diagnosing hardware only in case of issues.

Claude's Blurb

Size vs v0.7.2

plaits vs v0.7.2

Config: plaits

base head Δ of total
FLASH (.bin) 427,776 459,736 +31,960 50.33%
RAM 178,427 204,935 +26,508 78.18%
Sections that changed
section base head Δ
text 243,852 269,892 +26,040
bss 57,719 76,763 +19,044
noinit 117,352 124,212 +6,860
rodata 179,168 184,412 +5,244
datas 2,882 3,260 +378
k_mem_slab_area 64 128 +64
_static_thread_data_area 0 48 +48
k_msgq_area 44 88 +44
k_mutex_area 0 40 +40
net_buf_pool_area 80 120 +40
usbd_class_fs_area 72 96 +24
usbd_msc_lun_area 0 16 +16
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x903d8)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (459736 B vs 459736 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] uacring_push copies without memcpy/memset (M5c)  (word copies)
  [PASS] uacring_pop copies without memcpy/memset (M5c)  (word copies)
  [PASS] frames_copy copies without memcpy/memset (M5c)  (word copies)
  [PASS] storage: a failed mount never formats (FS_FATFS_MOUNT_MKFS off)  (got None)
  [PASS] storage: normal image contains no formatter  (no f_mkfs)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 459736 B (50.33% of the slot), plaits config
OK: safe to hand over for flashing

fresh

Config: plaits

size of total
FLASH (.bin) 464,616 50.87%
RAM 205,833 78.52%

The base (v0.7.2) did not build; no diff.

check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x916e8)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (464616 B vs 464616 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] uacring_push copies without memcpy/memset (M5c)  (word copies)
  [PASS] uacring_pop copies without memcpy/memset (M5c)  (word copies)
  [PASS] frames_copy copies without memcpy/memset (M5c)  (word copies)
  [PASS] storage: a failed mount never formats (FS_FATFS_MOUNT_MKFS off)  (got None)
  [PASS] storage: FRESH image links the formatter  (f_mkfs present)
  [NOTE] FRESH IMAGE: formats the eMMC on its first entry to ON. Ship it as wakes-sp1-fresh, never as wakes-sp1.
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 464616 B (50.87% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.7.2

Config: fallback

base head Δ of total
FLASH (.bin) 86,560 86,648 +88 9.49%
RAM 124,499 124,503 +4 47.49%
Sections that changed
section base head Δ
text 74,272 74,332 +60
rodata 9,300 9,324 +24
bss 5,683 5,687 +4
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x35278)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86648 B vs 86648 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86648 B (9.49% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

11530dc0b11f10a6839f27849a849465363b620189dfb0d1115b9a02676baa5d  wakes-sp1-fresh.bin
ff26399faa6c8fc1cad8eeb7bcb343c7e515c728924a6d3dc9597dfd1f30b020  wakes-sp1-v0.8.0-fallback.bin
11530dc0b11f10a6839f27849a849465363b620189dfb0d1115b9a02676baa5d ...
Read more

Wakes v0.7.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 04:00
67f80bd

What's New in v0.7.2

  • v0.7.0 - USB Audio OUT: Wakes now supports audio output over USB. When you plug it into an audio-capable host (Mac, iPad, OP-1f, OP-XY etc.etc.), it'll show up as an audio input called "Wakes Audio Out". By default, the SP-1's onboard speaker goes quiet while connected this way.
  • v0.7.0 - audio.ini: a new config file sets the USB output level, and whether the speaker stays on while recording. Its default setting parks VOL at -6dB while plugged in.
  • v0.7.0 - MIDI clock timing now accounts for the USB audio path.
  • v0.7.0 - New device name: the SP-1 now shows up as "Wakes" by Worldwave, so make sure to re-select the MIDI port in your DAW and reconfigure your clock settings for it.
  • v0.7.1 - Full-range sweeping: The bottom of Plaits' OCTV fader (F1 on the SETTINGS page) now unlocks FREQ completely, allowing you to sweep the full frequency range with no centre-detent. For the freaks out there.
  • v0.7.2 - GTLT - a new Wakes-unique Marbles t-side parameter on SHFT-F1. It tilts t1's and t3's maximum output strength relative to eachother. t2 is unaffected. Additionally, Marbles' UX is a little smoother, with less accidental fader movements, thanks to enabling some Mutable Instruments convenience features taken from Plaits.

Claude's Blurb

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.7.2.bin, flash, then unplug and replug.

wakes-sp1.bin is the same file under a fixed name, for the README's download link.
Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.7.2-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.7.1

plaits vs v0.7.1

Config: plaits

base head Δ of total
FLASH (.bin) 427,648 427,776 +128 46.83%
RAM 178,314 178,427 +113 68.06%
Sections that changed
section base head Δ
text 243,732 243,852 +120
bss 57,606 57,719 +113
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x88700)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (427776 B vs 427776 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] uacring_push copies without memcpy/memset (M5c)  (word copies)
  [PASS] uacring_pop copies without memcpy/memset (M5c)  (word copies)
  [PASS] frames_copy copies without memcpy/memset (M5c)  (word copies)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 427776 B (46.83% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.7.1

Config: fallback

base head Δ of total
FLASH (.bin) 86,560 86,560 0 9.48%
RAM 124,499 124,499 0 47.49%
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x35220)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86560 B vs 86560 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86560 B (9.48% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

86014023f983a9ee9ae4340ae242f2458c412ca7bc833f835f76ccaac2f7ac47  wakes-sp1-v0.7.2-fallback.bin
1a6230059ef17ad28ba51f7f5c085387ef1592f0f42159df0e764ae6d8c571c3  wakes-sp1-v0.7.2.bin
1a6230059ef17ad28ba51f7f5c085387ef1592f0f42159df0e764ae6d8c571c3  wakes-sp1.bin

Wakes v0.7.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 22:32
ba9ccc2

Small v0.7.1 addition:

Full-range sweeping: The bottom of Plaits' OCTV fader (F1 on the SETTINGS page) now unlocks FREQ completely, allowing you to sweep the full frequency range with no centre-detent. For the freaks out there.

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.7.1.bin, flash, then unplug and replug.

wakes-sp1.bin is the same file under a fixed name, for the README's download link.
Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.7.1-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.7.0

plaits vs v0.7.0

Config: plaits

base head Δ of total
FLASH (.bin) 427,664 427,648 -16 46.82%
RAM 178,314 178,314 0 68.02%
Sections that changed
section base head Δ
text 243,748 243,732 -16
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x88680)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (427648 B vs 427648 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] uacring_push copies without memcpy/memset (M5c)  (word copies)
  [PASS] uacring_pop copies without memcpy/memset (M5c)  (word copies)
  [PASS] frames_copy copies without memcpy/memset (M5c)  (word copies)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 427648 B (46.82% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.7.0

Config: fallback

base head Δ of total
FLASH (.bin) 86,560 86,560 0 9.48%
RAM 124,499 124,499 0 47.49%
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x35220)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86560 B vs 86560 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86560 B (9.48% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

a082f9250704de64d62f7dd894efbab9b164142c9ae88b8f817cbb054fafda6b  wakes-sp1-v0.7.1-fallback.bin
1981db861e884747a2cb8588ff817f4463f10a7d2f4564385a791ae336135f5c  wakes-sp1-v0.7.1.bin
1981db861e884747a2cb8588ff817f4463f10a7d2f4564385a791ae336135f5c  wakes-sp1.bin

Wakes v0.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 20:00
604e938

What's New in v0.7.0

  • USB Audio OUT: Wakes now supports audio output over USB. When you plug it into an audio-capable host (Mac, iPad, OP-1f, OP-XY etc.etc.), it'll show up as an audio input called "Wakes Audio Out". By default, the SP-1's onboard speaker goes quiet while connected this way.
  • audio.ini: a new config file sets the USB output level, and whether the speaker stays on while recording. Its default setting parks VOL at -6dB while plugged in.
  • MIDI clock timing now accounts for the USB audio path.
  • New device name: the SP-1 now shows up as "Wakes" by Worldwave, so make sure to re-select the MIDI port in your DAW and reconfigure your clock settings for it.

Claude's Blurb

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.7.0.bin, flash, then unplug and replug.

wakes-sp1.bin is the same file under a fixed name, for the README's download link.
Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.7.0-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.6.1

plaits vs v0.6.1

Config: plaits

base head Δ of total
FLASH (.bin) 424,428 427,664 +3,236 46.82%
RAM 168,790 178,314 +9,524 68.02%
Sections that changed
section base head Δ
bss 48,290 57,606 +9,316
text 241,300 243,748 +2,448
rodata 178,588 179,168 +580
datas 2,699 2,882 +183
usbd_class_fs_area 48 72 +24
device_states 25 26 +1
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x88690)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (427664 B vs 427664 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] uacring_push copies without memcpy/memset (M5c)  (word copies)
  [PASS] uacring_pop copies without memcpy/memset (M5c)  (word copies)
  [PASS] frames_copy copies without memcpy/memset (M5c)  (word copies)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 427664 B (46.82% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.6.1

Config: fallback

base head Δ of total
FLASH (.bin) 86,044 86,560 +516 9.48%
RAM 123,447 124,499 +1,052 47.49%
Sections that changed
section base head Δ
bss 4,631 5,683 +1,052
text 73,848 74,272 +424
rodata 9,200 9,300 +100
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x35220)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86560 B vs 86560 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86560 B (9.48% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

87195a1ec5da3bb19eb60c78f394e8df7791ee85b5c671a5da5d745de43a7e95  wakes-sp1-v0.7.0-fallback.bin
5d15f9f76d73d22dfa8529fecde2fb043cadc759ce9aa2d9b520f6e2a1d929ea  wakes-sp1-v0.7.0.bin
5d15f9f76d73d22dfa8529fecde2fb043cadc759ce9aa2d9b520f6e2a1d929ea  wakes-sp1.bin

Wakes v0.6.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 16:17
ff76884

What's New in v0.6.1

  • Some engines' memory handling has been changed, poofing away some overruns and audio cutouts when switching between some of the engines.

Claude's Blurb

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.6.1.bin, flash, then unplug and replug.

wakes-sp1.bin is the same file under a fixed name, for the README's download link.
Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.6.1-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.6.0

plaits vs v0.6.0

Config: plaits

base head Δ of total
FLASH (.bin) 424,252 424,428 +176 46.47%
RAM 168,790 168,790 0 64.39%
Sections that changed
section base head Δ
text 241,112 241,300 +188
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x879ec)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (424428 B vs 424428 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] plaits::sp1_zero calls nothing (#36)  (152 B, leaf)
  [PASS] ParticleEngine::Reset clears without memset (#36)  (no libc fill)
  [PASS] String::Reset clears without memset (#36)  (no libc fill)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 424428 B (46.47% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.6.0

Config: fallback

base head Δ of total
FLASH (.bin) 86,044 86,044 0 9.42%
RAM 123,447 123,447 0 47.09%
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x3501c)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86044 B vs 86044 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86044 B (9.42% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

b03087bc74b430fc3533d6c56ad6052933ae5b86f1e8412f18907d56b8b9d3a8  wakes-sp1-v0.6.1-fallback.bin
5f8b44df7f79a9a1ab9c0d5fc19892e8e19e0e359c8620ce73434769a641da6d  wakes-sp1-v0.6.1.bin
5f8b44df7f79a9a1ab9c0d5fc19892e8e19e0e359c8620ce73434769a641da6d  wakes-sp1.bin

Wakes v0.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:23
e3c8a83

What's New

In v0.6.0, a deep optimization pass on Plaits' audio thread, Marbles' MIDI clock sync calculation, and the MIDI over USB thread resulted in a massive decrease in CPU requirements, a reduction in latency from ~25ms to ~8ms, and a smart clock delay compensation algorithm for Marbles. Wakes is now a fully playable and sync-able MIDI instrument, ready to play along with other instruments.

Claude's Blurb

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.6.0.bin, flash, then unplug and replug.

wakes-sp1.bin is the same file under a fixed name, for the README's download link.
Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.6.0-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.5.0

plaits vs v0.5.0

Config: plaits

base head Δ of total
FLASH (.bin) 420,856 424,252 +3,396 46.45%
RAM 172,530 168,790 -3,740 64.39%
Sections that changed
section base head Δ
noinit 121,192 117,352 -3,840
text 238,072 241,112 +3,040
rodata 178,240 178,588 +348
bss 48,198 48,290 +92
datas 2,690 2,699 +9
device_states 26 25 -1
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x8793c)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (424252 B vs 424252 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 424252 B (46.45% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.5.0

Config: fallback

base head Δ of total
FLASH (.bin) 85,404 86,044 +640 9.42%
RAM 127,490 123,447 -4,043 47.09%
Sections that changed
section base head Δ
noinit 121,048 117,208 -3,840
text 73,288 73,848 +560
bss 4,834 4,631 -203
rodata 9,120 9,200 +80
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x3501c)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (86044 B vs 86044 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 86044 B (9.42% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

f941579b541fcf73b1f3110c6f02c16bad8b4b928e5f2de261164e9735f0c579  wakes-sp1-v0.6.0-fallback.bin
0484c18e325123d0088aa3e30f8f2b94a1e498d46be447574319332280e953b5  wakes-sp1-v0.6.0.bin
0484c18e325123d0088aa3e30f8f2b94a1e498d46be447574319332280e953b5  wakes-sp1.bin

Wakes v0.5.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 17:51
4877633

Draft created by CI. Read it, then publish by hand.

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.5.0.bin, flash, then unplug and replug.

Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.5.0-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.4.8

plaits vs v0.4.8

Config: plaits

base head Δ of total
FLASH (.bin) 393,584 420,856 +27,272 46.08%
RAM 67,686 172,530 +104,844 65.81%
Sections that changed
section base head Δ
noinit 24,644 121,192 +96,548
text 212,756 238,072 +25,316
bss 40,226 48,198 +7,972
rodata 176,620 178,240 +1,620
datas 2,432 2,690 +258
net_buf_pool_area 40 80 +40
usbd_class_fs_area 24 48 +24
initlevel 152 160 +8
init_array 4 8 +4
device_states 24 26 +2
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x86bf8)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (420856 B vs 420856 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (175 classes)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 420856 B (46.08% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.4.8

Config: fallback

base head Δ of total
FLASH (.bin) 83,420 85,404 +1,984 9.35%
RAM 30,550 127,490 +96,940 48.63%
Sections that changed
section base head Δ
noinit 24,644 121,048 +96,404
text 71,668 73,288 +1,620
bss 4,298 4,834 +536
rodata 8,768 9,120 +352
device_states 25 24 -1
datas 1,223 1,224 +1
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x34d9c)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (85404 B vs 85404 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 85404 B (9.35% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

586427338a3925e2bcd51170d43616574d5ae624df933f16c66e9bad3a4ef6d2  wakes-sp1-v0.5.0-fallback.bin
e596acf049a32998c946e3ed9601c24cc266375e6dada816409a8120b4dbe2da  wakes-sp1-v0.5.0.bin
e596acf049a32998c946e3ed9601c24cc266375e6dada816409a8120b4dbe2da  wakes-sp1.bin

Wakes v0.4.8

Wakes v0.4.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 02:33
835b487

Pre-release for beta testing. Tested on a single SP-1 unit. Read docs/SAFETY.md before flashing, and see docs/Wakes - Manual.pdf for how to play it. Report problems with the bug form under Issues.

What's new since v0.4.6

  • Stability: resolved multiple crashes on heavy models when every feature ran together. With Plaits, Marbles, the drive and OUT+AUX all running, the CPU could overload and reset the device (#22).
  • Optimizations: more CPU headroom across the engines. The biggest gains are on Chords and the virtual-analog family, with no change to their sound (#22).
  • Optimizations: the drive and output stage are lighter. The drive now acts on the selected output as one signal, so OUT+AUX and OUT×AUX distort together (#22).
  • OUT×AUX now passes through Plaits' low-pass gate after the multiply, so the envelope shapes the product once. Expect a slightly different decay on plucked notes in this mode (#22).
  • Chords: each note's organ-to-wavetable crossfade on MORPH is shorter, and settles to one side when MORPH rests (#22).

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.4.8.bin, flash, then unplug and replug.

Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.4.8-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size vs v0.4.6

plaits vs v0.4.6

Config: plaits

base head Δ of total
FLASH (.bin) 386,132 393,584 +7,452 43.09%
RAM 66,965 67,686 +721 25.82%
Sections that changed
section base head Δ
text 207,504 212,756 +5,252
rodata 174,448 176,620 +2,172
bss 39,521 40,226 +705
datas 2,416 2,432 +16
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x80170)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (393584 B vs 393584 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] one layout per Plaits/Marbles class  (173 classes)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 393584 B (43.09% of the slot), plaits config
OK: safe to hand over for flashing

fallback vs v0.4.6

Config: fallback

base head Δ of total
FLASH (.bin) 83,276 83,420 +144 9.13%
RAM 30,490 30,550 +60 11.65%
Sections that changed
section base head Δ
text 71,524 71,668 +144
bss 4,238 4,298 +60
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x345dc)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (83420 B vs 83420 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 83420 B (9.13% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

5658e01e307dc2c5abada8ab3d947981b4ce6715ba8c76d9018af5444f4cb300  wakes-sp1-v0.4.8-fallback.bin
c3b550a15395d6631ebefc0747e2cc783e4315466a840599be02e90bb97741c6  wakes-sp1-v0.4.8.bin

Wakes v0.4.6

Wakes v0.4.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:00
8621f14

Pre-release for beta testing. Tested on a single SP-1 unit. Read docs/SAFETY.md before flashing, and see docs/Wakes - Manual.pdf for how to play it. Report problems with the bug form under Issues.

What's new since v0.4.5

  • Unpatch no longer fires the button's ordinary action on release (#2)
  • A completed rip fades back to the page instead of staying black (#4)
  • Output select moves to PLAITS SETTINGS T4; •• + T4 is Unpatch only (#11)

Flashing

Read docs/SAFETY.md first. The SP-1 has no hardware reset pin.

  1. Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
  2. Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
  3. Select wakes-sp1-v0.4.6.bin, flash, then unplug and replug.

Check the file against SHA256SUMS before flashing.
wakes-sp1-v0.4.6-fallback.bin is the test-tone build without Plaits or Marbles,
for diagnosing hardware only. It is not the instrument.

Size

plaits

Config: plaits

size of total
FLASH (.bin) 386,132 42.27%
RAM 66,965 25.55%
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x7e454)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (386132 B vs 386132 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 386132 B (42.27% of the slot), plaits config
OK: safe to hand over for flashing

fallback

Config: fallback

size of total
FLASH (.bin) 83,276 9.12%
RAM 30,490 11.63%
check_image
check_image: build/zephyr
  [PASS] _vector_table at 0x20000  (0x20000)
  [PASS] no load segment below 0x20000  (lowest LMA 0x20000)
  [PASS] no load segment at or above 0xFF000  (image ends 0x3454c)
  [PASS] wakes-sp1.bin matches the ELF's loadable span  (83276 B vs 83276 B)
  [PASS] .map: FLASH region origin 0x20000  (0x20000)
  [PASS] .map: FLASH region ends at 0xFF000  (0xff000)
  [PASS] .map: _vector_table at 0x20000  (0x0000000000020000)
  [PASS] CONFIG_USE_DT_CODE_PARTITION=y  (got y)
  [PASS] CONFIG_FLASH_LOAD_OFFSET=0x20000  (got 0x20000)
  [PASS] CONFIG_WATCHDOG=y  (got y)
  [PASS] CONFIG_REBOOT=y  (got y)
  [PASS] CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=y  (got y)
  [PASS] SP1_FORCE_CALIB is 0  (got 0)
wakes-sp1.bin: 83276 B (9.12% of the slot), fallback config
OK: safe to hand over for flashing

SHA-256

01d70a1309c69f35e1d6a522ba3d4a8349182a4e2f9f92b86d95dbe90d8d8b24  wakes-sp1-v0.4.6-fallback.bin
75c61a0189c17b4b4e31c454c530ec7b4d7b5fa104655002eae25750a331d26c  wakes-sp1-v0.4.6.bin