Hlavní navigace

Počítače Commodore a legendární čip SID

26. 3. 2009
Doba čtení: 13 minut

Sdílet

V dnešní části seriálu o architekturách počítačů se budeme věnovat popisu zvukového čipu SID (Sound Interface Device), jenž byl v minulosti součástí osmibitových počítačů firmy Commodore (včetně samotného C64) a i dnes se s tímto čipem můžeme setkat v několika specializovaných syntetizérech (SidStatiton).

Obsah

1. Počítače Commodore a legendární čip SID
2. Bloková struktura čipu SID
3. Generátory signálů
4. Tvarování obálky
5. Další části řetězce zpracování zvuku
6. Ukázka hudby pro SID
7. Literatura
8. Odkazy na Internetu

1. Počítače Commodore a legendární čip SID

V předchozí části tohoto seriálu jsme si ve stručnosti popsali vlastnosti zvukového čipu POKEY, jenž byl navržený firmou Atari, která tento čip používala jak ve svých osmibitových domácích počítačích, tak i v herních automatech (Centipede, Warlords, Astro Chase, Tempest – zde byl čip použit dokonce dvakrát pro tvorbu stereo hudby). Dnes se budeme věnovat velkému konkurentovi firmy Atari – firmě Commodore Business Machines (CBM), která mj. stála za vývojem i prodejem osmibitových domácích počítačů Commodore, včetně slavného počítače C64. Jak bývalo v minulosti zvykem, i firma Commodore si pro čipovou sadu (chipset) svých domácích počítačů vyvinula vlastní čipy, včetně úspěšného grafického čipu VIC II a dnes popisovaného zvukového čipu SID. Zkratka SID je odvozena z plného anglického názvu Sound Interface Device, tento integrovaný obvod je však také známý pod svým číselným označením – původní série vyráběná v technologii N-MOS nesla číslo 6581 a novější verze vyráběná na základě technologie H-MOS se označovala číslem 6582, popř. 8580 (tato série se však zvukově poněkud liší od série původní). V následující tabulce jsou vypsané všechny prodávané série SIDu:

Série Označení na čipu Technologie Poznámka
6581 R2 6581 N-MOS původní dostupná varianta, R1 se neprodávala
6581 R3 6581 R3 N-MOS vyráběna do roku 1986, někdy též označena jako 6581 CBM
6581 R4 6581 R4 N-MOS vyráběna v průběhu roku 1986
6581 R4 AR 6581 R4 N-MOS vyráběna od konce roku 1986 do roku 1990
6582 A 6582 A H-MOS vyráběna okolo roku 1992 (některé kusy i později)
8580 R5 8580R5 H-MOS vyráběna v letech 1987 až 1992
pc5401

Obrázek 1: Osmibitový domácí počítač Commodore C64 (vybavený prakticky stejným mikroprocesorem jako konkurenční osmibitová Atari), jehož světový úspěch do značné míry závisel (kromě dumpingových cen) i na schopnostech čipů SID (zvuky) a VIC II (grafika).

Vývoj zvukového čipu SID vedl Robert „Bob“ Yannes, který později založil firmu Ensoniq vyrábějící zvukové syntetizéry i zvukové karty. Vzhledem ke značně krátkému termínu, kdy měl být čip dokončený, došlo k poměrně nepříjemné věci známé například i ze softwarového vývoje – tvorba dokumentace k finální verzi čipu se odložila a nebyla nikdy ve své úplnosti dopsána. To vedlo k zajímavému paradoxu – zvukový čip sice pracoval (a to velmi dobře, zejména když vezmeme v úvahu jeho minimalistický hardware), ale existující dokumentace (platná pro vývojové verze) neodpovídala finálnímu výrobku, což pro mnoho lidí znamenalo určitou formu dobrodružství při hledání všech možností, které tento čip pro tvorbu hudby poskytoval. SID se nicméně i přes tento malý handicap rozšířil, v neposlední řadě i díky úspěchu osmibitového domácího počítače Commodore C64, kterého se prodalo několik desítek milionů kusů. Časopis Byte dokonce SID zařadil mezi dvacet nejdůležitějších čipů v historii počítačů. Unikátní zvukové možnosti SIDu jsou dodnes využívány v některých syntetizérech, především SIDStation (dále je SID použit v HardSIDu a MSSIAH, viz další část tohoto seriálu).

