Repository navigation
Wakes v0.6.0
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.
- Open https://solderless.engineering in a browser and connect the SP-1 over USB-C.
- Hold Track 1 + Track 4 while plugging in. The four track lights go solid.
- 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