sslxy

sid

MOS 6581 / 8580 – drie stemmen, één analoge filter en meer eigenaardigheden dan het datablad verraadt.

De SID is een analoge chip in een digitaal systeem. Dat is de kern van zijn eigenaardigheid – en de reden waarom hij tot op vandaag zo moeilijk exact te emuleren is. Bob Yannes ontwikkelde hem bij MOS Technology en bracht concepten uit de synthesizerwereld naar een homecomputer-chip. Het resultaat was geen perfect controleerbaar onderdeel, maar een systeem met karakter: temperamentvol, exemplarafhankelijk en juist daardoor klankmatig interessant.

Deze pagina is geen introductie voor beginners. Ze gaat ervan uit dat men weet wat een oscillator is, en richt zich op wat achter de officieel gedocumenteerde functies ligt: gecombineerde golfvormen, ADSR-eigenaardigheden, het filterkarakter van de 6581 tegenover de 8580, digi-sampletechnieken en alles wat programmeurs en componisten in tientallen jaren uit deze chip hebben gehaald.

System Diagnostic

> SID CHIP ANALYSIS
CHIP MOS 6581 (12V) / MOS 8580 (9V) – Sound Interface Device ONTWERPER Bob Yannes / MOS Technology – 1982 STEMMEN 3 onafhankelijke stemmen met elk een eigen oscillator, ADSR en golfvormkeuze FILTER analoge multimode-filter (LP / BP / HP / notch-achtige combinaties) REGISTERS 29 gebruikte registers in het bereik $D400–$D41C, inclusief schrijf- en leesregisters KLOKSNELHEID PAL: 985.248 Hz / NTSC: 1.022.727 Hz BIJZONDERHEID analoge filter + gecombineerde golfvormen + uitleesbare oscillator- en envelope-status van Voice 3
Geen puur digitale bouwsteen. Dat maakt hem onrustiger – en onvervangbaar.
[hardware/architecture]

Architectuur: drie stemmen, één chip

De SID bestaat uit drie identiek opgebouwde stemblokken, een gemeenschappelijke analoge filter, een volume-/filterstuurregister en een klein bereik voor analoge ingangen en statusuitlezing. Elke stem bevat een golfvormgenerator met 24-bits fase-accumulator, een envelopegenerator (ADSR), een golfvormselectie en stuurbits voor speciale functies.

De drie stemmen delen dezelfde analoge filter, die nageschakeld is. Welke stemmen naar de filter worden gerouteerd en hoe die geconfigureerd is, bepaalt een eigen registerblok. De uitgang van de filter – en de directe uitgang van niet-gefilterde stemmen – wordt via het volumeregister geschaald en naar de audio-uitgang gestuurd.

Belangrijk: de SID is een gemengd analoog-digitaal systeem. De golfvormopwekking is digitaal, maar uitgangstrappen, filter en delen van de envelope-logica gedragen zich exemplarafhankelijk. Dat heeft hoorbare gevolgen. Twee ogenschijnlijk gelijke SID-chips kunnen hoorbaar verschillend klinken. Dat geldt vooral voor de filter.

; SID signaalstroom per stem
;
Frequentieregister (16 bit)
→ 24-bits fase-accumulator
→ golfvormgenerator (driehoek / zaagtand / puls / ruis)
→ uitgangstrap van de stem
→ envelope-aansturing / volumeverloop
→ optionele filter-routing
→ gemeenschappelijke analoge filter
→ volumeregister / audio-uitgang
[hardware/registers]

Registeroverzicht volledig

De SID gebruikt in de C64-adresruimte de posities $D400–$D41C. In totaal zijn er 29 gebruikte registers. De meeste daarvan zijn schrijfbaar; vier registers zijn leesbaar. De drie overige adressen binnen het venster van 32 bytes zijn ongebruikt of niet gedefinieerd.