pc5402

Obrázek 2: Dvě varianty čipu SID. V pořadí je série 6581 R4 (AR), v popředí novější série 8580 R5.

2. Bloková struktura čipu SID

Na třetím obrázku je zobrazena bloková struktura zvukového čipu SID. Z obrázku je patrné, že existuje více navzájem propojených bloků, ve kterých se zvuky vytváří a modifikují. Některé bloky jsou sestaveny z digitálních prvků, další bloky jsou čistě analogové, což přispívá k unikátnímu (a mnohdy i snadno rozpoznatelnému) zvuku. Základ celého řetězce, ve kterém zvuk vzniká, tvoří tři generátory periodického signálu [třetí kapitola], jehož tvar může být obdélníkový s nastavitelnou střídou, trojúhelníkový či pilový (SID nedokáže automaticky vygenerovat sinusovku, podobně jako mnoho dalších zvukových čipů osmibitové éry, na druhou stranu je tón generovaný sinusovkou plochý, bez vyšších harmonických). Tón, resp. periodický signál, který vychází z generátoru, je upraven v amplitudovém modulátoru [čtvrtá kapitola], jenž dokáže amplitudu měnit na základě obálky specifikované čtveřicí hodnot známých pod souhrnným označením ADSR, neboli attack, decay, sustain a release. Před vstupem signálu do amplitudového modulátoru lze dva vybrané zvukové signály podrobit kruhové modulaci (ring modulation), jejíž použití taktéž vede k vytvoření unikátních a pro SID typických zvuků.

pc5403

Obrázek 3: Bloková struktura čipu SID (kopie z původní dokumentace firmy Commodore).

Signál, který vznikne po aplikaci kruhové modulace a modulace amplitudové, může být buď přímo zesílen a poslán na výstup (taktéž k němu lze přičíst externí signál, například z dalšího SIDu, fajnšmekři dokonce mohou zkombinovat SID a POKEY nebo SID a AY-8910), nebo může být dále zpracován v bloku analogových filtrů. Podle aktuální konfigurace čipu lze použít filtr typu dolní propust, horní propust či pásmová propust. Konkrétní rozsahy frekvencí pro zmíněné filtry jsou určeny kapacitou kondenzátorů připojených k čipu SID (vstupy CAP1A, CAP1B, CAP2A a CAP2B, používají se kondenzátory s přibližnou kapacitou 6,8 nF) a nastavením 11bitové hodnoty do dvojice řídicích registrů. Zvukový čip SID je totiž možné ovládat pomocí 29 osmibitových registrů, které jsou rozděleny do pěti skupin. První skupina sedmi registrů slouží pro ovládání zvukového kanálu číslo 1, druhá skupina sedmi registrů k ovládání kanálu číslo 2, třetí skupina taktéž sedmi registrů je (překvapivě) rezervována pro kanál číslo 3, čtvrtá skupina, jež obsahuje čtyři registry, ovládá filtry zapojené v koncovém stupni řetězce zpracování zvuku a konečně pátá skupina, jež taktéž obsahuje čtyři osmibitové registry, je určena pro čtení některých údajů z čipu SID (jedná se o jedinou skupinu registrů, které je možné číst, do ostatních 25 registrů lze data pouze zapisovat).

pc5404

Obrázek 4: Zapojení vývodů čipu SID. Zde můžeme vidět, že se jedná o poměrně malý integrovaný obvod s 28 piny, na rozdíl od čtyřicetipinového čipu POKEY, jenž měl poměrně velké množství pinů určených pro připojení klávesnice. Část pinů čipu SID je digitální (dvoustavová), například část určená pro připojení k adresové a datové sběrnici (úrovně odpovídají technologii N-MOS a H-MOS), další piny jsou analogové – vstup zvuku, výstup zvuku, připojení kondenzátorů pro filtry atd. Navíc SID vyžaduje dvoje napájecí napětí – standardních 5 V a poměrně nestandardních 9 V pro analogovou část (novější verze mají toto napětí snížené, takže čip vyzařuje méně tepla).

3. Generátory signálů

