Releases: Bemeier/bmcv
Releases · Bemeier/bmcv
Release list
v0.20.0
v0.19.0
v0.19.0 (2026-08-20)
Feat
- ui: a page is left by its own button, or by letting go of it
v0.18.0
v0.18.0 (2026-08-20)
Feat
- pwm: MOD is an attack and a decay inside the pulse
- copy: channel -> channel carries the channel's own settings
Fix
- ci: keep newlib, and let a failed ARM build fail its own step
- fram: come back on the last patch, not on the defaults
- dac: let the ramp span be a guess, and stop compensating for it
Perf
- dac: two substeps, where the engine has the headroom for them
v0.17.2
v0.17.2 (2026-08-18)
Fix
- dac: put the output back on a continuous ramp
- pll: stop correcting toward a grid the ratio has left
Perf
- dac: four substeps a tick, and only the pair that leaves
v0.17.1
v0.17.1 (2026-08-18)
Fix
- bad PLL sync
v0.17.0
v0.17.0 (2026-08-18)
Feat
- stepped: let a pattern keep a spike, instead of normalising it away
v0.16.0
v0.16.0 (2026-08-17)
Feat
- engine: run the tick at 2kHz, and the DAC at two substeps
- engine: run the tick at 3.2kHz
Fix
- sim: copy the snapshot's length on import, not the struct's
- stepped: hold the level across the reshapings, not just up to them
- engine: keep the derived stepped caches out of the snapshot
- pll: stop the beat phase wrapping past a beat the counter has not reached
- stepped: remember what a slot offers, not just what a step shows
- stepped: pay for a step once, not once per tick
- dac: arm the transfer by hand, not through HAL
- dac: one substep, because four starved the engine outright
- dac: give the outputs a clock instead of the loop's leftovers
Refactor
- dac: drop what the register path made dead, and re-date the docs
Perf
- channel: memoise the alignment-period search on the ratio
v0.15.0
v0.15.0 (2026-08-16)
Feat
- sr: measure what a small turn does to the pattern's order, not its values
- drift: a third random mode, with no pattern in it
- sr: a second stepped mode, driven for modulation
- sr: measure each channel's own pattern, a slot at a time
- sr: compute the correction from the pattern, behind a build knob
Fix
- dac: serve a due transaction where it lands, not when the loop notices
- profile: ask gdb for plain integers, and say what failed
- profile: read the struct's layout from the ELF, not from counting by hand
- dac: spread the ramp over the tick that is actually being served
- sr: give out one pattern measurement per tick, not one per channel
- sr: keep SHP and MOD off the level, and leave the pattern centred
Refactor
- call it stepped, not stepped random
- sr: keep the generator's arithmetic off the channel's path
- sr: one stepped mode, and it is the one driven for modulation
- sr: make the correction a function, not only a table
v0.14.1
v0.14.1 (2026-08-15)
Fix
- usblink: give each credit counter a single writer, as its comment claimed
- web: bound every call the updater makes to the device
- midi: count the clocks in a transfer, not whether there were any
- core: a request from an interrupt is not a plain uint8_t
v0.14.0
v0.14.0 (2026-08-15)
Feat
- build: flash over USB, with the module still in the rack
- ui: a parameter button gives you its parameter, on the way out of a page too
Fix
- web: the scope gap belongs between the cells, not around them
- ui: a press and a turn in the same tick is a fine adjust, not a reset