Retrohrátky: využití hudebních čipů OPL2 a OPL3 na Arduinu a Raspberry Pi

27. 4. 2021
Doba čtení: 28 minut

Sdílet

 Autor: Wikipedie, podle licence: Public Domain
Dnes si popíšeme jednoduché, ovšem na druhou stranu užitečné zvukové zařízení připojitelné k Arduinu či Raspberry Pi. Jedná se o zvukovou kartu OPL2 Audio Board osazenou slavným hudebním čipem OPL2 neboli Yamaha YM 3812.

Obsah

1. Retrohrátky – využití hudebních čipů OPL2 a OPL3 na Arduinu a Raspberry Pi

2. Programovatelné zvukové generátory, čipy s FM syntézou a čipy s PCM

3. PSG – programovatelné zvukové generátory

4. Alternativa PSG pro rychlejší počítače: D/A převodník

5. Zvuková karta AdLib

6. Frekvenční modulace a její použití při zvukové syntéze

7. FM syntéza a hudební čipy Yamaha YM 3812 a YMF 262

8. Zvuková syntéza na čipu Yamaha YM 3812 (OPL2)

9. Základ OPL – operátory a jejich vzájemná vazba

10. Obálka typu ADSR (Attack, Decay, Sustain, Release)

11. Zpětná vazba a perkusní režim

12. Hudební čip Yamaha YMF 262 (OPL 3)

13. Způsob zapojení operátorů v režimu OPL 3

14. Retrohrátky – využití čipů OPL2 a OPL3 v současnosti

15. OPL2 Audio Board

16. Sériová sběrnice

17. Propojení karty OPL2 Audio Board s Arduinem a Raspberry Pi

18. OPL3 Duo!

19. Obsah druhé části článku

20. Odkazy na Internetu

1. Retrohrátky – využití hudebních čipů OPL2 a OPL3 na Arduinu a Raspberry Pi

Vítejte ve světe chiptune.

Se zvukovými a hudebními čipy vyráběnými společností Yamaha, které byly použity v některých zvukových kartách určených (nejenom) pro osobní mikropočítače IBM PC, jsme se již na stránkách Roota ve stručnosti seznámili v seriálu o historii vývoje počítačových her. Připomeňme si, že čipy od Yamahy používaly pro generování tónů modifikovanou FM syntézu a i z tohoto důvodu je jejich zvuk poměrně specifický a (nostalgicky) připomínající vrcholící éru „chiptune“ hudby, která byla vzápětí nahrazena hudbou vytvářenou z předem připravených zvukových vzorků (samplů). Vzhledem k tomu, že tyto čipy interně používaly digitální technologii (na rozdíl do některých PSG, jež měly i analogovou část), je možné hudební čipy Yamahy bez větších problémů emulovat (což zajišťují jak specializované programy, tak i například DOSBox). Ovšem to není zdaleka vše, protože pro fajnšmekry je k dispozici přípravek s originálním čipem OPL2 nebo OPL3, který lze ovládat například z Raspberry Pi nebo z Arduina (popř. s poněkud větším úsilím i z běžného PC, například opět přes Arduino a s využitím k tomuto účelu nakonfigurovaného DOSBoxu).

Obrázek 1: V článku popisovaná zvuková karta OPL2 Audio Board připojená k Arduinu.

Dnešní článek je rozdělen na čtyři části. V první části, která začíná druhou kapitolou, si ve stručnosti připomeneme nejvýznamnější zvukové a hudební čipy používané jak v první a druhé generaci herních konzolí, tak i v domácích osmibitových mikropočítačích. V části druhé je zmíněn princip frekvenční syntézy, která je čipy Yamaha používána. V části třetí se zmíníme o nejvýznamnějších hudebních čipech Yamahy (z pohledu uživatelů dobových mikropočítačů) – OPL2 a OPL3. A konečně v části čtvrté si popíšeme přípravky OPL2 Audio Board a OPL3 Duo!, které obsahují právě originální čipy OPL2, popř. OPL3 a které tedy produkují nefalšovaný a především neemulovaný zvuk.

Obrázek 2: Karta je dodávána buď ve složeném (zapájeném) stavu, nebo jako skládačka (DYI kit). Na této fotce je zkompletovaný DYI kit.

2. Programovatelné zvukové generátory, čipy s FM syntézou a čipy s PCM

Integrované obvody určené pro generování zvuků a hudby tvoří nedílnou a současně i velmi důležitou součást historie vývoje herních konzolí a samozřejmě i osmibitových domácích mikropočítačů; později též některých osobních počítačů (mezi něž patří IBM PC). Až na několik výjimek, mezi které patří především původní ZX Spectrum a vlastně i všechny počítače vyráběné v ČSSR (až na modul Melodik), byly těmito čipy osazeny prakticky všechny úspěšné herní konzole a mikropočítače vyráběné od konce sedmdesátých let minulého století až po začátek let devadesátých, kdy již na trhu začaly převažovat šestnáctibitové a 32bitové stroje s mnohem většími možnostmi. A právě vlastnosti a nabízené možnosti zvukových čipů do značné míry určovaly oblíbenost dané platformy.

Obrázek 3: První úspěšnou herní konzolí bylo Atari 2600 vybavené grafickým a současně i zvukovým čipem TIA.

Ještě předtím, než začneme s popisem FM syntézy se zmiňme o tom, že pod termínem „zvukový čip“ nebo „hudební čip“ můžeme mít na mysli tři různé typy integrovaných obvodů. Nejjednodušší jsou obvody označované zkratkou PSG neboli Programmable Sound Generator. Interně mnohem komplikovanější jsou čipy s FM syntézou a později, se zvyšující se kapacitou RAM, se začaly více prosazovat i obvody určené především pro přehrávání a mixování samplů (PCM). Nás bude v kontextu dnešního článku zajímat především druhá skupina čipů, která je pro mnoho spíše hudebně zaměřených uživatelů v mnoha ohledech nejzajímavější.

