{"id":44269542,"url":"https://github.com/bytespiller/sidplaywx","last_synced_at":"2026-02-10T19:08:41.121Z","repository":{"id":153117806,"uuid":"286291360","full_name":"bytespiller/sidplaywx","owner":"bytespiller","description":"A PC GUI player for Commodore 64 SID music files based on libsidplayfp and wxWidgets","archived":false,"fork":false,"pushed_at":"2026-02-08T13:55:16.000Z","size":4798,"stargazers_count":58,"open_issues_count":3,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-02-08T19:20:24.132Z","etag":null,"topics":["c64","chiptune-player","chiptunes","commodore-64","emulation","music","player","retro","wxwidgets"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bytespiller.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-08-09T18:09:42.000Z","updated_at":"2026-02-08T13:01:31.000Z","dependencies_parsed_at":"2023-06-04T01:15:48.827Z","dependency_job_id":"42a82cd6-727b-4dca-b500-b770ee26746c","html_url":"https://github.com/bytespiller/sidplaywx","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/bytespiller/sidplaywx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytespiller%2Fsidplaywx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytespiller%2Fsidplaywx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytespiller%2Fsidplaywx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytespiller%2Fsidplaywx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bytespiller","download_url":"https://codeload.github.com/bytespiller/sidplaywx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytespiller%2Fsidplaywx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29313095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T17:48:59.043Z","status":"ssl_error","status_checked_at":"2026-02-10T17:45:37.240Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c64","chiptune-player","chiptunes","commodore-64","emulation","music","player","retro","wxwidgets"],"created_at":"2026-02-10T19:08:40.446Z","updated_at":"2026-02-10T19:08:41.111Z","avatar_url":"https://github.com/bytespiller.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"../assets/screenshots/composite_spwx_title.png?raw=true\"/\u003e\n\nThe **sidplaywx** is a GUI player for Commodore 64 SID chip tunes aiming to provide a modern \u0026 comfortable SID tune playback experience on the PC.\n\nThe current alpha version is fully usable, supporting QoL features like seeking, drag \u0026 drop, unicode paths, DPI awareness and much more.\n\nThe **sidplaywx** uses [libsidplayfp](https://github.com/libsidplayfp/libsidplayfp) for ultimate quality in SID emulation, [wxWidgets](https://github.com/wxWidgets/wxWidgets) for native GUI on supported platforms, and [PortAudio](https://github.com/PortAudio/portaudio) for audio output.\n\n## Screenshots\n![Screenshot of the player application main window](../assets/screenshots/sidplaywx-player.png?raw=true)\n\n![Screenshot of the Modify Playback window](../assets/screenshots/sidplaywx-playbackmod.png?raw=true)\n\n![Screenshot of the Preferences window](../assets/screenshots/sidplaywx-preferences-long.png?raw=true)\n\n## Platforms\nThis project uses the GCC and the CMake, and at the moment Windows and Linux are supported.\n\n## Planned features for v1.0\nThe current version of the sidplaywx is 0.x.x (alpha), so in addition to bugfixes and common sense updates, I consider at least _these_ features are needed before the sidplaywx can graduate to version 1.0:\n- Playlist improvements such as \u003cdel\u003eduration columns\u003c/del\u003e, reordering\u003cdel\u003e, remembering last state and playlist file save/load\u003c/del\u003e etc.\n- Misc. necessary features \u003cdel\u003esuch as remembering window size \u0026 position\u003c/del\u003e etc.\n- Exporting tunes to WAV\n- [\u003cdel\u003eSTIL\u003c/del\u003e](https://www.hvsc.c64.org/download/C64Music/DOCUMENTS/STIL.txt) \u003cdel\u003esupport for displaying tune comments\u003c/del\u003e\n- \u003cdel\u003eNative Linux support\u003c/del\u003e\n- \u003cdel\u003eTheming support / dark theme\u003c/del\u003e\n\n## Download\n* You can find a pre-built ready-to-use binary distribution(s) in the [Releases](https://github.com/bytespiller/sidplaywx/releases) sidebar.\n\t* More package formats are planned for Linux (only AppImage at the moment).\n\n## Alternatives\nSome alternatives to sidplaywx for playing the SID tunes I've tried and liked are:\n* Windows: foobar2000 + foo_sid plugin\n* Linux: DeaDBeeF player (note: it uses older/no longer maintained libsidplay2)\n* Mac: I don't have a Mac so I haven't tried it, but this looks great: https://github.com/Alexco500/sidplay5\n\n## Contributing, ideas, comments, issues\nIf you have an idea or a comment, feel free to post it in the [Discussions](https://github.com/bytespiller/sidplaywx/discussions). Issues can be reported [here](https://github.com/bytespiller/sidplaywx/issues). There is also an email address provided in the application's Help \u003e About box.\n\n## FAQ\n* Where can I get SID tunes?\n  * Check out the [High Voltage SID Collection](https://www.hvsc.c64.org) for a massive collection of SID tunes sorted by authors, and more!\n* Why are some tunes crossed-out and cannot be played?\n  * Small number of tunes require a C64 system ROM to play. You can find the C64 system ROM files in e.g., open source C64 emulators (or elsewhere on the internet) and import them via the sidplaywx's Preferences.\n  * There are three main C64 system ROM types that the sidplaywx supports (and some tunes require):\n    * KERNAL ROM (tune indicated with a RED crossout text if missing)\n    * BASIC ROM (tune indicated with a BLUE crossout text if missing)\n    * _CHARGEN ROM (you'll probably never need this one, so let's just ignore it for now)_\n* When drag \u0026 dropping the files, why the playlist sometimes gets cleared?\n  * By default, the sidplaywx will enqueue the files if dropped onto the playlist area, and clear (replace) the playlist if they are dropped onto the general player window area. This is configurable in the Preferences.\n* Can sidplaywx open archive files?\n  * Yes, but only the Zip format in its simplest variant is supported due to wxZip limitation.\n* How come the seeking is so slow?\n  * There is an \"Instant seeking\" option available which pre-renders the entire SID tune in the background. It is disabled by default, but if you enable it you will be able to seek instantly. See [release notes](https://github.com/bytespiller/sidplaywx/releases/tag/v0.7.0-beta) of the old release (note: \"Instant seeking\" was formerly named \"Fast seeking\") for details on how it works and what are the caveats.\n  * SID tunes are actually small programs and not audio files like for example the MP3, so they have to be emulated linearly as fast as possible until the \"seek\" target is reached.\n* Command-line options in sidplaywx?\n  * Focus so far is on the GUI experience. There exists a [sidplayfp](https://github.com/libsidplayfp/sidplayfp/releases) console-based player in the libsidplayfp repo (not to be confused with a sidplaywx which is unrelated and unaffiliated project).\n  * For now, you can pass the space-separated filenames. For example `sidplaywx Aces_High.sid Gunstar.sid` to open those two tunes. This \"feature\" is actually a side-effect of single-instance support, so there will be a slight delay if the app is already running and the single-instance option is enabled.\n\n## Building\n\u003cdetails\u003e\n  \u003csummary\u003eClick to expand!\u003c/summary\u003e\n\n### Linux\n\n#### Prerequisites\n- GCC version with C++17 support is required (minimum I've tried is gcc-12).\n- Don't forget the `sudo apt-get update` and `sudo apt-get install build-essential` as well as `sudo apt-get install cmake`\n\n##### (libsidplayfp)\n* **NOTE:** Building the libsidplayfp from its git master branch is more involved and not covered here. This guide assumes you're building one of the [source releases](https://github.com/libsidplayfp/libsidplayfp/releases) of the libsidplayfp which is simpler.\n1. To enable C++20 set in the terminal `CXXFLAGS=\"$CXXFLAGS -std=c++20\"`\n2. Commands to build statically: `./configure --disable-dependency-tracking --disable-shared --enable-static --without-gcrypt --with-simd=runtime \u0026\u0026 make`\n3. Copy the following *includes* (with their folder structures) to the appropriate `include` folder in the sidplaywx's `/deps/`:\n\t- `/builders/residfp.h`\n\t- `sidbuilder.h`, `SidConfig.h`, `siddefs.h`, `SidInfo.h`, `sidplayfp.h`, `SidTune.h`, `SidTuneInfo.h`, `sidversion.h`\n4. Copy the `/src/.libs/libsidplayfp.a` (`.libs` is a *hidden* folder) to the appropriate `lib` folder in the sidplaywx's `/deps/`\n\n##### (PortAudio)\n0. Prerequisites: you must have installed the `libpulse-dev`, ALSA (`libasound2-dev`), `libsndio-dev`, `libjack-dev` BEFORE building the PortAudio, otherwise the resultant PortAudio may not find any devices.\n\t- See the main CMakeLists.txt for which ones are relevant.\n1. `cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -S . -B dist \u0026\u0026 cmake --build dist`\n\t- Note: I had to use the git master version, had no luck with the stable version on the Xubuntu 24.04\n2. Copy files from `/dist/include/` folder \u0026 the `libportaudio.a` file to the appropriate sidplaywx's `/deps/` folders.\n\n##### (wxWidgets)\n0. Prerequisites: if needed, install the `libgtk-3-dev` and `libcurl-dev` (the last one is needed for our \"Check for updates\" function).\n1. `cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -S . -B dist \u0026\u0026 cmake --build dist`\n\t- Exceptional cases (if you get an `#include` error when building the sidplaywx):\n\t\t- You may need to call the `wx-config --cxxflags` to get necessary flags and update the equivalent variable in our sidplaywx CMakeLists.txt\n\t\t- May also be of interest:\n\t\t\t- `wx-config --libs`\n\t\t\t- https://wiki.wxwidgets.org/Wx-Config\n\t\t\t- https://docs.wxwidgets.org/3.2/overview_cmake.html\n2. Copy files from `/dist/include/` \u0026 `/dist/lib/` to the appropriate sidplaywx's `/deps/` folders.\n\n#### Building the sidplaywx\n1. Copy contents of the `dev` folder (except the `icon_src` folder and the `SystemColorViewer.pyw`) to the `build` folder (create a `build` folder next to the `dev` folder)\n2. You can rename the `CMakeLists_linux.txt` to `CMakeLists.txt`\n3. `cmake -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -S . -B build \u0026\u0026 cmake --build build`\n- Tip: If the sidplaywx fails to launch after it was successfully built, try via terminal to see if something is missing.\n- Tip: if trying to execute the sidplaywx in VSCode and getting exit code 177, you need to edit your config: `\"terminal.integrated.env.linux\": { \"GTK_PATH\": null }` and restart VSCode (or for one-off thing run this in VS terminal: `unset GTK_PATH`)\n\n***\n\n### Windows (10, 11)\n\n#### Prerequisites\nAt the moment, the easiest way to build the sidplaywx on Windows is probably by using the [MSYS2](https://www.msys2.org/) environment.\u003cbr\u003e\nNote: you should install it into the default `C:\\msys64\\` path in order for some hardcoded cmake paths to work out-of-the-box.\n\nOnce installed you need to **first-time configure** it like so:\n- **NOTE:** MSYS2 supports modern UCRT64 and legacy MINGW environments. UCRT64 is recommended these days, and these instructions assume using it.\n1. Update package lists etc.: `pacman -Syu` and after restart (if needed): `pacman -Su`\n2. Install develpment prerequisites: `pacman -S base-devel`\n3. Install msvcrt-compatible gcc: `pacman -S mingw-w64-ucrt-x86_64-gcc`\n4. Install cmake \u0026 make tools (e.g., PortAudio needs those): `pacman -S mingw-w64-ucrt-x86_64-cmake \u0026\u0026 pacman -S mingw-w64-ucrt-x86_64-make`\n5. In your PATH environment variable add: \"C:\\msys64\\ucrt64\\bin\"\n- Extra if you need to install gdb separately for some reason: `pacman -S mingw-w64-ucrt-x86_64-gdb`\n- IMPORTANT: run the terminal via **ucrt64.exe**, **not** default msys2 terminal (otherwise the proper gcc variant might not be used)!\n\n##### (libsidplayfp)\n* **NOTE:** Building the libsidplayfp from its git master branch is more involved and not covered here. This guide assumes you're building one of the [source releases](https://github.com/libsidplayfp/libsidplayfp/releases) of the libsidplayfp which is simpler.\n1. `cd` (with MSYS2 i.e., UCRT64.exe terminal) into the libsidplayfp's root.\n2. To enable C++20 set in the terminal `CXXFLAGS=\"$CXXFLAGS -std=c++20\"`\n3. Finally, run: `./configure --disable-dependency-tracking --disable-shared --enable-static --without-gcrypt --with-simd=runtime \u0026\u0026 make \u0026\u0026 make install`\n\t1. TIP: if doing this for the first time, break down these 3 commands (i.e., they are separated by `\u0026\u0026`) and run them one by one so you can catch any problems more easily.\n4. Note: the lib will be automatically found by our cmake later (if you've installed the msys into the `C:\\msys64\\`) and it will get linked statically.\n\t\n##### (PortAudio)\n1. [Download](http://files.portaudio.com/download.html) the PortAudio stable source release or the master [from the github](https://github.com/PortAudio/portaudio).\n2. You can use the regular Windows cmd:\n\t1. `cd` into the PortAudio's root.\n\t2. `cmake -G \"MinGW Makefiles\" -DCMAKE_BUILD_TYPE=Release`\n\t3. `mingw32-make`\n3. Copy files from `/dist/include/` folder \u0026 the `libportaudio.a` file to the appropriate sidplaywx's `/deps/` folders.\n\t\n##### (wxWidgets)\n1. Simply [download](https://www.wxwidgets.org/downloads/) the appropriate pre-built binaries for your compiler (e.g., GCC v14).\n2. Copy headers \u0026 libs to the appropriate sidplaywx's `/deps/` folders.\n3. IMPORTANT: additionally, in order to actually run the sidplaywx application after it's built, you need to copy the following wxWidgets' `.dll` files into the sidplaywx's **build** folder: `wxbaseVER_SUFFIX.dll`, `wxbaseVER_xml_SUFFIX.dll`, `wxmswVER_core_SUFFIX.dll`, `wxmswVER_propgrid_SUFFIX.dll` (the exact `VER` version and `_SUFFIX` suffix differs depending on wxWidgets \u0026 gcc version etc.).\n4. TIP: You can also build the wxWidgets yourself in the similar manner to building the PortAudio (in case you want to use a specific GCC version not offered among pre-built binaries).\n\n#### Building the sidplaywx\n1. The main `CMakeLists.txt` should do the trick (I myself use the Visual Studio Code).\n2. IMPORTANT: additionally, in order to actually run the sidplaywx application after it's built, you need to copy the following files into the sidplaywx's **build** folder:\n\t1. `libgcc_s_seh-1.dll`, `libstdc++-6.dll`, `libwinpthread-1.dll` found in your appropriate MSYS bin folders (e.g., ucrt64 or mingw64).\n\t2. The entire `dev\\theme` folder (so you end up with `build\\theme`).\n\t3. The `dev\\bundled-Songlengths.md5` file (so you end up with `build\\bundled-Songlengths.md5`).\n\t4. The `dev\\bundled-STIL.txt` file (so you end up with `build\\bundled-STIL.txt`).\n\t- Tip: you can see the [release](https://github.com/bytespiller/sidplaywx/releases) package for example of bundled dependency files if you get stuck.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytespiller%2Fsidplaywx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbytespiller%2Fsidplaywx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytespiller%2Fsidplaywx/lists"}