Adres Naam Beschrijving
$D400V1 FREQ LOStem 1 frequentie, onderste 8 bits
$D401V1 FREQ HIStem 1 frequentie, bovenste 8 bits
$D402V1 PW LOStem 1 pulsbreedte, onderste 8 bits
$D403V1 PW HIStem 1 pulsbreedte, bovenste 4 bits (bits 4–7 worden genegeerd)
$D404V1 CTRLStem 1 stuurregister: bit 0=Gate, 1=Sync, 2=Ring, 3=Test, 4=Tri, 5=Saw, 6=Pulse, 7=Noise
$D405V1 ADStem 1 Attack (bits 4–7) / Decay (bits 0–3)
$D406V1 SRStem 1 Sustain (bits 4–7) / Release (bits 0–3)
$D407–$D40DV2 …Stem 2, identieke opbouw als stem 1
$D40E–$D414V3 …Stem 3, identieke opbouw als stem 1
$D415FC LOFilter-cutoff, onderste 3 bits (bits 3–7 worden genegeerd)
$D416FC HIFilter-cutoff, bovenste 8 bits – samen 11 bits
$D417RES/FILTBits 4–7: resonantie / bit 3: Ext In / bit 2: Voice 3 filteren / bit 1: Voice 2 filteren / bit 0: Voice 1 filteren
$D418MODE/VOLBit 7: Voice 3 uit direct mengpad verwijderen / bit 6: HP / bit 5: BP / bit 4: LP / bits 0–3: volume
$D419POT XLeesbaar: paddle/joystick-as X (analoog, 8 bit)
$D41APOT YLeesbaar: paddle/joystick-as Y (analoog, 8 bit)
$D41BOSC3Leesbaar: actuele oscillator-3-waarde
$D41CENV3Leesbaar: actuele envelope-waarde van stem 3
[hardware/oscillators]

Oscillatoren en golfvormen

Elk van de drie SID-stemmen heeft een 24-bits fase-accumulator, die per klokcyclus met de waarde van het 16-bits frequentieregister wordt verhoogd. Wanneer de accumulator overloopt, begint hij opnieuw. Uit deze accumulator worden de golfvormen afgeleid.

Zaagtand

De meest directe golfvorm: de accumulatorwaarde wordt als stijgende ramp gebruikt. Het resultaat is boventoonrijk, helder en geschikt voor veel bas- en leadsounds.

Klankindruk: scherp, duidelijk, veel harmonischen.

Driehoek

De tweede helft van de golf wordt gespiegeld. Daardoor ontstaat een symmetrische driehoeksvorm met een zachter boventoonspectrum dan de zaagtand.

Klankindruk: rustiger, fluitachtig, minder scherp.

Rechthoek (Pulse)

De accumulator wordt vergeleken met het pulsbreedteregister. Daaruit ontstaat een rechthoekgolf met variabele pulsbreedte. De pulsbreedte kan tijdens het afspelen gemoduleerd worden.

Klankindruk: afhankelijk van de breedte hol, scherp of nasaal.

Ruis

De ruis is gebaseerd op een LFSR. Het is geen echte willekeurige ruis, maar deterministisch, en klinkt toch chaotisch genoeg voor percussie, effecten en toevalsbronnen.

Klankindruk: van korrelig tot dicht, afhankelijk van de frequentie-instelling.

Pulsbreedtemodulatie

De pulsbreedte van de rechthoek-oscillator kan tijdens het afspelen veranderd worden. Dat levert de typische PWM-klank van veel C64-stemmen op. In de praktijk gebeurt dit meestal via raster- of timer-routines die het pulsbreedteregister in kleine stappen verschuiven.

[hardware/frequency]

Frequentieberekening

De frequentie van een SID-toon volgt uit de waarde van het frequentieregister en de klokfrequentie van het systeem. Voor PAL en NTSC gelden verschillende constanten, omdat de SID aan de respectieve systeemklok hangt.

; Frequentieformule
;
Fuit = FREG * FCLK / 16.777.216
;
FREG = Fuit * 16.777.216 / FCLK
;
; PAL: FCLK = 985.248 Hz
; NTSC: FCLK = 1.022.727 Hz
;
; Voorbeeld: stemtoon A4 = 440 Hz op PAL
; FREG ≈ 7.493 = $1D45

De praktische consequentie: voor zuiver gestemde tabellen moet men PAL en NTSC onderscheiden. Wie op beide systemen dezelfde frequentiewaarden gebruikt, krijgt licht verschillende toonhoogten.