Generátory signálů tvoří první část celého řetězce vytvářejícího zvuk. Čip SID může pro každý zvukový kanál produkovat periodické signály tří typů (obdélníkový, trojúhelníkový, pilový), popř. lze použít zdroj šumu (noise), který se v praxi využívá, podobně jako v případě minule popsaného zvukového čipu POKEY, například na napodobení zvuku perkusních nástrojů (některé hudební skladby však místo toho využívají zdigitalizované vzorky skutečných perkusních nástrojů – viz též ukázky v šesté kapitoly). Frekvence těchto signálů je odvozena od frekvence hodin (hodinový signál je přiváděn na pin Φ2) a šestnáctibitového čísla ukládaného do dvojice řídicích registrů – každý zvukový kanál samozřejmě může mít nastavenou odlišnou frekvenci. Při použití hodinového signálu s frekvencí 1 MHz (přibližně tato frekvence je použita i u osmibitových domácích počítačů Commodore) je rozsah generovaných tónů roven téměř osmi oktávám s velmi malým krokem, který umožňuje plynule přecházet od jedné noty k notě druhé (portamento). V rozsahu zmíněných osmi oktáv lze pro každý zvukový kanál zvolit jeden ze 65536 různých tónů (216=65536).

pc5405

Obrázek 5: Generátory signálů zvýrazněné na blokovém schématu SIDu.

Obdélníkový signál, který obsahuje největší podíl vyšších harmonických (nejméně jich má signál trojúhelníkový, jehož tvar je nejvíce „podobný“ sinusovce), je zvláštní tím, že je u něj možné volit jeho střídu, tj. poměr mezi dobou trvání nízké a vysoké úrovně. Střída neovlivňuje základní frekvenci signálu ale spektrální charakteristiku vyšších harmonických. V případě SIDu se střída nastavuje v rozsahu 0 až 100% pomocí dvanáctibitového čísla uloženého do dvojice řídicích osmibitových registrů (vyšší čtyři bity druhého registru zůstávají nevyužity). Při nastavení hodnoty 2047 se generuje obdélníkový signál se střídou 1:1, naopak nejvyšší hodnota (4095) vede k tomu, že z generátoru signálu vychází pouze stejnosměrná složka (DC). Ta sama o sobě samozřejmě není slyšitelná, lze ji však přesto využít, například pro sampling nebo netradičním generování tónů pouze pomocí změny tvaru obálky (viz další kapitoly). Střídu je možné měnit velmi rychle, čehož se někdy využívá například ve hrách pro napodobení zvuků některých zbraní.

pc5406

Obrázek 6: Obdélníkový signál obsahuje velké (teoreticky nekonečné) množství harmonických, jejichž amplitudu lze ovlivnit pomocí filtrů. Střídu obdélníkového signálu lze měnit v rozsahu 0 až 100% s krokem 0,025%.

pc5407

Obrázek 7: Trojúhelníkový signál obsahuje harmonické s malou amplitudou, výsledný zvuk je spíše plochý (ne však tak fádní jako čistá sinusovka).

pc5408

Obrázek 8: Pilový signál.

4. Tvarování obálky

Důležitou součást řetězce generujícího zvuk tvoří dva bloky, pomocí nichž je možné tvarovat takzvanou obálku (viz devátý obrázek). Obálkou se řídí amplituda signálu na výstupu z bloku označeného Amplitude Modulator. Do tohoto bloku vstupují dva signály – první signál je vytvářený ve výše popsaných generátorech signálů, tj. jedná se buď o periodický obdélníkový, trojúhelníkový či pilový signál, popř. šum. Druhý signál představuje vlastní obálka, jejíž typický tvar je zobrazen na desátém obrázku. Tento signál není obecně periodický (je „spouštěný“ programově a jeho střední část označená na desátém obrázku symbolem S může být libovolně dlouhá) a při porovnání s periodou prvního signálu bývá i mnohem delší, řádově v desítkách milisekund až jednotkách sekund. Pomocí obálky lze zvukový signál upravit tak, aby se do značné míry podobal tónu reálného hudebního nástroje, což je i jeden z důvodů, proč se obálky stejného typu (nazývané ADSR – důvod je uveden v dalším odstavci) používají i v mnoha hudebních syntetizérech a některých dalších zvukových čipech (z těch známějších se jedná o OPL-2/Yamaha YM 3812 a OPL-3/Yamaha YMF 262).

pc5409

Obrázek 9: Generátory signálů zvýrazněné na blokovém schématu SIDu.

