Quarant'anni dopo, il SID suona ancora.
Un player desktop per i brani .sid del Commodore 64, con l'interfaccia ispirata
al Datasette VC-1530: cover dei giochi, playlist HVSC, contatore a nastro
e integrazione con Touch Bar e Control Center su macOS.
In riproduzione: Martin Galway, "Rambo: First Blood Part II" (1985 Ocean) — subsong 1 di 23.
- Quick start
- Perché SIDPlayer
- Caratteristiche
- Configurazione
- Playlist
- Interfaccia
- Now Playing su macOS
- Compilare l'app bundle (macOS)
- Risoluzione problemi
- STIL
- Roadmap
- Contribuire
- Crediti
- Licenza
# 1. Il motore audio
brew install sidplayfp # macOS
# sudo apt install sidplayfp # Linux (Debian/Ubuntu)
# 2. Il player
git clone https://github.com/ezradibiase/sid_player.git
cd sid_player
pip install -r requirements.txt
# 3. Musica.
python3 sidplayer.pyClicca LOAD, scegli un file .sid (o una playlist), premi PLAY. Fine.
⚠️ SIDPlayer è testato e supportato pienamente su macOS. Il supporto per Linux e Windows è in beta — il codice ha fallback per quelle piattaforme, ma non è mai stato testato in profondità. Segnala problemi su GitHub Issues.
Su Windows: scarica sidplayfp da SourceForge,
poi doppio clic su launchers/start_sidplayer.bat. Su macOS puoi anche rendere
eseguibile launchers/start_sidplayer.command e aprirlo dal Finder.
Il font C64 Pro Mono è opzionale ma consigliato: senza, viene usato Courier come fallback.
Il SID (MOS 6581/8580) è il chip audio del Commodore 64, e la High Voltage SID Collection ne conserva oltre 50.000 brani. Per ascoltarli esistono già ottimi strumenti — emulatori, player da riga di comando, servizi online come DeepSID.
Questo è semplicemente il player che ho costruito per il mio uso personale: riproduce
i .sid con sidplayfp, mostra la cover del gioco e i titoli dei subsong dal database
STIL, si integra con i controlli multimediali di sistema, e ha la faccia del
registratore a cassette con cui quei brani si caricavano nel 1985 — perché mi ci
sono affezionato e volevo un player che gli somigliasse.
Riproduzione
- File
.sid(PSID/RSID) viasidplayfp, con durate dal database HVSC Songlengths - Navigazione subsong (◄ / ►) con lettura del default song dall'header SID
- Playlist personalizzate e in formato standard HVSC (anche liste "ranked" come le Top100)
- Shuffle attivabile/disattivabile a runtime (bottone SHUF)
- Controllo volume in tempo reale, mute, pausa/ripresa
- Selezione del device di output audio, incluse casse Bluetooth
Estetica Datasette
- Interfaccia ispirata al Commodore Datasette VC-1530: finestrella con bezel metallico, decorazione AUTO STOP, contatore a nastro a 3 cifre animato
- Cover del gioco da IGDB e RAWG (opzionale, con API key)
- Titoli dei subsong dal database STIL
- Boot screen easter egg in stile BASIC V2 all'avvio 😉
Integrazione macOS
- Control Center: titolo e artista nel widget musica
- Touch Bar: play/pause, traccia precedente/successiva
- Tasti F-media (F7/F8/F9) e Siri
Il file di configurazione viene creato automaticamente nella posizione canonica per la piattaforma:
| Sistema | Percorso |
|---|---|
| macOS | ~/Library/Application Support/SIDPlayer/sidplayer.cfg |
| Linux | ~/.config/SIDPlayer/sidplayer.cfg |
| Windows | %APPDATA%\SIDPlayer\sidplayer.cfg |
Per personalizzarlo, copia il file di esempio nella posizione corretta:
# macOS
cp sidplayer.cfg.example ~/Library/Application\ Support/SIDPlayer/sidplayer.cfgStruttura di sidplayer.cfg:
[paths]
# Directory dove salvare le copertine scaricate
images_dir = ~/Pictures/SIDPlayer
# File playlist caricato automaticamente all'avvio
playlist_file = playlist.txt
# Root locale della collezione HVSC, necessaria solo per playlist con
# path HVSC-relativi (vedi sezione Playlist)
hvsc_root =
# Percorso STIL.txt (lascia vuoto per ricerca automatica)
stil_path =
[api]
# RAWG.io API Key (opzionale)
rawg_api_key =
# IGDB Credentials (opzionale, consigliato per le copertine)
igdb_client_id =
igdb_access_token =
[player]
# Comando sidplayfp (deve essere nel PATH)
sidplay_cmd = sidplayfp
# Ordine casuale (true) o sequenziale (false) delle playlist
shuffle = true
[window]
width = 640
height = 580
resizable = falseSenza API key il player funziona normalmente, ma non scarica le copertine dei giochi.
IGDB (consigliato):
- Vai su https://dev.twitch.tv/console/apps e crea un'applicazione
- Copia Client ID e genera un Access Token
- Inseriscili in
sidplayer.cfg
RAWG.io (alternativa):
- Vai su https://rawg.io/apidocs e richiedi una API key gratuita
- Inseriscila in
sidplayer.cfg
Crea un file di testo con un file SID per riga:
# I commenti iniziano con #
/percorso/assoluto/Commando.sid
/percorso/assoluto/LastNinja.sid:2
~/Music/SID/Hubbard_Rob/International_Karate.sid:1
Il numero dopo i due punti specifica il subsong (traccia). Se omesso, viene letta la subsong di default dichiarata nell'header del file SID stesso.
Per usare una playlist come default all'avvio, imposta playlist_file in sidplayer.cfg.
SIDPlayer riconosce anche il formato usato dalle liste ufficiali HVSC (es. Top100 di LaLa), dove i file sono elencati con path relativi alla root della collezione, senza indicazione di subsong:
/Galway_Martin/Wizball.sid
/Daglish_Ben/Last_Ninja.sid
Sono supportati anche i file con numerazione di posizione (formato "ranked"), es.:
1. /Galway_Martin/Wizball.sid
2. /Daglish_Ben/Last_Ninja.sid
Per farli funzionare, imposta hvsc_root in sidplayer.cfg con il percorso della tua
copia locale della collezione HVSC:
[paths]
hvsc_root = ~/Music/C64MusicUn path HVSC-relativo viene risolto contro hvsc_root solo se non esiste già come path
assoluto sul filesystem, quindi le playlist con path assoluti funzionano invariate.
Nota: la struttura delle cartelle HVSC è cambiata nel tempo (le versioni recenti nidificano gli autori sotto
MUSICIANS/<lettera>/). Le liste storiche come i vecchi Top100 potrebbero non combaciare con una copia HVSC recente senza adattare i path.
Il pannello centrale, ispirato alla finestrella trasparente del Datasette, mostra:
- Cover del gioco (da IGDB o RAWG) a sinistra
- Titolo, subtitle STIL, autore, anno di rilascio e numero traccia a destra
- Cornice esterna e incavo interno colorati per richiamare il bezel metallico e lo sportello della cassetta del Datasette originale, con decorazione "AUTO STOP"
- Il badge Commodore nella barra di trasporto include un contatore a 3 cifre animato con etichetta COUNTER
| Pulsante | Funzione |
|---|---|
| LOAD | Carica file SID o una playlist |
| OUT | Seleziona il device di output audio |
| ABOUT | Informazioni sull'applicazione |
| SHUF | Attiva/disattiva l'ordine casuale della playlist (verde = attivo) |
| VOL | Slider volume (0–100%) |
| M | Mute / unmute |
| Pulsante | Funzione |
|---|---|
| ◄◄ PREV | Torna al brano precedente (risuona il primo se già al primo) |
| ▶ PLAY / ⏸ PAUSE | Avvia la riproduzione; durante il play alterna pausa e ripresa |
| ▶▶ NEXT | Passa alla traccia successiva |
| ■ STOP | Ferma la riproduzione |
I file SID possono contenere più tracce (subsong). Durante la riproduzione, se il file ha più subsong, appare una riga con:
◄ Subsong N / M ►
- ◄ / ► — passa al subsong precedente/successivo (circolare)
- N / M — subsong corrente su totale
Il subsong viene ricaricato istantaneamente senza perdere la posizione in playlist. La riga scompare quando si ferma la riproduzione o se il file ha un solo subsong.
Per chiudere l'applicazione usa la ✕ del window manager (la finestra salva lo stato correttamente).
Il pulsante OUT apre un popup con tutti i device audio disponibili nel sistema. Permette di separare l'audio del player dall'audio di sistema. Il device selezionato viene usato dalla traccia successiva in poi.
Su macOS, SIDPlayer si integra con i controlli multimediali del sistema operativo:
- Control Center — mostra titolo e artista del brano in corso nel widget musica
- Touch Bar — controlli play/pause, traccia precedente e successiva
- Tasti F-media (F7 / F8 / F9) — controllano la riproduzione
- Siri — può mettere in pausa o riprendere la riproduzione
L'integrazione usa MPNowPlayingInfoCenter e MPRemoteCommandCenter del framework
Apple MediaPlayer, accessibile tramite PyObjC (già incluso in macOS — nessuna
dipendenza aggiuntiva richiesta).
Su Linux e Windows la funzionalità è disabilitata silenziosamente.
Per creare un'app .app autonoma per macOS:
pip install pyinstaller
cd scripts
pyinstaller SIDPlayer.specL'app viene creata in scripts/dist/SIDPlayer.app.
Durata dei brani: come funziona
SIDPlayer usa il flag -os di sidplayfp (single track mode): ogni brano viene suonato
una volta sola e poi sidplayfp termina automaticamente in base alla durata
registrata nell'HVSC Songlengths database.
Per farlo funzionare correttamente, scarica la HVSC (vedi sezione STIL) e imposta il
percorso del database in ~/.config/sidplayfp/sidplayfp.ini:
[SIDPlayfp]
Songlength Database = /percorso/a/HVSC/DOCUMENTS/Songlengths.md5"sidplayfp not found"
Installa sidplayfp (vedi Quick start) e verifica che sia nel PATH:
which sidplayfpSe è in un percorso non standard, impostalo in sidplayer.cfg:
[player]
sidplay_cmd = /opt/homebrew/bin/sidplayfpLe copertine non vengono scaricate
- Verifica che le API key siano configurate in
sidplayer.cfg - Controlla la connessione internet
- I log si trovano in
sidplayer_debug.log
Il font non è quello C64
Installa il font C64 Pro Mono e riavvia l'app. Senza di esso viene usato Courier come fallback.
Log di debug
tail -f sidplayer_debug.logPer abilitare output verbose nel terminale:
python3 sidplayer.py -dSTIL contiene titoli e note sui subsong dell'HVSC. Per usarlo:
- Scarica la HVSC da https://www.hvsc.c64.org/
- Imposta il percorso di
STIL.txtinsidplayer.cfg, oppure mettilo in una delle posizioni cercate automaticamente:./STIL.txt~/Music/HVSC/STIL.txt~/HVSC/STIL.txt
- Drag & drop di file e playlist sulla finestra (#3)
- Browser HVSC integrato per esplorare la collezione dal player (#4)
- Finestra Preferenze (⌘,) per configurare senza editare file (#9)
- Test e supporto completo per Linux e Windows (#7)
La cronologia completa delle versioni è nel CHANGELOG.
Issue e pull request sono benvenute — il flusso è quello classico:
- Apri una issue per discutere bug o proposta
- Crea un branch (
feature/nome-featureofix/nome-fix) - Apri una PR verso
main
Se usi SIDPlayer su Linux o Windows, ogni segnalazione è preziosa: il supporto è in beta proprio perché mancano test sul campo.
| Codice | ezrad & IA — 2026 |
| Musica | Hubbard, Galway, Tel, Daglish & the SID legends |
| Chip SID | Bob Yannes, MOS Technology, 1982 |
| Collezione | HVSC — High Voltage SID Collection |
| Motore audio | sidplayfp |
| Font | C64 Pro Mono |
Altri link: IGDB API · RAWG.io API
MIT — vedi LICENSE.
"Commodore" e il logo Commodore sono marchi dei rispettivi proprietari. Questo progetto è un'opera fan indipendente e non è affiliato, approvato o connesso a Commodore Business Machines Ltd o a qualsiasi entità correlata.