Obrázek 4: Zvukový čip AY-3–8910 ve čtyřicetipinovém pouzdře DIL (originál od firmy General Instrument)

3. PSG – programovatelné zvukové generátory

Všechny programovatelné zvukové čipy (PSG), které budou zmíněny v navazujících odstavcích, jsou založeny na zpracování vstupního hodinového signálu, kterým jsou řízeny interní moduly PSG. PSG mohou generovat obdélníkové signály s volitelnou frekvencí (a někdy i s konfigurovatelnou střídou), dále pak šum s volitelnou frekvencí a některé PSG navíc generují i trojúhelníkový a/nebo pilový signál (pro zvuk hudebních nástrojů je vhodnější pilový signál). Podle typu PSG můžeme na čipu očekávat i takzvaný generátor obálky (envelope generator), popř. i různé typy filtrů a propustí.

V případě, že je hodinový signál přiveden na běžný čítač s výstupem propojeným s klopným obvodem T, bude takto zapojený modul generovat obdélníkový výstupní signál s frekvencí určenou počáteční hodnotou čítače (samotná konstrukce čítačů se od sebe může odlišovat, většinou však čítají směrem k nule a při podtečení se na výstupu objeví impuls přivedený do klopného obvodu). Takto vytvořené obdélníkové vlny asi není zapotřebí zdlouhavě popisovat například Ataristům, popř. majitelům PC Speakeru, ovšem zajímavé je zjistit, co se skrývá pod pojmem trojúhelníková vlna.

Několik PSG totiž používá pro generování trojúhelníkového nebo i pilového signálu čtyřbitový čítač (tedy 16 úrovní), jehož výstup je přes jednoduchý čtyřbitový D/A převodník přiváděn na reproduktor. To znamená, že na osciloskopu uvidíme spíše různé schůdky, ale určitě ne čistý trojúhelníkový průběh. Konkrétní tvar signálu je samozřejmě ovlivněn i filtry a zesilovačem, které „schůdky“ do jisté míry vyhladí.

Generování šumu je u naprosté většiny PSG založeno na použití posuvného registru se zpětnou vazbou (LSFR, též poly counter), přičemž bitová délka tohoto registru určuje, jak bude šum znít – zda bude skutečně „náhodný“, nebo zda bude mít tak krátkou periodu, že vlastně vznikne pouze zkreslený tón. LSFR použité u zvukových generátorů mají mnoho podob a různou délku (od čtyř do sedmnácti bitů).

4. Alternativa PSG pro rychlejší počítače: D/A převodník

Ještě před popisem čipů s FM syntézou se zmiňme o jedné alternativě k PSG. Jedná se o pouhý D/A převodník připojený na vhodnou sběrnici – a D/A převodník lze v tom nejjednodušším případě sestavit pouze z „totemu“ rezistorů a popř. ještě doplněného o oddělovací kondenzátor.

Obrázek 5: Složitější varianta COVOXu, která zachovává průchozí paralelní port.

Zvukové zařízení Covox Speech Thing, jenž je známé spíše pod svým zkráceným názvem Covox, bylo ve druhé polovině devadesátých letech minulého století poměrně populární, především díky tomu, že ho bylo velmi snadné vyrobit i v domácích podmínkách. Ve své podstatě se jednalo o velmi jednoduchý osmibitový digitálně-analogový převodník (DAC – Digital to Audio Converter) připojený na paralelní port. Původní Covox Speech Thing byl vyráběný firmou Covox Tympanum Corporation, ovšem jeho cena byla velmi vysoká – celých 70 tehdejších dolarů, což odpovídá cca 90 současným dolarům. Ovšem vzhledem k tomu, že digitálně-analogový převodník byl sestaven pouze z 25pinového konektoru DB-25, několika rezistorů a jednoho kondenzátoru (bez zesilovače, protože Covox se běžně připojoval do aktivních reproduktorových soustav), bylo ho možné sestavit doslova za pár korun. Existuje několik variant systému Covox, z nichž nejjednodušší obsahuje pouze devět rezistorů a jeden kondenzátor.

Obrázek 6: JAM – přehrávač hudby vytvořené původně pro čip AY.

5. Zvuková karta AdLib

V roce 1988 založil Martin Prevel v Quebecu firmu Adlib zaměřenou na vývoj periferních zařízení pro tehdy již notně rozšířené osobní počítače kompatibilní s úspěšným, i když multimediálně nepříliš vybaveným mikropočítačem IBM PC. Jedním z prvních zařízení – a nutno říci, že také nejúspěšnějším – byla zvuková karta Adlib postavená na čipu YM3812 (označovaném také jako OPL2) vyráběném firmou Yamaha. Yamaha, která se na hudební syntézu založenou na fázové či frekvenční modulaci specializovala, původně tento čip dodávala pouze firmě Adlib, později však firma Microsoft (!) požádala, aby se tyto čipy nabízely i dalším výrobcům periferních zařízení. Výsledek na sebe nenechal dlouho čekat – jednou z prvních firem, které začaly čip YM3812 používat ve svých zvukových kartách, byla Creative Technology se svými kartami Sound Blaster. Na jednu stranu to sice znamenalo, že se Adlib stal ve své době de facto standardem pro syntézu hudby (karty Sound Blaster s ním byly zpětně kompatibilní), ale samozřejmě se také jednalo o konkurenci, která po několika letech dovedla firmu Adlib ke krachu, protože nedokázala konkurovat relativně levným Sound Blasterům (které vlastně veškerou funkcionalitu Adlibu obsahovaly) ani zvukovým kartám Pro Audio Spectrum.

Obrázek 7: Zvuková karta Adlib určená do osmibitové varianty sběrnice ISA (PC BUS).

