Releases: FlyingFathead/sidpulse-tracker
Release list
SIDpulse Tracker v0.2.40
v0.2.40: pattern bank controls and safer project changes
F11 shows each pattern's row count. Double-click Rows to open the slider
and numeric entry, or click the left/right triangles to change the length by
one row. Ctrl+F2 opens the length dialog from F2 or F11. A reduction is blocked
when it would hide populated notes, effects, automation or filter controls;
permitted changes can be undone.
F4 adds Clear all instruments below the individual instrument controls.
Two Cancel-default confirmations precede a verified project backup and the
undoable clear. The application displays the backup path after clearing.
Dropping a .sidpulse project validates it before offering to replace the
current song. With unsaved changes, the dialog offers Save & open, Open
without saving, and Cancel. It checks the dropped source again before
accepting it, including a failure path for unreadable or damaged files.
The octave controls now read −1, 0, +1 left to right. Opening a project
stamped by an older app version shows a compatibility notice; future format
and unknown-field warnings remain. A version warning does not guarantee that
every feature of another version can play or export correctly.
The existing F2 selected-row preview uses 8. This release does not change
that binding.
See validation, pattern editing,
instrument actions, and project files.
SIDpulse Tracker v0.2.39: fit three voices in F2
v0.2.39: fit three voices in F2
F2 can show all three SID voices at narrow desktop sizes without shrinking the
song header or clipboard toolbar. Fit 3 voice channels (F2) is enabled by
default under Settings Menu > UI Settings, and is saved per user.
The grid chooses the largest font that fits voices 1–3 within the available
width, capped at the chosen page font. Row spacing remains stable. The separate
CTRL CH / FILTER column still expands and collapses. At the 8-pixel minimum,
extremely narrow views follow the selected voice rather than lose editable
fields. Turning fitting off restores the previous grid-size behavior. F5 keeps
its existing layout.
Grid fonts, rendered cells, buttons and hit rectangles are cached. Mouse editing
and drag selection use the fitted grid geometry. Audio, sequencing, sample
synthesis and exports retain their existing implementations. The previously
validated v0.2.38 CI repairs are included.
See validation, performance,
editing details and
update instructions.
Validated commit: 1001bb5f9fc1c184e90fccf98156e577204bec86.
Native editor checks: all four Ubuntu/Windows jobs passed.
SIDpulse Tracker v0.2.38
UI scale hotfix
Fixes the interface getting smaller when entering F2 Pattern Editor or F5 Info.
The layout keeps the requested font size instead of shrinking the whole page
to fit extra channels. Narrow pattern views follow the selected channel;
minimum fitting is retained for very small windows and large zoom.
Audio playback, sequencing, sample fitting and C64 export code are unchanged.
Includes all v0.2.37 features and its Windows FFmpeg CI setup.
Download the full ZIP for a fresh installation. Existing v0.2.37 installations
can use the incremental ZIP. Close the tracker, extract from the parent of
sidpulse-tracker/, then run python3 scripts/finish_update.py inside it
(python scripts/finish_update.py on Windows).
See docs/VALIDATION-v0.2.38.md and docs/PERFORMANCE-v0.2.38.md for checks and
measurement limits. The SHA-256 file covers the attached release archive.
SIDpulse Tracker v0.2.37
SIDpulse Tracker v0.2.37
- Playback navigation: use minus/plus on the F5 Info page or the header's
triangle buttons to visit the previous/next song order, without restarting
the audio device or resetting the sample clock. - Centered file browser: keyboard/wheel selection follows the middle of
the list and clamps at either end; mouse double-click targeting stays stable. - Wavetable drum presets: the exact frozen reference kick and snare are now
in F4 under [Wavetable] Drums & Percussion. - Windows CI: install and verify FFmpeg before running the media tests.
124 focused tests passed locally. The performance audit contains 184 serial
measurements against v0.2.36; the updated build lost no audio frames in its
58 live trials. A PCM CPU spike did not recur in longer repeat measurements.
The 2048-sample default and 512-sample stress setting are preserved. Linux
SDL-dummy results do not certify every physical device or operating system.
All four SQUEEZER versions, including v2.0.1 and default v2.0.2, and both DIGI
methods remain available. The sample fitter, reference drum recipes and source
samples are unchanged from v0.2.36.
Use the full ZIP for a fresh installation, or the incremental ZIP over
v0.2.36. Both extract under sidpulse-tracker/. Verify the supplied SHA-256
checksums and run python3 scripts/finish_update.py after an incremental update.
Installation ·
Release details ·
Performance and retained outliers ·
Validation
SIDpulse Tracker v0.2.35
SIDpulse Tracker v0.2.35
The earlier volume-digi player is restored as DIGI method #1, selected by
default when exporting PCM instruments. It plays packed four-bit samples through
$D418 while leaving the C64 display and sprite enables alone. It uses the
current note-trigger preparation, CH3 remapping and lossless music packers.
The bias voice is shut off when a sample finishes or is cut before restoring
master volume. Volume modulation of the other SID parts, clicks and VIC timing
jitter remain possible; this restores the earlier playback choice, not perfect
sample reproduction.
DIGI method #2 retains the v0.2.34 waveform-DAC player. It blanks the display
and sprites to stabilize DAC capture. The four tested PAL/NTSC, 6581/8580 PRG
binaries are byte-for-byte identical to v0.2.34 when this method is selected.
Method #1 stores two four-bit frames per byte; method #2 uses a frequency byte
per frame plus its tail. No audio method is silently substituted by squeezing.
The export menu has a method selector operated by mouse or keyboard. Its choice
is saved in machine preferences; missing or invalid old preferences select #1.
The CLI uses --digi-method 1 or --digi-method 2 with SID/PRG exports.
Changing the method discards previous analysis so the displayed size/cycle
report and exported bytes always correspond to the selected player.
The confirmation describes the selected method. It retains Continue as DIGI /
Synthesize all samples / Cancel, with synthesis selected first. Only method #2
warns about display blanking. Sample-to-SID wavetable synthesis remains the
preferred C64 workflow, with audition before conversion and one-step undo.
Native playback, editing, W controls, sync/ring effects and source samples retain
their existing behavior.
Guides, the changelog and development notes live under docs/. The main README
links to detailed historical notes. Incremental upgrades from v0.2.34 run
python scripts/finish_update.py to remove the relocated root changelog.
See installation, PCM behavior,
validation and performance.
Keeping the display enabled is distinct from integrating this standalone player
into another program: it still owns CIA timers, IRQ/NMI vectors, memory and its
foreground loop. The method #1 music budget covers a standard screen without
sprite DMA; custom graphics need a coordinated timing budget. Physical C64
listening remains untested in this environment.
SIDpulse Tracker v0.2.30
SIDpulse Tracker v0.2.30
SQUEEZER v2.0.2 adds one-byte dictionary IDs for frequently reused literal blocks
and single-execution phrase calls. On the unchanged v8 arrangement it saves
1,245 bytes beyond v2.0.1 after paying for its larger player. All v1.0, v2.0 and
v2.0.1 implementations remain available and are fallback candidates. The new
algorithm is export-only and makes no changes to native playback or song data.
The export panel analyzes four versions and shows all versions by default.
Uncheck Show all versions for Top 3. The checkbox immediately saves the
Boolean export_show_all_versions preference, including when export is cancelled;
missing or invalid settings default to true. The dropdown permits every choice.
Larger results remain selectable. Each column shows size, resident RAM and
measured maximum C64 cycles, with a Use button. Metric minima and complete ties
remain highlighted. The smallest valid output is selected initially, with RAM
and measured cycles breaking ties. A current tied choice is retained. Completed
choices switch instantly, and comparison can still be disabled.
Shared vertical scrollbars appear wherever the integrated view overflows:
export, pattern grid, instrument/sample banks, instrument fields, settings, help,
menus, orders/pattern bank, files, presets and long messages/comments. Thumb drag
and track paging affect only the viewport. Selection changes resume the existing
centering/following rules; the song and filename draft remain untouched.
A prototype for exact arithmetic packets was rejected because its savings on
the best stress-song layout did not pay for the decoder. The design document
records this result and the study of GoatTracker 2.77 and the supplied explanation
of Rob Hubbard's player. Both references are acknowledged; no source code or
music data from either is incorporated into SIDpulse.
The supplied SP logo is now the window icon, loaded once at startup. A stable
Windows application identity and optional Linux desktop launcher support desktop
grouping. The README includes a short GIF preview and a complete 1:36 MP4 playthrough
with audio and all three scopes, using the bundled Autumn at Five song.
No runtime recording is enabled. The official-source notice sits directly
below the main logo.
Quick features and installation instructions sit below the preview; links to
audio-bitsqueezer and c64-3d-toolkit close the README after the acknowledgments.
The app, launchers, native save metadata and PRG credits report 0.2.30. Squeezed
PRGs also show the selected squeezer version. Native formats remain 6/7, existing
preferences are honored, and there are no new runtime dependencies.
Read design and findings,
performance, validation and
apply instructions. Full/incremental archives preserve
executable run.sh. No remote push, tag or publication is performed.
SIDpulse Tracker v0.2.23
SIDpulse Tracker v0.2.23 - output devices and test arpeggio
Alt+F12 now lets you choose an SDL audio output, preview it with a short C-E-G-C
arpeggio, refresh the device list and reset the audio defaults.
The selected output is saved in machine preferences after a successful apply.
System default is represented by audio_output_device: null. Reset defaults
stages System default, 2048 samples and underrun detection enabled; OK saves.
Cancel leaves preferences unchanged. Missing saved devices fall back to default.
The test temporarily holds song playback, preserving native SID state, queued
music and pause state, then restores the original output. It does not edit the
song, change saved mute/solo settings or save the preview selection.
The 0.2.22 isolated audio process, native sound path, dependency pins, project
format 6 and exporter/player binaries remain unchanged. Performance comparisons,
regression evidence and platform limitations are documented in
validation.
Linux SDL dummy checks do not constitute native Windows or physical-device testing.
SIDpulse Tracker v0.2.22
Audio playback now runs in a separate process to protect it from UI stalls, with optimized PCM buffering and output conditioning.
Adds configurable underrun detection, subtle warning notifications, and Alt+F12 for audio settings.
Includes performance measurements and regression evidence:
https://github.com/FlyingFathead/sidpulse-tracker/blob/v0.2.22/docs/VALIDATION-v0.2.22.md
SIDpulse Tracker v0.2.21
SIDpulse Tracker v0.2.21 — song squeezing and responsive exports
- Default-enabled, optional song squeezing for SID and PRG exports only.
Reuse repeated channel phrases and compact timing/register data, with
byte-cost selection and playback verification. Native projects stay intact. - Keep export analysis outside the UI event loop. Show an animated,
slider-colour activity bar, processing-stage labels and elapsed time. - Keep Cancel and window events responsive; reject stale results and show
worker errors without unexpectedly saving files. - Retain strict replay-cycle checks, including the test-only py65 timing
correction and updated native export-workflow regression tests.
No new runtime dependency or native song-format conversion is required.
Packed playback reads compressed data directly without expanding the entire song.
Ordered tick/write verification does not guarantee cycle-identical spacing
within a tick or identical analog behaviour on every SID chip.
Local release validation — 2026-09-17
The maintainer's Linux run of ./.venv/bin/python -m pytest -q -ra
completed with 1023 passed, zero failures and zero skips in 264.79 seconds.
The export UI was also exercised manually and reported working well.
These results supersede the earlier dependency-limited local checks for this
version. They do not establish VICE/real-hardware or Windows validation;
consult the release commit's CI runs for cross-platform and assembler results.
SIDpulse Tracker v0.2.17
SIDpulse Tracker v0.2.17
Startup splash correction
The startup splash now presents the two actual choices:
- New song creates a blank
Untitledproject. - Play demo song keeps the bundled editable Autumn at five project and
starts playback as before.
Escape follows New song. This fixes v0.2.16 behavior where dismissing the
splash without playing still left the demo song loaded in the editor.
The Don't show this on startup preference is unchanged. Explicit
--play-welcome-song playback is unchanged, as are audio startup behavior,
project format 6, dependency pins and export semantics.
Compatibility and limits
This is a focused UI/startup bug-fix release over v0.2.16. No song-format,
sequencer, SID-player, audio-buffer or dependency changes are introduced.
Download sidpulse-tracker-v0.2.17-full.zip and
sidpulse-tracker-v0.2.17-SHA256SUMS.txt. Verify the checksum, then follow the
README. The release-validation procedure is recorded in docs/VALIDATION.md.