Počítače Amiga a zvukový čip Paula

30. 4. 2009
Doba čtení: 14 minut

Sdílet

V dnešním pokračování seriálu o architekturách počítačů bude popsán princip přehrávání zvuků i vícekanálové hudby na počítačích Amiga obsahujících čip Paula, jenž vlastní přehrávání i mixování zvuků značným způsobem zjednodušuje. Taktéž si popíšeme princip hudebních modulů (MOD).

Obsah

1. Syntéza zvuku vs. samply (vzorky)
2. Počítače Amiga a zvukový čip Paula
3. Princip činnosti zvukového čipu Paula
4. Přehrávání vícebitových samplů, zvýšení vzorkovací frekvence a využití většího počtu hudebních kanálů
5. Dědictví Amigy – hudební moduly (MOD, STM, OKT, NST, S3M)
6. Přehrávače hudebních modulů
7. Odkazy na Internetu
8. Obsah dalšího pokračování seriálu

1. Syntéza zvuku vs. samply (vzorky)

V předchozích šesti částech tohoto seriálu jsme si popsali některé známé hudební čipy použité převážně v osmibitových domácích počítačích a herních konzolách. Jednalo se o čip POKEY (POT-KEYBOARD) zabudovaný do všech osmibitových počítačů Atari a některých herních automatů téže firmy, čip SID (Sound Interface Device) firmy Commodore Business Machines, zvukový čip AY-3–8910 firmy General Instruments (tento čip byl zabudován například do ZX Spectra 128+, Atari ST či počítačů Amstrad CPC) a konečně minule popsaný zvukový čip SN76489 využívaný například v osmibitových domácích počítačích Sharp MZ-800. Všechny výše zmíněné čipy se vyznačovaly tím, že obsahovaly jeden či více samostatně pracujících generátorů harmonického signálu (typicky obdélníkového, někdy též trojúhelníkového či pilového) řízených externím hodinovým signálem, dále generátor či větší množství generátorů šumu a v některých případech též obvod pro amplitudovou modulaci generovaného signálu takzvanou obálkou (envelope).

pc5901

Obrázek 1: Pseudonáhodný signál generovaný čipem POKEY (jedná se o výsledek simulace práce poly-čítače, protože reálné čipy POKEY výstupní signál poněkud zkreslovaly, přičemž míra zkreslení závisela na frekvenci).

Zvukový čip SID taktéž umožňoval provádět kruhovou modulaci (ring modulation) mezi dvojicí hudebních kanálů a navíc obsahoval v koncové části celého zvukového řetězce analogové filtry – dolní, horní a pásmovou propust tvořenou RC články, přičemž kombinací dolní a horní propusti bylo možné vytvořit pásmovou zádrž. S využitím těchto modulů (hudebníci pracující s analogovými či digitálními syntetizéry by spíše řekli operátorů) bylo možné vytvořit překvapivě složité zvuky a (s přihlédnutím k době vzniku) kvalitní hudební skladby s relativně malými nároky na potřebnou kapacitu operační paměti či výpočetní výkon mikroprocesoru – většina jednodušších přehrávacích rutin například 25× či 50× za sekundu pouze přepsala několik hodnot v řídicích registrech hudebního čipu, což je tak jednoduchá a současně i rychlá operace, že ji bylo možné provádět v době přerušení „souběžně“ s dalšími činnostmi (například vykreslováním scény hry, přepočtu stavů objektů ve hře atd.). Analogové části těchto čipů (koncové filtry či nelineární D/A převodníky, vazby mezi zvukovými kanály) navíc vytvářely charakteristicky zabarvené tóny, které se dodnes s menší či větší úspěšností v mnoha skladbách napodobují.

pc5902

Obrázek 2: Obdélníkový, trojúhelníkový a pilový signál vygenerovaný zvukovým čipem s rozlišením 256 úrovní signálu.