Nicméně zvuková karta Adlib je oprávněně považována za mezník ve vývoji osobních počítačů kompatibilních s IBM PC, protože umožnila relativně snadnou tvorbu hudby s velmi malými nároky na výpočetní výkon použitého mikroprocesoru (Adlib bylo možné použít i v IBM XT) i nepatrnými nároky na požadovanou kapacitu operační paměti – řádově se jednalo o stovky bajtů na přehrávací rutinu a několik kilobajtů pro mnohaminutovou skladbu. Poměrně brzy po vzniku prvních her, které čip OPL2 zabudovaný v Adlibu používaly, se začaly objevovat i aplikace umožňující tvorbu tónů napodobujících různé hudební nástroje (kolekce těchto tónů se nazývaly banky, soubory s banky byly v různých formátech dostupné jak komerčně, tak i cestou freeware) i programy pro tvorbu hudby, které byly v mnoha ohledech podobné trackerům, o nichž jsme se taktéž zmínili. Některé trackery, například Scream Tracker, dokonce později umožňovaly kombinovat hudbu pro čip OPL2 se samplovanými zvuky. Bližší informace o OPL2 i aplikacích pro něj si povíme v navazující části dnešního článku.

Obrázek 8: Tento tracker je určen přímo pro čipy OPL.

6. Frekvenční modulace a její použití při zvukové syntéze

Využitím FM syntézy pro napodobení zvuku hudebních nástrojů se původně zabýval John Chowning, který již v roce 1967 učinil důležitý objev při pokusu o vygenerování zvukového efektu známého pod pojmem vibrato. Chowningův pokus byl založen na použití elektronického obvodu sestaveného z dvojice za sebe zapojených oscilátorů, tj. generátorů sinusových signálů, přičemž první oscilátor (s frekvencí cca 20 Hz) ovlivňoval frekvenci druhého oscilátoru, který generoval výsledný zvukový (slyšitelný) signál. Pomocí takto zapojené dvojice oscilátorů se Chowningovi podařilo vytvořit harmonický tón s celým spektrem vyšších frekvencí, přičemž změnou frekvence a amplitudy prvního oscilátoru se výška výsledného tónu neměnila, ale jeho zabarvení ano (přesněji řečeno se výška samozřejmě měnila, ale tak rychle, že lidské ucho v celém spektru frekvencí rozpozná právě frekvenci základní, jejíž výkon ve frekvenčním spektru je současně nejvyšší). Skutečné vibrato lze nasimulovat s použitím nižší frekvence prvního oscilátoru (nazývaného také modulator), naopak pro napodobení zvuku široké palety hudebních nástrojů je frekvence prvního modulátoru poněkud vyšší. Frekvence druhého oscilátoru (jenž se nazývá carrier – nosná) určuje základní frekvenci (výšku) vytvářeného tónu, přičemž podíl frekvencí obou oscilátorů lze v praxi vyjádřit jednoduchým zlomkem.

Obrázek 9: Frekvenční modulace v případě, že má první signál (modrý) zvaný modulátor velmi dlouhou periodu v porovnání se signálem druhým, jenž je zvaný nosná (carrier).

John Chowning, který v době svého objevu pracoval na universitě ve Stanfordu, se spojil s panem Ishimurou ze společnosti Yamaha, jenž při osobní návštěvě na Stanfordu po necelých deseti minutách princip FM, způsob jejího využití i poměrně dalekosáhlé důsledky pro další vývoj v celém oboru hudebních syntetizérů pochopil a doporučil svým nadřízeným, aby se Yamaha v této oblasti více angažovala. Důvod Ishimurova nadšení spočíval v tom, že pro napodobení zvuku nástrojů s využitím FM syntézy je zapotřebí pouze poměrně jednoduchý analogový či číslicový obvod (Yamaha se v tomto ohledu téměř výhradně zaměřila na číslicové–digitální zvukové obvody, více viz další kapitoly) a především je pro každý nástroj a tón nutné nastavovat relativně malé množství parametrů, pro jejichž uložení dostačuje pouze minimum paměti (doslova několik bajtů), takže čipy s FM syntézou bylo možné použít i v levnějších syntetizérech, na rozdíl od pozdější wavetable syntézy, která vyžaduje poměrně velké množství paměti a výkonnější procesory pro zpracování vzorků nástrojů (nehledě na to, že samotná wavetable syntéza nijak neřeší tvorbu nových zvuků, na rozdíl od FM syntézy doplněné o možnost ovlivnění obálky – envelope – editovaného tónu).

Obrázek 10: Pokud se perioda modulátoru zkracuje, je změna tvaru výstupního signálu stále výraznější.

7. FM syntéza a hudební čipy Yamaha YM 3812 a YMF 262

Společnost Yamaha si následně způsob tvorby hudby pomocí FM syntézy nechala licencovat a posléze zahájila vývoj a výrobu vlastních čipů pro syntézu hudby (původně měla tyto čipy pro Yamahu vyrábět firma NEC) a v roce 1983 prodala více než 200 000 kusů legendárního syntetizéru Yamaha DX-7, což bylo na tehdejší dobu (menší trh než dnes) považováno za velký úspěch následovaný po několika letech krachem firem, jenž vyráběly nyní již zastaralé elektromechanické a analogové syntetizéry (samotné obchodní značky těchto výrobců sice přežily, ale většinou dnes patří jiným vlastníkům). V roce 1994 dokonce přesahoval obrat trhu se zvukovými kartami s FM syntézou jednu miliardu dolarů – a naprostá většina těchto zvukových karet používala čip OPL2 nebo později OPL3, kterými se dnes zabýváme. Zajímavé přitom je, že starší čipy vyráběné Yamahou ve skutečnosti používaly při zvukové syntéze fázovou modulaci (PM) a ne modulaci frekvenční (FM), přestože firma měla patent pouze na FM syntézu. I když mezi fázovou modulací a modulací frekvenční je pouze minimální rozdíl (záleží jen na tom, kdy se aktuální hodnota modulátoru použije ve výpočtu výsledného signálu), mohlo – i přes existenci patentu – na trhu vzniknout více konkurenčních řešení.

