Ma találtam meg a közös pontot azok között a dolgok között, amiket művelek magamnak. Most örül a fejem. Eddig csomószor megkaptam a megjegyzést, hogy "hát, a zenélés meg a fizika, jéé, mennyire különböző dolgok satöbbi", és nem is tudtam mit rávágni. Most megvan a frappáns válasz.

Pár bejegyzéssel ezelőtt áradoztam, hogy az elektronikus zenének az egyik legnagyobb találmánya, hogy folytonos, vagyis, hogy nem diszkrét paraméterekkel kell dolgozni (mint klasszikus esetben), hanem tetszőleges jeleket ki lehet keverni, és hogy ez mekkora nagy dolog. Nos, ez szigorúan véve csak akkor igaz, ha az ember analóg eszközökkel dolgozik, mint pl. az erősítő, vagy a keverőpult, a kazettás magnó, meg ilyenek. Az eszközök többsége ugyanis digitális, és ezek igenis nem folytonos, hanem diszkrét rendszerek. Persze a kettő közötti különbség szinte alig észrevehető, főleg kellően magas mintavételezést használva. Senki a világon nem hallja a különbséget egy CD-felvétel és egy analóg felvétel között (legalábbis olyan különbséget, ami pusztán a mintavételnek lenne köszönhető). Éppen ezért nem tűnik fel, hogy van különbség a két kezelésmód között.

Az eltérés nagyjából akkora, mint a klasszikus fizikai leírásmód és a kvantummechanika között. És a különbség természete is teljesen hasonló.

Nyilván, ha valaki kocsikat toszigál egymásnak a gimiben, akkor nem fog feltűnni neki, hogy a kocsikra felírt newtoni mozgástörvények nem jó eredményt adnak, mivel az eltérés olyan kicsi, hogy nincs ember a világon, aki kimérné (igazából már azt is látnia kéne, hogy az általa taszigált kocsi tul.képp. nem is létezik, hanem csak egy várható érték az, amit buherál az asztalán). Valami hasonló a helyzet az elektronikus zenével is. Ahhoz, hogy feltűnjön a különbség, ahhoz olyan dolgokat kell csinálni, ahol a kvantálási hiba már számottevő.

Na, pont egy ilyen példát sikerült ma találnom.

Mielőtt még bármit írok, egy fontos megjegyzés: nem nehéz olyan triviális példát találni, ahol az elektronika "kvantumos" természete szembeszökő. Ha valaki megpróbál egy olyan "CD-jellegű" felvételt csinálni, ahol az egyes mintákat nem 16, hanem csak 8 biten ábrázolja, akkor máris hallani fogja az igen jellemző "dinamikai kvantálási zajt" a háttérben (egy erős sistergés formájában). Szóval alapból nem nagy vaszisztdasz, ha valaki talál egy olyan digitális zenei példát, ahol a kvantálási hiba számottevő. Amit ma találtam, abban az a poén (legalábbis számomra), hogy egyáltalán nem triviális, hogy alapvetően a kvantálási hiba miatt szól úgy az egész, ahogyan. Nekem is eltartott egy pár óráig, amíg rájöttem, hogy mi a baj (illetve szerencse)... :-)

Ami miatt a bejegyzést írom, az nem az a kütyü, amit összeraktam. Ez egy unalmas technikai leírás lenne, a gépen meg úgyis ott van, szóval felesleges. Ezért csak tömören, röviden összefoglalom a dolgot, leginkább magamnak (archiválás 1.0): a lényeg annyi, hogy az ember vesz egy véletlen tömböt (mondjuk egy 100.000 elemű tömböt, ahol az elemek egyenletes eloszlású véletlen számok -1 és 1 között), és ezt a tömböt olvassa tetszőleges frekvenciával (tehát pl. 1 Hz-es olvasás esetén 1 másodperc alatt egyszer olvasom ki a tömböt, míg 100 Hz-es freki esetén 100-szor). Az ember elsőre azt várná, hogy ebből minden frekvenciára fehér zajt kap. A valóság azonban az, hogy egyáltalán nem. A kiolvasás sebessége ugyanis konstans, mégpedig a hangkártya digitalizálási frekvenciája (CD esetén ez 44,1 kHz), vagyis igazából azt tudom csak beállítani, hogy egy-egy kiolvasás között hány elemet lépjek előre a tömbben. Namármost, ha sikerül pont egy olyan frekit eltalálnom, ami a digitalizálási freki valamelyik osztója, akkor bizony a kapott hangban lesz egy periodicitás, és ezért nem zajt fogok hallani, hanem egy jóldefiniált alaphanggal bíró zenei hangot. A poén az, hogy ez nem csak akkor lesz igaz, ha a találomra beadott freki a digitalizálási freki egész osztója, akkor is igaz, ha valamilyen racionális számot alkotnak, legfeljebb a kapott zenei hang periódusideje lesz más és más. Az alaphang pedig attól fog függni, hogy az általuk alkotott racionális tört nevezője (illetve számlálója) mekkora.