Noot Frequentie (Hz) FREG (hex) FREG (dec)
C3130,81$08B32227
A3220,00$0EA23746
C4261,63$11674455
A4440,00$1D457493
C5523,25$22CE8910
A5880,00$3A8914985
C61046,50$459C17820
[hardware/adsr]

ADSR-envelope

Elke SID-stem heeft een eigen envelope met de vier fasen Attack, Decay, Sustain en Release. Het Gate-bit start de envelope en beëindigt haar weer. De tijdwaarden worden niet lineair, maar via interne stapreeksen gerealiseerd.

Waarde (0–15) Attack-tijd Decay/Release-tijd
02 ms6 ms
18 ms24 ms
216 ms48 ms
324 ms72 ms
438 ms114 ms
556 ms168 ms
668 ms204 ms
780 ms240 ms
8100 ms300 ms
9250 ms750 ms
10500 ms1,5 s
11800 ms2,4 s
121 s3 s
133 s9 s
145 s15 s
158 s24 s

De Sustain-waarde is geen aparte tijdwaarde, maar een niveau waarop de envelope na de Decay blijft staan zolang Gate actief blijft. Pas bij Gate-off begint de Release-fase.

[hardware/adsr_behavior]

ADSR-eigenaardigheden

De SID gedraagt zich bij snel retriggeren van noten niet altijd ideaal. Dat is in de praktijk belangrijker dan elke abstracte beschrijving. Wie een stem te snel opnieuw triggert, kan onbedoelde envelope-verlopen krijgen. Juist daarom werken veel routines met kleine veiligheidsafstanden of gebruiken ze het Test-bit voor een schone reset.

Snel retriggeren

Wordt Gate zeer snel uit- en weer ingeschakeld, dan begint de nieuwe envelope niet in alle gevallen zo schoon als men zou verwachten. In de praktijk betekent dat: vooral bij percussieve klanken en snelle arpeggio’s moet men weten dat de SID hier geen streng ideaal gedrag vertoont.

Sustain- en Release-gedrag

Veranderingen van Sustain en Release tijdens het afspelen werken niet als harde sprongen van een digitaal module. De overgang blijft ingebed in de lopende envelope-toestand. Dat is klankmatig vaak nuttig, technisch echter alleen goed beheersbaar wanneer men het gedrag van het eigen chipexemplaar kent.

; Schone retrigger met Test-bit
;
LDA #$00
STA $D404 ; Gate uit, golfvorm uit
LDA #$08
STA $D404 ; Test-bit zetten
LDA #$20
STA $D404 ; Test uit, golfvorm voorbereiden
LDA #$21
STA $D404 ; Gate aan, noot start gedefinieerd
[hardware/combined_waveforms]

Gecombineerde golfvormen

Het datablad beschrijft vier golfvormen. In de praktijk kunnen meerdere golfvormbits tegelijk gezet worden. Daaruit ontstaan gecombineerde golfvormen, die niet als officieel ontworpen klankvoorraad zijn gedocumenteerd, maar op echte hardware duidelijk hoorbaar en muzikaal bruikbaar zijn.

  • Driehoek + rechthoek: holle, houtachtige klank, vaak bruikbaar voor karakteristieke leads en middentexturen.
  • Zaagtand + rechthoek: helderder, agressiever, goed voor scherpe leads en harde synthklanken.
  • Driehoek + zaagtand: gedempter, eigenaardiger verloop, eerder een speciaal geval dan een standaardklank.
  • Driehoek + zaagtand + rechthoek: geringe amplitude, maar met een eigen textuur – eerder voor gerichte experimenten.
  • Ruis met andere golfvormen: in de praktijk nauwelijks zinvol voor stabiele klankvorming.

Belangrijk is: deze golfvormen zijn niet op elk chipexemplaar volledig gelijk. Ze hangen af van het werkelijke gedrag van de schakeling. Daarom klinken ze op emulators, klonen en verschillende originele chips vaak niet identiek.

[hardware/ring_modulation]

Ringmodulatie