Základní tvar obálky je určen čtveřicí parametrů – attack (doba či strmost náběhu první hrany), decay (doba či strmost druhé – klesající/sestupné – hrany), sustain (stabilní úroveň signálu obálky po prvotním vzrůstu a poklesu, většinou vyjadřovaná v procentech amplitudy) a release (doba či strmost poslední – klesající – hrany). Pro každý z těchto parametrů je v řídicích registrech zvukového čipu SID vyhrazena čtveřice bitů. Čtyřbitová hodnota parametru attack určuje dobu náběhu v rozsahu 2 ms až 8 sekund (předpokládá se, že na vstup hodin Φ2 je připojen hodinový signál s frekvencí 1 MHz, v případě odlišné frekvence se budou lišit i uvedené časy). Hodnoty parametrů decay a release určují dobu trvání sestupných hran v rozsahu 6 ms až 24 sekund, tj. sice se u nich též používá pouze čtyřbitová hodnota, ale všechny časy jsou třikrát delší. Hodnota parametru sustain představuje zlomek amplitudy v rozsahu 0/15 (tj. ticho – na výstupu z bloku Amplitude Modulator je stále signál s nulovou amplitudou) až 15/15 (odpovídá 100%).

pc5410

Obrázek 10: Typický tvar obálky nazývané též ADSR podle čtyř parametrů, které ovlivňují její tvar – attack, decay, sustain, release. Celková doba trvání je řízena programově (externě) pomocí bitu GATE.

Povšimněte si, že čtyři výše uvedené parametry nejsou pro úplné popsání tvaru obálky dostatečné. Především chybí určení doby, po kterou si obálka drží úroveň sustain a taktéž amplituda, tj. maximální úroveň signálu obálky v bodě, kde se náběžná hrana attack láme a mění se v sestupnou hranu decay. Tyto dva parametry jsou nastavovány samostatně. Maximální úroveň signálu obálky je vždy nastavena na 100 %, ovšem s tím, že výstupní úroveň z celého řetězce pro generování zvuků je globálně ovlivnitelná čtyřmi bity jednoho řídicího registru. Doba trvání úrovně sustain je určena bitem GATE ukládaným do jednoho z řídicích registrů, zvlášť pro každý zvukový kanál. Ve chvíli, kdy je tento bit nastaven na logickou jedničku, spustí se cyklus attack (obálka se začne měnit dle náběžné hrany), za nímž automaticky následuje cyklus release (první sestupná hrana) až do chvíle, kdy se úroveň obálky ustálí na hodnotě sustain. Tato hodnota se udržuje tak dlouho, dokud má bit GATE hodnotu logické jedničky. Ve chvíli, kdy se programově tento bit vynuluje, začne probíhat cyklus release, tj. úroveň obálky se snižuje až k nule.

pc5411

Obrázek 11: Pro napodobení zvuků většiny hudebních nástrojů se používá tvar obálky naznačený na tomto obrázku.

V případě, že se čip SID používá pro přehrávání samplovaných zvuků, je možné hodnotu jednotlivých vzorků (samplů) převádět na čtyřbitové číslo, které ovlivňuje úroveň sustain. Samotná obálka se změní tak, že hodnoty attack, decayrelease jsou nastaveny na nulovou hodnotu (to odpovídá nejstrmějším hranám), hodnota bitu GATE zůstává nastavená na logickou jedničku a pouze se programově mění úroveň sustain. SID taktéž umožňuje změnu hodnoty bitu GATE v kterémkoli okamžiku. Pokud se například tento bit vynuluje ještě v době, kdy probíhá cyklus attack, začne ihned probíhat cyklus release, tj. z obálky zmizí její prostřední část. Taktéž již před doběhnutím cyklu release je možné bit GATE znovu nastavit na úroveň logické jedničky, čímž se ihned nastartuje další cyklus attack (některé hudební syntetizéry, které taktéž obálku ADSR využívají, tento „zrychlený“ přechod mezi cykly attack a release, neumožňují).

pc5412

Obrázek 12: Vhodným nastavením hodnot parametrů attack, decay, sustain a release lze měnit tvar obálky a tím i zabarvení výsledného tónu.

5. Další části řetězce zpracování zvuku