Na druhou stranu však není snadné pouze s využitím výše zmíněných generátorů harmonických signálů či generátorů šumu přehrát všechny možné tóny a zvuky – problematická je například mluvená řeč či kvalitní zvuky perkusních nástrojů (ty lze částečně nahradit právě generátorem šumu). Z tohoto důvodu se autoři hudby v některých případech uchýlili k přehrávání zvuků uložených ve formě vzorků (samplů) metodou pulsní kódové modulace (PCM) či pulsní šířkové modulace (PWM). Přehrávání s využitím pulsní kódové modulace bylo na většině čipů zmíněných v prvním odstavci omezeno na čtyřbitové vzorky a celé přehrání a případné mixování zvuků muselo být provedeno programově, tj. s použitím výpočetní kapacity mikroprocesorů, což bylo samozřejmě problematické, když si uvědomíme, jak nevýkonné tehdejší osmibitové mikroprocesory (MOS 6502, Z-80, Intel 8080, Motorola 6809) byly v porovnání se současným stavem (frekvence zápisu do řídicích registrů zvukových čipů při použití PCM musí být mnohonásobně vyšší, než uvedená hodnota 25 či 50 Hz).

pc5903

Obrázek 3: Obdélníkový, trojúhelníkový a pilový signál vygenerovaný zvukovým čipem s rozlišením 16 úrovní signálu (při výpočtech průběhu signálu jsou použity čtyři bity a D/A převodník je taktéž čtyřbitový). „Schody“ do generovaného zvuku přináší vyšší harmonické frekvence, čímž je ovlivněna barva výsledného tónu.

Alternativu k pulsní kódové modulaci představovala pulsní šířková modulace. Výsledkem aplikace této modulace na původní data uložená ve formě vzorků je signál se dvěma úrovněmi, ovšem s mnohem vyšší frekvencí, než je frekvence vzorkovací. Při použití této modulace jsou ovšem nároky na výpočetní výkon mikroprocesoru a přesné časování při přehrávání ještě vyšší než v případě PCM. Výhodou PWM je však to, že se tvůrci hudby nemuseli omezovat pouze na čtyřbitové vzorky. Příkladem může být hudba vytvořená pro původní osmibitový domácí počítač ZX Spectrum (48k) s jednobitovým zvukovým výstupem (beeper) či hudba pro PC Speaker (zde se taktéž jedná o reproduktor připojený na dvoustavový – binární – výstup). Podrobněji se budeme pulsní šířkovou modulací zabývat v následující části tohoto seriálu v souvislosti právě s PC Speakerem. Na tomto místě je vhodné uvést, že se PWM používá i v některých přehrávačích CD, protože jednobitový převodník použitý v PWM má oproti 16bitovému D/A převodníku v PCM několik výhod – například nedochází ke zkreslení zvuku v případě, že se jednotlivé tranzistory v D/A převodníku zapínají s různým zpožděním, do jisté míry se odstraňuje nelinearita výstupního zesilovače apod.

pc5904

Obrázek 4: Sinusový signál vzorkovaný s osmibitovým rozlišením (256 úrovní) a tentýž signál vzorkovaný s rozlišením čtyřbitovým (16 úrovní).

2. Počítače Amiga a zvukový čip Paula

Tvůrci počítače Amiga se vydali poněkud odlišnou cestou než mnozí další výrobci domácích a osobních počítačů – místo návrhu či použití již hotového zvukového čipu s různými více či méně sofistikovanými generátory signálů, tvarovači obálky a analogovými filtry vytvořili čip nazvaný Paula (číselné označení 8364) určený převážně k mixování a přehrávání zvuků uložených v operační paměti počítače ve formě vzorků (samplů). Paula podporuje souběžné přehrávání čtyř hlasů, každý s osmibitovým rozlišením (počet reprezentovatelných úrovní je tedy roven 256, což představuje dynamický rozsah cca 48 dB). Zvukové vzorky sice zabírají poměrně velké množství operační paměti – například jednosekundový zvuk vzorkovaný s frekvencí 22050 Hz a osmibitovým rozlišením obsadí cca 21,5 kB RAM – ovšem již první Amigy byly osazeny 512 kB RAM a při vhodném způsobu uložení hudby (viz další kapitoly) byla velikost skutečně obsazené paměti pro celou hudební skladbu poměrně malá. Aby nebyl mikroprocesor počítače při přehrávání zvuků příliš zatížený, bylo možné jednotlivé vzorky přenášet z operační paměti do čipu Paula pomocí DMA, neboli přímého přístupu do operační paměti (Direct Memory Access).

