C64 SID Player

Voor en door inwoners van Dordrecht

Gestopt
Papendrechtsebrug weer open in 277 dagen
Zaterdag 18 Juli 07:39:1218°80%
Taal
Thema
HVSC · chiptune

C64 SID Player

Speel meer dan 61.000 SID-tunes uit de High Voltage SID Collection — rechtstreeks in de browser.

**** COMMODORE 64 SID PLAYER V1.0 — WEBSID ****WASM ENGINE
TITLE :███TIME:0:00
AUTHOR:███TUNE:1/?
CHIP :SIDSPEED:PAL
INFO :███
VOICE 1─────
A:  D:  S:  R:
ENV
VOICE 2─────
A:  D:  S:  R:
ENV
VOICE 3─────
A:  D:  S:  R:
ENV
VOL:100%
STEREO:REVERB:0%
PAN   :V1LRV2LRV3LR
── DIRECTORY BROWSER ─────────────────────────────────────────────
── FAVORITES ─────────────────────────────────────────────────────
SPC=PLAY   F=FAVORIET   S=SHUFFLE   ESC=STOP    PIJLEN: LR=SUBTUNE   UD=VOLUME

SID-tunes: De Iconische Muziek van de Commodore 64

SID-tunes zijn muzikale composities gemaakt voor de MOS Technology 6581/8580 SID-chip (Sound Interface Device), de legendarische geluidsprocessor van de Commodore 64. De SID-chip werd in 1981 ontworpen door Bob Yannes en maakte zijn debuut in januari 1982. De chip combineerde op unieke wijze digitale en analoge technologie en gaf de C64 een geluid dat computers van die generatie ver vooruit was.

De SID-chip: technische specificaties

De chip bood drie volledig onafhankelijk programmeerbare oscillatoren, elk met vier golfvormen:

Elke stem beschikt bovendien over een ADSR-envelop (Attack, Decay, Sustain, Release), een ring-modulator voor complexe interferentie-effecten, hard sync voor frequentiemodulatie en een gedeeld multimode filter (lowpass, highpass, bandpass, 30 Hz–12 kHz).

De twee chip-versies: 6581 en 8580

De originele 6581 (1982) draaide op 12 V en had een licht zoemende filterkarakteristiek die door velen als het "echte" C64-geluid wordt beschouwd. De latere 8580 (1987) draaide op 9 V, had een schonere filterrespons en een lagere ruisvloer. Veel klassieke tunes klinken op beide chips merkbaar anders — de 6581 voegt warmte toe die de 8580 mist. Deze player toont het gedetecteerde chip-model rechts in het info-blok zodra een tune geladen is.

Bekende componisten

De demoscene en de spelenindustrie brachten een generatie componisten voort die de limieten van drie stemmen tot het uiterste dreven:

The High Voltage SID Collection (HVSC)

De HVSC is een van de grootste computermuziekcollecties ter wereld. Opgericht in 1996 en sindsdien onderhouden door een team van vrijwilligers, bevat de collectie inmiddels meer dan 61.000 SID-bestanden van duizenden componisten. Alle nummers zijn gecategoriseerd per componist en inclusief metadata (titel, jaar, chip-model, speelduur). Deze player gebruikt de volledige HVSC-collectie, rechtstreeks bereikbaar via de directory browser.


Technische implementatie

WebSID: cycle-exact WASM-emulatie

Deze player gebruikt WebSID, een cycle-exacte SID-emulator van Jürgen Wothke, gecompileerd naar WebAssembly via Emscripten. Anders dan JavaScript-emulators die per sample benaderen, voert WebSID elke klokcyclus uit zoals de echte 6510-processor die zou doorlopen — inclusief timing-afhankelijke effecten, filtergedrag en envelope-nuances die cycle-exacte nauwkeurigheid vereisen. De WASM-module draait in een Web Audio ScriptProcessorNode en levert 44,1 kHz stereo audio.

ScriptNodePlayer & SIDBackendAdapter

De WebSID-bibliotheek bestaat uit twee lagen:

De adapter biedt naast afspelen ook uitgebreide controle over het geluid:

MethodeFunctie
getSIDRegister(chip, reg)Lees één SID-register (0–24) live uit de emulator
readVoiceLevel(chip, voice)Huidige envelop-amplitude (0–255) per stem
setStereoLevel(0–32767)Stereo-verbreding (matrix-stereo algoritme)
setHeadphoneMode(0/1)Koptelefoon-crossfeed voor ruimtelijker geluid
setReverbLevel(0–100)Digitale galm over de mix
setPanning(chip, voice, 0.0–1.0)Per-stem panorama
enableVoice(chip, voice, bool)Stem aan/uitzetten (voor muten)
isSID6581() / isNTSC()Chip-model en klokdetectie uit SID-header

Registers lezen voor de visualizer en voice-status

De SID-registerruimte heeft per stem 7 registers, te lezen via getSIDRegister(0, base + offset):

OffsetInhoud
+0, +1Frequentie (16-bit, LSB eerst)
+2, +3Pulswijdte (12-bit)
+4Control register (golfvorm bits 4–7, gate bit 0)
+5Attack (bits 4–7) / Decay (bits 0–3)
+6Sustain (bits 4–7) / Release (bits 0–3)

Stem 1 begint op register 0, stem 2 op 7, stem 3 op 14. De golfvorm-bits in het control-register:

Elke animatieframe leest de canvas-visualizer de registers uit, berekent een getriggerde golfvorm (fase altijd startend bij 0 voor een stabiel scope-beeld) en tekent deze met een glow-pass en een kern-lijn in de kleur van de betreffende stem.

Voice-status panel

Onder de canvas toont een HTML-panel live de registerinhoud per stem, bijgewerkt via setInterval op 100 ms:

Ghost-noot in de canvas

Wanneer een stem actief is (envelop > 3%), wordt de nootnaam als grote, semi-transparante achtergrondtekst gerenderd in de golfvorm-sectie. De transparantie schaalt mee met de envelop-amplitude, zodat noten zachter uitfaden bij een lange release-fase.

Licenties

WebSID is gepubliceerd onder de LGPL v2.1, scriptprocessor_player.js onder de MIT-licentie. Beide bibliotheken worden ongewijzigd gebruikt — de volledige register-API is onderdeel van de publieke interface en vereist geen aanpassingen aan de broncode.