Obrázek 11: Další snižování frekvence modulátoru – výsledný signál získává tvar charakteristický pro FM syntézu. Po analýze signálu ve frekvenční oblasti by bylo patrné, že se zde vyskytuje nekonečné množství frekvencí, které jsou však při reálné reprodukci zvuku z obou stran ořezány (jak v zesilovači, tak i v reproduktoru nebo ve sluchátkách).

8. Zvuková syntéza na čipu Yamaha YM 3812 (OPL2)

První takřka celosvětově rozšířenou zvukovou kartou na osobních počítačích kompatibilních s IBM PC, která obsahovala hudební čip Yamaha YM 3812, byla již výše zmíněná zvuková karta AdLib. Později byl tento obvod použit i na Sound Blasterech a dalších typech zvukových karet (více či méně s AdLibem kompatibilních). Jedná se o plně digitální čip obsahující poměrně jednoduchý procesor doplněný o paměť ROM s kapacitou 512 bajtů, která je rozdělena na dvě stejně velké části. V prvních 256 bajtech se nachází vzorky jedné čtvrtiny periody sinusového signálu uložené v logaritmické škále (výpočet sinusovky by byl zbytečně komplikovaný, navíc ze znalosti první čtvrtiny periody lze díky symetrii sinusovky triviálně odvodit její průběh pro celou periodu), druhých 256 bajtů obsahuje převodní hodnoty exponenciální funkce – veškeré výpočty na čipu YM 3812 jsou totiž prováděny s hodnotami v logaritmické škále, protože nejčastější výpočty (především samotná fázová modulace, modifikace signálu obálkou pomocí amplitudové modulace, změna hlasitosti a aplikace zpětné vazby) jsou založeny na násobení, jež se v logaritmické škále převádí na sčítání, které je implementačně mnohem jednodušší než násobení (samotná násobička by čip prodražila – nejde o DSP).

Obrázek 12: Legendární klávesy Yamaha DX-7 s FM syntézou – dodnes vyhledávaný a ceněný výrobek, který měl velký dopad na celou hudební scénu.

Převod na lineární hodnoty je prováděn před posláním vypočteného signálu na externí digitálně-analogový převodník (většinou se jednalo o čip YM3014B, samplovací frekvence, tj. rychlost přenášení vzorků na D/A převodník, je poměrně vysoká – 49720 Hz). To, že je YM 3812 plně digitálním čipem, je výhodné pro jeho emulaci, protože není nutné složitě modelovat chování analogových oscilátorů či filtrů (to je mimochodem asi nejproblematičtější u slavného SIDu). Čip je vybaven piny pro připojení k osmibitové sběrnici řízené signály CS, RD a WR. Pro výběr adresy je vyveden pouze jeden pin A0 – to je však dostačující, protože se rozlišují pouhé dvě adresy mapované do I/O prostoru 0×388 a 0×389 (tyto adresy byly z důvodu zpětné kompatibility použity i u modernějších zvukových karet). Na adrese 0×388 je umístěný indexový registr, do nějž se zapisuje index vybraného interního registru (0–255), a na adrese 0×389 je datový registr. Čip obsahuje 244 interních osmibitových registrů, pomocí nichž se řídí celý průběh zvukové syntézy – počet registrů je tedy mnohem vyšší, než u dříve popisovaných zvukových čipů (POKEY: 9 registrů, SID: 29 registrů, AYčko: 14 registrů). Zápis do interního registru musí být proveden ve dvou krocích – výběr registru zápisem jeho čísla na I/O adresu 0×388 a po malém zpoždění zápisem nové hodnoty interního registru na adresu 0×389.

9. Základ OPL – operátory a jejich vzájemná vazba

Čip Yamaha YM 3812 generuje zvuk s využitím devíti samostatně nastavitelných hudebních kanálů, přičemž každý kanál obsahuje dvojici takzvaných operátorů, které mohou být navzájem propojeny buď tak, že se oba signály vytvářené v obou operátorech jednoduše sčítají nebo první operátor (modulator) ovlivňuje pomocí fázové modulace tvar signálu vytvářeného druhým operátorem (carrier) – viz též následující obrázek.

Obrázek 13: Způsob zapojení dvojice operátorů v jednom hudebním kanálu v čipu OPL2. Naznačena je i zpětnovazební smyčka, která může dosti zásadním způsobem ovlivnit výsledný tón (pokud je ovšem povolena).

Každý operátor je složen ze tří bloků – oscilátoru (generátoru periodického signálu o zadané frekvenci), generátoru obálky (envelope) a obvodu pro řízení výstupní úrovně. Každý oscilátor může generovat periodický signál odvozený od klasické sinusovky, jejíž podoba je, jak již bylo řečeno v předchozím odstavci, uložena (v logaritmické škále) v 256 bajtech paměti ROM přímo na hudebním čipu. Všechny čtyři varianty signálu jsou zobrazeny na následujícím obrázku. Jedná se samozřejmě již o signál převedený na lineární škálu, který lze zobrazit na osciloskopu připojeného na výstupu ze zvukové karty v případě, že se povolí pouze jeden z devíti hudebních kanálů, nastaví se sčítání výstupů obou operátorů a obálka bude obsahovat nenulovou hodnotu sustain (viz navazující odstavec). Na tomto místě je vhodné říci, že firma Yamaha vyráběla i „originální“ čip YM 3526 (OPL1), který se od YM 3812 odlišoval prakticky pouze v tom, že dokázal pracovat jen se sinusovkou a nikoli s dalšími třemi tvary signálů (OPL3 naopak další čtyři průběhy přidává, mezi jinými i oblíbený obdélníkový signál se širokým, teoreticky nekonečným spektrem).

