CopperMod is a terminal music player for classic tracker and chip music, with reusable C# playback libraries and a command-line audio exporter.
- MED / OctaMED: MMD0–MMD3 parsing and Amiga-style playback.
- ProTracker MOD: four-channel playback with Amiga-style sample output.
- AHX0 / AHX1: playback through the original 68000 replay routine; requires a locally supplied, hash-verified AHX 2.3d replay binary.
- SID / RSID: C64/SID emulation with cycle-counted register scheduling.
- Amiga CUST: custom-player execution in an Amiga/Paula playback sandbox.
Replay accuracy is a work in progress. Advanced effects, difficult RSID tunes and SID analog behavior remain areas of ongoing development. Music files and third-party replay binaries are not distributed with the player.
Requires the .NET 10 SDK. The terminal player uses Terminal.Gui and NAudio.
dotnet build CopperMod/CopperMod.csproj -c Release
dotnet run --project CopperMod -c Release -- "path/to/tune.sid"Without a filename, the player tries the default MED test tune if it is available locally.
The separate CopperMod.Amiga.Emulator integration imports its replacement-OS
services and boot controller from CopperStart. Check out CopperStart beside
CopperMod, or set -p:CopperStartRoot=<absolute checkout path> when building
that project, the complete solution, or its Amiga integration tests. Hardware,
disk/filesystem adapters and raster providers remain in CopperMod. This shared
source import preserves the existing assembly and has no duplicate service tree
here. The ownership move and existing integration build gaps are documented in
CopperStart/Docs/CopperModHostSourceMove.md.
For this development cutover, use CopperStart's ci/github-actions-build branch
at commit 8eeac19,
or a descendant containing host/CopperStart.CopperMod. CopperStart's default
main branch does not yet contain this shared host integration.
CopperMod.Tools renders supported modules without opening the player:
dotnet run --project CopperMod.Tools -- render "path/to/tune.mod" --out tune.wav --seconds 30
dotnet run --project CopperMod.Tools -- render "path/to/tune.sid" --out tune.pcm --seconds 30
dotnet run --project CopperMod.Tools -- render "path/to/tune.sid" --out tune.mp3 --seconds 30 --mp3-bitrate 192WAV output is 32-bit float; raw PCM is interleaved little-endian Float32. MP3 export uses the Windows Media Foundation encoder. See the export tool reference for output shaping, voice selection, duration detection and other options.
Playback backends render audio in small slices and can be used independently of the terminal application.
| Component | Purpose |
|---|---|
| CopperMod.Abstractions | Module loading and audio-rendering interfaces. |
| CopperMod.Med | MED / OctaMED parser and renderer. |
| CopperMod.ProTracker | ProTracker MOD parser and renderer. |
| CopperMod.Ahx | AHX loading and original 68000 replay integration. |
| CopperMod.Sid | PSID / RSID parsing and emulation. |
| CopperMod.Cust | Amiga custom-player and Paula playback sandbox. |
| Copper68k | Motorola 68000-family CPU emulation. |
| CopperFloat | Deterministic, allocation-free extended 80-bit arithmetic. |
| Copper6510 | MOS 6510 CPU emulation. |
| CopperMod.Amiga | Shared Amiga emulation used by the Cust and AHX backends. |
| CopperMod.Rendering | Format registration and offline-rendering helpers. |
For example:
dotnet add package CopperMod.Med
dotnet add package CopperMod.ProTracker
dotnet add package CopperMod.SidTests live alongside their components. Run the relevant project when changing a backend or shared library, for example:
dotnet test CopperMod.Med.Tests/CopperMod.Med.Tests.csproj -c Release
dotnet test CopperMod.ProTracker.Tests/CopperMod.ProTracker.Tests.csproj -c Release
dotnet test Copper68k.Tests/Copper68k.Tests.csproj -c ReleaseSome integration tests require local reference programs or media. Their absence is not evidence that the corresponding emulation behavior has been verified.
Package build and publication helpers are under scripts/nuget. Windows
self-contained and framework-dependent player archives are produced by
scripts/release/publish-coppermod.ps1; the corresponding release helper uses
GitHub CLI. Review artifacts before publishing.
The static project website is under docs.
CopperScreen is the native Amiga emulator application, including the Lightweight A500 engine and CopperDisk.
MIT; see LICENSE and third-party notices.