Ringmodulatie wordt via bit 2 in het stuurregister geactiveerd en werkt alleen zinvol in combinatie met de driehoekgolf. De modulatieverhouding is vast bedraad: stem 1 wordt beïnvloed door stem 3, stem 2 door stem 1, stem 3 door stem 2.

Het resultaat zijn niet-harmonische boventoonstructuren – klokken, metaalachtige klankkleuren, vreemde tussentoestanden. Juist dat maakt ringmod op de SID interessant.

; Ringmod: stem 1 wordt door stem 3 gemoduleerd
; Voorwaarde: shadow-registers voor $D417/$D418 in RAM bijhouden
;
; Stem 3 als modulator voorbereiden
LDA #$00 : STA $D40E ; V3 FREQ LO
LDA #$20 : STA $D40F ; V3 FREQ HI
LDA #$20 : STA $D412 ; V3 CTRL = Saw, Gate uit
;
; V3 veilig uit de uitgang nemen:
LDA sid_resfilt_shadow
AND #%11111011 ; FILT3 = 0
STA sid_resfilt_shadow
STA $D417
LDA sid_modevol_shadow
ORA #%10000000 ; 3 OFF = 1
STA sid_modevol_shadow
STA $D418
;
; Stem 1 als hoorbare ringmod-stem
LDA #<FREQ1 : STA $D400
LDA #>FREQ1 : STA $D401
LDA #$15 : STA $D404 ; Tri + Ring + Gate
; V3 blijft als modulator actief, maar niet direct hoorbaar
[hardware/oscillator_sync]

Oscillatorsync

Oscillatorsync wordt via bit 1 van het stuurregister geactiveerd. Ook hier is de toewijzing vast: 1 op 3, 2 op 1, 3 op 2. Wanneer de master-oscillator zijn cyclus voltooit, wordt de slave-oscillator hard gereset.

Het resultaat is de klassieke sync-klank: agressief, boventoonrijk, vooral interessant bij frequentiesweeps van de slave-oscillator. Het hoorbare karakter hangt sterk af van de verhouding tussen master- en slavefrequentie.

Sync alleen

Levert scherpe, gecontroleerde spectrale verschuivingen op. Typisch voor harde leads en markante sweeps.

Sync met ringmod

Geeft bijzonder complexe texturen die met eenvoudige golfvormkeuze nauwelijks te reproduceren zijn.

[hardware/test_bit]

Test-bit

Het Test-bit houdt de oscillator stil en zet interne toestanden terug. Officieel is het een diagnosebit. Praktisch is het een gereedschap: voor schone herstarts, gedefinieerde ruisstarts en beter controleerbare retriggers.

  • Ruis-reset: reproduceerbare starttoestanden voor noise-gebaseerde effecten.
  • Fase-reset: gedefinieerde golfstart in plaats van een willekeurige fase.
  • Envelope-hulp: nuttig bij problematisch retriggeren van snelle noten.
  • Bijzondere klankgevallen: afhankelijk van de chip kunnen bij het schakelen hoorbare neveneffecten ontstaan.
[hardware/filter]

De analoge filter

De analoge filter is het klankbepalende element van de SID. Ze wordt gestuurd via een 11-bits cutoff-register en een resonantie-nibble. In theorie is dat duidelijk. In de praktijk gedraagt geen enkele filter zich exact als de volgende. Juist dat maakt haar interessant en moeilijk exact na te bootsen.

De 6581 vertoont sterkere exemplarafhankelijke spreiding en een duidelijk onrustiger karakter. De 8580 is gecontroleerder, lineairder en voorspelbaarder. Beide zijn echte SID-filters. Maar klankmatig zijn ze niet uitwisselbaar.

; Eenvoudige filter-sweep
;
LDA cutoff_lo
STA $D415
LDA cutoff_hi
STA $D416
INC cutoff_hi
; langzame sweep: hoorbaar over meerdere frames

Filtersweeps klinken op een echte SID vaak levendiger dan op emulators, omdat de overgang niet alleen rekenkundig, maar elektrisch plaatsvindt. Dat is geen mystiek, maar analoge realiteit.

[hardware/filter_routing]

Filter-routing en modi