Obrázek 14: Čip OPL2 umožňuje pro každý operátor použít jeden ze čtyř tvarů vlny založený na sinusovce o volitelné frekvenci.

10. Obálka typu ADSR (Attack, Decay, Sustain, Release)

Signál vytvářený v každém operátoru je ovlivněn obálkou (envelope), pomocí níž lze měnit jeho amplitudu. Jedná se o dnes již klasickou obálku typu ADSR (attack, decay, sustain, release), která se objevuje například u SIDu apod. Základní tvar obálky je určen čtveřicí parametrů – attack rate (doba či strmost náběhu první hrany), decay rate (doba či strmost druhé – klesající/sestupné – hrany), sustain level (stabilní úroveň signálu obálky po prvotním vzrůstu a poklesu, jenž je v programech většinou vyjadřovaná v procentech amplitudy, ovšem v řídicích registrech uložená jako zlomek maximální úrovně) a release rate (doba či strmost poslední – klesající – hrany).

Obrázek 15: Tvar obálky generované pro každý operátor na čipu YM 3812. AR=attack rate, DR=decay rate, SL=sustain level a RR=release rate. Začátek obálky i doba trvání úrovně sustain je určena stavem bitu KEY-ON.

Pro každý z těchto parametrů je v řídicích registrech zvukového čipu YM 3526 vyhrazena čtveřice bitů, což prakticky znamená, že hodnoty attack a decay jsou společně uloženy v jednom osmibitovém registru a hodnoty sustain a release v registru druhém. Tyto registry jsou alokovány pro každý operátor zvlášť. 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 následovně: maximální úroveň signálu obálky je vždy nastavena na 100% a doba úrovně sustain závisí na době, po kterou je bit KEY-ON programově držený v úrovni logické jedničky. Tento bit je rezervovaný pro každý kanál (nikoli pro operátor), jednotlivé kanály je tedy možné ovládat zvlášť, což je pro skutečnou polyfonii (vícehlasou hudbu) nezbytné.

Poznámka: KEY-ON tedy odpovídá stisku klávesy na syntetizéru.

Obrázek 16: Musicdisk nazvaný „Sanxion AdlibDisk“ – program přehrávající hudbu určenou pro zvukové karty obsazené čipem s OPL 2 nebo OPL 3. V současnosti je ho možné spouštět například v DOSBoxu.

11. Zpětná vazba a perkusní režim

Další zajímavou vlastností čipu YM 3812 je možnost zavedení zpětné vazby u prvního operátoru – modulátoru. Tato zpětná vazba je naznačena na dvanáctém obrázku (viz předchozí kapitoly). Pomocí tří bitů lze zvolit zpoždění signálu, který se pomocí zpětné vazby vrací na vstup modulátoru, aby zde byl sečten s původním vstupním signálem. Doba zpoždění není zadána absolutně (to by při změně výšky tónu znamenalo nutnost dobu zpoždění přepočítat), ale relativně s ohledem na frekvenci (periodu signálu) nastavenou pro daný operátor.

Obrázek 17: Musicdisk „Sanxion AdlibDisk II“.

Poslední důležitou vlastností je možnost přepnutí čipu do takzvaného perkusního režimu (persussion mode), který představuje alternativu k výše popsanému melodickému režimu. Zatímco v melodickém režimu lze použít osmnáct operátorů rozdělených po dvojicích do devíti hudebních kanálů, je po přepnutí čipu do režimu perkusního k dispozici šest melodických kanálů (každý obsahuje dva operátory, které se chovají tak, jak byly popsány v předchozích kapitolách) a současně pěti kanálů použitých pro bicí nástroje – Bass Drum, Snare Drum, Tom-Tom, Cymbal a Hi-Hat. Pro vytváření zvuků bicích nástrojů je použitý generátor bílého šumu, což je v mnoha ohledech podobné funkcím čipů POKEY, SID či AY-3–8190.

12. Hudební čip Yamaha YMF 262 (OPL 3)

Hudební čip Yamaha YMF 262, známý též pod označením OPL 3, představuje další generaci zvukových obvodů založených na frekvenční (resp. přesněji řečeno fázové) modulaci. Oproti výše popsanému čipu YM 3812 došlo k několika podstatným úpravám. Především se zvýšil celkový počet operátorů z osmnácti na třicet šest, do jednoho kanálu je možné zapojit až čtyři operátory (viz další kapitolu), místo čtyř typů signálů na vstupech operátorů je k dispozici osm typů (včetně obdélníkového signálu a logaritmicky zkresleného signálu pilového) a na výstup čipu je možné zapojit dvojici D/A převodníků (viz sedmnáctý obrázek umístěný pod tímto odstavcem) a vytvářet tak stereo hudbu – ve skutečnosti však není možné plynule nastavovat přechod mezi levým a pravým reproduktorem (panning), lze pouze zvolit, zda je výstup z nějakého hudebního kanálu přehráván na levém, pravém či obou reproduktorech. Vzhledem ke zvýšenému počtu operátorů se zvýšil i počet interních registrů. Z tohoto důvodu jsou místo jedné registrové sady použity sady dvě, což znamená, že místo dvou adres mapovaných do I/O prostoru (index a data) jsou použity adresy čtyři.

Obrázek 18: Připojení čipu OPL 3 na dvojici D/A převodníků

Současně byla do značné míry zachována zpětná kompatibilita s OPL 2, což je důležité, protože zvukové karty založené na OPL 3 mohly být stále kompatibilní s původním Adlibem. Podrobný popis možností OPL 3 najdete v dokumentu Programmer's Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer, který napsal spolužák z VUT Vladimír Arnošt, kterého tímto zdravím :-)

Obrázek 19: Tvary vln, které lze použít na čipu OPL 3. První čtyři průběhy jsou zpětně kompatibilní s OPL 2.

13. Způsob zapojení operátorů v režimu OPL 3