pc5905

Obrázek 5: Zvukový čip Paula R7 v pouzdře DIL.

Zvukový čip Paula existuje v několika verzích (některé verze se navíc vyráběly v různých pouzdrech), které jsou vypsány v následující tabulce:

Označení čipu Rozlišující kód Použito v počítači
Paula 8364 R4 A1000
Paula 8364 R7 252127–02 A3000, AA3000
Paula 8364 R7 391077–01 A600, A4000
pc5906

Obrázek 6: Další varianta zvukového čipu Paula R7.

Zapojení pinů čipu Paula platné pro pouzdro DIL:

Pin Označení Význam
01–07 D8-D2 Data Bus Lines 8 to 2
08 VSS Ground
09–10 D1-D0 Data Bus Lines 1 and 0
11 /RES System Reset
12 DMAL DMA Request Line
13–15 /IPL0-ILP2 Interrupt Lines 0–2
16 /INT2 Interrupt Level 2
17 /INT3 Interrupt Level 3
18 /INT6 Interrupt Level 6
19–26 RGA8-RGA1 Register Address Bus 8–1
27 VCC +5 Volt
28 CCK Color Clock
29 CCKQ Color Clock Delay
30 AUDB Right Audio
31 AUDA Left Audio
32 POT0X Pot 0X
33 POT0Y Pot 0Y
34 VSSANA Analog Ground
35 POT1X Pot 1X
36 POT1Y Pot 1Y
37 /DKRD Disk Read Data
38 /DKWD Disk Write Data
39 DKWE Disk Write Enable
40 TXD Serial Transmit Data
41 RXD Serial Receive Data
42–48 D15-D9 Data Bus Lines 15 to 8

3. Princip činnosti zvukového čipu Paula

Zvukový čip Paula podporuje ve standardním režimu čtyři zvukové kanály se stereo výstupem, přičemž první dva kanály jsou přiváděny do levého reproduktoru a další dva kanály do reproduktoru pravého. Toto striktní oddělení kanálů je sice akceptovatelné pro výstup na reprobedny, ale při poslechu ve sluchátkách (kde nedochází k téměř žádným interferencím) je vhodnější provést externí „promíchání“ všech kanálů s poměrem od 30% do 65%. Toto míchání lze například navolit i v emulátorech počítačů Amiga, provádí ho i mnohé přehrávače hudebních modulů (viz další kapitoly). Vzorkovací frekvence každého zvukového kanálu může dosahovat až 28867 Hz, což je omezení dané originálním čipsetem (OCS) a způsobem práce s pamětí při generování obrazu (pro každý kanál lze zvolit odlišnou frekvenci). Rozlišení vzorků je osm bitů, přičemž pro jejich uložení je použit dvojkový doplněk (střední hodnota je rovna nule, nikoli 127). Navíc je možné pro každý kanál nastavit hlasitost pomocí šestice bitů, což, jak si řekneme dále, může být využito pro zvýšení počtu bitů ve vzorcích/samplech z původních osmi na čtrnáct. Důležité je, že jak o načítání jednotlivých vzorků z operační paměti, tak i o jejich mixování, se z velké míry stará přímo čip Paula, tj. pro tuto činnost není zapotřebí používat mikroprocesor.

pc5907

Obrázek 7: Plošný spoj počítače Amiga 500 se zvukovým čipem Paula.