Ebből már látszik (és ez vissza fog mindjárt vinni oda, ahonnan kiindult a mai bejegyzés), hogy mivel a racionális számok számlálója (illetve nevezője) össze-vissza jön a számegyenesen, ezért ha a frekvenciát egyenletesen növelem, akkor teljesen különböző hangokat fogok kapni, gyakorlatilag véletlenszerűen (pl. 5,83-as arányra egy egész szép fémes hangot kaptam, míg 5,833-ra majdnem fehér zaj jött). És ez csak és kizárólag annak köszönhető, hogy a számítógép digitális elven működik!

A poén az, hogy a diplomatémámban teljesen hasonló jelenségeket fogok vizsgálni: mi változik meg egy klasszikus rendszer viselkedésében, amikor átmegyünk kvantumfizikai képbe? Ezen belül is kaotikus rendszerek viselkedése lesz napirenden, és a vicc az, hogy ott is teljesen hasonló dolgok jönnek elő, mint pl. a fenti példánál (pl. az egyik "állatorvosi lónak" tekintett kvantumkaotikus rendszerben, a QKR-ben szintén alapvető fontossággal bír, hogy a rendszert leíró két paraméter aránya racionális-e, avagy sem, és hogy milyen jellegű racionális tört jelenik meg).

Meg kell mondjam, nem nagyon értem a kvantumkáosszal kapcsolatos dolgokat, amiket eddig tanultam, az azonban világosnak tűnik, hogy a "digitális zenei világkép" és a "kvantumfizikai világkép" matematikailag igencsak hasonló. Éppen ezért, mától kezdve, ha valaki csodálkozni fog, hogy zenét és fizikát egyszerre tanulok, rá fogom tudni vágni, hogy ne aggódjon, a kettő lényegileg egy és ugyanaz. :-)

Utoljára módosította SAdam 2008.IV.30 18:00-n
PermaLink

Hozzászólások (4)

UPi hozzászólása 2008-05-01 07:22-kor

Mint informatikus, állíthatom neked: minden szám racionális. Ha pedig random mintát akarsz csinálni, ahhoz nem szükséges nagy random tömb: elég ha veszel n darab számot, és azokat adod a hangkártyának végtelenítve. Az általad leírt jelenség enyhítésére szolgál a hangmintán alapuló visszajátszásnál (pl mod, vagy midi) az interpoláció; már egy szimpla lineáris interpoláció is elég hatékonyan szűr...


VágvölgyiAttila [regisztrálatlan] hozzászólása 2008-05-01 10:19-kor

Nagyon érdekes és szemléletes a megfigyelésed, de amint leírtad ezt a fajta viselkedést nem az egyes - a hangkártyára küldhető - számok bitszáma okozta (kvantálás), hanem az, hogy 2 minta között nincs végtelen sok másik (mintavétel). A mintavétel okozta problémákat, amiket leírtál, a matematikában 2-féle dologgal szokták egész hatékonyan megtámadni, bár erről tuti hogy hallottál már a fizikán:

A periodikus, vagy stacioner viselkedését a rendszernek a Diszkrét Fourier Transzformációval lehet jól kezelni, a tranziens viselkedést (amivel a periodikus, vagy stacioner állapotba közelít a gerjesztés változása után) pedig a Z-transzformációval lehet jól kezelni.