Welke stemmen door de filter lopen, bepaalt $D417. Welke filtermodi actief zijn, bepaalt $D418. Stemmen die niet naar de filter zijn gerouteerd, blijven in het directe mengpad. Stemmen die wel door de filter lopen, zijn alleen hoorbaar wanneer een filtermodus actief is.

Bit 6 (HP) Bit 5 (BP) Bit 4 (LP) Filtertype Werking
001LaagdoorlaatHoge tonen worden gedempt, ideaal voor warme bas- en sweepklanken.
010BanddoorlaatMiddenfrequenties worden benadrukt, smallere focus rond de grensfrequentie.
100HoogdoorlaatLage tonen worden gedempt, helderder en dunner karakter.
101LP + HPNotch-achtig effect, karakteristieke inkeping in het spectrum.
011LP + BPgemengd karakter, vaak krachtiger dan pure banddoorlaat.
110HP + BPzelden bewust ingezet, maar technisch mogelijk.
111allebijna volledig spectrum met resonantie-accentuering.
[programming/voice3_tricks]

Voice-3-trucs

Stem 3 is bijzonder, omdat haar actuele oscillatorwaarde en envelope-waarde uitleesbaar zijn. Dat maakt haar tot een hulpmiddel binnen een soundprogramma – niet alleen tot normale klankgenerator.

$D41B – oscillatorwaarde van stem 3

Dit register levert de actuele oscillatorstatus van stem 3. In combinatie met ruis en hoge frequentie wordt dat een bruikbare pseudo-toevalsbron.

; Voice 3 als toevalsbron
; Shadow-registers voor $D417/$D418 verondersteld
;
LDA #$FF : STA $D40E ; V3 FREQ LO
LDA #$FF : STA $D40F ; V3 FREQ HI
LDA #$81 : STA $D412 ; Noise + Gate
LDA sid_resfilt_shadow
AND #%11111011 ; FILT3 = 0
STA sid_resfilt_shadow
STA $D417
LDA sid_modevol_shadow
ORA #%10000000 ; 3 OFF = 1
STA sid_modevol_shadow
STA $D418
;
; Toevalswaarde lezen: LDA $D41B

$D41C – envelope-waarde van stem 3

Dit register geeft de actuele envelope-waarde van stem 3 terug. Daarmee kan men intern controleren in welk bereik de envelope zich op dat moment bevindt. Voor tijdkritische muziekroutines of speciale effecten is dat nuttig.

Juist daarom wordt stem 3 vaak niet alleen muzikaal, maar ook technisch gebruikt: als modulator, toevalsbron, statusgever of interne hulpstem.

[programming/digi_samples]

Digi-samples op de SID

De SID bezit geen PCM-kanaal. Toch kunnen digitale samples afgespeeld worden, omdat het volumeregister hoorbare niveausprongen aan de uitgang veroorzaakt. Precies dat wordt misbruikt.

4-bit-digi via $D418

De klassieke methode is eenvoudig: samplewaarden worden in snelle volgorde in de onderste 4 bits van $D418 geschreven. Daardoor ontstaat een grove trapcurve. Klankmatig is dat ruw, maar onmiskenbaar en historisch relevant.

; 4-bit-digi: principe
;
digi_loop:
LDA (sample_ptr),Y
LSR
LSR
LSR
LSR
ORA sid_modevol_base ; bovenste bits voor filtermodus / 3 OFF uit shadow-waarde
STA $D418
INY
BNE digi_loop

Muziek en digi tegelijk

Moeilijker is het gelijktijdig afspelen van muziek en digi-samples, omdat elke wijziging van $D418 de totale uitgang beïnvloedt. Goede routines werken daarom met gecontroleerde niveaus, exacte tijdrasters en zuivere shadowing van de registertoestanden.

Digi op de SID is geen comfortfunctie. Het is methodisch misbruik – en juist daarom typisch C64.

[hardware/chip_variants]

6581 vs. 8580 – wat werkelijk verschilt

6581 en 8580 zijn logisch verwant, maar klankmatig niet identiek. Wie beide eenmaal direct gehoord heeft, verwart ze niet meer.

MOS 6581

Voeding: 12V. Vroegere productie, sterker exemplarafhankelijk.