Do zvukového čipu se na základě zadané vzorkovací frekvence zvukového kanálu postupně přenáší jednotlivé vzorky z operační paměti s využitím přímého přístupu do paměti (DMA). Mixování vzorků je prováděno přímo na čipu (souběžně s převodem vzorků na analogový signál pomocí D/A převodníků). To znamená, že se tato činnost obvykle nemusí vykonávat programově, což v mnoha ohledech přináší velmi významnou úsporu strojového času – na počítačích PC se zvukovými kartami Sound Blaster se musely jednotlivé zvukové kanály mixovat programově, což je výpočetně náročné a taktéž to vede k menším možnostem využití DMA. Za D/A převodníky čipu Paula je zařazen RC článek, pomocí něhož se výstupní signál vyhladí – RC článek pracuje jako dolní filtr s útlumem cca 12 dB na oktávu, jehož mezní frekvence je rovna 3,3 kHz. Tento filtr je možné programově vypínat, což je na některých počítačích Amiga indikováno změnou jasu či úplným vypnutím LED (která je běžně na zapnutém počítači rozsvícena). Zapojení filtru je zobrazeno na (externím) obrázku, kde je také modrou barvou naznačena možná změna zapojení v případě, že uživatel potřebuje filtr ovládat nikoli programově ale ručně pomocí přepínače:

Obrázek 8: Zapojení externího filtru typu dolní propust a způsob jeho přemostění pomocí přepínače.

4. Přehrávání vícebitových samplů, zvýšení vzorkovací frekvence a využití většího počtu hudebních kanálů

Výše popsaná a do značné míry automatická činnost zvukového čipu Paula nemusí pro všechny účely vyhovovat. V některých případech je nutné přehrávat vícebitové samply (zvyšuje se tak dynamika zvuku), používat vyšší vzorkovací frekvenci či přehrávat polyfonní vícekanálovou hudbu. S využitím některých technik je to samozřejmě možné. V případě, že je nutné použít vyšší vzorkovací frekvenci (například máme k dispozici samply vzorkované frekvencí 44,1 kHz), je možné místo DMA přenášet vzorky do zvukového čipu pomocí programu, což na druhou stranu může znamenat větší zatížení mikroprocesoru (na čipsetu ECS či AGA se navíc dá frekvence přehrávání zvýšit tím, že se zvolí jiný video režim, který část přenosového pásma ponechá i pro čip Paula). Při přehrávání vícebitových samplů lze zkombinovat vždy dva kanály, přičemž každý kanál ma nastavenou odlišnou hlasitost – jeden kanál má hlasitost minimální, druhý maximální. Ve výsledku tak lze dosáhnout rozsahu 14 bitů (8+6), což odpovídá zhruba 84 dB, ovšem počet použitelných kanálů se snižuje ze čtyř na dva (levý a pravý). Tuto techniku používá například Christian Buchner (CyberSound, DeliTracker apod.). Z programového hlediska nejsložitější a výpočetně nejnáročnější je přehrávání vícekanálové hudby, tj. hudby, ve které jsou použity více jak čtyři hlasy. Zde je nutné provést mixáž jednotlivých hlasů programově. Optimálně naprogramovaná aplikace dokáže na mikroprocesoru 68030 přehrát až 32 hlasů současně, ale i na starších a pomalejších mikroprocesorech bylo možné přehrát osmikanálovou­ hudbu.

pc5909

Obrázek 9: Amiga 500.

5. Dědictví Amigy – hudební moduly (MOD, STM, OKT, NST, S3M)

V předchozích kapitolách jsme si řekli, že zvukový čip Paula dokázal v základním nastavení pracovat se čtyřmi zvukovými kanály, u nichž bylo možné měnit frekvenci přehrávání osmibitových samplů. Poměrně záhy po rozšíření počítačů Amiga vznikly aplikace nazvané trackery, které této vlastnosti Pauly důsledně využívaly. Pomocí trackerů bylo (či spíše je) možné vytvořit hudbu složenou ze samplů, které se přehrávají s různou frekvencí na základě údajů uložených ve čtyřech hudebních stopách – jedná se vlastně o obdobu notové osnovy, ovšem zapisovanou ve formě tabulky s 64 řádky a původně čtyřmi sloupci (každý sloupec odpovídá jednomu hudebnímu kanálu). V každém řádku je možné do sloupce zapsat notu a oktávu (tj. výšku či frekvenci přehrávaného tónu), číslo nástroje (tomu odpovídá zvolený sampl, přesněji více samplů může v některých trackerech být přiřazeno jednomu nástroji v závislosti na výšce tónu), hlasitost a příznak, zda se má současně provést i nějaký zvukový efekt. Tabulka s výše popsanými 64 řádky se nazývá pattern, přičemž celá hudební skladba může být složena z libovolného množství patternů – viz následující obrázky trackerů, v jejichž dolní části je vždy část tabulky zobrazena.