Zatímco u čipu YM 3812 bylo možné operátory v jednom kanálu zapojit pouze do dvou konfigurací naznačených na dvanáctém obrázku, lze u čipu YMF 262 použít mnohem větší počet kombinací, které jsou zobrazené na obrázku číslo 17. Existují tři možnosti konfigurace: 18 kanálů, z nichž každý obsahuje dva operátory, 15 melodických kanálů se dvěma operátory společně s pěti kanály pracujícími v perkusním režimu a konečně 6 kanálů se čtyřmi operátory (zbytek jsou buď dvouoperátorové kanály nebo kanály pracující v perkusním režimu). V konfiguraci čtyřoperátorového kanálu vždy jeden z operátorů (původní modulátor) obsahuje zpětnou vazbu, i když v řídicích registrech je možné nastavit úroveň zpětné vazby pro všechny operátory – u tří čtvrtin operátorů nemá tedy obsah příslušného řídicího registru vliv na generovaný tón.

Obrázek 20: Způsob zapojení operátorů v režimu OPL 3.

Z předchozího textu je patrné, že čip OPL 3 nabízí mnohem více možností při vytváření zvuků, ovšem mnoho vývojářů nedokázalo všechny možnosti syntézy v tomto režimu využít – z tohoto důvodu se velmi často setkáme s tím, že je použita „dvouoperátorová“ syntéza a čip YMF 262 je tak vlastně degradován na stereo verzi původního čipu YM 3812 s dvojnásobným množstvím hudebních kanálů (osmnáct kanálů namísto devíti).

Obrázek 21: Musicdisk „Quasar“ – další z hudebních programů určených pro hudební čipy OPL 2 a OPL 3.

14. Retrohrátky – využití čipů OPL2 a OPL3 v současnosti

Po dlouhém a převážně teoretickém úvodu se konečně dostáváme k popisu konkrétních přípravků, které obsahují původní čipy OPL2 nebo OPL3, pochopitelně i s dalšími potřebnými součástkami a integrovanými obvody, tedy s D/A převodníkem (popsaným výše), rozhraním umožňujícím komunikaci s OPL2 a OPL3 přes sériovou sběrnici a pochopitelně i analogovou částí se sluchátkovým výstupem (klasický jack). Víme již, že čipy OPL2 a OPL3 generují tóny, popř. zvuky bicích nástrojů na základě hodnot uložených do řídicích registrů těchto čipů. V době kralování zvukových karet Adlib či SoundBlaster byla situace jednoduchá – prakticky se jen použil jednoduchý výběr adresy a OPL2 nebo OPL3 se přímo připojil na sběrnici PC BUS, resp. na její šestnáctibitovou obdobu ISA. Dnes je však poněkud paradoxně situace složitější, protože platforma PC již není tak otevřeným a snadno (i v domácích podmínkách) rozšiřitelným systémem, protože prakticky (s výjimkou průmyslových PC) zmizela jak sběrnice ISA, tak i například paralelní a sériový port.

Obrázek 22: Doma zbastlená obdoba „zvukové karty“ COVOX, což je vlastně pouze D/A převodník připojený na paralelní port.

15. OPL2 Audio Board

Nejprve se podívejme na zvukovou kartu nazvanou OPL2 Audio Board, kterou si lze buď pořídit v sestavené podobě, objednat si plošný obvod se všemi součástkami, nebo si ji postavit z vlastních zdrojů (což bude nejvíce problematické, pokud nemáte k dispozici čip OPL2 a k němu příslušný D/A převodník). Informace o OPL2 Audio Boardu jsou dostupné na adrese https://www.tindie.com/pro­ducts/cheerful/opl2-audio-board/, dokumentace je k dispozici na stránce https://hackaday.io/project/18995-opl2-audio-board-for-arduino-raspberry-pi. Tuto zvukovou kartu lze přes sériovou sběrnici snadno připojit k Arduinu i k Raspberry Pi – a pro tyto dvě platformy jsou dostupné i potřebné knihovny. Ve skutečnosti je ovšem možné OPL2 Audio Board připojit i k PC, ovšem již ne tak snadno – je totiž zapotřebí (například přes přípravek připojený k USB) příslušnou sériovou sběrnici vytvořit.

Obrázek 23: Zapojení COVOXu.

Schéma této zvukové karty, které lze najít na adrese https://hackaday.io/projec­t/18995/gallery#04af70dc9bfe6826dda92­06983c97fc0, prozrazuje podrobnosti o jejím fungování (pozor – toto schéma neobsahuje zapojení ovladače hlasitosti). Nejdůležitější část schématu je zobrazena vpravo dole. Můžeme zde vidět dvojici čipů YM3812 (tedy vlastní legendární OPL2) a YM3014B, což je digitálně-analogový převodník (https://www.yamaha-tech.com/wiki/Yamaha_YM3014B), který zpracovává sériový vstup přicházející z OPL2 a vytváří monofonní audio signál. Ten je dále zpracován v operačním zesilovači LM358, jenž je zobrazen v levé horní části schématu (J2 označuje klasický 3,5mm audio konektor neboli jack). Invertor 7404 (přesněji řečeno šestice invertorů na jediném čipu) společně s krystalem a pomocnými součástkami (levá dolní část) zajišťuje hodinový signál a kromě toho vytváří ze signálu WR jeho negovanou podobu ST_CP. Hodinový signál je použitý vlastním čipem OPL2, nikoli pro časování sběrnice.

16. Sériová sběrnice

