Építsünk hanggenerátort!
3 csatornás programozható hanggenerátor interface
Bevezetés
Nélkülözhetetlen zeneelméleti alapfogalmak
Építsünk hanggenerátort!
Hanggenerátor mono kimenettel
Hanggenerátor sztereo kimenettel
Külső órajel generálása
Formai javaslat az interface kivitelezéséhez
Az AY-3-8912 hanggenerátor IC
A hanggenerátor programozása
Mintaprogramok a hanggenerátor használatához
PIO (parallel input-output) párhuzamos digitális be / kimeneti adatvezérlés
Utószó
Függelék - hanggenerátor frekvencia-táblázat
"A zene térben két dimenzióban, vízszintesen és függőlegesen létrejövő jelenség. A vízszintes dimenziót a dallamvonal jelöli, a függőlegeset az összhangzat vagyis az akkord: több hang egyidejű megjelenése egymás fölött." - olvashatjuk a lexikonban. A zene ősi eredetű jelenség, a társadalmi fejlődés minden szintjén találkozhatunk vele, kezdve két fadarab egymáshoz ütögetésétől egészen a modern gépzenéig.
Egy dolgot azonban már a legegyszerűbb zenei hangzásoknál is vizsgálnunk kell: hány hangot szólaltatunk meg egyidőben? A vízszintes zeneszemlélet tudománya a melódiatan vagy más szóval a dallamtan. Ez a tudomány foglalkozik az egy hanggal létrehozható jelenségekkel (pl. oktáv, hangnem, amplitúdó, lépések, hangközök stb.). A függőleges zeneszemlélet tudományága az összhangzattan, amely az egyidejűleg megszólaltatott hangok konszonanciájával (különböző hangmagasságok kellemes együtthangzása) illetve disszonanciájával (nem összeillő hangok együtthangzása) foglalkozik. A mai zeneszemlélet szerint az összhangzattant szorosan együtt kell tárgyalni a dallamtannal, a kettő egymás nélkül nem létezhet. Ma már megkülönböztetünk alacsonyabb- és magasabb rendű összhangzatformákat. Az alacsonyabb rendű összhangzat tipikus példája az afrikai őslakosság kezdetleges hangszerekkel nyújtott dallam- és zajjátéka. Magasabb rendű összhangzatok csak a középkortól kezdtek kialakulni.
A zenestruktúra és harmónia tökéletes egyeztetését ma már a digitális technika nagy vívmányai, a számítógépek és a szintetizátorok is segítik. A gépzene a 70-es évek derekán kezdett kialakulni. Jeles képviselői közé tartoznak a KRAFTWERK együttes és a TANGERINE DREAM trió, de nem hagyhatjuk ki a sorból a japán TOMITA nevét sem.
A szintetizátorok óriási előnye, hogy az eredeti hangszerek ( pl. a zongora, gitár, xilofon ) hangjának utánzásán túlmenten olyan hangok generálására is képesek, amelyeket hagyományos hangszerekkel lehetetlen előállítani. Ma már több cég gyárt különböző kategóriájú szintetizátorokat. A CASIO elsősorban a kisebb kategóriában robbant be a piacra. A PT, MT és CT sorozat darabjaival a hazai üzletekben is találkozhatunk. A nagyobb méretű és tudású szintetizátorok közül a legismertebb a YAMAHA cég DX-7 típusú készüléke, amely ritkán bár, de szintén megvásárolható a hazai áruházakban (mintegy 120 ezer forintért). Megemlíthetjük még a KORG termékeit is, melyek igen közkedveltek a pop-együttesek körében.
A szintetizátorok többsége dobgéppel együtt kerül forgalomba, de mostanában már számos igen jó képességű, önállóan is működő dobgép is napvilágot látott, amelyekkel az összes létező hagyományos és elektromos dob hangja előállítható.
A digitális technika e területén az egyik legnagyszerűbb alkotás a "SOUND SAMPLING SYSTEM", köznapi nyelven az emulátor. Ez a készülék lehetővé teszi, hogy digitálisan rögzíthessünk bármilyen, az életben előforduló hangot (pl. fareccsenés, motorzúgás, köhögés stb.). A rögzített hang bármilyen formában (lassítva, gyorsítva, amplitúdómodulálva) visszajátszható. Végeredményben az emulátor is egy bonyolult számítógép - de maradjunk csak a mindenki számára elérhető személyi számítógép-kategóriánál.
Vitathatatlan tény, hogy hangképzésre a COMMODORE-64 hanggenerátora, a 6510-es sorozatú SID chip-je (ezzel bővebben foglalkozik az LSI Atsz 1987 második negyedévében megjelent kiadványa, a "C-64 zenekedvelőknek" című könyv) jóval alkalmasabb, mint a Spectrum BEEP-je. A beépített ADSR generátor segítségével a legbonyolultabb hangzásokat is előállíthatjuk, a generátor gyakorlatilag elérhetővé teszi egy kisebb kategóriájú szintetizátor lehetőségeit.
A számítógépeket ma kétféleképpen használhatjuk fel zenei területen. Először is úgy, hogy komponálunk és zenélünk rajtuk. Ez több oldalról is megköti a kezünket, mert az egyes gépek hangképzési korlátai igen nagyok. Másrészt kiegészítő perifériát (perifériákat) építünk, és a számítógépet csak vezérlési célokra használjuk. Ez utóbbi a jelentősebb terület, mert a számítógép teljes memóriáját kihasználhatjuk vezérlési feladatokra, ami megközelíti egy jobb képességű szintetizátor memórianagyságát.
A számítógéphez kialakítható periférialánc igen sokféle lehet. Nagy zenekarok gyakran használják fel a számítógépet a szintetizátorok összehangolására, vezérlésére. Ilyen rendszer a ZX Spectrumra is elkészült ( MUZIX-81 ), amit az OMEGA-stáb is sikerrel alkalmaz. Egy ilyen rendszer kiépítése a nem profi felhasználótól igen időigényes és költséges munkát követel, ezért célszerű kisebb, néhány ezer forintból megépíthető interface elkészítése.
Az interface-t elsősorban olyan gépre érdemes elkészíteni, amely alapkiépítésben nem képes jó minőségű illetve több szólamú hangot megszólaltatni. Ezek közé tartozik a ZX Spectrum és a ZX-81 számítógép is, ezért most egy olyan interface tervezésére mutatunk példát, amely az említett számítógépek hangzásvilágát kibővítve biztosítja az összhangzat megvalósulását.
Nélkülözhetetlen zeneelméleti alapfogalmak
Minden hangot szabályos vagy szabálytalan rezgés (hullám) ír le. A rezgés periódikus állapotváltozás, pl. egy gitárhúr rezgésekor a húr egyes pontjainak az egyensúlyi helyzettől mért távolsága. A legegyszerűbb elméleti rezgés a harmónikus rezgés, melynek lefolyása szinusz-görhével ábrázolható (ld. ábra).
A vízszintes tengelyre kerül a periódusidő, a függőlegesre pedig az amplitúdó. Periódusidő helyett szokás annak a reciprokát is megadni. Ez a frekvencia, vagyis a másodpercenként végzett rezgések száma. A normál zenei "A" hang rezgéseinek száma másodpercenként 440, ezért f=440 Hz (Hertz).
Az oktáv egy adott intervallumban előforduló legmagasabb és legmélyebb hang különbsége. Általában több oktáv tartozik egymás mellé. A teljes oktávoktól megkülönböztetünk hiányos skálájú, három négy és öt hangból álló oktávokat, de használatuk nem számottevő. A hagyományos zeneelmélet a teljes skálájú ( egy oktávot hét hanggal kitöltő ) dallamvilágot helyezi előtérbe. Ez a C-D-E-F-G-A-H hangokra alapuló skála. Itt kell megjegyeznünk, hogy az egyes hangok frekvenciái oktávonként duplázódnak, vagyis ha a normál "A" hang frekvenciája egy skálában 440 Hz, egy oktávval feljebb 880 Hz, egy oktávval lejjebb 220 Hz lesz. A normál hangskálát 7+5-ös elnevezéssel is illetik, hiszen az egész hangokat fél hangokkal is kiegészítjük.
A megszólaltatott hang jellege elsősorban a hullám formájától függ. Mindenekelőtt megkülönböztetünk tiszta hangot és zajt. A tiszta hang szabályos vonalú amplitúdógörbét ír le, ide tartozik a szinuszos rezgés (amelynek görbéjét már előbb megismertük ), valamint a legfontosabb tiszta hanggörbék:
négyszög-hullám |
háromszög-hullám |
fűrészfog-hullám |
Egy tiszta hang sem biztos, hogy ezen hullámformák szerint fog rezegni, hozzáadódnak különböző felharmonikusok. Ha egy időben több hangot is megszólaltatunk, akkor az eredmény az egyes hullámgörbék eredője lesz. Ilyen eredő hullámforma képe lehet a következő:
A zaj szabálytalan vonalú amplitúdó-görbével írható le:
Megkülönböztethetünk ún. sötét és világos zajt. A sötét zaj tompább, mélyebb, amplitúdója laposabb. Ilyen pl. ha az öklünkkel a padlót verjük. A világos zaj élesebb, magasabb amplitúdóval rendelkezik. Ilyen pl. a tenger zúgása. A tiszta hang és a zaj is keverhető egymással, ezáltal igen bonyolult hanghatásokat érhetünk el.
Egy hang megszólaltatásában igen nagy szerepet játszik a hang burkológörbéje. Bonyolultabb hanggenerátorok rendelkeznek az ún. ADSR generátorral. Ez a rövidítés a hang felfutás-lecsengés-kitartás-elengedés paramétereit takarja.
A hagyományos hangszerek hangjának utánzásához elengedhetetlen ennek a négy feltételnek a megfelelő szintű beállítása.
Az egyszerűbb hanggenerátorok csak felfutás-lecsengés láncból állnak, de még így is széleskörű variációs lehetőséggel bírnak. A következő ábrán látható egy lövés burkológörbéje:
A tenger zúgását periódikusan ismétlődő felfutás-lecsengés láncú burkológörbe határozza meg:
A hanggenerátorunk szíve az angol GENERAL INDUSTRY cég AY-3-8912 típusú integrált áramköre, mely hazai viszonylatban igen nehezen beszerezhető, ára az NSZK-ban jelenleg kb. 40,-DM. Megjegyeznénk, hogy a HT számítógépekbe beépített hanggenerátor IC az AY chippel kompatibilis, de beszerzése hasonlóan problémát okoz.
A hanggenerátor IC 3 független hangkimenettel rendelkezik, mely kitűnő lehetőségeket biztosít számunkra. A három kimenetet összekötve mono kimenőjelet kapunk eredményül, de egyszerű változtatással ezt sztereóvá alakíthatjuk. Az interface-be beépíthetünk egy megfelelő erősítőt is, hogy ezáltal a hangszórónkat közvetlenül az interface-re csatlakoztathassuk. A rendszer kisfeszültségű kimenettel is kiépíthető- a hang megszólaltatása ekkor közvetetten, egy erősítő segítségével történik.
Az 1.sz. ábrán látható az interface áramköri vázlata.
Az áramkör központja az AY-3-8912 chip, amelynek 17 lábát kell közvetlenül bekötni. Az IC programozásához a számítógép cím-, adat- és vezérlővonalait használjuk fel. Az adatáramlás a D0-D7 vonalakon történik ( az IC 21-28. lábai ). A címvonalak közül az A5 és A6 címsínek, az adatáramlás vezérlésére pedig az IORQ, RD, és WR vezérlővonalak használatosak (az IC 18. és 20. lába). A 16. lábra csatlakozik a RESET kapcsoló, amely - az R2 ellenálláson és a C3 kondenzátoron keresztül - törli az IC öszszes regiszterét. A 17. és 19. lábak az 5V tápfeszültség átadására szolgálnak.
A hanggenerátor működéséhez elengedhetetlenül szükséges egy 1 MHz-es órajel, amelyet NAND kapu biztosít a 15. lábon egy Schmitt Trigger váltó segítségével. Az IC három összekötött kimenetén megjelenő jelet - az R4 és C4 által meghatározott aluláteresztő szűrőn keresztül - egy műveleti erősítő IC-vel erősítjük. Ekkor a kimenő jel közvetlenül rávihető egy 8-16 Ohm ellenállású hangszóróra.
Az interface a ZX-81 gépen is kifogástalanul működik, de ennél csak 23 osztású csatlakozó sin használható. A vezérlő sín lábkiosztását - párhuzamosan egymás mellett - a következő táblázatban tüntetjük fel:
Spectrum |
Hanggenerátor |
Zx-81 |
||||||
N |
A |
B |
N |
A |
B |
N |
A |
B |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
A15 |
A14 A12 +5V +9V üres 0V 0V CK A0 A1 A2 A3 IORQGE 0V VIDEO Y V U BUSRQ RESET A7 A6 A5 A4 ROMCS BUSAK A9 A11 |
(-) |
- - D7 - üres D0 D1 D2 D6 D5 D3 D4 - - - - IOREQ RD WR - - - - - - - - - |
- - +5V +9V üres 0V 0V - - - - - - - - - - - - - - A6 A5 - - - - - |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
+5V +9V üres 0V 0V 0 A0 A1 A2 A3 A15 A15 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 ROMCS |
Alkatrész-lista:
Ellenállások: | 1 db 470 R 2 db 33 K 2 db 1 K 1 db 3,3 R 1 db 680 R |
1/4 W 1/4 W 1/4 W 1/4 W 1/4 W |
R1 R2, R4 R3, R5 R6 R7 |
Potenciométer: | 1 db 10 K | lineáris | P1 |
Kondenzátorok: | 2 db 100 u 1 db 10 n 2 db 4,7 u 3 db 100 n 1 db 1 n |
16V ELKO kerámia 16V ELKO kerámia kerámia |
C7, C8 C3 C1, C5 C4, C6, C9 C2 |
IC-k: | 1 db 74LS02 (4xNOR) 1 db 74LS132 (4xNAND Schmitt Trigger) 1 db LM 380N (műveleti erősítő) 1 db AY-3-8912 (hanggenerátor) |
IC1 IC2 IC4 IC3 |
|
Egyéb: | 1 db 2x28 ( ZX-81-hez 2x23 ) 1/10 inch osztású csatlakozósáv 1 db 1x záróérintkezős nyomógomb 1 db 28 érintkezős DIL IC aljzat 3 db 14 érintkezős DIL IC aljzat 1 db 3,5 jack mono aljzat vagy normál hangszóró-csatlakozó aljzat 1 db 3 miniatűr LED 1 db egy oldalas panel 1 db arányos méretű műanyag doboz 4 db összeszorító csavar + anya |
K1 LED 1 |
Az itt ismertetett áramkör nem tartalmazza a gép alaphelyzetét beállító RESET-kapcsolót. A kapcsoló beépítése a csatlakozósáv RESET illetve 0V pontjaira tetszőlegesen elvégezhető.
Hanggenerátor sztereo kimenettel
Kis módosítással kihasználhatjuk a hanggenerátor IC előnyeit: a három független hang csatorna nyújtotta lehetőségeket.
A sztereo interface áramköri vázlata a 2.sz. ábrán látható. Az IC kimeneteit egymástól függetlenül vezetjük át egy aluláteresztő szűrőn; ezután egy 6 potenciométerből álló keverő következik, amellyel a három csatornát tetszés szerint állíthatjuk be a bal vagy a jobb kimeneti csatornára. Ezzel elérhetjük, hogy egy 'x' hang a bal oldalon, egy 'y' hang a jobb oldalon és egy 'z' hang középen szólaljon meg. A hangok keverése menet közben is tetszés szerint módosítható.
A keverőből kimenő jelet átvezetjük egy előerősítő IC-n, amelynek az a szerepe, hogy a kimenő jel erőssége ne függjön az interface-hez csatolt erősítő impedanciájától. Az előerősítő IC feladata tehát az, hogy a kimeneten állandó jel legyen biztosítva.
Mivel úgy gondoljuk, hogy célszerűbb ezt az áramkört megépíteni, közöljük a fóliatervet is. A nyákterv a 3.sz., a beültetési terv a 4.sz. ábrán látható.
2. ábra: Hanggenerátor sztereo kimenettel áramköri rajz
3. ábra: Hanggenerátor sztereo kimenettel fóliaterv
4. ábra: Hanggenerátor sztereo kimenettel beültetési terv
Alkatrész-lista:
Ellenállások: | 1 db 470 R 1 db 680 R 14 db 33 K 4 db 1 K |
1/4 W 1/4 W 1/4 W 1/4 W |
R1 R2 R3, R8-R20 R4-R7 |
Potenciométer: | 6 db 100 K | lineáris | P1-P6 |
Kondenzátorok: | 3 db 100 u 2 db 10 u 1 db 4,7 u 4 db 100 n 3 db 10 n 1 db 1 n |
16V ELKO 16V ELKO 16V ELKO kerámia kerámia kerámia |
C10-C12 C13, C14 C1 C3-C5,C9 C6-C8 C2 |
IC-k: | 1 db 74LS02 ( 4xNOR ) 1 db 74LS132 ( 4xNAND Schmitt Trigger ) 1 db LM 381 ( 2xelőerősítő ) 1 db AY-3-8912 ( hanggenerátor ) |
IC1 IC2 IC4 IC3 |
|
Egyéb: | 1 db 2x28 ( ZX-81-hez 2x23 ) 1/10 inch osztású csatlakozósáv 1 db 1x záróérintkezős nyomógomb 1 db 28 érintkezős DIL IC aljzat 1 db 14 érintkezős DIL IC aljzat 1 db 3,5 sztereó jack aljzat 6 db potenciométer forgatógomb 1 db miniatűr LED 1 db egy oldalas panel 1 db arányos méretű műanyag doboz 4 db összeszorító csavar + anya |
K1 Led1 |
A RESET gomb a fent leírtak alapján tetszés szerint beépíthető.
Ha szakmai szemmel nézzük, észrevehetjük, hogy a hanggenerátor órajelét szolgáltató áramkör csak közelítőleg adja az 1 MHz-es jelet, ami miatt a hangok frekvenciaértékei eltolódhatnak. A számítógép CLOCK kimenetéről levehetünk egy stabil órajelet, de ez 3,5 MHz-es, egy segédáramkörrel le kell osztanunk 1 MHz-re. A segédáramkör blokkdiagramja az 5.sz. ábrán látható.
Az áramkör 5V hálózati tápfeszültséget igényel. Ezt a gép azonban már nem bírja el, tehát célszerű a módosított interface-t külön hálózati tápegységről üzemeltetni. Ennek egyéb előnyei is vannak: a gép áramtalanítása esetén a hanggenerátor regiszterei nem veszítik el értéküket.
A kiegészítő áramkör elkészítése nem feltétele a hibátlan működésnek, csak javaslat azok számára, akik precíz egységet akarnak építeni. Megjegyzés: A frekvenciaosztóról részletes irodalmat a Rádiótechnika 1979/12 kiadványának 573. oldalán találunk.
Formai javaslat az interface kivitelezéséhez
6. ábra: Elölnézet |
7. ábra: Hátulnézet |
Az IC az angol GENERAL INDUSTRY cég terméke, a 8900-as család tagja. Profi felhasználó valóságos csodákat művelhet vele, mivel három független hanggenerátort, egy zajgenerátort, egy burkológörbe-generátort, egy vezérlőregisztert és a teljesség kedvéért még egy 8 bites PI0-t is tartalmaz.
Az IC blokkdiagramja a 8.sz. ábrán látható.
A zajgenerátor 32 fokozatban programozható, a "világos" zajtól a "sötét"-ig. A három hanggenerátorral egymástól függetlenül 4096 hang állítható elő (ez kb. 9 oktáv hangszélességnek felel meg). Az egyes hangokhoz csatornánként hozzákeverhetjük a zajgenerátor által keltett zörejeket, de külön-külön is hallgathatóak.
Az IC legfontosabb regisztere a vezérlő regiszter. Segítségével meghatározható a PIO adás/vétel állapota, és hogy milyen hang illetve zörej jelenjen meg a kimeneten. A hangerő csatornánként 15 fokozatban állítható. A burkológörbe-generátorral 8 féle burkológörbe-formát választhatunk ki, külön-külön szabályozva a frekvenciát is.
A hanggenerátor IC 16 regisztert tartalmaz, ebből 14 ( 0-13 ) segíti elő a hangképzést. A 14-es és 15-ös regisztereknek a párhuzamos adat be/kivitelnél (PIO) van szerepük. Először tekintsük át az egyes regiszterek funkcióit (a hanggenerátor csatornáit jelöljük A, B és C betűkkel):
R0 | - Az A csatorna hangmagasságának finom beállítása |
R1 | - Az A csatorna hangmagasságának durva beállítása |
R2 | - A B csatorna hangmagasságának finom beállítása |
R3 | - A B csatorna hangmagasságának durva beállítása |
R4 | - A C csatorna hangmagasságának finom beállítása |
R5 | - A C csatorna hangmagasságának durva beállítása |
R6 | - A zajgenerátor-fokozat beállítása |
R7 | - A kimeneti csatornák megnyitása (+PIO) |
R8 | - Az A csatorna hangerejének beállítása |
R9 | - A B csatorna hangerejének beállítása |
R10 | - A C csatorna hangerejének beállítása |
R11 | - A burkológörbe frekvenciájának finom beállítása |
R12 | - A burkológörbe frekvenciájának durva beállítása |
R13 | - A burkológörbe hullámformájának kiválasztása |
R14 | - PIO adatregiszter |
R15 | - PIO adatregiszter |
Akár ZX-81-et, akár ZX Spectrumot használunk, egy regiszterbe két utasítással tudunk adatot bevinni. Az adatbevitel a következő séma szerint történik (tetszőlegesen BASIC vagy gépi kód használatával):
OUT 159,a regiszter száma: OUT 223,tartalom
Most tekintsük át részletesebben az egyes regiszterek programozását:
A hangmagasság beállítása
Minden csatorna hangmagassága 2 regiszterrel állítható be. Az alsó regisztereknek (R0, R2, R4) mind a 8 bitjét, a felső regisztereknek (R1, R3, R5) csak az alsó 4 bitjét használjuk. Ezzel a kapacitással összesen 4096 különböző hangot állíthatunk elő. A felső regiszterek felső 4 bitje a programozás szempontjából jelentéktelen, beállításuknak nincs kézzelfogható eredménye.
Az 1 MHz-es órajel esetében a regiszterekbe írandó érték a frekvencia alapján a következő képlettel számolható ki:
N = 85800 / frekvencia
ahol N a regiszterbe írandó kétbyte-os szám, amelyet a kiszámítás után egész számjegyre kerekítettünk. Ha N értéke 256-nál kisebb, akkor csak az alsó regiszterbe írunk, a felsőt töröljük; 256 illetve nagyobb szám esetén a szám alsó/felső byte-os formára bontandó fel, így tudjuk tárolni.
A függelékben közöljük a hanggenerátor regiszterértékeit a frekvencia függvényében, 8 és fél oktáv hangterjedelemben.
Ha pl. az A csatornán a 49 Hz-es G hangot akarjuk megszólaltatni, akkor R0-ban 214-et, R1-ben 6-ot kell beállítani:
R1 |
R0 |
0 0 0 0 0 1 1 0 |
1 1 0 1 0 1 1 0 |
A zajgenerátor-fokozat beállítása
A zajgenerátor 0 és 31 közötti értékekkel programozható, a '0' az ún. "sötét", a '31' a "világos" hanghatást eredményezi. A kívánt értékeket az R6 regiszterbe kell beírnunk. A következő példában a "világos" zaj beállítását mutatjuk be:
R6 |
0 0 0 1 1 1 1 1 |
Az R6 regiszter felső három bitjének gyakorlatilag semmi jelentősége sincsen.
Keverő-vezérlés illetve a be/kimeneti csatorna megnyitása:
R7 |
B7 B6 B5 B4 B3 B2 B1 B0 |
B0 | 0 - A tiszta hang engedélyezése az A csatornán 1 - A tiszta hang kikapcsolása az A csatornán |
B1 | 0 - A tiszta hang engedélyezése a B csatornán 1 - A tiszta hang kikapcsolása a B csatornán |
B2 | 0 - A tiszta hang engedélyezése a C csatornán 1 - A tiszta hang kikapcsolása a C csatornán |
B3 | 0 - Zaj engedélyezése az A csatornán 1 - Zaj kikapcsolása az A csatornán |
B4 | 0 - Zaj engedélyezése a B csatornán 1 - Zaj kikapcsolása a B csatornán |
B5 | 0 - Zaj engedélyezése a C csatornán 1 - Zaj kikapcsolása a C csatornán |
B6 | 0- Digitális bemeneti vezérlés az R14 regiszterre 1 - Digitális kimeneti vezérlés az R14 regiszterről |
B7 | 0- Digitális bemeneti vezérlés az R15 regiszterre 1 - Digitális kimeneti vezérlés az R15 regiszterről |
B0-1-2 és B3-4-5 egymástól függetlenül is vezérelhető, vagyis ugyanazon csatornán egy időben hang és zaj is megjeleníthető.
Hangerő beállítása:
R8 az A csatornán, R9 a B csatornán, R10 pedig a C csatornán teszi lehetővé a hangerő beállítását. Például 12-es fokozatú hangerőt az A csatornán a következőképpen állíthatunk be:
R8 |
0 0 0 0 1 1 0 0 |
A hangerő beállítása szempontjából az alsó négy bitnek van jelentősége, tehát 16 fokozatban állítható ( 0-tól 15-ig ).
Az ábrán vastagon kiemelt negyedik bitnek kulcsfontosságú szerepe van: ha itt nullát helyezünk el, akkor az aktuális csatornára nincs hatással a burkológörbe-generátor. Ha ezt a bitet egyre váltjuk, akkor az alsó négy bit értéke nincs hatással a hangerőre, amely a burkológörbének megfelelően alakul.
A burkológörbe frekvenciájának beállítása:
A kiválasztott burkológörbe frekvenciája az R11 és R12 regiszterekben tárolt értékekkel szabályozható. A regiszterek értéke 0-255 között lehet. Alacsonyabb értékek esetén a felfutási illetve lecsengési idő gyorsabb, magasabb értékeknél pedig lassabb lesz.
A burkológörbe hullámformájának kiválasztása:
Egyidőben csatornánként különböző hullámformákat nem tudunk beállítani. A burkológörbe-generátor a beállított hullámformát csak arra a csatornára tudja beállítani, amelyiknek hangerő-regiszterében (R8, R9, R10) a negyedik bit értéke nem zérus. Ellenkező esetben a hang állandó amplitúdójú lesz.
A hullámforma az R13 regiszter alsó négy bitjének segítségével szelektálható. A beállítható hullámformák a következő ábrán láthatóak:
R13 |
||||
B3 |
B2 |
B1 |
B0 |
|
1 |
0 |
0 |
0 |
|
1 |
0 |
0 |
1 |
|
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
1 |
|
1 |
1 |
0 |
0 |
|
1 |
1 |
0 |
1 |
|
1 |
1 |
1 |
0 |
|
1 |
1 |
1 |
1 |
Egy lecsengés-felfutás elméleti diagramja a következőképpen néz ki:
A diagramra írt számok a hangerőfokozat értékei. A gyakorlati diagram azonban másképp néz ki. Ezt a következő ábra szemlélteti:
Mintaprogramok a hanggenerátor használatához
Ahhoz, hogy megszólaltassuk a hanggenerátort, először is ki kell nyitni a kimeneti csatornákat. Ha tiszta hangot akarunk, ki kell kapcsolni a zajt (R7 = 56). Válasszunk mind a három csatornára közepes hangerő-értéket (R8-R10 = 8), majd adjunk tetszőleges értéket a hangmagasságoknak (R0, R2, R4). A mintaprogram a következőképpen néz ki:
10 OUT 159,7: OUT 223,56
20 OUT 159,8: OUT 223,8
30 OUT 159,9: OUT 223,8
40 OUT 159,10: OUT 223,8
50 OUT 159,0: OUT 223,200
60 OUT 159,2: OUT 223,133
70 OUT 159,4: OUT 223,103
Futtatás után azt tapasztaljuk, hogy a három hang megszólal, de elég hamisan.
Szólaltassunk meg egy szép dó-mi-szó (C-E-G) hangzást a 4. oktávban. Előbbi programunkat módosítsuk az 50. sortól kezdve:
50 OUT 159,0: OUT 223,144
55 OUT 159,1: OUT 223,2
60 OUT 159,2: OUT 223,8
65 OUT 159,3: OUT 223,2
70 OUT 159,4: OUT 223,182
75 OUT 159,4: OUT 223,1
Futtassuk ismét a programot és azt, tapasztaljuk, hogy a hangok konszonánsak, egymáshoz illenek.
Használjuk a hanggenerátor RESET funkcióját, majd NEW paranccsal töröljük a programot is. A következő mintaprogram a csilingelő harangok vagy az üvegpoharak hangjára emlékeztető hangot szólaltat meg:
10 OUT 159,0: OUT 223,200
20 OUT 159,1: OUT 223,1
30 OUT 159,2: OUT 223,130
40 OUT 159,4: OUT 223,60
50 OUT 159,7: OUT 223,56
60 OUT 159,8: OUT 223,16
70 OUT 159,9: OUT 223,16
80 OUT 159,10: OUT 223,16
90 OUT 159,12: OUT 223,50
100 OUT 159,13: OUT 223,8
Most módosítsuk a következő sorokat, hogy egy pisztolylövéshez hasonlító hang szólaljon meg:
50 OUT 159,7: OUT 223,7
90 OUT 159,12: OUT 223,7
100 OUT 159,13: OUT 223,9
110 PAUSE 0: GO TO 10
A 110. sor jelentősége abban áll, hogy ha folyamatosan lenyomva tartunk egy billentyűt, egy gépfegyver zaját szimulálhatjuk.
Újabb módosításokkal a programunk egy közeledő gőzmozdony hangját produkálja:
1 LET A=31
10 OUT 159,0: OUT 223,200
20 OUT 159,1: OUT 223,7
30 OUT 159,2: OUT 223,130
35 OUT 159,3: OUT 223,7
40 OUT 159,4: OUT 223,60
50 OUT 159,7: OUT 223,31
60 OUT 159,8: OUT 223,16
70 OUT 159,9: OUT 223,16
80 OUT 159,10: OUT 223,16
85 OUT 159,6: OUT 223,INT A
90 OUT 159,12: OUT 223,12
100 OUT 159,13: OUT 223,9
105 LET A=A-0.1: IF A<1 THEN STOP
110 FOR I=1 TO 10: NEXT I: GO TO 10
A potenciométerek segítségével a gőzmozdony hangja sztereoba is keverhető.
A sztereo hatás érzékeltetéséhez is nézzünk néhány példát! Először is állítsuk be a potmétereket:
A bal és a jobb kimeneten szólaltassunk meg egymástál eltérő magasságú hangokat, középen pedig egy dobgép alapot. Ehhez a következő program futtatása szükséges:
10 OUT 159,0: OUT 223,36: OUT 159,1: OUT 223,1
20 OUT 159,2: OUT 223,32: OUT 159,3: OUT 223,9
30 OUT 159,4: OUT 223,144: OUT 159,5: OUT 223,4
40 OUT 159,7: OUT 223,56
50 OUT 159,8: OUT 223,12
60 OUT 159,9: OUT 223,11
70 OUT 159,10: OUT 223,16
80 OUT 159,12: OUT 223,5
90 OUT 159,13: OUT 223,8
Az alábbi program a véletlenszám-generátor felhasználásával szemlélteti a sztereo hatást:
10 OUT 159,7: OUT 223,56
20 OUT 159,8: OUT 223,INT (RND*15)
30 OUT 159,9: OUT 223,INT (RND*15)
40 OUT 159,10: OUT 223,INT (RND*15)
50 LET A=INT (RND*255): LET B=INT (RND*15)
60 LET C=INT (RND*255): LET D=INT (RND*15)
70 LET E=INT (RND*255): LET F=INT (RND*15)
80 OUT 159,0: OUT 223,A: OUT 159,1: OUT 223,B
90 OUT 159,2: OUT 223,C: OUT 159,3: OUT 223,D
100 OUT 159,4: OUT 223,E: OUT 159,5: OUT 223,F
110 GO TO 20
A három szólamú zene elkészítésének folyamatát szemléljük végig egy rövid mintapéldán keresztül. Előnyös kottáról dolgozni:
Nem célunk az általános kottaelméletről bővebben beszélni, de a legfontosabb dolgokra felhívjuk a figyelmet. Az itt látható kottasor elején egy 'violin-kulcs' látható, vagyis a 'C' hang a kottán megjelölt helyről indul. Figyelni kell, hogy látunk-e előjelzést a kulcs után. Kettőskereszt esetén egy fél hanggal feljebb, 'b' előjelzés esetén pedig egy fél hanggal lejjebb kerül az a hang amelyikre az előjelzés utal. A minta kottában három kettőskeresztet látunk, ezek a 'C', 'F' és 'G' hangokat viszik fel egy fél hanggal feljebb mindenhol, kivétel, ha a három hang bármelyike előtt feloldójelet nem találunk. Ez hasonló, mint a kettőskereszt, de jobb felső és bal alsó szára hiányzik. Ezután meg kell vizsgálni azt, hogy milyen hangjegyek szerepelnek a kottában. Itt pl. negyed, nyolcad és tizenhatod hangjegyeket látunk, vagyis 1:2:4 arányú időtagokat kell majd a programunkban elhelyezni. Ez azért lényeges, mert mi nem azt adjuk meg, hogy egy hang milyen hosszú ideig szóljon, hanem bekapcsoljuk a hangot, és egy fix időtag eltelte után hangmagasságot váltunk, vagy kikapcsoljuk azt.
A következő lépés a vonaldiagram elkészítése.
Ebben egymás alatt ábrázoljuk a három csatornát, valamint arányos léptékkel az időtagokat. A vonaldiagram alapján az adatsor könnyen elkészíthető, hiszen egy tizenhatod időtagot 20-szal, a nyolcadot 18-cal, míg a negyedet 17-tel jelöljük.
Ha felépültek az egyes vonalszakaszok, a kotta alapján mellé írjuk az összetartozó hangmagasságokat is. Amennyiben a három csatornát különböző oktávon akarjuk megszólaltatni, úgy célszerű a hangok mellé az oktáv számát is beírni. A függelékben megadott táblázatból kikereshetjük az összetartozó értékpárokat, ezt is érdemes felírni a vonaldiagramra. Ha a vonaldiagram elkészült, kialakíthatjuk az adatsort. Kis mintapéldánk adatsora így a következőképpen alakul:
DATA
0,232,1,0,2,36,3,1,4,72,5,2,20,2,134,3,1,20,2,36,3,1,20,2,232,3,0, 20,0,232,1,0,2,36,3,1,20,2,134,3,1,20,0,195,1,0,2,36,3,1,4,72,5,2, 20,2,134,3,1,20,2,36,3,1,20,0,206,1,0,2,134,3,1,20,0,232,1,0,2,36,3,1,
20,2,134,3,1
Természetesen a DATA sort mindenképpen a csatornák megnyitásával, hangerő beállításával stb. kell kezdeni (ld. program 100. sora), ill. a csatornák kikapcsolásával kell befejezni (16-os kód).
Összetettebb zene esetén megfigyelhetjük, hogy egy ütemen belül minél több kapcsolást végzünk el, annál jobban lelassul a program futása. Ez sajnos a BASIC nyelv gyorsaságának köszönhető, természetesen a megoldás a gépi kódú változat megírásában rejlik. Ne ijedjünk meg, nem lesz ez olyan nehéz, meglátjuk megéri. Csak a vezérlő szakaszt kell átírnunk gépi kódra, a DATA sorok könnyen átolvashatók a memória bármely területére. A gépi kódú vezérlő programot a 40000. címtől helyezzük el, hossza 100 byte. Az assembly lista - mely egyénenként változó módon bevihető a memóriába - a következő:
40000 40003 40004 40005 40007 40009 40011 40013 40014 40015 40017 40019 40021 40023 40024 40025 40027 40029 40031 40033 40034 40035 40037 40039 40041 40043 40045 40047 40048 40049 40051 40052 40053 40055 40057 40059 40061 40063 40064 40066 40068 40070 40072 40074 40076 40078 40080 40082 40083 40084 40085 40087 40088 40089 40090 40091 40093 40094 40096 40097 |
33,164,156 126 245 238,17 32,4 6,240 24,70 241 245 238,18 32,4 6,120 24,60 241 245 238,20 32,4 6,60 24,50 241 245 238,16 32,9 62,7 211,159 62,63 211,223 201 241 211,159 35 126 211,223 62,13 211,159 62,9 211,223 35 62,127 219,254 230,31 254,30 32,185 62,7 211,159 62,63 211,223 201 241 197 6,0 245 241 245 241 16,250 193 16,244 35 195,67,156 |
LD HL,40100 LD A,(HL) PUSH AF XOR 17 JR NZ,40013 LO B,240 JR 40083 POP AF PUSH AF XOR 18 JR NZ,40023 LD B,120 JR 40083 POP AF PUSH AF XOR 20 JR NZ,40033 LD B,60 JR 40083 POP AF PUSH AF XOR 16 JR NZ,40048 LD A,7 OUT (159),A LD A,63 OUT (223),A RET POP AF OUT (159),A INC HL LD A,(HL) OUT (223),A LD A,13 OUT (159),A LD A,9 OUT (223),A INC HL LD A,127 IN A,(254) AND 31 CP 30 JR NZ,40003 LD A,7 OUT (159),A LD A,63 OUT (223),A RET POP AF PUSH BC LD B,0 PUSH AF POP AF PUSH AF POP AF DJNZ 40087 POP BC DJNZ 40084 INC HL JP 40003 |
;HL-ben tároljuk az adatok kezdőcímét ;Egyébként ugrás vissza az új adat |
Ez a gépi kódú rutin bármilyen, az előzőekben megismert adatsor lejátszására alkalmas. Az adatsor kezdőcíme a 40100. cím. Próbáljuk ki, hogyan szólnak gépi kódban a dallamok. A gépi kódú rutint a RANDOMIZE USR 40000 (ENTER) utasítással indíthatjuk. A rutinból a SPACE billentyű megnyomásával bármikor kiléphetünk.
Egyetlen dolog maradt a végére, hogyan készítsünk billentyűs hangszert a SPECTRUM-ból ? Nos erre igen nehéz általános útmutatót adni. A hangszert mindenképpen "polifónikusra" érdemes elkészíteni, vagyis több billentyű együttes megnyomása kapcsolja be a különböző csatornákat: Ne ijedjünk meg, ha hozzálátunk, a billentyűvizsgálati rész kicsit hosszúnak fog bizonyulni, de a végén a nagyszerű eredmény nem marad el, ezért mindenképpen érdemes elkészíteni. A billentyűket kirajzolhatjuk, a megnyomott billentyűt vibráltathatjuk. Célszerű minden regiszter aktuális állapotát kijelezni, így menet közben látjuk a változtatást és halljuk az eredményt. A végső stádium pedig a memória beépítés, vagyis a lejátszott dallamokat rögzíthetjük és később visszajátszhatjuk azokat. Sok sikert a folytatáshoz!
PIO (parallel input-output) párhuzamos digitális be / kimeneti adatvezérlés
Ez a funkció a hanggenerátor kiegészítő szolgáltatása, amelynek önmagában semmi köze a hangok megszálaltatásához.
Mint a bevezetőben már említettük, lehetőség van a hangszerek software úton történő összehangolására. Ahhoz, hogy egy független külső eszköz be vagy kikapcsolt állapotát vezérelni tudjuk, célszerű egy relé használata. Ha a relé vezérlő pontjain aktív jel mutatkozik, a csatlakozó pontokon záródik az áramkör. Ezzel egy külső egység ki-bekapcsolt állapotát vezérelheti (pl. fényorgona).
Az IC alkalmas arra, hogy két adott regiszterének tartalmát bitenként külön vonalon továbbítsa, illetve adatot fogadjon. A 9. ábra szemlélteti, hogy mivel érdemes a hanggenerátor áramkört a PI0-csatlakoztatáshoz kiegészíteni:
Az IC 7-14. lábain jelennek meg az aktuális bitek értékei. A kimeneti pontokat össze kell kötnünk egy-egy 4,7 kOhm értékű ellenállással. A PI0-interface áramköri vázlatát a 10. ábrán láthatjuk.
Fontos, hogy a hanggenerátor és az erősítő IC mellett az 5V-os kimenetet tovább terhelni nem szabad. A PI0-interface-t a számítógép 9V-os kimenetéről látjuk el 5V-os tápfeszültséggel, amit a 7805-ös IC állít elő. A PIO kimenetei csak 500 mA-ig terhelhetőek.
Alkatrész-lista:
Ellenállások: | 8 db 220 R 8 db 4,7 K |
1/4 W 1/4 W |
R1-R8 R9-R16 |
Kondenzátorok: | 2 db 10 u | 16 V | C1, C2 |
IC-k: | 2 db 74LSO5 2 db 74LSO7 |
IC1, IC2 IC 3 |
|
LED-diódák: | 6 db 3 | 5 V | LED 1-8 |
Diódák: | 8 db 1N4148 | D1-D8 | |
Relék: | 8 db DIL | 5V-500mA | rel 1 - rel 8 |
Laposkábel: | 10-15 cm | 16 pólusú |
A működés menete a következő:
Tudjuk, hogy az R7 regiszter 6. és 7, bitje kihatással van az R14 és R15 regiszterre is. Próbáljunk meg adatot továbbítani az R14-es regiszteren keresztül a PI0-ba: aktivizáljuk az R7 regiszter 6. bitjét.
OUT 159,7: OUT 223,64
utasításokkal. Ezután az R14-es regiszterben megadott érték szerint adatot küldhetünk a PIO-ba.
A nyolc relé egyidőben 16 csatornáról vezérelhető a következő módon: az R14 regiszter határozza meg a nyolc "A" jelű csatornát A1-tő1 A8-ig, az R15 regiszter pedig a "B" jelű csatornákat B1-tő1 B8-ig. Ha a "B" csatornákat akarjuk használni, az R7 regisztert 128-as értékkel kell feltöltenünk. Akár az "A", akár a "B" kimeneti csatornát használjuk, az R14 és R15 regiszterben az adott csatorna (bit) binárisan kódolt értékét kell beírnunk. Ha az A1-es csatornához tartozó relén akarunk kontaktust létesíteni, az R14-be 1-et kell beírnunk, ha az A8-as csatornán, akkor 128-at.
Az egyes csatornákhoz tartozó értékek:
Csatorna |
Érték |
1 2 3 4 5 6 7 8 |
1 2 4 8 16 32 64 128 |
Egy zárt relé-kontaktus nyitása az adott csatornának megfelelő bit zérusra állításával, vagy pedig egy másik kimenet bekapcsolásával történhet. Amennyiben egyszerre több kimenetet is be akarunk kapcsolni, akkor a bináris számokat össze kell adnunk. Tehát az 1-es és a 7-es csatornák használatához az adott regiszterbe a 65-ös értéket kell beírnunk.
Az áramkörnek megfelelően érdemes minden csatornára egy LED diódát beépíteni, hogy a bekapcsolt kimenet látható legyen.
Kevésbé jelentős a számunkra az adatbeolvasás külső eszközről valamely regiszterbe. Ehhez az itt közölt áramköri tervet módosítani kell. Ebben az esetben az R7 regiszter 6. illetve 7. bitje határozza meg, hogy az R14 és R15 regiszterekbe adat fog érkezni a PIO felől (a bitek értéke 0). Aktív jel érkezése esetén az adott bit 1 értékű lesz.
A PIO hasznossága nem csak a zene területén érvényesülhet. Segítségével software úton több egymástól független áramkört időzítve üzemeltethetünk.
A hanggenerátor-interface kombinálható külső billentyűzetillesztő-interface-szel. Így egyszerű billentyűs hangszerként is használható.
Példáinkban az IC-t csak két porton keresztül programoztuk. Az áramkör kis átalakításával újabb portokat nyithatunk meg, újabb IC-ket építhetünk be, így nemcsak 3, hanem 6-9, vagy akár 12 szólamú zenét is előállíthatunk. A PIO által nyújtott szolgáltatásokkal software-ből vezérelhetünk szintetizátorokat, dobgépeket, magnetofont és még sok egyéb háztartási zajkeltő "kütyüt".
Reméljük, hogy kedvet adtunk minden ZX-81 és ZX Spectrum tulajdonosának ahhoz, hogy számítógépét kibővítve közelebb kerüljön a zeneprogramozáshoz. Az itt közölt információk nem a teljesség igényével készültek, hiszen a témáról könyveket lehetne írni. Úgy érezzük azonban, hogy a téma iránt érdeklődök számára elegendő lendületet adtunk a továbblépéshez.
Figyelem! Az ismertetett hanggenerátor, és a 128K gép hanggenerátora kompatibilis egymással, sőt a Dk'tronics gyártmányú hanggenerátorral is. Hogy tudnánk egyszerűen megoldani, hogy a 48K géppel rendelkezők is élvezhessék a 3 csatornás dallamok örömeit? Nos a hardware átalakítás, vagyis egy port-kapcsoló kapuáramkör-rendszer beépítése a hanggenerátorba bonyolultabb megoldás lenne, mint magának a programnak az átalakítása. Ehhez csak annyi dolgunk van, hogy megkeressük a programban a zene generálásáért felelős rutint, és abban a módosításokat megfelelően elvégezzük. Mint tudjuk, a 128K 3 csatornás zenei portjai:
a/b = 65533 / 49149.
Ez az érték a mi általunk közölt interface esetén:
a/b = 159 / 223,
míg a Dk'tronics típusú interface esetén:
a/b = 63 / 95.
Most megoldást közlünk néhány program esetére, célszerű a módosítást MULTIFACE-szel elvégezni, majd a módosított programot kimentve, a. hanggenerátor interface-t a gépre dugva, s a programot visszatöltve élvezhetjük is munkánk eredményét:
ATF | POKE 32464,a: POKE 32465,0: POKE 32468,14: POKE 32469,b |
Bobsleigh | POKE 34489,a: POKE 34490,0: POKE 34493,14: POKE 34494,b |
Cybernoid | POKE 25894,14: POKE 61361,a: POKE 61366,b |
Cybernoid 2 | POKE 62579,a: POKE 62584,b |
Exolon | POKE 48010,a: POKE 48011,0: POKE 48014,14: POKE 48015,b |
Gonzalez | POKE 35994,a: POKE 36001,b |
Implossion | POKE 36273,14: POKE 28387,a: POKE 36279,a: POKE 28392,b: POKE 36274,b |
International Karate + | POKE 28254,14: POKE 28250,a: POKE 28255,b |
Mutant Zone 1 | POKE 44895,a: POKE 44902,b |
Mutant Zone 2 | POKE 44435,a: POKE 44442,b |
Nether Earth | POKE 46323,a: POKE 46328,b |
Stormlord | POKE 62141,a: POKE 62146,b |
War Cars | POKE 34001,a: POKE POKE 34002,0: POKE 34011,b: POKE 34012,0, POKE 57109,24: POKE 32168,0 |
A módosításokban a/b értéke a fent leírtaknak megfelelő. Reméljük, hogy a programozásban jártasabb Olvasóink nekilátnak átalakítani néhány - erre alkalmas - programot.
Függelék - hanggenerátor frekvencia-táblázat
Oktáv |
Hang |
frekvencia (Hz) |
Alsó regiszter (R0, R2, R4) |
Felső regiszter (R1,R3,R5) |
Oktáv |
Hang |
frekvencia (Hz) |
Alsó regiszter (R0, R2, R4) |
Felső regiszter (R1,R3,R5) |
1 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
16.35 17.32 18.35 19.44 20.60 21.83 23.12 24.50 25.96 27.50 29.13 30.83 |
- - - - - 89 124 172 232 46 127 218 |
- - - - - 15 14 13 12 12 11 10 |
6 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
523.26 |
164 155 146 138 130 123 116 109 103 97 92 87 |
0 0 0 0 0 0 0 0 0 0 0 0 |
2 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
32.70 34.65 36.71 38.89 41.20 43.65 46.25 49.00 51.91 55.00 58.27 61.72 |
62 171 32 157 33 172 62 214 116 23 192 109 |
10 9 9 8 8 7 7 6 6 6 5 5 |
7 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
1046.52 1108.72 1174.64 1244.52 1318.52 1396.92 1479.96 1568.00 1661.20 1760.00 1864.64 1975.52 |
82 77 73 69 65 61 58 55 52 49 46 43 |
0 0 0 0 0 0 0 0 0 0 0 0 |
3 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
65.41 69.29 73.42 77.78 82.41 87.31 92.50 98.00 103.83 110.00 116.54 123.47 |
31 213 144 78 17 214 159 107 58 12 224 183 |
5 |
8 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
2093.04 |
41 39 37 34 33 31 29 27 26 24 23 22 |
0 0 0 0 0 0 0 0 0 0 0 0 |
4 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
130.82 138.59 146.83 155.56 164.82 174.62 184.99 196.00 207.65 220.00 233.08 246.94 |
144 107 72 39 8 235 208 182 157 134 112 91 |
2 2 2 2 2 1 1 1 1 1 1 1 |
9 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
4186.08 4434.88 4698.56 4978.08 5274.08 5587.68 5919.84 6272.00 6644.80 7040.00 7458.56 7902.08 |
20 19 18 17 16 15 14 14 13 12 11 11 |
0 0 0 0 0 0 0 0 0 0 0 0 |
5 |
C Cisz D Disz E F Fisz G Gisz A Aisz H |
261.63 277.18 293.66 311.13 329.63 349.23 369.99 392.00 415.30 440.00 466.16 493.88 |
72 53 36 20 4 246 232 219 206 195 184 174 |
1 1 1 1 1 0 0 0 0 0 0 0 |