Conversation
…dependabot - CI now triggers on every branch push (not just main), cancels superseded runs, and runs the new node:test suite after build - tests/: headless engine tests (patterns, playlist ops, loop wrap, swing, undo/redo, serialize round-trip incl. legacy saves) + WAV encoder tests, all via the built-in node test runner (zero new dependencies) - fix engine deserialize crash on saves whose patterns contain fewer than five track entries; missing tracks are filled with empty pattern data - fix index.html loading src/main.js which never exists (tsc emits to dist/main.js): local dev per README was a guaranteed 404; deploy.yml rewrite updated to match - verify index.html asset links resolve in CI; dependabot keeps npm deps and github-actions versions fresh
…mple pitch - EXPORT STEMS: renders every track playing in the export region to its own WAV (fx + master bus included); silent tracks are skipped - LIVE CONTROLLER module: held-note synth voices via noteOn/noteOff, computer-keyboard mapping (Z S X D C V G B H N J M..., -/= octave), Web MIDI input with hot-plug, on-screen keys; transport stop kills all live voices - COPY/PASTE pattern buttons in the arranger toolbar: full-track snapshot clipboard, element-wise paste keeps live pattern references linked - Sample PITCH: tape-style semitone offset (-24..+12 -> playbackRate), applied live/in exports/persisted; sampler slider + reset Note: shipped as one atomic commit because the four features interleave inside engine.ts; splitting would risk non-building intermediates.
- REV toggle in the sampler actions row (disabled without a sample, waveform wrap gets a subtle accent outline when active) - reversed playback uses a lazily built per-track reversed buffer cache (invalidated on load/clear/restore/toggle); the trim window is measured from the end of the audio while reversed, so trims stay meaningful - applied at every trigger site: preview, live scheduler and offline render (stems/WAV export included); persisted as optional field
- slide-out sidebar (left edge, MODULES tab / HUD dock button) listing
every registered module as a chip with an LED state marker
- drag a chip onto the wall to place its module at the drop point
(restores it if it was put away); drag an on-wall chip to relocate;
plain click auto-pans to the module and pulses its outline
- new header button puts a module away into the dock; double-click on a
header collapses/expands the body
- wall layout persistence extended to { positions, docked, collapsed }
with backwards-compatible parsing of the old flat format; RESET keeps
docked units put away
…ound-trip - master volume/threshold clamping + persistence, metronome preference - setLoopRegion one-bar/inverted-input rules; clip assignment extends the region beyond its end - shiftTrackPattern keeps accents glued to their steps; randomizeTrackAccents only re-rolls active steps - _stepSourceForBar playlist/live/null-slot semantics - v1 projects (pattern/pianoGrid on the track entries) still load - insert-effect reorder/params survive serialize/deserialize - clearProject factory reset; _effectiveVolume mute/solo matrix
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Big feature drop for VOIDSTATION, developed and verified on the
testingbranch. Design language untouched — everything uses the existing hardware-panel tokens.Audio engine
DynamicsCompressortoggle/threshold) + real output LED meter viaAnalyserNodenoteOn/noteOffheld-note synth API; transport stop kills all live voicesUI modules
Z S X D C V G B H N J M…,-/=octave) + Web MIDI with hot-plug⏏puts a unit away, header double-click collapses the body; layout persists{positions, docked, collapsed}Export
Infra & fixes
index.htmlloaded non-existentsrc/main.js)Test plan
npx tsc --noEmitcleannpm run buildclean, every compiled module passesnode --check