pc5910

Obrázek 10: Soundtracker – jeden z prvních trackerů pro počítače Amiga, jehož grafické rozhraní je použito v prakticky všech jeho pokračovatelích.

Soubory, do kterých se skladby vytvořené pomocí trackerů ukládají, se nazývají moduly. Původní moduly se čtyřmi stopami, patternem dlouhým 64 řádků a osmibitovými samply (mohlo jich být maximálně 31) byly vytvářeny programem ProTracker – jím vytvářené soubory mají příponu .mod a i dnes se s nimi můžeme poměrně často setkat (v našich končinách byl populární například modul mrazik.mod). Formát modulů je poměrně jednoduchý – v souboru jsou uloženy jak jednotlivé samply hudebních nástrojů (u původních modulů v nekomprimované podobě), tak i jména samplů, jednotlivé patterny (tabulky) a další důležité informace, například rychlost posunu mezi řádky patternu (tato rychlost odpovídá tempu skladby a lze ji během přehrávání měnit).

pc5911

Obrázek 11: ProTracker – v dolní části opět můžeme vidět tabulku se čtyřmi sloupci. V každém sloupci je číslo noty, oktáva, číslo nástroje, hlasitost a kód efektu.

Společně s dalším rozšiřováním možností trackerů se měnil i formát souborů, i když základní struktura zůstala zachována. Především se zvyšoval počet zvukových kanálů z původních čtyř přes osm kanálů (Octalyzer) až na 32 kanálů ve formátu podporovaném ScreamTrackerem (soubory s příponou .stm a .s3m). Některé formáty také dokázaly ukládat samply hudebních nástrojů v komprimované podobě, používat šestnáctibitové samply, samply se smyčkou (loop) atd. Již zmíněný ScreamTracker (vytvořený mimo jiné známou demo skupinou Future Crew) dokonce dokázal do samplované hudby přimíchat hudbu generovanou pomocí FM syntézy. FastTracker II (od konkurenční skupiny Triton) naproti tomu podporoval „obousměrnou“ smyčku, kdy se sampl po dosažení konce smyčky střídavě přehrával v přímém směru a posléze odzadu apod.

pc5912

Obrázek 12: ScreamTracker pro DOS. Program běží, i když to možná není na první pohled patrné, v textovém režimu.

pc5913

Obrázek 13: Fasttracker II pro DOS při přehrávání skladby.

pc5914

Obrázek 14: Fasttracker II pro DOS při editaci samplu.

6. Přehrávače hudebních modulů

Hudební moduly se staly jak mezi autory hudby, tak i mezi posluchači velice populární, především díky poměrně velké kvalitě přehrávané hudby a rozumné velikosti souborů – většina skladeb se bez problémů dala nahrát na jedinou disketu (880 kB v případě Amigy) a později stáhnout z Internetu i s využitím pomalého modemu. Vzhledem ke stále velké popularitě modulů a jejich relativně jednoduchému formátu (navíc nezatíženému patenty) není divu, že pro velkou část dnešních multimediálních přehrávačů existují pluginy, které dokážou alespoň ty nejrozšířenější typy modulů (.mod, .stm, .s3m) přehrát. Jedná se jak o přehrávače pro Linux (XMMS, Audacious), tak i pro Microsoft Windows (WinAmp). Kromě toho je možné použít i specializované přehrávače, například multiplatformní MikMod for Java (odvozený od původního MikModu napsaného v ANSI C), viz následující screenshot:

-= MikMod for Java v2.14 - development version, 22 Nov 97 =---
 - main code (in ANSI C) by MikMak <mikmak@via.nl>
 - ported to Java by Shlomi Fish ( http://www.shlomifish.org/ )
 - Java sound drivers by Shlomi Fish ( http://www.shlomifish.org/ )
 - interface / zip code by Steve McIntyre <stevem@chiark.greenend.org.uk>
 - This program is SHAREWARE - Read MIKMOD.TXT for more info
-= MikMod for Java v2.14 - development version, 22 Nov 97 =---
'||'                          '||   ||
 ||         ...    ....     .. ||  ...  .. ...    ... .
 ||       .|  '|. '' .||  .'  '||   ||   ||  ||  || ||
 ||       ||   || .|' ||  |.   ||   ||   ||  ||   |''
.||.....|  '|..|' '|..'|' '|..'||. .||. .||. || .'||||.
                                                .|....'
-= MikMod for Java v2.14 - development version, 22 Nov 97 =---
JavaX-Driver: 16 bit normal stereo, 44100 Hz
File: usb/2nd_pm.s3m
Name: UnreaL ][ / PM
Type: Screamtracker 3.xx, Periods: mod type,Log
pat:4/84 pos:58 spd:3 bpm:100.0% vol:100%
pc5915

Obrázek 15: WinAmp s pluginem pro přehrávání hudebních modulů.

pc5916

Obrázek 16: WinAmp – informace o přehrávaném modulu.

7. Odkazy na Internetu

  1. Custom Chips: Paula
    http://www.amiga-hardware.com/show­hardware.cgi?HAR­DID=1460
  2. Big Book of Amiga Hardware
    http://www.amiga-resistance.in­fo/bboahfaq/
  3. Amiga Hardware Database
    http://amiga.re­source.cx/
  4. ExoticA
    http://www.exo­tica.org.uk/wi­ki/Main_Page
  5. The absolute basics of Amiga audio
    http://www.su­fo.estates.co­.uk/amiga/ami­mus.html
  6. Wikipedia: Tracker
    http://en.wiki­pedia.org/wiki/Trac­ker
  7. Wikipedia: Trackers
    http://en.wiki­pedia.org/wiki/Trac­kers
  8. Ultimate Soundtracker
    http://en.wiki­pedia.org/wiki/Ul­timate_Soundtrac­ker
  9. Protracker
    http://en.wiki­pedia.org/wiki/Pro­Tracker
  10. Impulse Tracker
    http://en.wiki­pedia.org/wiki/Im­pulse_Tracker
  11. Scream Tracker
    http://en.wiki­pedia.org/wiki/Scre­amTracker
  12. MikMod for Java
    http://jmikmod­.berlios.de/
  13. List of audio trackers
    http://en.wiki­pedia.org/wiki/Lis­t_of_audio_trac­kers
  14. Wikipedia: Module File
    http://en.wiki­pedia.org/wiki/Mo­dule_file
  15. Wikipedia: Chiptune
    http://en.wiki­pedia.org/wiki/Chip­tune
pc5917

Obrázek 17: Starší typ přehrávače hudebních modulů pro DOS – známý Cubic Player.

bitcoin školení listopad 24

8. Obsah dalšího pokračování seriálu

V následující části seriálu o architekturách počítačů se (konečně) začneme zabývat problematikou vytváření zvuků a hudby na osobních počítačích odvozených od IBM PC. Původní IBM PC i většina jeho pokračovatelů byla v počátcích vybavena pouze PC Speakerem, též známým pod pojmy beeper či squeezer, což byl reproduktor zapojený původně na integrované obvody 8253 (časovač) a 8255 (tři osmibitové vstupně/výstupní brány). Osobní počítače kompatibilní s IBM PC, především pozdější modely XT a AT, se rozšířily z kanceláří i do domácností a společně s vývojem her se pro tyto počítače začaly vyrábět zvukové karty – nejprve slavná zvuková karta Adlib vybavená čipem Yamaha YM3812 (OPL2) a později zvukové karty Sound Blaster či „karta“ Covox připojovaná na paralelní port. Právě tyto zvukové karty si popíšeme příště.

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.