ChipMachineAS
Port of ChipMachine for Apple Silicon
But this is far more than a simple port!
While ensuring the player runs on modern Apple hardware, my passion for it has expanded its compatibility and scale:
- 50+ Plugins: Supporting over 300 retro and chip music formats
- Massive Index: Currently approaching 600,000 indexed items
The Roadmap
The mission statement: implement every viable format and index every known retro/chip music database in existence.
Despite the massive expansion under the hood, the core experience remains untouched: instant, incremental autocomplete search across the entire global library, delivering zero-latency playback from a single, unified interface.
(Screenshots might show features from dev in progress (not released) code.)
(Screenshots might show features from dev in progress (not released) code.)
(Screenshots might show features from dev in progress (not released) code.)

A demoscene/retro Jukebox/spotify-like music player
- Simply start typing for incremental auto-complete search of the aggregated database
- UP/DOWN keys = select a song from search results
- ENTER key = play
- TAB key = help screen
- (Read the scrolling text for more info)
- Things in progress / to come
- Ultimate goal: every chiptune ever made searchable and instantly playable!
Binaries for macOS (tested on Tahoe) are available under Releases
NOTE although not formally tested, ChipMachineAS should work on pre-Tahoe macOS
The app is distributed with an ad-hoc code signature and macOS Gatekeeper will block it.
This is standard behavior for open-source binaries distributed outside the official Mac App Store ecosystem.
To authorize and run the application on your Mac, follow these steps:
- Download the latest release and unzip it in the Applications folder
- Double-click
ChipMachineAS.app. - macOS will display a prompt stating the app cannot be opened because the developer cannot be verified.
- Click Done or Cancel.
- Open your Mac's System Settings.
- Navigate to Privacy & Security in the left sidebar
- Scroll down to the Security section.
- Look for the notification stating:
“ChipMachineAS” was blocked from use because it is not from an identified developer. - Click the Open Anyway button.
- Authenticate using your Mac's admin password or Touch ID.
- Double-click
ChipMachineAS.appagain. - The final confirmation prompt will appear.
- Click Open.
Note: You only need to perform this authorization once. Subsequent launches will boot instantly.
- Make sure you have Homebrew installed (Apple Silicon homebrew in /opt/homebrew/ , make sure you are not using Intel legacy /usr/local tools)
- brew install git cmake ninja freetype glew glfw3 lua fftw mpg123 python ffmpeg boost
- (if some packages are reported missing later install then via brew and let me know -- I missed them in the line above!)
mkdir chipmachine-as && cd chipmachine-as
git clone https://github.com/mihailod/chipmachine.git
git clone https://github.com/mihailod/apone.git
git clone https://github.com/mihailod/musicplayer.git
git clone https://github.com/mihailod/vice310.git
git clone https://github.com/mihailod/98fmplayer.git
git clone https://github.com/mihailod/libpxtone.git
git clone https://github.com/mihailod/organya.h.git organya
git clone https://github.com/mihailod/eupmini.git
git clone https://github.com/mihailod/zingzong.git
git clone https://github.com/mihailod/zxtune.git
git clone --recursive https://github.com/mihailod/libkss.git
git clone https://github.com/mihailod/audiodecoder.wsr.git audiodecoderwsr
git clone https://github.com/mihailod/protrekkr.git
git clone https://github.com/mihailod/soundsmith.git
git clone https://github.com/mihailod/arkostracker3.git
git clone https://github.com/mihailod/playerpro.git
git clone https://github.com/mihailod/jaytrax.git
git clone https://github.com/mihailod/webixs.git
git clone https://github.com/mihailod/famitracker-cx.git
mkdir build && cd build
cmake ../chipmachine -GNinja -DCMAKE_BUILD_TYPE=Release
ninja- Running the app from the build folder: ./chipmachine (-h for all options)
- Packaging the app: package_app.sh
- Database update info: scripts/DB_UPDATE_PROCESS.txt
- AI tools used to help with the porting: Claude, Gemini, Antigravity, Codex
- Type words separated by spaces for incremental search
- ENTER to play, SHIFT-ENTER to enque
- F1 = Player screen, F2 = Search screen
- F5 = Play/Pause
- F9 = Advanced search: set/reset search filter by platform (ie. Amiga)
- F6 = Next Song (or ENTER from Player Screen)
- ESC = Clear search field
- SHIFT-ESC = Quit
- F7 = Toggle Favorite
- Type shoutcast to see the radio-stations
- Things in progress / to come
- Modland - https://ftp.modland.com
- High Voltage SID collection - https://www.hvsc.c64.org
- Gamebase64 - http://www.gb64.com
- AMP (Amiga Music Preservation) - http://amp.dascene.net
- RKO - http://remix.kwed.org
- Atari ST (SNDH) - http://sndh.atari.org
- SNES Music - http://snesmusic.org
- Atari SAP (ASMA) - http://asma.atari.org
- HVTC (High Voltage TED Collection) - http://plus4world.powweb.com
- NSFE (Famicompo mini NSFE archive of 1,228 songs from https://forums.nesdev.org/viewtopic.php?t=21128)
- Mod Archive - https://modarchive.org
- Bitworld - http://janeway.exotica.org.uk
- Exotica - https://www.exotica.org.uk
- CSDb - https://csdb.dk
- ZX Art - https://zxart.ee/eng/music
- CPC-Power - https://www.cpc-power.com
- Zophar's Domain (Sega Genesis only) - https://www.zophar.net
- Vampi's MDX Collection (Sharp X68000) - https://mdx.vampi.tech
Podcasts are a first-class category — press F9 and pick Podcasts to browse/filter only podcast episodes. Shows backed by a live RSS feed ship with a snapshot of their back catalogue and are refreshed from the feed in the background at startup (throttled to roughly once a day), so newly published episodes are merged in automatically without a full re-index; the remaining shows are curated track lists. Episodes show per-episode cover art when the feed provides it, otherwise the show's cover.
- C64 Take-away — Commodore 64 remixes & original SID (complete, ended 2025) - https://c64takeaway.com
- This Week in Chiptune — chiptune mixes (Dj CUTMAN, 2013–2017 archive) - https://thisweekinchiptune.com
- Pixelated Audio — video game music & interviews - https://pixelatedaudio.com
- GameFuel — video game music (KNGI Network) - https://kngi.org
- Nitro Game Injection — video game music & remixes (KNGI Network) - https://kngi.org
- Demovibes — demoscene music - https://www.demovibes.org
- AmigaVibes — Amiga & demoscene music - http://www.amigavibes.org
- Syntax Error — game & demoscene music (Sol) - http://www.syntaxerror.nu
And one not related to retro music but dear to my heart so here it is:
- Completely Unnecessary Podcast — retro gaming (Pat "The NES Punk" Contri & Ian Ferguson) - https://cupodcast.podbean.com
- Amiga remix (MP3) - http://amigaremix.com
- Sounds of Scenesat - https://scenesat.com
- Pouet - https://www.pouet.net
- Scenesat - https://scenesat.com
- SLAY Radio - https://www.slayradio.org
- Nectarine - https://scenestream.net
- VGM Radio - http://vgmradio.com
- NoLife-Radio - https://www.nolife-radio.com
- Rainwave - https://rainwave.cc
- The Sid Station - https://c64radio.com
- Radio PARALAX - https://www.radio-paralax.de
- CVGM Radio - https://radio.cvgm.net
- Kohina - https://kohina.com
Support for PC and Amiga tracker formats
- ProTracker, ScreamTracker III, FastTracker II, Impulse Tracker, OpenMPT, ScreamTracker II, NoiseTracker, Soundtracker, Mod's Grave, UltraTracker, Composer 669 / UNIS 669, MultiTracker, OctaMed, Farandole Composer, DigiTracker, Extreme's Tracker, Velvet Studio, DSIK Format, DSMI, ASYLUM, Oktalyzer, X-Tracker, PolyTracker, Epic Megagames, MASI, MadTracker 2, DigiBooster Pro, DigiBooster, Imago Orpheus, Galaxy Sound System
- New with the 0.8.7 upgrade: Symphonie / Symphonie Pro (Amiga "pseudo-DAW" with software mixer + real-time echo DSP), Digital Symphony, Face The Music, Graoumf Tracker 1 & 2, TCB Tracker, Real Tracker, Astroidea XMF, Composer 667, EasyTrax, FM Tracker, CBA
Extensions: .mod .xm .it .s3m .mptm .stm .nst .m15 .stk .wow .ult .669 .mtm .med .far .mdl .ams .dsm .amf .okt .omf .dmf .mt2 .dbm .digi .imf .j2b .gdm .umx .mo3 .symmod .dsym .ftm .gt2 .gtk .tcb .rtm .xmf .667 .etx .fmt .cba .c67 .fst .ice .mmcmp .mms .mus .oxm .plm .ppm .psm .pt36 .ptm .sfx .sfx2 .stp .stx .xpk
(.mus, .psm and .stp are shared extensions: libopenmpt claims them, but a SID .mus falls through to libvice, a ZX .psm/.stp to ZXTune/Ayfly — routing is by content.)
Note:
.dsmcovers three unrelated DSIK/Dynamic-Studio variants. libopenmpt natively plays the newer DSIK "RIFF" format (RIFF…DSMF) and Dynamic Studio (DSm), but not the original DSIK "old" Internal Format (DSM+ 0x10, e.g. the Necros tunes). Support for that v1 variant was added in a local patch to the vendored libopenmptLoad_dsm.cpp, with the loader adapted from MilkyTracker'sLoaderDSMv1(BSD-3-Clause).
Note:
.omf(Onyx Music File) is a MOD-like Amiga format from the 1993 musicdisk Jangle by Onyx (the modlandOnyx Music File/corpus, 24 tunes). It never had a standalone replayer — the tunes were only playable through the original musicdisk executable. Playback reuses libopenmpt's existing MOD engine.
Note: some Amiga formats libopenmpt can also decode (Future Composer, Puma, Game Music Creator, Images Music System, etc.) are intentionally routed to the UADE plugin instead, which uses the original 68k replayers — see the UADE section below.
Support for Dreamcast and Sega Saturn music
Extensions: .ssf .dsf .minissf .minidsf
Support for Playstation 1 & 2 music
Extensions: .psf .psf2 .minipsf .minipsf2
Support for Nintendo DS music
Extensions: .2sf .mini2sf
Support for various 8 bit console music
- ZX Spectrum, Amstrad CPC, Nintendo Game Boy, Sega Genesis, Mega Drive, NEC TurboGrafx-16, PC Engine, MSX Home Computer, other Z80 systems, Nintendo NES, Famicom (with VRC 6, Namco 106, and FME-7 sound), Atari systems using POKEY sound chip, Super Nintendo, Super Famicom, Sega Master System, Mark III, Sega Genesis, Mega Drive, BBC Micro
Extensions: .spc .nsf .nsfe .gbs .gbr .ay .gym .sap .vgm .vgz .hes .kss .sgc .emul
.gbris the older Game Boy rip format (predecessor of.gbs). GBR carries no "first song" field and many rips keep a silent stop-track at song 0 — use the subsong controls if a tune starts silent.
Support for Atari 16 bit music
Extensions: .sc68 .sndh .snd .4v
Support for Nintendo 64 music
Extensions: .usf .miniusf
Support for Atari ST music (older formats)
Extensions: .ym .mix
Support for retro audio format hardware simulation
- AdLib Tracker 2 by subz3ro, AdLib MIDI Music Format by Ad Lib Inc., AdLib MIDIPlay File by Ad Lib Inc., AdLib MSCplay, AdLib Visual Composer by AdLib Inc., AMUSIC Adlib Tracker by Elyssis, Apogee IMF File Format, Beni Tracker (PIS), Bob's Adlib Music Format, BoomTracker 4.0 by CUD, Coktel Vision AdLib Music, Creative Music File Format by Creative Technology, DeFy Adlib Tracker by DeFy, Digital-FM by R.Verhaag, DOSBox Raw OPL Format (v0.1 and v2.0), Easy AdLib 1.0 by The Brain (BMF), eXotic ADlib Format by Riven the Mage (incl. Flash, Hybrid, Hypnosis, PSI, rat), eXtra Simple Music by Davey W Taylor, God of Thunder Music by Roy Davis (Adept Software), Herbulot AdLib System / HERAD by Remi Herbulot, HSC Adlib Composer by Hannes Seifert, HSC-Tracker by Electronic Rats, HSC Packed by Number Six / Aegis Corp., JBM Adlib Music Format, Ken Silverman's Music Format, LOUDNESS Sound System, LucasArts AdLib Audio File Format by LucasArts, Master Tracker, MIDI Audio File Format, MKJamz by M \ K Productions, Mlat Adlib Tracker, MPU-401 Trakker by SuBZeR0, Note Sequencer by Lee Ho Bum (sopepos), Origin AdLib Music Format (Ultima 6), Packed EdLib by Vibrants, PALLADIX Sound System, RdosPlay RAW file format by RDOS, Reality ADlib Tracker by Reality (incl. RAD v2), Screamtracker 3 by Future Crew, Sierra's AdLib Audio File Format, Softstar RIX OPL Music Format, Surprise! Adlib Tracker by Surprise! Productions, Surprise! Adlib Tracker 2 by Surprise! Productions, Twin TrackPlayer by TwinTeam, Westwood ADL File Format, XMS-Tracker by MaDoKaN/E.S.G,
Extensions: .a2m .a2t .adl .adlib .agd .amd .as3m .bam .bmf .cff .cmf .d00 .dfm .dmo .dro .dtm .got .ha2 .hsc .hsp .hsq .imf .jbm .ksm .laa .lds .m .mad .mdi .mdy .mid .mkf .mkj .msc .mtk .mtr .pis .plx .rac .rad .raw .rix .rol .sa2 .sat .sci .sdb .snd .sop .sqx .wlf .xad .xms .xsm
Note:
.s3mis exposed as.as3m(the AdLib variant) so it doesn't clash with OpenMPT;.sng,.ims,.musand.vgm/.vgzare intentionally routed to UADE / Vice / GME instead.
Support for MP3 music
Extensions: .mp3
Support for Commodore C64 music (mono and stereo SID chip)
Extensions: .sid .mus .str
Support for AHX and HVL amiga music
Extensions: .ahx .hvl
Support for RAR packed music (primarily SNES)
Extensions: .rsn .rps .rdc .rds .rgs .r64
Support for various ZX Spectrum formats, including Fuxoft AY Language (.fxm) — František Fuka's compiled AY music format ("FXSM" files). The .fxm player is a C++ transliteration of the Fuxoft routines in Sergey Bulba's AY_Emul (the same lineage as the rest of the Ayfly engine); a 64K Spectrum image is rebuilt from the file's origin address and the interpreter runs over it exactly as the original Z80 playroutine does.
Also AY Amadeus (.amad) — ZX Spectrum AY tunes by František Fuka (Fuxoft) and Patrik Rak, stored in the ZXAY container with the AMAD type tag.
Extensions: .ay .psg .asc .stc .psc .sqt .stp .stp2 .pt1 .pt2 .pt3 .vtx .vt2 .zxs .st13 .fxm .amad
Support for additional ZX Spectrum and Sam Coupe formats
Extensions: .st11 .gtr .chi .tfe .psm .ftc
Support for the Sharp X68000 Music Macro Language
Extensions: .mdx (with optional .pdx sample banks)
Support for NEC PC-98 FMP driver Including the OPNA hardware-rhythm drums
Extensions: .opi .ovi .ozi
Support for PxTone Collage music by Studio Pixel
Extensions: .ptcop .pttune
Support for Organya music by Studio Pixel
Extensions: .org
Support for SunVox music by Alexander Zolotov (NightRadio)
Extensions: .sunvox
Support for ProTrekkr music by Franck Charlet (Hitchhikr)
Extensions: .ptk .ntk
Support for FM Towns / PC-98 Eupohony music
Extensions: .eup
Support for MSX music
Extensions: .mgs .bgm .opx .mpk .mbm
Support for Bandai WonderSwan / WonderSwan Color
Extensions: .wsr
Support for Atari XL/XE series POKEY chip PokeyNoise music
Extensions: .pn (more often pn.<song>)
Support for retro hardware Music, including OPNA hardware-rhythm drums
Extensions: .s98
Support for Beepola ZX Spectrum 1-bit beeper music. Each .bbsong is compiled into its engine's data format and the engine's original Z80 player is run on an in-process Z80 core (48K ROM mapped, IM2 interrupts) while the 1-bit speaker (port 0xFE) is sampled to PCM. Supported engines: SFX (Special FX / Fuzz Click), Phaser1 (P1D P1S), Music Box (TMB), and Music Studio (MSD). For the Shiru engines the player is assembled in-repo from vendored Z80 source by a small vendored Z80 assembler; for SFX the player and its complete compiled bytecode format (tone, sustain and percussion) are reproduced from Beepola itself (validated byte-for-byte). This covers ~92% of the Beepola songs on modland. Work in progress: the Savage engine, and Music Studio's low bass range/percussion.
Extensions: .bbsong
Support for Apple IIgs SoundSmith music (Huibert Aalbers, 1989) — the dominant IIgs tracker, driving the legendary Ensoniq 5503 "DOC" 32-oscillator chip. The DOC is emulated in-process (a faithful port of Sean Kasun's BSD-licensed player, rendering at the chip's native 26320 Hz.
Extensions: bare song name + .W (wavebank)
Support for the native 8-channel format of Dan Wilson's !Tracker (1991), an Amiga-Soundtracker-style editor for the original ARM computer.
Extensions: .musx
Support for Coconizer, a sample-based Acorn Archimedes music format (the same VIDC-era family as Archimedes Tracker).
Extensions: .coco
Support for Megatracker, a sample-based Atari ST tracker by Cream.
Extensions: .mgt
Support for SBStudio, a sample-based MS-DOS tracker by Henning Hellstroem (early 1990s).
Extensions: .pac
Support for MaxTrax, a commercial custom Amiga sound engine (multiple packing subformats)
Extensions: .mxtx
Support for STarKos, Targhan / Arkos' AY-3-8912 / YM2149 tracker for the Amstrad CPC (the predecessor of Arkos Tracker).
Extensions: .sks
Support for NerdTracker II, Michel Iwaniec's MS-DOS tracker for the Nintendo NES / Famicom 2A03 (RP2A03) sound chip — a staple of the early NES chiptune scene before FamiTracker. Played at NTSC speed via blargg's NES APU emulation.
Extensions: .ned
Support for SCC-Musixx, Tyfoon-Software's 1990 tracker for Konami's SCC wavetable sound chip on the MSX. The original SCC-MUSIXX replay routine runs on an embedded Z80 core, with its SCC register writes driving the emu2212 SCC emulator.
Extensions: .SNG
Support for Sam Coupé music (the modland "Sam Coupe COP" corpus) for the Philips SAA1099 sound chip. Each .cop file is a SAM Coupé memory image whose Z80 replay routine is either compiled into the song or is the shared E-Tracker player; that original Z80 routine runs on an embedded Z80 core, with its SAA1099 port writes driving Dave Hooper's SAASound emulator. The load and calling convention follow Christopher O'Neill's SCPlayer. (The .cop extension is shared with the zxart E-Tracker variant decoded by ZXTune; routing is by content.)
Extensions: .cop
Support for PlayerPRO, Antoine Rosset's classic Macintosh tracker — the dominant Mac module editor of the 1990s. Played by a minimal slice of PlayerPRO's own public-domain "MADDriver" software synth, driven offline at 44100 Hz. The .mad extension is shared with AdPlug's unrelated Mad Tracker 2 loader, which is content-gated (magic MAD+) so PlayerPRO tunes route here.
Extensions: .mad (MADG/MADF/MADK)
Support for JayTrax (.jxs), Reinier "Rhino" van Vliet's cross-platform software synthesizer + tracker (the engine began as Mugician; the desktop/PocketPC apps were JayTrax and Syntrax). Instruments are samples or synth waveforms shaped by AM/FM/pan/arpeggio modulators, mixed across up to six stereo channels with a stereo echo. Played in-process by the public C port of Rhino's own replayer, rendering at 44100 Hz — not via UADE. The replayer has no explicit upstream license; it was publicly released by the author and is reused by other players (kode54/foobar2000, rePlayer) — see jaytrax/PROVENANCE.md.
Extensions: .jxs
Support for Ixalance (.ixs), an Impulse-Tracker-family format from the (defunct) Shortcut Software Development BV (~2000).
Extensions: .ixs
Support for MONOTONE (.mon), Jim "Trixter" Leonard / Hornet's PC-speaker tracker — up to a dozen square-wave tracks summed into the IBM PC's single 1-bit beeper.
Extensions: .mon
Support for MikMod UNITRK / UNIMOD modules (.uni) — MikMod's own on-disk module format (magic UN0x, e.g. UN05; legacy APUN), into which it could save any module it loaded (the modland MikMod UNITRK/ corpus is mostly FastTracker 2 tunes converted this way). No other engine in the build has a UNIMOD loader (libopenmpt's superficially-similar Load_unic is the unrelated UNIC Tracker; libxmp and libmodplug have none), so these files previously had no decoder. Played by a vendored slice of libmikmod — just the player core, software mixer, UNI loader, depackers and null driver — pulling PCM through libmikmod's virtual mixer. Content-gated to the UN0x/APUN magic so it claims only .uni and never contests the mod-family extensions owned by the OpenMPT/ModPlug/UADE plugins.
Extensions: .uni
Support for FamiTracker modules (.ftm), jsr's tracker for the Nintendo NES / Famicom 2A03 (RP2A03) and its expansion chips — the dominant modern tool for new NES chiptunes (the modland FamiTracker/ corpus). Played in-process by a vendored, boost-free slice of the cross-platform FamiTracker CX engine (nukep), driven synchronously at 44100 Hz; the NES APU + VRC6 / VRC7 / MMC5 / FDS emulation renders mono, duplicated to stereo for the host. See famitracker-cx/PROVENANCE.md.
The .ftm extension is shared with the Atari Face The Music format (magic FTMN), which the OpenMPT plugin handles; FamiTracker is content-gated to its own magic (FamiTracker Module) so the two coexist. Namco 163 (N163) and Sunsoft 5B modules are not yet driven — upstream never wired their channel handlers — and decline gracefully (Skip).
Extensions: .ftm (FamiTracker; Face The Music .ftm routes to OpenMPT)
Support for Sega Saturn and Capcom Q music
Extensions: .ssf .minissf .qsf .miniqsf .spu
Support for Gameboy Advance music
Extensions: .gsf .minigsf
Support for Amiga exotic (Delitracker) formats. The bundled eagleplayers and format database are vendored from UADE 3.05 (zakalwe.fi, 2024-10-06), which adds ~19 new replayers over the previous 2.13-era set (PreTracker, Protracker 4, TCB Tracker, AProSys, Delta Music 1.3, the Prowizard pack family and more).
- ActionAmics AbyssHighestExperience ADPCM-mono AM-Composer AMOS ArtAndMagic Alcatraz-Packer ArtOfNoise-4V ArtOfNoise-8V AudioSculpture BeathovenSynthesizer BenDaglish BenDaglish-SID BladePacker ChipTracker Cinemaware CoreDesign custom CustomMade DariusZendeh DaveLowe DaveLowe-Deli DaveLoweNew DavidHanney DavidWhittaker DeltaMusic2.0 DeltaMusic1.3 Desire DIGI-Booster DigitalSonixChrome DigitalSoundStudio DynamicSynthesizer EMS EMS-6 FashionTracker FutureComposer1.3 FutureComposer1.4 Fred FredGray FutureComposer-BSI FuturePlayer ForgottenWorlds-Game GlueMon EarAche HowieDavies JochenHippel-CoSo QuadraComposer ImagesMusicSystem Infogrames InStereo InStereo2.0 JamCracker JankoMrsicFlogel JasonBrooke JasonPage JeroenTel JesperOlsen JochenHippel JochenHippel-7V Jochen-Hippel-ST KrisHatlelid Laxity LegglessMusicEditor ManiacsOfNoise MagneticFieldsPacker MajorTom Mark-Cooksey Mark-Cooksey-Old MarkII MartinWalker Maximum-Effect MCMD MED Medley MIDI-Loriciel MikeDavies MMDC Mugician MugicianII MusicAssembler MusicMaker-4V MusicMaker-8V MultiMedia-Sound NovoTradePacker NTSP-system Octa-MED Oktalyzer onEscapee PaulRobotham PaulShields PaulSummers PeterVerswyvelen PierreAdane ProfessionalSoundArtists PTK-Prowiz PumaTracker RichardJoseph RiffRaff RobHubbard SCUMM SeanConnolly SeanConran SIDMon1.0 SIDMon2.0 Silmarils SonicArranger SonicArranger-pc-all SonixMusicDriver SoundProgrammingLanguage SoundControl SoundFactory Sound-FX SoundImages SoundMaster SoundMon2.0 SoundMon2.2 SoundPlayer Special-FX Special-FX-ST SpeedyA1System SpeedySystem SteveBarrett SteveTurner SUN-Tronic Synth SynthDream SynthPack SynTracker TFMX TFMX-1.5-TFHD TFMX-7V TFMX-7V-TFHD TFMX-Pro TFMX-Pro-TFHD TFMX-ST ThomasHermann TimFollin TheMusicalEnlightenment TomyTracker Tronic UFO UltimateSoundtracker VoodooSupremeSynthesizer WallyBeben YM-2149 MusiclineEditor Soundtracker-IV Sierra-AGI DirkBialluch Quartet Quartet-PSG Quartet-ST AProSys Anders-Oland Andrew-Parton Ashley-Hogg GMC Janne-Salmijarvi-Optimizer Kim-Christensen Mosh-Packer Nick-Pelling-Packer Paul-Tonge PreTracker Protracker4 RichardJoseph-Player RobHubbard-ST TCB-Tracker TimeTracker Titanics-Packer ZoundMonitor
Extensions (matched as a filename prefix or suffix): .smod .lion .okta .sid .ymst .jb .ast .ahx .thx .adpcm .amc .nt .abk .aam .alp .aon .aon4 .aon8 .adsc .mod_adsc4 .bss .bd .BDS .uds .kris .cin .core .cus .cust .custom .cm .rk .rkb .dz .mkiio .dl .dl_deli .dln .dh .dw .dwold .dlm2 .dm2 .dlm1 .dm1 .dsr .db .digi .dsc .dss .dns .ems .emsv6 .ex .fc13 .fc3 .fc .fc14 .fc4 .fred .gray .bfc .bsi .fc-bsi .fp .fw .glue .gm .ea .mg .hd .hipc .soc .emod .qc .ims .dum .is .is20 .jam .jc .jmf .jcb .jcbo .jpn .jpnd .jp .jt .mon_old .jo .hip .mcmd .sog .hip7 .s7g .hst .kh .powt .pt .lme .mon .mfp .hn .mtp2 .thn .mc .mcr .mco .mk2 .mkii .avp .mw .max .mcmd_org .med .mmd0 .mmd1 .mmd2 .mso .midi .md .mmdc .dmu .mug .dmu2 .mug2 .ma .mm4 .mm8 .mms .ntp .two .octamed .okt .one .dat .ps .snk .pvp .pap .psa .mod_doc .mod15 .mod15_mst .mod_ntk .mod_ntk1 .mod_ntk2 .mod_ntkamp .mod_flt4 .mod .mod_comp .!pm! .40a .40b .41a .50a .60a .61a .ac1 .ac1d .aval .chan .cp .cplx .crb .di .eu .fc-m .fcm .ft .fuz .fuzz .gmc .gv .hmc .hrt .hrt! .ice .it1 .kef .kef7 .krs .ksm .lax .mexxmp .mpro .np .np1 .np2 .noisepacker2 .np3 .noisepacker3 .nr .nru .ntpk .p10 .p21 .p30 .p40a .p40b .p41a .p4x .p50a .p5a .p5x .p60 .p60a .p61 .p61a .p6x .pha .pin .pm .pm0 .pm01 .pm1 .pm10c .pm18a .pm2 .pm20 .pm4 .pm40 .pmz .polk .pp10 .pp20 .pp21 .pp30 .ppk .pr1 .pr2 .prom .pru .pru1 .pru2 .prun .prun1 .prun2 .pwr .pyg .pygm .pygmy .skt .skyt .snt .snt! .st2 .st26 .st30 .star .stpk .tp .tp1 .tp2 .tp3 .un2 .unic .unic2 .wn .xan .xann .zen .puma .rjp .sng .riff .rh .rho .sa-p .scumm .s-c .scn .scr .sid1 .smn .sid2 .mok .sa .sonic .sa_old .smus .snx .tiny .spl .sc .sct .psf .sfx .sfx13 .tw .sm .sm1 .sm2 .sm3 .smpro .bp .sndmon .bp3 .sjs .jd .doda .sas .ss .sb .jpo .jpold .sun .syn .sdr .osp .st .synmod .tfmx1.5 .tfhd1.5 .tfmx7V .tfhd7V .mdat .tfmxpro .tfhdpro .tfmx .mdst .thm .tf .tme .sg .dp .trc .tro .tronic .ufo .mod15_ust .vss .wb .ym .ml .mod15_st-iv .agi .tpu .qpa .sqt .qts .ftm .sdata .dux .aps .arp .ash .bye .dm .hot .js .kim .mod3 .mosh .mus .npp .pat .prt .ptm .rj .sfx20 .tcb .tits .tmk
Support for Commodore 264 series (16 / 116 / Plus/4) TED chip music
Extensions: .prg
Support for streaming audio (AAC and Ogg/Vorbis)
Extensions: .m4a .aac .mp3 .mp4 .ogg
Support for Farbrausch V2 Synthesizer System modules
Extensions: .v2 .v2m
Streams audio directly from YouTube links (youtube.com/ / youtu.be/). The bundled yt-dlp resolves the best audio stream, which is then played back via FFMpeg. This is how the Pouet database plays demoscene production soundtracks.
ChipMachine is my favorite Mac retro chiptune player and I have been using it forever. However, when opening it on my Mac after a recent macOS update, I saw this annoying popup above. It upset me and I channeled that anger into this project.
This is mostly a preservation effort. I am making this project for myself so I am able to continue enjoying listening to my favorite music in a clean and inspirational way the original Chipmachine was providing to me over many many years.
My work here is mostly based around:
- Porting: from Intel to ARM
- Integration: with / adding of various new plugins that did not exist in Intel version
- Content curation: updating / adding more songs and fixing their metadata from various databases)
- Administration: maintenance, releasing, pull requests merging, support, promoting
I don't take or imply any credit for the original idea and implementation and actual players development (the hardest part IMO).
Here is the attribution for the individual emulators, audio players, plugins, and core sub-routines utilized across this project sofar:
- OpenMPT (Tracker Formats): Developed by the OpenMPT Project Team (originally founded by Olivier Lapicque). Licensed under BSD-3-Clause.
- GME / Game Music Emulator (Console Formats): Developed by Shay Green. Licensed under LGPL-2.1-or-later. The
.gbr(Game Boy rip) loader added on top of GME maps the GBR header onto GME's Game Boy emulator; the GBR header format was referenced from gbsplay by Tobias Diedrich, Christian Garbs et al. (GPL-2.0-or-later, https://github.com/mmitch/gbsplay). - VICE (C64/SID emulation): Developed by the VICE Core Team. Licensed under GPL-2.0-or-later.
- UADE (Amiga Exotic formats): Developed by Heikki Orsila and the UADE Team (eagleplayers/format DB vendored from UADE 3.05). Licensed under GPL-2.0-or-later.
- StSound (Atari ST YM2149): Developed by Arnaud Carré (Leonard/Oxygene). Licensed under MIT.
- SC68 (Atari ST/Amiga): Developed by Benjamin Gerard. Licensed under GPL-3.0-or-later.
- AdPlug (PC AdLib/OPL): Developed by Simon Peter and the AdPlug Team. Licensed under LGPL-2.1-or-later.
- Highly Experimental / PSF1/2: Developed by Neill Corlett. Licensed under zlib License.
- AudioOverload Backend / AOSDK: Developed by Richard Bannister and contributors. Licensed under Custom/Freeware permissive license.
- HivelyTracker (AHX/HVL): Developed by IRIS (Peter "Yohng" V, Curt Cool). Licensed under BSD-3-Clause.
- MDX / S98 (PC-98 & Sharp X68000): Emulation engines adapted from OpenMSX/GME variants. Licensed under GPL-2.0-or-later.
- Ayfly (ZX Spectrum AY-3-8910): Developed by Sergey Vladimirov. Licensed under GPL-2.0-or-later. The Fuxoft AY Language (
.fxm) player added here is a C++ transliteration of the FXM routines from AY_Emul by Sergey Bulba (sources made available with the request to credit the author); the format is Frantisek Fuka's (Fuxoft), documented in hisfxmasmproject. The AY Amadeus (.amad) player added here reuses that FXM engine and transliterates AY_Emul'sZXAY/AMADcontainer loader (OpenAYFile); the tunes are by Frantisek Fuka (Fuxoft) and Patrik Rak. - ZXTune (ZX Spectrum / Sam Coupe — Sound Tracker 1.1, Global Tracker, Chip Tracker, TFM Music Maker, Pro Sound Maker, Fast Tracker, E-Tracker): Developed by Vitamin/CAIG; CMake fork by djdron. Licensed under GPL-3.0-or-later.
- 98fmplayer: Developed by areis. Licensed under MIT.
- libkss (MSX KSS): Developed by Mitsutaka Okazaki. Licensed under MIT.
- organya (Cave Story Organya format): Developed by Studio Pixel (Daisuke Amaya). Portions adapted under MIT / Open Source.
- ProTrekkr / NoiseTrekker: Developed by Franck Charlet (Hitchhikr), based on NoiseTrekker by Juan Antonio Argüelles Rius. Licensed under BSD-2-Clause.
- SunVox: Developed by Alexander Zolotov (NightRadio). The SunVox library is free for commercial and non-commercial use.
- libpxtone (PixelTone audio): Developed by Studio Pixel (Daisuke Amaya). Licensed under MIT.
- eupmini (PC-98 EUP audio): Developed by various retro-computing contributors. Licensed under MIT.
- minimp3 (MP3 decoding): Developed by Lieven van den Hauwe. Licensed under CC0-1.0 (Public Domain).
- Sol3 / Pybind11 / fmt (Core Infrastructure): Developed by The Sol3/Pybind11/fmt Maintainers. Licensed under MIT.
- Freetype / Grappix (UI & Text): Developed by The FreeType Project and Grappix contributors. Licensed under FTL / BSD-2-Clause.
- zingzong (Atari ST Quartet format): Developed by Ben G. (benjihan). Licensed under MIT.
- audiodecoder.wsr (Bandai WonderSwan): WonderSwan replayer by Mamiya (NEC V30MZ core derived from MAME/Oswan), as packaged in Kodi's
audiodecoder.wsr. Licensed under GPL-2.0-or-later. - vio2sf (Nintendo DS — .2sf / .mini2sf): NDS emulation core derived from DeSmuME (the DeSmuME Team); maintained reentrant 2SF fork ("vio2sf") by Christopher Snowhill (kode54), as used by foobar2000 / Cog. Licensed under GPL-2.0-or-later.
- ASAP / Another Slight Atari Player (Atari 800 POKEY, PokeyNoise): Developed by Piotr Fusik. Licensed under GPL-2.0-or-later.
- Beepola (ZX Spectrum beeper): The
.bbsongformat and the Beepola tool are by Chris Cowley. Engine players: Phaser1 by Shiru (public domain, from 1tracker); Music Box reverse-engineered from WHAM! The Music Box (original Z80 code by Mark Alexander, 1985); Music Studio reverse-engineered from The Music Studio (original Z80 code by Saša Pušica, 1988); SFX (Special FX / Fuzz Click) reverse-engineered from the game Firefly (original Z80 code by Jonathan Smith / Special FX Software Ltd) — its player and compiled data format reproduced from Beepola. The in-repo Z80 assembler is ported from 1tracker'sz80ass(Shiru). The Z80 CPU core is GME's (Shay Green, LGPL-2.1); the ZX Spectrum 48K ROM is redistributed under Amstrad's emulation permission. - SoundSmith (Apple IIgs): The original SoundSmith tracker is by Huibert Aalbers (1989). The Ensoniq 5503 "DOC" player is a faithful in-process port of the SoundSmith player by Sean Kasun (mrkite). Licensed under BSD-2-Clause.
- Archimedes Tracker (Acorn Archimedes): The original 8-channel !Tracker is by Dan Wilson (1991). Playback uses the libxmp
arch_loaderby Claudio Matsuoka, Hipolito Carraro Jr and contributors. libxmp is licensed under MIT; the arch loader source file carries an LGPL-2.1-or-later header. - Megatracker (Atari ST): Megatracker and its
.mgtformat are by Cream (modlandMegatracker/). Playback uses the libxmpmgt_loaderby Claudio Matsuoka, Hipolito Carraro Jr and contributors, driven through the same shared libxmp slice as Archimedes Tracker / Coconizer. libxmp is licensed under MIT; the loader source file carries an LGPL-2.1-or-later header. - SBStudio (MS-DOS): SBStudio and its
.pacformat are by Henning Hellstroem (early 1990s; modlandSBStudio/). Playback uses a vendored copy of libpac by Thomas Pfaff (http://libpac.sourceforge.net/), an ANSI C library that decodes a module straight to PCM. Licensed under ISC (permissive MIT-style). - MaxTrax (Amiga): The MaxTrax sound engine drives games such as Dark Seed (music by David A. Bean). Playback uses a vendored port of the ScummVM MaxTrax sequencer and Paula mixer, by the ScummVM Team. Licensed under GPL-3.0-or-later.
- STarKos (Amstrad CPC): STarKos is the AY-3-8912 / YM2149 CPC tracker by Targhan / Arkos, predecessor of Arkos Tracker. Playback uses a vendored non-GUI slice of the Arkos Tracker 3 source by Julien Névo — the author's own
.sksimporter plus theSongPlayerengine andPsgStreamGeneratorsoftware AY/YM renderer (the same path as AT3's headlessSongToWavtool). Arkos Tracker 3 is licensed under MIT; it is built on three ISC-licensed JUCE core modules (juce_core,juce_events,juce_audio_basics) by Raw Material Software / the JUCE team. - NerdTracker II (NES / Famicom): The original NerdTracker II tracker is by Michel Iwaniec ("Bananmos"). Playback uses the player/loader core of the NerdTracker 2 SDL port by thefox (Mika Keränen), which drives blargg's (Shay Green) Nes_Snd_Emu 2A03 APU emulation — the same lineage as GME above. The vendored Nes_Snd_Emu (0.1.7) is licensed under LGPL-2.1; the NerdTracker II and SDL-port code is used with attribution. We clock the APU at NTSC speed (the port's bundled
Simple_Apu_PALused the PAL clock, which played notes ~a semitone flat). - SCC-Musixx (MSX): SCC-Musixx and its
.SNGformat are by Tyfoon-Software (M. Spoor, 1990); the original "MUSIXX REPLAY ROUTINE v1.2" (REPLAY.BIN, freeware, distributed via the MSX Resource Center) is embedded and run unmodified. The Konami SCC sound chip is emulated by emu2212 by Mitsutaka Okazaki (MIT, the same vendored copy used by libkss). The Z80 CPU core is GME's (Shay Green, LGPL-2.1). - PlayerPRO (Macintosh): PlayerPRO and its
MADG/MADF/MADKmodule formats are by Antoine Rosset, who released the source to the Public Domain. Playback uses a minimal slice of PlayerPRO's own "MADDriver" software-synth engine (from the MaddTheSane/PlayerPRO mirror), vendored at repo-rootplayerpro/and driven offline in itsNoHardwareDrivermode. The chipmachine-specific glue — a static loader registry replacing the dlopen scanner, inert stubs for the Mac CoreAudio/Finder entry points, and two small header patches — is documented inplayerpro/PROVENANCE.md. - DSIK "old" Internal Format (
.dsmv1): libopenmpt decodes the newer DSIK "RIFF" and Dynamic Studio.dsmvariants but not the original DSIK Internal Format (DSM+ 0x10, e.g. the Necros demoscene tunes). Support for that variant is a local patch to the vendored libopenmptLoad_dsm.cpp, with the loader adapted from MilkyTracker'sLoaderDSMv1(milkyplay/LoaderDSM.cpp) by the MilkyTracker Team. Playback itself reuses libopenmpt's existing DSIK engine. Licensed under BSD-3-Clause. - Onyx Music File (
.omf): the MOD-like Amiga format of the 1993 Onyx musicdisk Jangle (modlandOnyx Music File/, 24 tunes). No standalone replayer ever existed. Support is a chipmachine-local loader,soundlib/Load_omf.cpp, added to the vendored libopenmpt and written from the byte-level format specification reverse-engineered by Martin Bazley (swirlythingy) on 6 December 2009 (archived in modland'sdocuments/format_documentation/). Playback reuses libopenmpt's existing MOD engine. Licensed under BSD-3-Clause (consistent with the surrounding libopenmpt soundlib). - MONOTONE (IBM PC speaker): MONOTONE and its
.monformat are by Jim "Trixter" Leonard of Hornet. Playback uses PTPlayer by Michal Procházka — the player library for the modern Polytone tracker, which also loads legacy Monotone files (and the.polformat). Licensed under BSD-3-Clause. - MikMod UNITRK / UNIMOD (
.uni): the UNIMOD on-disk format and its reader are part of libmikmod, originally by Jean-Paul Mikkers ("MikMak") and Jake Stine, maintained by the libmikmod team (Raphaël Assenat, Ozkan Sezer and others). A minimal slice of libmikmod 3.3.13 is vendored atmusicplayer/src/plugins/mikmodplugin/libmikmod/(player core + virtual mixer +load_uni+ depackers + null driver only). Licensed under LGPL-2.1-or-later. The vendored sources are unmodified; the chipmachine glue registers only the UNI loader and null driver and pulls PCM via the virtual mixer. - Ixalance (
.ixs): the format and its original Win32 player are by Shortcut Software Development BV (~2000); the music is by Maarten van Strien. The original sources are lost, so playback uses webixs — Juergen Wothke's native C++ reimplementation reverse-engineered with Ghidra from the surviving Win32 player (https://bitbucket.org/wothke/webixs), vendored at repo-rootwebixs/and built with-DLINUX(the non-Win32 path) so its pull-style render API is exposed. The format synthesizes and zlib-compresses its own wavetables, hence the zlib dependency. Licensed CC BY-NC-SA 4.0 (NonCommercial) — the only NonCommercial component in the project; seewebixs/LICENSE. (Built with-fsigned-char, like PlayerPRO, since the decompiled code relies on signed-char semantics.)
Chipmachine is a combined work distributed under the GNU General Public License v3.0
(or at your option, any later version) due to its underlying emulation dependencies.
- Original Program, Core Architecture: Copyright (c) 2022 Jonas Minnberg. Licensed under the MIT License.
- Apple Silicon Port, Additional Plugins, Database Enhancements: Copyright (c) 2026 Mihailo Despotović. Licensed under GPL-3.0.
- Atari ST/Amiga Emulation (SC68): Licensed under GPL-3.0-or-later (forces overall project license).
- C64/A500 Emulation (VICE, UADE): Licensed under GPL-2.0-or-later.
- Other Components: See the
LEGALfile for a complete matrix of MIT, BSD, and LGPL dependencies.
