2 oktávos skálakatalógus I.
A 24 hangos hangrendszerben lévő összes hang, hangköz és hangcsoport
Bevezetés
A 2 oktávos skálák matematikája
A skálák megjelenítésének problémái
Zenei hangrendszerünkben -nem számítva a furcsa prím hangközt, amelynek azért van némi létjogosultsága-, az oktáv a legkonszonánsabb, a legjobban "összecsengő" hangköz. Olyan meghatározó ez, hogy minden időben mindegyik zenei kultúra felfedezte magának és sokszor zenei hangrendszerének egyik alappillérévé tette (lásd például a pithagoraszi hangrendszert).
A skála latin gyökerű szó, többféle jelentése közül számunkra most a hangmagasság szerint elrendezett hangsor a fontos. A skálának azonban van egy további tulajdonsága, amely olyan egyértelmű mindenki számára, hogy már sehol sincs megemlítve, ez pedig az, hogy a skálává rendezett hangok mindig csakis 1 oktávig tartanak, másképpen fogalmazva: a skálaszerkezet mindig és kizárólag 1 oktávon belül azonos. Tehát amit mi valamilyen névvel illetett (például dúr) skálának nevezünk, az a skálaszerkezet mindig alaphangtól oktávig tart.
Furcsa, eddig nem jutott senkinek sem az eszébe, hogy ne csak 1 oktáv terjedelmű legyen egy skálaszerkezet, hanem tartson még tovább, mondjuk 2 oktávig. Ekkor úgy kell elrendeznünk a skálaszerkezetet, hogy éppen 2 oktáv terjedelmű legyen, azaz a benne lévő hangközök sorrendje 2 oktáv után kezdjen ismétlődni.
No, akkor essünk is neki ennek az irdatlan mennyiségű munkának!
A 2 oktávos skálák matematikája
A projekt felvázolásakor (a mérnökök, programozók, "nagyban gondolkodók" jól tudják ezt), sokféle kérdés és gondolat merül fel:
-
először is miért nekem jut már megint ez először eszembe és nem valamelyik önjelölt zenei kísérletezőnek, mondjuk egy modern jazz-virtuóznak? Ezt a kérdést nem kell megválaszolnunk, mert sejtjük a választ: a klasszikus zene és a jazz zeneelméleti eszköztára már régesrég nem elég új dolgok felfedezésére, éppen ezért "felhasználói" sem képesek azt kreatívan megragadni.
-
Mennyi hangot és milyen hangközökkel kívánunk 2 oktáv közé belegyömöszölni?
-
Kiragadott zenei példákat szeretnénk találni vagy érdekel minket a teljes matematikai összkombinációs mennyiség? Az utóbbit választjuk bizonyos kompromisszumokkal.
-
Minden olyan hangkombinációt ki kell zárnunk, amely 1 oktávig tart, beleértve minden olyan skálát, amely 1 oktávban zárt. Matematikailag megfogalmazva: a Pénzes-féle bináris skálakatalógus 4096 db összkombinációjából kiesik minden olyan hangkombináció, amely 1 oktáv alatti (például 101000000000) beleértve tehát minden olyan skálát, amelynek véghangja és kezdőhangja az 1. és a 12. hangra esik, azaz 1xxxxxxxxxx1. Észrevehetjük, hogy mivel a 24 hangból álló összkombinációs mennyiség automatikusan tartalmazza a 12 hangos skálakatalógust, ezért a kizárás mind a 4096 db hangkombinációra vonatkozik.
-
A 24 hangos skálakatalógus összkombinációs mennyisége a 224 képlet alapján 16777216. Ha ebből levonjuk a 12 hangos skálakatalógus összkombinációs mennyiségét (212 = 4096), akkor is még brutális mennyiségű hangkombinációnk marad: 16773120.
-
Ezt a mennyiséget azonban tudjuk redukálni olyan módon, hogy kijelentjük: nem hangkombinációt, hanem skálakombinációkat keresünk. Ugyanis a hangkombinációnak nem kell oktávig tartania, míg a skála kezdőhangjának az oktáv első, véghangjának pedig az utolsónak kell lennie. Tehát az utóbbit választjuk. Ekkor a standard matematikai keret így néz ki:
100000000000000000000001
A katalógus tehát 2 standard pozíciójú hangtól indul. A következő szint a 3 hangból álló katalógus, amelyet most akár kézzel is felvázolhatunk:
110000000000000000000001
101000000000000000000001
100100000000000000000001
100010000000000000000001
100001000000000000000001
100000100000000000000001
100000010000000000000001
100000001000000000000001
100000000100000000000001
100000000010000000000001
100000000001000000000001
100000000000100000000001
100000000000010000000001
100000000000001000000001
100000000000000100000001
100000000000000010000001
100000000000000001000001
100000000000000000100001
100000000000000000010001
100000000000000000001001
100000000000000000000101
100000000000000000000011
Hát ez még eléggé messze áll az élvezhető skálától, de mindenesetre már jó úton vagyunk felé. Vegyük észre, hogy mivel a 2 hangos keret állandó...
100000000000000000000001
...ezért matematikailag nézve 222 = 4194304 skálánk fog keletkezni, mert a 2 db szélső 1 között 22 db 0 van. Ebből fentebb már megalkottuk az első, 3 hangos sorozatot (22 db).
A többi skála megjelenítését nyilvánvalóan algo-, és ritmizálnunk kell. Ebben Tóth Tamás barátom, az OSIRE atyja volt segítségemre...
...aki a 24 hangos skálakatalógust PHP-ben szempillantás alatt leprogramozta. Alább Tamás jóvoltából 2 állományt is letölthetünk. Az egyikük egy olyan alkalmazás (exe), amely sorszámozva kilistázza mind a 4194304 skálakombinációt, a másik pedig egy .zip-formátumba csomagolt .txt-állomány, a sorszámozott és kilistázott skálakatalógus.
72 KB - .exe
20,2 MB - .zip
A skálák megjelenítésének problémái
Figyelem! A txt-állomány kicsomagolt állapotban több mint 140 MB lesz, illetve kibontása -függően a számítógép teljesítményétől-, nagyon hosszú ideig fog tartani!
Egyúttal kénytelen vagyok még egy informatikai problémát jelezni.
A HTML-oldalakat bizony nem arra találták ki, hogy több tíz-, illetve százezres darabszámú skálákat jelenítsenek meg pillanatok alatt. Modern, közepes erejű ACER laptopom HTML-szerkesztője már a 7 hangból álló skálakatalógus 26334 db skálájától hanyatt vágódott, amely 10 perces homokórázásban mutatkozott meg. A művelet végül egy 1 MB-os megaHTML-oldal generálásával záródott, ám ez a méret még sehol sincs például 13 hangból álló skálakatalógus 705432 db skálájához képest (annak körülbelül az 1/26 része). Egyúttal ez azt jelenti, hogy ilyen nagyságú HTML-oldalakkal képes volnék a Tisztelt Olvasó böngészőjét is legyilkolni. Ennek elkerülése érdekében kénytelen vagyok a 10000 darabnál nagyobb skálaobjektumokat .txt-formátumban publikálni az alábbi módon:
-
megadom a skálaobjektum első és utolsó sorszámozott tagját, a középső rész pedig letölthető és kibontható .zip-ből .txt-formátumba. A végső megoldás a 10000 skálánál többet tartalmazó fejezetekben ilyen módon fog kinézni:
Az alábbi fejezetekben a 4194304 db hang, hangköz és hangcsoport binárisan teljes kidolgozásra kerül. A 12 hangos skálakatalógus bevezetőjében már végeztünk egy gyors, ellenőrző számítást. A képlet itt is a már jól ismert kombinatorikai, annak ismétlés nélküli kombinációs képlete...
...ahol:
-
n = 22
-
k = változó
Tehát ellenőrizzük le a részeredményt a már ismert 3 hangos skálakatalógusnál (amely tehát 22 skálából áll).
-
n = 22
-
22! = 1124000727777607680000
-
k = 1
-
1! = 1
22! / (1! x (22-1))! = 1124000727777607680000 / (1 x 51090942171709440000) = 22
-
0 db - elméleti kiindulópont
-
22! / (1! x (22-1))! = 1124000727777607680000 / (1 x 51090942171709440000) = 22 db
-
22! / (2! x (22-2))! = 1124000727777607680000 / (2 x 2432902008176640000) = 231 db
-
22! / (3! x (22-3))! = 1124000727777607680000 / (6 x 121645100408832000) = 1540 db
-
22! / (4! x (22-4))! = 1124000727777607680000 / (24 x 6402373705728000) = 7315 db
-
22! / (5! x (22-5))! = 1124000727777607680000 / (120 x 355687428096000) = 26334 db
-
22! / (6! x (22-6))! = 1124000727777607680000 / (720 x 20922789888000) = 74613 db
-
22! / (7! x (22-7))! = 1124000727777607680000 / (5040 x 1307674368000) = 170544 db
-
22! / (8! x (22-8))! = 1124000727777607680000 / (40320 x 87178291200) = 319770 db
-
22! / (9! x (22-9))! = 1124000727777607680000 / (362880 x 6227020800) = 497420 db
-
22! / (10! x (22-10))! = 1124000727777607680000 / (3628800 x 479001600) = 646646 db
-
22! / (11! x (22-11))! = 1124000727777607680000 / (39916800 x 39916800) = 705432 db
-
22! / (12! x (22-12))! = 1124000727777607680000 / (479001600 x 3628800) = 646646 db
-
22! / (13! x (22-13))! = 1124000727777607680000 / (6227020800 x 3628800) = 497420 db
-
22! / (14! x (22-14))! = 1124000727777607680000 / (87178291200 x 40320) = 319770 db
-
22! / (15! x (22-15))! = 1124000727777607680000 / (1307674368000 x 5040) = 170544 db
-
22! / (16! x (22-16))! = 1124000727777607680000 / (20922789888000 x 720) = 74613 db
-
22! / (17! x (22-17))! = 1124000727777607680000 / (355687428096000 x 120) = 26334 db
-
22! / (18! x (22-18))! = 1124000727777607680000 / (6402373705728000 x 24) = 7315 db
-
22! / (19! x (22-19))! = 1124000727777607680000 / (121645100408832000 x 6) = 1540 db
-
22! / (20! x (22-20))! = 1124000727777607680000 / (2432902008176640000 x 2) = 231 db
-
22! / (21! x (22-21))! = 1124000727777607680000 / (51090942171709440000 x 1) = 22 db
-
1 db - elméleti záróskála