Filter: meer spreiding, ruwer, vaak warmer. Hoge resonantie kan duidelijk extremer overkomen.

Klank: voller, onrustiger, in veel historische tunes de eigenlijke referentieklank.

Bijzonder geval: parasitaire koppelingen en filterneveneffecten horen vaak echt bij het klankbeeld.

MOS 8580

Voeding: 9V. Nieuwere productie, gecontroleerder gedrag.

Filter: schoner, lineairder, minder wild dan bij de 6581.

Klank: nuchterder, preciezer, soms harder en directer.

Bijzonder geval: tunes die voor de 6581 geschreven zijn, klinken hier vaak duidelijk anders.

  • Filter-cutoff: dezelfde registerwaarden betekenen op beide chiptypes niet dezelfde werkelijke klank.
  • Gecombineerde golfvormen: hun karakter verschuift afhankelijk van chiptype en exemplaar.
  • Digi-volume: routines die op 6581 gekalibreerd zijn, werken op 8580 vaak anders.
  • Compatibiliteit: historische tunes zijn vaak impliciet voor precies één chiptype gecomponeerd.

“Wie op een 6581 gecomponeerd heeft, heeft niet op zomaar een SID gecomponeerd.”

[hardware/adc]

Paddle-inputs als ADC

De SID heeft twee analoge ingangen, uitleesbaar via $D419 en $D41A. Ze zijn bedoeld voor paddle-controllers. In de praktijk kunnen ze ook als eenvoudige analoge ingangen gebruikt worden.

Voor serieuze meettechniek is dat te grof en te traag. Voor eenvoudige knutseloplossingen uit de vroege C64-tijd was het echter een directe en bruikbare manier om analoge grootheden in te lezen.

[hardware/sid_clones]

SID-klonen

Originele SID-chips worden niet meer gemaakt, werkende exemplaren zijn beperkt, en niet iedereen wil een zeldzame 6581 in een dagelijks gebruikt apparaat riskeren. Daarom bestaan er vervangoplossingen: microcontroller- en FPGA-gebaseerde replica’s.

  • SwinSID: vroege, wijdverbreide vervangoplossing. Praktisch, maar klankmatig niet volledig op origineelniveau – vooral bij de filter.
  • ARMSID: capabeler, in veel gevallen overtuigender, maar nog altijd geen echte originele chip.
  • FPGASID: technisch de meest ambitieuze oplossing, vaak de beste nabootsing binnen de vervangers.
  • Originele chip: voor historische klankgetrouwheid blijft de echte 6581 of 8580 de referentie.

Wat veroudert, is niet alleen de chip zelf, maar ook de omgeving op het C64-moederbord: voeding, analoog pad, condensatoren en de algemene toestand van het apparaat. Wie de originele klank wil behouden, kijkt daarom niet alleen naar de SID in de socket, maar naar het hele systeem.

[meaning/legacy]

Wat de SID over chipontwerp zegt

De SID is een goed voorbeeld van wat ontstaat wanneer technische functie en klankmatige ambitie niet van elkaar worden gescheiden. Het is niet zomaar een toongenerator, maar een stuk schakeldenken met hoorbare gevolgen.

Veel van wat de SID tot op vandaag interessant maakt, staat niet netjes in het datablad. Men vindt het pas daar waar theorie en echte hardware uiteenlopen: bij filterspreiding, golfvormeigenaardigheden, niet helemaal ideaal gedrag en exemplarafhankelijke klankkleuren.

Juist daarom is de SID niet alleen een museumobject. Hij blijft een reëel leerterrein voor iedereen die wil begrijpen hoe gebouwde systemen zich gedragen buiten hun keurige beschrijving.

[Lesson] SID → algemeen chipbegrip
> Datablad beschrijft intentie, niet het volledige gedrag
> Analoge spreiding is geen fout, maar realiteit
> Ongedocumenteerde eigenschappen ontstaan uit de schakeling, niet uit mythes
> Begrip begint bij meten, niet bij herhalen

“De SID klinkt zoals hij gebouwd is. En vaak meer dan de keurige beschrijving daarvan laat vermoeden.”

↑ Naar boven