pip install numpy), SuperCollider, Max/MSP (gen~). Ha nincs, a böngészős demó elég. A kódokat a Kódok fülről másold a böngészőből, ne a forrásfájlból (ott < jelek vannak).| Idő | Téma |
|---|---|
| 0–5 | Cél: egy harang hangja nem egyetlen rezgő hangja |
| 5–10 | Az építőkő: tömeg, rugó, fék (kísérlet a teremben) |
| 10–15 | Megoldás: f₀, ζ, σ és T60 |
| 15–20 | Egy rezgő hallható (N = 1), oktávszabály |
| 20–25 | Digitális rezgő: a két mintás rekurzió |
| 25–30 | Kiscsoport 1: három beállítás |
| 30–35 | Két tömeg: mozgásegyenletek, mátrix |
| 35–40 | Közös ütemű mozgás: a sajátérték-feladat |
| 40–45 | N = 2 kézzel |
| 45–50 | Demó: két tömeg lassított felvételen |
| 50–55 | Szünet |
| 55–60 | Módus-koordináták: a rendszer szétesik |
| 60–65 | Csillapítás a módusokban (Rayleigh) |
| 65–70 | Kiscsoport 2: N = 2 számolás |
| 70–75 | N tömeg: a lánc módusai |
| 75–80 | A modális szintézis egyenlete |
| 80–85 | Algoritmus: a modális bank |
| 85–90 | Az ütés és a hallgatás helye |
| 90–95 | Kiscsoport 3: ütés- és hallgatáshely-kísérlet |
| 95–100 | Szünet |
| 100–105 | Határeset: a húr (fal–fal lánc) |
| 105–110 | Merevség: inharmonicitás, rúd |
| 110–115 | Membrán és harang |
| 115–120 | Cső és rezonancia |
| 120–125 | Hangszer-tervező: vezetett bemutató |
| 125–130 | Kiscsoport 4: anyagok táblázata |
| 130–135 | Csillapítás az anyagból és a kalapácsból |
| 135–140 | Hány módus kell? Érvényességi határok |
| 140–145 | Módszerek összevetése |
| 145–150 | Szünet |
| 150–155 | Kódolás: Python (NumPy) |
| 155–160 | Kódolás: SuperCollider, gen~, paraméter-leképezés |
| 160–165 | Projekt 1: tervezés |
| 165–170 | Projekt 2: finomítás |
| 170–175 | Bemutatók és vak hallgatás |
| 175–180 | Összefoglalás és házi feladat |
| Teendő | Mennyi időt nyersz |
|---|---|
| A 28. blokkot (Hány módus kell?) összevonni a 27.-kel (a 11. pont egy mondatban marad) | 5 perc |
| A 29. blokkot (módszerek) 3 percre rövidíteni, a táblázatot az Elmélet fülről (7. pont) olvasni | 2 perc |
| A 34. blokkot (finomítás) elhagyni, a projekt a 33.-ban folytatódik | 5 perc |
| A 14. blokkot (N = 2 számolás) házi feladatnak adni | 5 perc |
| Az 5. blokkban a 9. pontot kihagyni (csak a rekurzió képlete és r értéke) | 2–3 perc |
Ha egy harangot egyetlen rugós súllyal akarnék lemásolni, egy tiszta, kicsit élettelen hangot kapnék. A valódi harangban sok rezgés szól egyszerre: mindegyik más hangmagasságon, és mindegyik más ideig cseng.
Ma ezt a „sok rezgés egyszerre” gondolatot építjük fel a legkisebb építőkőtől, egy súlytól és egy rugótól, egészen addig, hogy a végén ti terveztek hangszert. A neve: modális szintézis.
Ezt a gumit és ezt a súlyt most kézbe veszem. Kihúzom, elengedem: oda-vissza lendül, közben egyre kisebbeket. Kérem, hogy ti is próbáljátok ki. Figyeljétek: melyik a gyorsabb, a nehéz súly vagy a könnyű? Mi történik, ha rövidebb a vonalzó szabad vége?
Három dolog dönt a mozgásról. A rugó mindig visszahúz, minél messzebb húzom, annál erősebben: ez a merevség. A súly nehezen indul el és nehezen áll meg: ez a tehetetlenség. A fék elveszi a mozgás energiáját. Ezt most már fel is írom: F = m·a + c·v + k·x. Minden tag erő, newtonban.
Vegyünk számokat: 10 gramm, 76 kilonewton per méter, és 0,049 newton·szekundum per méter fék. A saját frekvencia a merevség és a tömeg hányadosának gyöke: 439 hertz, majdnem pontosan egy normál A hang.
A lecsengést a σ adja, ez a fék és a tömeg kétszeresének hányadosa. Hogy mennyi ideig cseng, azt a T60 mutatja: ennyi idő alatt lesz a hang az eredeti ezredrésze, azaz 60 decibellel halkabb. A rövid képlet: T60 ≈ 13,8·m/c. Itt ez 2,8 másodperc. Ha felezem a féket, a T60 megduplázódik.
Most meghallgatjuk. Három csúszka van: tömeg, rugómerevség és csillapítás. Először a rugót nézzük: ha négyszer merevebb, az egy oktávval magasabb hang, pontosan egy oktávval. A tömeg fordítva: négyszer nehezebb súly egy oktávval mélyebb. Ez ismerős a gitárról: a vastag, nehéz húr mélyebb.
A fék a hossz: kis fék sokáig cseng, mint a harang, nagy fék koppanás. Van egy határ, amelynél már egyáltalán nem rezeg, csak lassan visszakúszik: ez a kritikus csillapítás. Az ajtócsukó éppen ilyen.
A számítógép nem tud hintázni, ezért egy egyszerű trükköt használ: minden új értéket a két előző értékből számol ki. Ha tudja, hol volt a súly az előbb, és hol volt még előbb, ki tudja találni, hol lesz most. Ez egy két mintás rezgő.
Fontos, hogy ez nem közelítés: a hangmagasságot és a lecsengést pontosan adja, és amíg van fék, sosem robban fel. A két szám, amelyből épül, az r (ez adja a lecsengést) és a θ (ez adja a hangmagasságot).
Most párban dolgoztok. A feladatlapon három beállítás van. Mindháromra számoljátok ki: f₀, ζ, T60 és a kritikus csillapítás. Ha kész vagytok, ellenőrizzétek a demóban N = 1-nél. Cseréljetek papírt a szomszéd párral, és nézzétek meg egymás hibáit.
Eddig egy súly volt. Most kössünk egy másodikat az elsőhöz egy újabb rugóval: fal, rugó, súly, rugó, súly, a jobb vége szabad. Két súly, két egyenlet. Ugyanezt mátrixba is írhatjuk: tömegmátrix, merevségmátrix, csillapításmátrix. Ez csak rövidebb írásmód, a sorok ugyanazok.
Nézzétek a merevségmátrixot: ez szimmetrikus, és az utolsó eleme k, nem 2k, mert az utolsó súlynak csak egy rugója van.
Kérdezzük meg: van-e olyan mozgás, ahol mindkét súly ugyanazon a ritmuson megy, és az arányuk végig ugyanaz? Írjuk fel így: x = u·cos ωt. Behelyettesítünk, és kiderül, hogy ez csak bizonyos ω értékeknél lehet.
Ezek a sajátfrekvenciák, az alakok pedig a sajátalakok. Együtt ezt hívjuk módusnak. Két súlynál két megoldás van, N súlynál N megoldás.
Számoljuk ki a két súlyra. A determinánsból egy másodfokú egyenlet jön ω²-re, a megoldása (3 ∓ √5)/2 · k/m. Ebből az alsó hang az alapfrekvencia 0,618-szorosa, a felső 1,618-szorosa: ez az aranymetszés arányai.
A mi számainkkal: 271 hertz és 710 hertz. Az alsó alakban a két súly egy irányban lendül, a felsőben egymással szemben.
Most lássuk, mit számoltunk ki. A rajz lassított felvétel: az alsó módus fél hertzen leng. Kapcsoljátok ki az egyiket, a másikat, majd mindkettőt. Látjátok: a súlyok valódi mozgása a két módus összege.
Szünet 5 percre. Előtte egy gyors kérdés: mi az a három dolog, ami egy módust meghatároz? (frekvencia, lecsengés, erősség, ezt a második részben fogjuk látni)
Van egy szép trükk. A módusalakok egymásra „merőlegesek”, ezért ha a mozgást a módusok összegeként írom fel, a csatolt egyenletek szétesnek: minden módusnak lesz egy saját, független egyenlete.
És ez az egyenlet pontosan ugyanaz, mint amit az elején felírtunk egy súlyra: egy tömeg, egy rugó, egy fék. Csak minden módusnak saját frekvenciája, saját lecsengése és saját „tömege” van. Úgy képzeljétek, mint egy akkordot, amit külön hangokra bontunk.
A valóságban a magas hangok gyorsabban halnak el: ezért tompul a harang hangja lecsengés közben. Ezt két taggal írhatjuk le: az egyik minden módust egyformán fékez, a másik, a β-tag, a magasakat jobban.
Próbáljátok ki: Demó 1, a β csúszka. Növelitek a β-t, és a hang gyorsan tompább lesz.
Most párban számoljátok ki: a 2. tömegnél ütök és a 2. tömegnél hallgatok. Mekkora a két módus erőssége, és mi az arányuk? Segítség: az erősség uₙ(p)·uₙ(q)/(mₙ·ω_dₙ).
N súlyra is fel tudjuk írni a megoldást, zárt képlettel. Kétféle végünk lehet: fal–szabad, ez az 1 : 3 : 5 körüli arányokat adja, mint egy klarinét. És fal–fal, ez a húr: 1 : 2 : 3 körüli arányok. A magas módusok kicsit összesűrűsödnek, mert a képletben szinusz van.
A levezetés, hogy egy szinuszos próbafüggvényt teszünk be a lánc egyenletébe, a 8. pontban van. Ez nem kötelező, de szép.
Most összeállt a kép. Egy ütés után a kitérés a módusok összege. Minden módushoz három dolog tartozik: frekvencia, lecsengés és erősség. A hangszínt ez a három lista adja.
Az erősségben benne van az ütés helye és a hallgatás helye, és osztva van a frekvenciával, ezért a magas módusok eleve halkabbak. Frekvenciatartományban a módusok az átviteli függvény pólusai.
Hogyan lesz ebből hang? Minden módus egy két mintás rezgő, pont az, amit a 20. percben építettünk. A kimenet az összegük. Mintánként módusonként két szorzás: 100 módus 44,1 kilohertzen kb. 8,8 millió szorzás másodpercenként. Ezt egy mai gép könnyedén kibírja.
Két fajta módust kihagyunk: azokat, amelyek a mintavétel felénél magasabbak, mert visszatükröződnének, és a túlcsillapítottakat, amelyek nem rezegnek.
Ha a láncot egy pontján megütöm, nem minden módus indul be egyformán. Ahol egy módusalak alig mozdul, ott ütve az a hang gyengén szólal meg.
A falhoz közel ütve a magasabb hangok erősebbek, ezért a hang fényesebb. A szabad végén ütve az alaphang dominál, a hang tompább. Ugyanezt halljuk a gitárnál: a híd közelében pengetve fényesebb a hang.
Párban: N = 5, fal–szabad, a hallgatás helye az 5. tömeg. Állítsátok az ütés helyét 1-től 5-ig. Minden helyen írjátok le: melyik módus gyengül, és hol a leg„fényesebb” a hang.
Szünet. Ez után a második fél jön: a valódi hangszerek.
Ha a lánc mindkét végét rögzítjük, és sok súlyt használunk, a hangok majdnem 1 : 2 : 3. Ez az ideális húr. Egy fontos dolog: ha a húr közepén penget valaki, a páros harmonikusok eltűnnek, mert a közepén ott a csomópontjuk.
A zongorahúr merev, ezért a résztónusai kicsit magasabbak az egész számú többszöröseknél: ezt hívjuk inharmonicitásnak. A nyolcadik résztónus 8 helyett 8,13. A hangnak ettől lesz „zongorás” színe.
A rúd, mint a xilofon vagy a csengő, még messzebb van: a résztónusai 1 : 2,76 : 5,40. Nincs harmonikus hangmagasság, ezért szól fémesen. A marimbánál a rúd alját kifaragják, hogy a 2. és 3. módus pont 4 és 10 legyen.
A dobbőrnek a módusai Bessel-függvények zérushelyeiből jönnek, az arányaik 1 : 1,59 : 2,14 : 2,30 és így tovább. Ezek már messze vannak az egész számoktól, ezért a dob hangmagassága határozatlan.
A harang hangoltan inharmonikus: a hum, a prime, a tierce, a quint és a nominal. A tananyagban használt arányok közelítők. A hangmagasság-érzetet főleg a prime adja.
Egy zárt cső, mint a klarinét, csak a páratlan harmonikusokat adja: 1 : 3 : 5 : 7. Pont azt, amit a fal–szabad lánc is mutatott.
És ugyanide tartozik a rezonancia: ha egy rendszert a saját ritmusában lökdösünk, egyre nagyobb lesz a mozgás. A húr lökdösi a hangszertestet, és a test azokat a hangokat erősíti, amelyekhez „ritmusban” van. Ha kicsi a fék, éles és hosszú a rezonancia, mint a pohár. Ha nagy a fék, széles és rövid.
A tervezőben egy anyagot választotok, és hat dolgot állíthattok: az alapfrekvenciát, a módusok számát, a lecsengést, a magas módusok fékét, a kalapács lágyságát, és húrnál az ütés helyét. A sávdiagram mutatja a módusokat: a magasság az erősség, a szín a lecsengés: rózsaszín rövid, kék hosszú.
Párban: hallgassátok meg mind a hét előbeállítást. Töltsetek ki egy táblázatot: anyag, módusarány, lecsengés (rövid, közepes, hosszú), és egy szó a hangszínre. A végén egy-két párt megkérek, hogy olvassa fel.
Az anyag számít: a fém kevésbé csillapít, ezért hosszabban cseng, a fa, a műanyag, a bőr rövidebben. A magas módusokat általában erősebben fékezi az anyag, ezt állítja a g csúszka.
A kalapácsnak is hatása van: a lágy kalapács a magas módusokat kevésbé gerjeszti, ezért tompább a hang. Ezt egy egyszerű aluláteresztővel közelítjük.
Hány módus kell egy hanghoz? Ez hangszerfüggő: ha a hang harmonikus, kevesebb is elég, harangnál több kell. Próbáljátok ki, hány módusnál változik meg a hang.
És fontos kimondani, hol vannak a módszer határai. Csak lineáris, időben állandó rendszerre igaz. A Rayleigh-modell két paraméterrel írja le a lecsengést, nem illik tetszőleges hangra. A csonkolás elhagyja a magas részeket. A kalapács szűrője szemléltető egyszerűsítés, nem mért modell.
A modális szintézis nem az egyetlen módszer. Három családot nézünk. A modális: pontos és olcsó, de csak lineáris rendszerre. A Karplus–Strong és a hullámvezető: nagyon olcsó, húrra és csőre. Az Euler, FDTD és tömeg-rugó hálózat: nemlineáris is lehet, de kis lépés kell és sok számítás.
A gyakorlatban kombinálják: a zongorában a hangszertestet modálisan, a húrt hullámvezetővel modellezik.
Szünet. Utána programozunk: ugyanezt a képletet fogjuk kódban látni.
Itt a teljes bank húsz sor. A bank függvény kap három listát: frekvenciák, lecsengés és erősség. Kihagyja a Nyquist fölöttieket, kiszámolja a csillapított frekvenciát, és összegzi a módusokat. Nem kell a képleteket érteni, csak a szavakat: hangmagasság, lecsengés, erősség.
Futtassátok a lánc programját N = 5-re. Aztán az ütés helyét 5-ről 1-re. Mit hallotok? Utána adjatok meg béta értéket.
chain(5,"ff",10,76,0.049,0,5,5), majd p=1, majd beta=20. Olvasd fel a magyar kommenteket.SuperCollider-ben ugyanez rövid: a ~modal függvény fogadja ugyanazt a három listát. (Van beépített rezonátorbank is, a Klank.) Max-ben a gen~ kód hosszabb, mert mintánként kell megírni a két mintás rezgőt, de ugyanaz van benne.
A legfontosabb kérdés a paraméter-leképezés: melyik csúszka mit állít? Ha egy rudat rövidebbre vágok, a frekvencia az 1/L²-tel arányos: fele hosszú rúd négyszeres frekvencia.
s.boot, „Közös alap”, majd a Demó 2 ~designer sora. Max: [gen~], codebox, [click~] az ütéshez.Most a ti hangszeretek jön. Tervezzetek egyet: anyag, 6–10 módus, alapfrekvencia, T60, a magas módusok bomlása. Írjátok le a paraméterlistát, és indokoljátok, miért azt az anyagot választottátok.
Finomítsatok: hallgassátok meg, mit változtat egy csúszka. Írjatok le egy „előtte–utána” megfigyelést. A végén 10 másodperces hangmintát mentsetek, és jönnek a bemutatók.
Minden csoport lejátssza a hangszerét, de nem mondja meg, hogy mi az anyag. A többiek a pontozólapon tippelik meg az anyagot, és 1–5 pontot adnak a hangzásra.
Összefoglalva: egy rezgést három szám ír le: tömeg, merevség, csillapítás. Több tömeg: több módus, mindegyiknek saját frekvenciája, lecsengése és erőssége. A hangszínt a három lista adja, az ütés és a hallgatás helye pedig az erősséget módosítja. A módszer lineáris rendszerekre működik; nemlineáris érintkezésre más módszer kell.
Házi feladat: tervezzetek marimba-rudat 1 : 4 : 10 aránnyal (3 módus), vagy saját harangot, és magyarázzátok el, melyik paramétert miért választottátok. Az önellenőrző kérdéseket is kiadom.
A számértékeket a tananyag képleteivel és kódjával újraszámoltam; a kerekítés miatt az utolsó jegyben ±1 eltérés lehet.
| Feladat | Megoldás és ellenőrzés |
|---|---|
| Oktávszabály | k: 76 → 304 kN/m, f₀ 439 → 878 Hz (×2). m: 10 → 40 g, f₀ 439 → 219 Hz (×½). (A 300 kN/m már kicsit az oktáv alatt marad.) |
| 1. Három beállítás | (a) f₀ = 438,8 Hz, σ = 2,45 1/s, ζ = 0,0009, T60 = 2,82 s (13,8·m/c), c_krit = 55,1 N·s/m. (b) ω₀ = 7746 rad/s, f₀ = 1232,8 Hz, σ = 760 1/s, c_krit = 77,5 N·s/m, ζ = 0,098, T60 = 9,1 ms, f_d = 1227 Hz. (c) c = 55,1 a c_krit = 55,14 közelében: ζ = 0,9993, a rezgő szinte kritikusan csillapított, nem hallható rezgés (f_d ≈ 16 Hz). A csúcstól a −60 dB-ig ≈ 3,7 ms telik el; a 13,8·m/c képlet (2,5 ms) itt nem pontos, mert kis ζ-ra érvényes. A demóban c-t a csúszka lépései szerint állítjuk be; ha c ≥ c_krit, a módus kimarad, és nem szól. |
| 2. N = 2 kézzel | f₁ = 0,618·f₀ = 271 Hz, f₂ = 1,618·f₀ = 710 Hz. Alakok: u₁ = (1; 1,618), u₂ = (1; −0,618). Az ütés és hallgatás a 2. tömegnél: a₂/a₁ ≈ 0,146 (= 0,382², az 1. módus a domináns). Ez a 4. pont erősségképlete (1/ω_d-vel). Ha valaki az 1/ω_d tényezőt kihagyja, 0,382-t kap: ez a leggyakoribb eltérés. A számítás normálástól független. |
| 3. Ütés helye (N = 5, hallgatás az 5.) | Az erősségek abszolút értéke az 1. módushoz viszonyítva (módus 1…5): ütés az 1.-nél: 1 : 0,84 : 0,58 : 0,30 : 0,08; 2.-nál: 1 : 0,58 : 0,09 : 0,13 : 0,07; 3.-nál: 1 : 0,23 : 0,20 : 0,03 : 0,06; 4.-nél: 1 : 0,10 : 0,10 : 0,10 : 0,04; 5.-nél: 1 : 0,29 : 0,13 : 0,05 : 0,01. (Az előjelek módusonként váltakozhatnak, a hangszínt az abszolút érték adja.) A falnál (1.) a legfényesebb, a szabad végén (5.) a legtompább. Gyengülő módusok: 2.-nál a 3. (0,09), 3.-nál a 4. (0,03). Teljesen nem tűnik el egy sem. Frekvenciák (m = 10 g, k = 76 kN/m): 125, 365, 575, 738, 842 Hz. |
| 4. Anyagok táblázata | Húr: 1 : 2 : 3 …, 3 s (közepes), „hegedű/gitárszerű”. Merev húr: n√(1+Bn²), 4 s (közepes), „zongorás, enyhén fémes”. Zárt cső: 1 : 3 : 5…, 1,2 s (rövid–közepes), „üreges, klarinétszerű”. Rúd: 1 : 2,76 : 5,40 …, 2,5 s (közepes–hosszú), „fémes, csengő”. Marimba-rúd: 1 : 4 : 10, 0,8 s (rövid), „meleg, fás”. Membrán: 1 : 1,59 : 2,14 …, 0,6 s (rövid), „dobos, határozatlan magasság”. Harang: 0,5 : 1 : 1,19 : 1,5 : 2, 6 s (hosszú), „mély, zengő”. A hangszínszavak szubjektívek, elfogadj minden indokolt leírást. |
| 5. Python | chain(5,"ff",10,76,0.049,0,5,5): az 5. tömegre ütve az alaphang dominál (1 : 0,29 : 0,13 : 0,05 : 0,01). p=1: a hang fényesebb (1 : 0,84 : 0,58 : 0,30 : 0,08). Rayleigh-csillapítás: beta=20 (µs) mellett a T60-ak az 1…5. módusra 0,80, 0,13, 0,05, 0,03, 0,02 s, vagyis a magas módusok gyorsan elhalnak, a hang tompul; beta = 0-nál mind 2,82 s. A frekvenciák: 125, 365, 575, 738, 842 Hz. A bank a kimenetet normálja, ezért a hangerő nem hasonlítható a hangok között. |
| 6. Projekt (10 pont) | Paraméterlista (3 pont), indoklás az anyagról (3 pont), 10 másodperces hangminta (2 pont), bemutató (2 pont). |
| 7. Házi: marimba-rúd | Három módus, 1 : 4 : 10; f₁ = 262 Hz esetén 1048 Hz és 2620 Hz. Rövid lecsengés (≈ 0,8 s), a magasak még rövidebbek (g ≈ 0,2). Indoklás: a rúd aljának faragása hangolja harmonikusra a 2. és 3. módust. Saját harangnál elfogadható bármely indokolt, inharmonikus arányhalmaz (pl. 0,5 : 1 : 1,19 : 1,5 : 2 körül), hosszú T60-nal. |
| Önellenőrző kérdések | 1. Olyan mozgásforma, ahol minden pont azonos frekvencián, rögzített arányban mozog. 2. N darab. 3. A magas módusok gyorsabban csillapodnak (β-tag). 4. A falnál. 5. Nemlineáris vagy közben változó rendszernél (pl. gong). |
ModuleNotFoundError: numpy esetén pip install numpy. A WAV-ot bármilyen lejátszóval meg lehet nyitni. A „Közös alap” blokkot előbb kell futtatni (bank, write_wav, LN1000).s.boot, és a „Közös alap” blokkot (~modal) is futtatni kell, mielőtt a demók kódját; ha nem szól, nézd meg a kimeneti eszközt.in1–out1 legyen bekötve, az ütéshez [click~] kell a bemenetre. Az ends, mask és más paramétereket üzenettel állítod (pl. [N 5(). p és q ne legyen N-nél nagyobb; legfeljebb 16 módus van. Az egyetlen rezgős gen~ kód kimenete méterben van, J = 1 N·s mellett kb. ±0,036, ezért halk: erősíts rajta.| Elem | Pont |
|---|---|
| Önellenőrző kvíz (5 kérdés) | 5 |
| Feladatok 1–4 (kiscsoportos, ellenőrizve) | 8 |
| Projekt (6. feladat) | 10 |
| Vak hallgatás és bemutató (35. blokk) | 4 |
| Házi feladat (7. feladat) | 3 |
Az 5. feladat (Python) nem pontozott, a 31. blokkban gyakorlásra szolgál; a projekt pontozásába beleszámíthat a kód használata.