Az 5,83 és 5,833 közötti 0,003-as különbség 100.000 mintán már hatalmas különbségeket tud okozni az egyes minták súlyozásában a mi alapvetően frekvenciatartományban halló fülünknek. Nagyon klassz kísérlet! Lehetne akár olyan - hosszabb - mintákat is preparálni, amik különböző "frekvencián" játszva különböző dallamokat állítanak elő, és hívhatnád hang-kaleidoszkópnak (ha még nincs ilyen nevű dolog).


SAdam hozzászólása 2008-05-01 10:37-kor

Na pont ez az, ami nem igaz! (Mármint a "veszek n darab számot és beadom végtelenítve"). Abból ugyanis csak akkor lesz zaj, ha az a bizonyos n kellően nagy. Épp ez volt az, amit tegnap felfedeztem, miközben szórakoztam. Pl, ha n = 3, akkor (44,1 kHz mintavételezés mellett) egy 44,1/3 = 14,7 kHz-es frekvenciájú hangot fogok kapni. Ugyanígy, ha mondjuk n = 100, akkor egy 441 Hz-es hang fog kijönni a gépből. Annyi, hogy ha a minta véletlen, akkor a hangnak a színe is véletlenszerű lesz, de attól még zenei hangként fog viselkedni (vagyis lesz egy meghatározott alaphangja és hangszíne).

Az a program, amit összeraktam, az persze ennél kicsit többet tudott. Nevezetesen, ott egy adott frekvenciájú háromszögjel segítségével olvastam ki a mintából a jeleket (általában a DSP jelgenerátorok mind így működnek), vagyis fogtam egy háromszögjelet, ami 0 és n között (n most a teljes tömb hossza) interpolált egy megadott f frekvenciával. Ekkor vettem észre, hogy ha pl. f = 14,7 kHz, akkor zenei hangot kapok, de ha kicsit is változtatok az f-en, akkor már zaj lesz belőle. Ezek után jöttem rá arra, hogy ha az f/f0 (f0 = 44,1 kHz most éppen) egy kellően alacsony nevezőjű racionális szám, akkor zenei hang lesz, és minél nagyobb nevezője van annak a racionális számnak, amit ez a tört megad, annál zajosabb a jel, amit kapok (ugyanis a nevező fogja meghatározni azt, hogy hány mintánként fog ismétlődni a jelalak). Pl, ha a tört 1234/4321, akkor 4321 mintánként ismétlődik a jel, vagyis a zenei hangom 44100/4321 = 10,2 Hz-es, vagyis nem igazán zenei hang, inkább csak egy pulzáló zaj lesz, amit hallok.

A szép az egészben az, hogy mivel a racionális számok nevezői össze-vissza követik egymást a számegyenesen (a racionális számok olyan p/q alakú számok, ahol p, q egészek és relatív prímek), ezért ha egy lebegőpontos paramétert egyenletes lépésközzel növelek, akkor teljesen véletlenszerú hangokat fogok kapni egymás után. Egyébként ez számomra nem probléma, hanem lehetőség. :-)


SAdam hozzászólása 2008-05-01 10:46-kor

Attilának: igen, azt elfelejtettem specifikálni, hogy melyik kvantálásra gondolok, ugyanis a hangkártya az időfelbontást és a dinamikai felbontást is kvantálja (az előbbi jellemző paramétere a mintavételi freki, az utóbbinak a bitmélység). Én sem a dinamikai kvantálásnak tulajdonítottam a jelenséget, hanem az időkvantálásnak. Egyébként fején találtad a szöget, pontosan azért fogunk zenei hangot hallani azokban a speciális esetekben, amit írtam, mert a diszkrét Fourier transzformációnak maximum annyi független komponense lehet, ahány elemből áll az a tömb, amin végrehajtjuk, vagyis pl. egy 3-periodikus mintában legfeljebb 3 Fourier-komponens lehet, és mondjuk 44,1 kHz-es mintavétel mellett ez a három komponens 44,1 kHz, 22,5 kHz és 14,7 kHz (mivel utóbbi a legalacsonyabb, ezért ez lesz a 3-periodiks jel alaphangja).

Amúgy meg kell mondjam, nem teljesen értem minden részletében azt, ami történik (azt, hogy miért van így, azt értem, csak azt nem tudom, hogy hogyan tudnám előre kalkulálni a paramétereimet), de azt hiszem, most egy időre elmélyedek ebben :-)