Posledním čipem je 74HC595, jenž slouží pro převod dat posílaných po sériové sběrnici do paralelní podoby, kterou je možné poslat do čipu OPL2 a zajistit tak předání příkazu (což je většinou zápis bajtu do vybraného pracovního registru přes vstupy D0-D7, výběrovým signálem A0 a signálem pro zápis WR). Samotná funkce použité sériové sběrnice je velmi jednoduchá: z Arduina či Raspberry PI (popř. jakéhokoli jiného zařízení, na kterém lze tuto sběrnici realizovat – tím může být libovolný osmibitový domácí počítač atd.) je posílán hodinový signál SH_CP (přesněji signál pro posun bitů uvnitř posuvného registru), sériová data DS (osmice bitů) a po předání osmi bitů i signál ST_CP latch, který určuje, že došlo k přenosu celého bajtu, který je poté „vystaven“ na pinech D0 až D7 (tento signál je ovšem nejdříve invertován, protože je aktivní v úrovni logické jedničky). Ostatní dva signály A0 a RST jsou společně s WR (v přímé podobě) připojeny přímo k OPL2, kde první signál slouží k výběru příkazu/dat, druhý k inicializaci čipu a třetí k zápisu příkazu či dat do čipu. To znamená, že WR má dvě funkce – zajištění výstupu osmice bitů D0-D7 z posuvného registru a současně zápis této osmice do čipu OPL2.

Poznámka: mimochodem, schéma zvukové karty AdLib pro sběrnici PC BUS a ISA vypadalo přibližně takto https://docs.google.com/vi­ewer?a=v&pid=sites&srcid=bWFsaW5vdi5jb2­18d3d3fGd4OjEwNDEwYzVhYWRkMjAw­ZDM (některé součástky však byly jinak značeny – toto je moderní reinkarnace této známé zvukové karty).

Pro komunikaci, tedy v tomto případě konkrétně pro posílání dat a příkazů se používají vodiče (resp. piny) původně určené primárně pro sběrnici SPI (Serial Peripheral Interface). Ta obecně představuje jednu z forem sériových externích sběrnic sloužících pro vzájemné propojení dvou či více komunikujících uzlů, přičemž jeden uzel obvykle vystupuje v roli takzvaného řadiče sběrnice (master), ostatní uzly pracují v režimu slave. Uzel, který pracuje jako master, obsahuje generátor hodinového signálu, který je rozveden do všech ostatních uzlů, čímž je umožněn zcela synchronní (navíc ještě obousměrný) přenos dat. Hodinový signál je rozváděn vodičem označovaným symbolem SCK. Kromě vodiče s hodinovým signálem jsou uzly propojeny dvojicí vodičů označovaných většinou symboly MISO (Master In, Slave Out) a MOSI (Master Out, Slave In), pomocí nichž se obousměrně (full duplex) přenáší data. Posledním signálem, který se u této sběrnice používá, je signál SSEL (Slave Select), jenž slouží – jak již jeho název napovídá – k výběru některého uzlu pracujícího v režimu slave.

17. Propojení karty OPL2 Audio Board s Arduinem a Raspberry Pi

V případě OPL2 Boardu je provedeno několik změn: posílání dat není duplexní, ale pouze směrem od řadiče sběrnice (tedy od Arduina/Raspberry PI atd.), dále se vodič SS/SSEL používá ve funkci zachycení celého bajtu (latch). Komunikační protokol (který u SPI není předepsán) je jednoduchý, protože o rozhodnutí, zda se přenáší příkaz či data, se stará samostatný signál A0. Díky tomu bylo možné zachovat co nejjednodušší zapojení OPL2 Boardu. Podívejme se nyní na konkrétní propojení této zvukové karty s jednodeskovými mikropočítači Arduino a Raspberry Pi. V případě Arduina se používá toto zapojení:

OPL2 Board Pin na Arduinu
+5V +5V
GND GND
A0 9 (PB1)
Data 11 (PB3, MOSI)
Latch 10 (PB2, SS/SSEL)
Shift 13 (PB6, SCK)
Reset 8 (PB0)

Pro propojení s Raspberry Pi se používá následující propojení:

OPL2 Board GPIO na Raspberry Pi
+5V 2 (+5V)
GND 6 (GND)
A0 16 (BCM23)
Data 19 (MOSI)
Latch 12 (PCM_C)
Shift 23 (SCLK)
Reset 18 (BCM24)
Poznámka: povšimněte si, že se v obou případech používají základní piny původně navržené pro plnohodnotnou sběrnici SPI, tedy konkrétně piny MOSI a SCK/SCLK.

18. OPL3 Duo!

Zvuková karta OPL2 Audio Board, s níž jsme se seznámili v předchozích kapitolách, tvoří (alespoň podle mého názoru) velmi užitečný základ pro retrohrátky, popř. pochopitelně i pro kompozici vlastní hudby. Ovšem v případě potřeby napodobení původních zvukových karet s OPL3 či při snaze o stereofonní výstup již nebudou možnosti jediného čipu OPL2 postačující. Existuje ovšem rozšíření původní idey OPL2 Audio Boardu, které se jmenuje OPL3 Duo!. A název této zvukové karty skutečně prozrazuje její základní vlastnosti, protože je osazena dvojicí čipů OPL3 a díky jejich oddělenému výstupu je tedy umožněno stereofonní přehrávání. Zapojení této zvukové karty se pochopitelně odlišuje, ovšem základní vlastnosti zůstávají zachovány a i programová podpora je na podobné úrovni.

bitcoin_skoleni

19. Obsah druhé části článku

Dnes jsme se zaměřili na teoretický úvod do problematiky FM syntézy s využitím čipu OPL2. Popsali jsme si i hardwarovou podobu karty, která možnosti OPL2 zpřístupňuje prakticky komukoli s jen základními znalostmi o hardware a programování. Příště si ukážeme, jak se tato karta ovládá softwarově, jaká pro ni existuje programová podpora, zmíníme se o úpravě DOSBoxu tak, aby tuto kartu podporoval, existujících trackerech (a vůbec základům, na nichž jsou trackery postaveny) atd.

Obrázek 24: Klasický tracker z dob zvukových karet přehrávajících samply.