Generátory signálů a tvarovače obálek jsou základními bloky, kterými je možné generovat zvuky napodobující různé hudební nástroje. Ovšem to není zdaleka vše, co SID dokáže. Především je možné ovlivnit výstup z jednoho generátoru signálů výstupem z generátoru dalšího pomocí kruhové modulace (ring modulation – název této modulace je odvozen od způsobu zapojení polovodičových diod v analogovém obvodu, který tuto modulaci prováděl například u superheterodynů – FM přijímačů), vzájemně synchronizovat jednotlivé generátory signálů, používat analogové výstupní filtry typu dolní propust, horní propust a pásmová propust, přimixovat externí zvukový signál, navzájem zkombinovat signály vytvářené v generátorech signálů aj. Těmito technikami, které mj. značnou měrou přispěly k velké oblibě SIDu, se budeme podrobněji zabývat v následující části seriálu. Příště si taktéž ukážeme některé ze současných použití SIDu, například SIDStation (syntetizér), HardSID (čip SID připojitelný k PC přes sběrnici PCI či rozhraní USB) nebo MSSIAH.

pc5413

Obrázek 13: Skutečný signál generovaný čipem SID zobrazený na osciloskopu.

6. Ukázka hudby pro SID

Podobně jako pro osmibitové domácí počítače Atari a hudební archiv ASMA, byl i v případě SIDu vytvořen archiv hudby vytvořené právě s využitím tohoto čipu. Tento archiv je pojmenován HSVC neboli High Voltage SID Collection, dostupný je na adrese http://www.hvsc­.c64.org/ (ve skutečnosti se tvůrci ASMA inspirovali právě HSVC a jeho úspěchy). Hudba je v HSVC uložena (opět podobně jako v případě čipu POKEY) ve formě strojového programu mikroprocesoru MOS 6502, který v určitých intervalech mění hodnoty řídicích registrů čipu SID. Soubory s uloženou hudbou jsou z tohoto důvodu velmi krátké, mnohdy mají délku pouhých několika kilobajtů. Pouze v případě, že jsou použity samplované zvuky, je velikost souboru větší, zpravidla však nepřesáhne cca 30 kilobajtů (ostatně to vyplývá i z omezení daných původními osmibitovými počítači). V dnešní části budou uvedeny spíše klasické ukázky hudby (většinou se jedná o tytéž melodie, ke kterým existuje i jejich „POKEY“ verze – viz předchozí díl), v části navazující si pak uvedeme i některé současné skladby.

Název Autor
Draconus Adam Gilmore
Zybex Adam Gilmore
Warhawk Rob Hubbard
International Karate Rob Hubbard (9 minut skladby uložené původně na pouhých 4,5 kilobajtech!)
Arkanoid Martin Galway (tento autor jako jeden z prvních použil na SIDu sampling)
pc5414

Obrázek 14: International Karate se slavnou hudbou Roba Hubbarda

7. Literatura

  1. Dodge, Charles; Jerse, Thomas A. (1997). Computer Music: Synthesis, Composition and Performance.
    New York: Schirmer Books. ISBN 0–02–864682–7.
  2. 6582 Sound Interface Device (SID)
    Commodore Semiconductor Group (součást firmy Commodore)
pc5415

Obrázek 15: Specialita na závěr: International Karate předváděné i hrané naživo!

8. Literatura a odkazy na Internetu

  1. MOS Technology SID,
    http://www.ab­soluteastrono­my.com/topics/MOS_Techno­logy_SID
  2. Ring modulation,
    http://www.ab­soluteastrono­my.com/topics/Rin­g_modulation
  3. The High Voltage SID Collection – Commodore 64 music for the masses,
    http://www.hvsc­.c64.org/
  4. Ensoniq,
    http://www.ab­soluteastrono­my.com/topics/En­soniq
  5. Working With SID,
    http://www.ata­rimagazines.com/com­pute/issue41/Wor­king_With_SID­.php
  6. MIDI SID software,
    http://www.8bit­ventures.com/mssi­ah/
  7. Elektron SidStation,
    http://en.wiki­pedia.org/wiki/E­lektron_SidSta­tion
  8. Elektron Music Machines,
    http://www.elek­tron.se/
  9. HardSID The Legendary Sound,
    http://www.har­dsid.com/
pc5416

Obrázek 16: SIDStation – netradiční syntetizér používaný i mnoha slavnými hudebníky, jenž je postavený právě na čipu SID.

Autor článku

Pavel Tišnovský vystudoval VUT FIT a v současné době pracuje ve společnosti Red Hat, kde vyvíjí nástroje pro OpenShift.io.