20. Odkazy na Internetu

  1. Keyboard Synthesizer
    http://www.solarnavigator­.net/music/instruments/ke­yboards.htm
  2. FMS – Fully Modular Synthesizer
    http://fmsynth.sourceforge.net/
  3. Javasynth
    http://javasynth.sourceforge.net/
  4. Software Sound Synthesis & Music Composition Packages
    http://www.linux-sound.org/swss.html
  5. Mx44.1 Download Page (software synthesizer for linux)
    http://hem.passagen.se/ja_linux/
  6. Software synthesizer
    http://en.wikipedia.org/wi­ki/Software_synthesizer
  7. Frequency modulation synthesis
    http://en.wikipedia.org/wi­ki/Frequency_modulation_syn­thesis
  8. Yamaha DX7
    http://en.wikipedia.org/wi­ki/Yamaha_DX7
  9. Wave of the Future
    http://www.wired.com/wired/ar­chive/2.03/waveguides_pr.html
  10. Analog synthesizer
    http://en.wikipedia.org/wi­ki/Analog_synthesizer
  11. Minimoog
    http://en.wikipedia.org/wiki/Minimoog
  12. Moog synthesizer
    http://en.wikipedia.org/wi­ki/Moog_synthesizer
  13. Tutorial for Frequency Modulation Synthesis
    http://www.sfu.ca/~truax/fmtut.html
  14. An Introduction To FM
    http://ccrma.stanford.edu/sof­tware/snd/snd/fm.html
  15. John Chowning
    http://en.wikipedia.org/wi­ki/John_Chowning
  16. OPL2 Audio Board
    https://www.tindie.com/pro­ducts/cheerful/opl2-audio-board/
  17. ArduinoOPL2.DosBox
    https://github.com/DhrBak­steen/ArduinoOPL2.DosBox
  18. OPL3 Duo!
    https://www.tindie.com/pro­ducts/cheerful/opl3-duo/
  19. Vladimir Arnost:
    Programmer's Guide to Yamaha YMF 262/OPL3 FM Music Synthesizer
  20. Yamaha LSI corp:
    YMF262, FM Operator Type L3 (OPL3)
  21. Tero T"tt":
    The Ad Lib Music Synthesizer Card Programming Guide
  22. Pulse Width Modulation (PWM) Simulation Example
    http://decibel.ni.com/content/docs/DOC-4599
  23. Resistor/Pulse Width Modulation DAC
    http://www.k9spud.com/trax­mod/pwmdac.php
  24. Class D Amplifier
    http://en.wikipedia.org/wi­ki/Electronic_amplifier#Clas­s_D
  25. Covox Speech Thing / Disney Sound Source (1986)
    http://www.crossfire-designs.de/index.php?lang=en&what=ar­ticles&name=showarticle.htm&ar­ticle=soundcards/&page=5
  26. Covox Digital-Analog Converter (Rusky, obsahuje schémata)
    http://phantom.sannata.ru/kon­kurs/netskater002.shtml
  27. Wikipedia EN: PC speaker
    http://en.wikipedia.org/wi­ki/PC_speaker
  28. Wikipedia EN: Intel 8253
    http://en.wikipedia.org/wi­ki/Intel_8253
  29. Wikipedia EN: Intel 8255
    http://en.wikipedia.org/wi­ki/Intel_8255
  30. Wikipedia EN: Covox Speech Thing
    http://en.wikipedia.org/wi­ki/Disney_Sound_Source
  31. Memory mapped I/O
    http://www.sharpmz.org/mz-700/memio.htm
  32. Using an 8255 PPI chip
    http://drew.hickmans.net/8255.htm
  33. Aktivní Covox (D/A převodník na paralelní port)
    http://rayer.ic.cz/elektro/covox.htm
  34. Programming the PC Speaker
    http://www.gamedev.net/re­ference/articles/article442­.asp
  35. OPL2 Audio Board for Arduino & Raspberry Pi
    https://hackaday.io/project/18995-opl2-audio-board-for-arduino-raspberry-pi
  36. IC 7404 Pin Diagram, Circuit Design, Data sheet, application
    https://www.etechnog.com/2019/01/ic-7404-pin-diagram-data-sheet-application.html
  37. Yamaha YM3014B
    https://www.yamaha-tech.com/wiki/Yamaha_YM3014B
  38. 74HC595 Shift Register Interfacing with Arduino
    https://microcontrollerslab­.com/74hc595-shift-register-interfacing-arduino/
  39. ISA OPL2 Card
    http://www.malinov.com/Home/sergeys-projects/isa-opl2-card
  40. DhrBaksteen / ArduinoOPL2
    https://github.com/DhrBak­steen/ArduinoOPL2
  41. 74HC595 8-bit Shift Register
    https://components101.com/ics/74hc595-shift-register-pinout-datasheet
  42. An Introduction to Arduino Uno Pinout
    https://www.circuito.io/blog/arduino-uno-pinout/
  43. Arduino Uno R3 Pinout
    https://i.stack.imgur.com/dVkQU.jpg
  44. Externí sériové sběrnice SPI a I²C
    https://www.root.cz/clanky/externi-seriove-sbernice-spi-a-i2c/
  45. Serial Peripheral Interface (Wikipedia CZ)
    https://cs.wikipedia.org/wi­ki/Serial_Peripheral_Inter­face
  46. Serial Peripheral Interface (Wikipedia EN)
    https://en.wikipedia.org/wi­ki/Serial_Peripheral_Inter­face
  47. OPL2 Audio Board: an AdLib sound card for Arduino
    https://vincent.bernat.ch/en/blog/2018-opl2-audio-board
  48. ArduinoOPL2
    https://github.com/DhrBak­steen/ArduinoOPL2/blob/v1­.4.6/examples/SerialIface/Se­rialIface.ino
  49. OPL3 Duo
    https://cheerful.nl/OPL3Du­o/index.html

Autor článku

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