♪ Modális szintézis, 1. gyakorlat: a trambulintól a modális szintézis egyenletéig

1. Mi az a módus?

Egy harang, egy gong vagy egy gitártest nem egyetlen hangot ad, hanem sokat egyszerre. Ezek az építőkövek a módusok: olyan mozgásformák, amelyekben a tárgy minden pontja ugyanazon a frekvencián, rögzített arányban mozog.

🩰 Tánckar: mindenki ugyanabban az ütemben mozog, de mindenkinek más a mozdulata. Ez egy módus. A tárgynak több ilyen „koreográfiája” van, a hangja ezek keveréke.

Három kérdés, amire a végére tudnod kell a választ: (1) mi a módus? (2) mit mond meg a σ? Azt, milyen gyorsan cseng le a rezgés: nagyobb σ, rövidebb hang. (3) miért tompul a hang lecsengés közben? A csillapítás a magas módusokat jobban fékezi, ezért azok halnak ki előbb. Zongoránál ütés után a csilingelő felső rész hamar eltűnik, a mély alap marad.

2. Egy rezgő: tömeg, rugó, fék

A legkisebb „hangszer” egy tömeg, egy rugó és egy fék. Trambulin: a gyerek a tömeg (\(m\)), a vászon a rugó (\(k\)), a levegő a fék (\(c\)). A mozgásegyenlet: \(m\ddot x+c\dot x+kx=F\), vagyis tömeg × gyorsulás + fék + rugó = külső erő.

Mindig az első sor a mértékegység-átváltás: \(m\) [kg], \(k\) [N/m], \(c\) [N·s/m]. A gramm és a kN/m keverése a leggyakoribb hiba. A mértékegység a hangolás: ha az egyik hangszer 440-re, a másik 432-re van hangolva, minden elcsúszik.

Ha senki nem lök, a rendszer a saját ütemében lengene: \(\omega_0=\sqrt{k/m}\) [rad/s], és \(f_0=\omega_0/2\pi\) [Hz], mert egy kör \(2\pi\) radián, a hertz a köröket számolja másodpercenként. Feszesebb vászon (nagyobb \(k\)): gyorsabb. Nehezebb gyerek (nagyobb \(m\)): lassabb. Ugyanez a dobnál: feszes bőr magas, nagydob mély.

Példa (a): \(m=10\) g \(=0{,}01\) kg, \(k=76\) kN/m \(=76\,000\) N/m. \(\omega_0=\sqrt{76000/0{,}01}\approx2757\) rad/s, \(f_0=2757/6{,}283\approx438{,}8\) Hz: majdnem az A hang. Kétszeres tömegnél \(f_0\) a \(\sqrt2\)-ed részére esik (kb. 310 Hz).

3. Lecsengés és csillapítás

A fék miatt a rezgés \(e^{-\sigma t}\) szerint fogy: \(\sigma=\dfrac{c}{2m}\). A (a) esetben \(\sigma=0{,}049/(2\cdot0{,}01)=2{,}45\) 1/s. A \(\sigma\) azt mondja, milyen gyorsan fogy a lendület: a trambulinon pattogó gyerek egyre kisebbeket ugrik.

Utózengési idő: \(T_{60}=\dfrac{\ln1000}{\sigma}\). A hatvan decibel ezerszeres amplitúdóarány, ezért \(\ln1000\approx6{,}9\) (nem 3). Az (a) esetben \(T_{60}\approx2{,}82\) s. Ugyanez a szám a reverb pluginok RT60-a.

Kritikus csillapítás: \(c_{krit}=2\sqrt{km}=2\sqrt{760}\approx55{,}1\) N·s/m, és \(\zeta=c/c_{krit}\approx8{,}9\cdot10^{-4}\). A kritikus fék az, ahol a rendszer már nem leng át: mintha a trambulin vásznát mézbe merítenéd. A \(\zeta\) azt mondja, hányad része ennek a féknek az, amink van. Az (a) esetben nagyon kicsi: alig fékezett, sokat leng.

A hang a lecsengő szinusz: \(x(t)=\dfrac{J}{m\,\omega_d}\,e^{-\sigma t}\sin\omega_dt\), ahol \(\omega_d=\omega_0\sqrt{1-\zeta^2}\), \(J\) pedig az ütés lökése.

A (b) és (c) eset: a (b)-ben (5 g, 300 kN/m, \(c=7{,}6\)) magasabb, de szinte azonnal elhaló „kopp” szól, mint a pergő. A (c)-ben a fék pontosan kritikus: nincs csengés, csak puffanás, mintha a gongot vizes törölközőre cserélnénk. Hang van, csak nem szól sokáig. Az értékeket az 1. feladatban számolod ki.

4. Két tömeg: mátrixok

Két vagon: az első rugóval a falhoz, a második rugóval az elsőhöz kötve, a jobb vége szabad. Milyen egyszerű mozgásokat lát az ember? (1) együtt mennek, (2) ellentétesen. Ez a két módus.

\(\mathbf M=m\begin{pmatrix}1&0\\0&1\end{pmatrix}\), \(\mathbf K=k\begin{pmatrix}2&-1\\-1&1\end{pmatrix}\). Az \(\mathbf M\) a tömegek táblázata. A \(\mathbf K\) a kötelek térképe: az első vagont két rugó fogja (2), a másodikat egy (1), a \(-1\) azt jelenti, hogy a szomszéd visszahúz. Az átlóban pozitív, mellette negatív szám áll.

A rendszer akkor leng tiszta ütemben, ha \(\det(\mathbf K-\omega^2\mathbf M)=0\). A gitárhúr sem akármilyen frekvencián cseng, hanem csak a saját hangjain: ezeket keressük. Két tömeg, két módus: annyi módus van, ahány tömeg.

5. A két módus frekvenciája

Legyen \(\lambda=\omega^2/\omega_0^2\) (arány az alapfrekvenciához, mértékegység nélkül, mint egy zenei intervallum). A determináns: \((2-\lambda)(1-\lambda)-1=0\), vagyis \(\lambda^2-3\lambda+1=0\), így \(\lambda=\dfrac{3\mp\sqrt5}{2}=0{,}382\) és \(2{,}618\).

A gyökvonás után \(\omega_1=0{,}618\,\omega_0\), \(\omega_2=1{,}618\,\omega_0\): az aranymetszés. Tehát \(f_1=439\cdot0{,}618=271\) Hz és \(f_2=439\cdot1{,}618=710\) Hz.

⚠️ A két frekvencia hányadosa nem 1,618, hanem \(710/271=2{,}618\): egy oktáv és egy kissé szűk kvart. A húr felhangjai 1 : 2 : 3, itt 1 : 2,6. Ezért szól fémesebben, harangszerűen.

6. Módusalakok és erősség

Az első egyenletből \(u_2=(2-\lambda)\,u_1\). Legyen \(u_1=1\): az 1. módusban \(\mathbf u_1=(1;\,1{,}618)\), a 2.-ban \(\mathbf u_2=(1;\,-0{,}618)\). Az elsőben a két vagon együtt megy, a második 1,6-szor nagyobbat mozdul, mint hullámzó vonat farka. A másodikban a negatív előjel ellentétes irányt jelent: libikóka, az egyik fel, a másik le, köztük nyugvópont.

A módus-tömeg \(m_n=\mathbf u_n^T\mathbf M\mathbf u_n\): \(m_1=3{,}618\,m\), \(m_2=1{,}382\,m\). A módus hangereje az ütés (\(p\)) és a hallgatás (\(q\)) helyétől függ: \(a_n=\dfrac{u_n(p)\,u_n(q)}{m_n\,\omega_n}\). Ha mindkettő a 2. tömegnél van, négyzet lesz: \(a_1\propto\dfrac{2{,}618}{3{,}618\cdot0{,}618}=1{,}17\), \(a_2\propto\dfrac{0{,}382}{1{,}382\cdot1{,}618}=0{,}171\), így \(a_2/a_1\approx0{,}146\), vagyis a 2. módus kb. 17 dB-lel halkabb.

🎸 Flageolett: ha a húr csomópontját érinted, az alaphang eltűnik, az oktáv szól. Az ütés helye dönti el, melyik módus kap energiát: ez a hangszín gombja.

7. Meghallgatjuk

Mindig ugyanaz a rend: megmondod, mit vársz, ütsz, összeveted. Közben ne a hangerőt figyeld, hanem azt, hogy élesebb vagy kerekebb lett-e a hang.

  • N = 1 (Demók fül): vársz 439 Hz-et és kb. 2,8 s lecsengést. Ha a fékcsúszkát 55 N·s/m körülire húzod, puffanás hallatszik.
  • N = 2: 271 és 710 Hz, arány 1,00 : 2,62. A mély hang uralkodik, a magas halvány. A hangszín úgy áll össze, mint a festékkeverés: minden módus egy tubus, a hang a kinyomott mennyiségek aránya. A jelölőnégyzetek csak a lassított rajzot kapcsolják, a hangot nem: a hangot mindig az összes módus együtt adja.
  • N = 3: 195, 547, 791 Hz (arány 1 : 2,80 : 4,05, nem 1 : 2 : 3). A szabad végen (3. tömeg) ütve sötét, kerek hang szól, a falnál (1. tömeg) csilingelősebb, élesebb. Gitáron ez a ponticello (a híd mellett) és a tasto (a fogólap fölött).

8. Hogyan számol a gép?

8.1 Három módszer, egy rezgő

A gép mintánként számol: \(f_s=44100\) minta/s, \(T=1/44100\) s. A szabály két mintás: a mostani hang az előző két hang keveréke, \(y_n=a_1y_{n-1}+a_2y_{n-2}\). Három módszer adja meg az \(a_1,a_2\) értékét:

\(a_1\)\(a_2\)Kép
explicit Euler\(2-2\sigma T\)\(-(1-2\sigma T+\omega_0^2T^2)\)sötétben lépkedés
szemi-implicit Euler\(2-2\sigma T-\omega_0^2T^2\)\(-(1-2\sigma T)\)ugyanaz, de az új sebességgel
pontos\(2r\cos\theta\)\(-r^2\)térkép

Az Euler olyan, mint a sötétben sétálás kanyargós úton: minden lépés előtt csak az orrod irányát nézed, és egyenesen lépsz. Kanyarban kicsúszol, a hiba halmozódik. A pontos megoldás a térkép: előre kiszámoltuk, hova jut a rezgő egy lépés alatt, \(r=e^{-\sigma T}\), \(\theta=\omega_dT\). Három szám építi fel: a cos az óriáskerék forgási sebessége (hangmagasság), az r a lecsengés-gomb (mennyi marad lépésenként), a sin az első lökés (az ütés). A Kódok fül Kód-labora futtatva: az explicit Euler 0,05 s alatt még \(\approx2{,}3\), 0,5 s alatt már \(\approx5\cdot10^{16}\) kitérést ad, a másik kettő csúcsa \(\approx0{,}036\).

8.2 A pólus sugara: miért száll el az explicit Euler

A szabály sorsát egy szám dönti el: \(r=\sqrt{-a_2}\). Ez a visszacsatolás erőssége, mint hangfalnál és mikrofonnál: egynél kisebb erősítésnél a hang elhal, egynél nagyobbnál üvölt. Explicit Euler: \(r=1{,}0019\), minden mintánál 0,19%-kal nő, 44100-szor másodpercenként: ebből lesz a 0,5 s alatt \(5\cdot10^{16}\) m, kb. öt fényév. Szemi-implicit: \(0{,}99994\), elhal. Pontos: \(r=e^{-\sigma T}\), és amíg \(\sigma>0\), mindig 1 alatt marad, ezért sosem szállhat el. A magasabb frekvencián az Euler frekvenciahibája nagyobb (például \(k=500\) kN/m, \(m=1\) g esetén a szemi-implicit hang kb. 1,1%-kal, 39 Hz-cel éles), a pontosé nem változik.

8.3 Összeáll a modális szintézis

Minden módus egy ilyen két mintás rezgő: a \(\cos\) adja a hangmagasságot, az \(r\) a lecsengést, a \(\sin\) az ütés erejét. Egy tárgy hangja a módusok összege, ez a modális szintézis egyenlete:

\(y(t)=\sum_n\dfrac{a_n}{\omega_{d,n}}\,e^{-\sigma_nt}\sin(\omega_{d,n}t)\)

Három lista kell hozzá: frekvenciák (\(\omega_n\)), lecsengések (\(\sigma_n\)) és erősségek (\(a_n\)). Ez a Kódok fül bank függvénye.

Három mondat haza

  1. Egy rezgő hangja lecsengő szinusz, mint a trambulinon pattogó gyerek, és két mintás szabállyal számolható.
  2. Egy összetett tárgy hangja módusonként ilyen rezgők összege, mint a festékkeverés: minden módus egy tubus, az ütés helye adja a keverést.
  3. Az Euler közelít és elszállhat, mint a visszacsatolás. A pontos együtthatók (cos, r, sin) nem.

9. (kiegészítés) A diszkrét rezgő pontossága és stabilitása

A 2. pont rezgőjének átviteli függvénye \(H(s)=\dfrac{1}{m\,(s^2+2\sigma s+\omega_0^2)}\), pólusai \(s=-\sigma\pm j\omega_d\). Az \(z=e^{sT}\) leképezés (impulzus-invariancia) a pólusokat \(re^{\pm j\theta}\)-ra viszi, \(r=e^{-\sigma T}\), \(\theta=\omega_dT\). A nevező \(1-2r\cos\theta\,z^{-1}+r^2z^{-2}\), vagyis a 2 mintás rezgő \(a_1=2r\cos\theta\), \(a_2=-r^2\) együtthatóival. Következmények: (i) a frekvencia és a lecsengés pontos (nincs frekvenciatorzulás, szemben a bilineáris transzformációval); (ii) stabil, ha \(\sigma>0\), azaz \(r<1\); (iii) a \(\omega>\pi f_s\) módusok visszatükröződnének, ezért kihagyjuk (a demó \(0{,}9\pi f_s\)-nél vág); (iv) a demó rezgője az ideális válasz egy mintával eltolt másolatát adja, amplitúdóban legfeljebb \(e^{\sigma T}\)-szeres eltéréssel (ez gyakorlatilag 1), ami nem hallható.

10. (kiegészítés) Átviteli függvény és a módusok mint pólusok

A 2. és 8. pont összefüggése frekvenciatartományban: az \(f(t)\) bemenet és az \(x_q\) kimenet közötti átviteli függvény \(H_{pq}(s)=\sum_n\dfrac{u_n(p)\,u_n(q)}{m_n\,(s^2+2\sigma_ns+\omega_n^2)}\). A pólusok (\(\omega_n,\sigma_n\)) a rendszer sajátjai, a számlálók (maradékok) az ütés és a hallgatás helyétől függnek. A parciális törtekre bontás és az állapottér diagonalizálása ugyanazt adja: a pólusok minden bemenetre és kimenetre közösek, a diagonalizált rendszer pedig fizikailag helyes párhuzamos szűrőbank [17]. Feltétel: az arányos csillapítás. Általános csillapításnál a módusok komplexek, és az állapottér-sajátérték feladatot kell megoldani.

Demó 1: tömegek lánca (módusok és lassított felvétel)

🎯 Mit csinálj?
N = 1-nél egyetlen rezgőt kapsz. Növeld N-et, és nézd, hogyan szól a lánc. A rajz lassított felvétel: kapcsold ki-be az egyes módusokat, így látod, hogy a mozgás a módusok összege. Az ütés után az animáció újraindul. A jelölőnégyzetek csak a rajzot változtatják, a hangot nem.

Hang az idő függvényében

Módusalakok (bal oldalon a fal)

Kódok: közös alap

Python (NumPy), SuperCollider és Max/MSP gen~. Az óra kódja a 2. pont rezgője és a modális bank: módusonként a/ωd · e−σt · sin(ωdt). A paraméterek mértékegységei megegyeznek a demó csúszkáival. Az órán elég a Python; a másik két nyelv a gyakorlásra szolgál.

Kód-labor: Euler és a pontos megoldás (Python)

Három módszer ugyanarra a rezgőre (m=0,01, k=76e3, c=0,049), 22 050 lépés. A két Euler között egyetlen sor a különbség: az x az új vagy a régi sebességet használja. Várt kimenet: explicit ≈ 2,3, majd ≈ 5·1016; szemi és pontos ≈ 0,036. Magyarázat: Elmélet, 8. pont.

import numpy as np
m, k, c, fs = 0.01, 76e3, 0.049, 44100
T = 1/fs

def euler(explicit, J=1.0, dur=0.5):
    """Lépésenként számolt rezgő. explicit=True: explicit Euler, False: szemi-implicit."""
    x, v = 0.0, J/m                    # az ütés: kezdősebesség
    y = np.zeros(int(fs*dur))
    for n in range(len(y)):
        y[n] = x
        acc = (-k*x - c*v)/m           # a rugó visszahúz, a fék lassít
        v_new = v + T*acc
        x = x + T*(v if explicit else v_new)   # az egyetlen különbség
        v = v_new
    return y

def exact(J=1.0, dur=0.5):
    """Pontos együtthatókkal: y[n] = a1 y[n-1] + a2 y[n-2]."""
    w0, s = np.sqrt(k/m), c/(2*m); wd = np.sqrt(w0**2 - s**2)
    r, th = np.exp(-s*T), wd*T
    a1, a2 = 2*r*np.cos(th), -r*r
    y = np.zeros(int(fs*dur)); y1 = y2 = 0.0
    for n in range(len(y)):
        y[n] = (J/(m*wd)*np.sin(th) if n == 0 else 0) + a1*y1 + a2*y2
        y2, y1 = y1, y[n]
    return y

for nev, y in (("explicit", euler(True)), ("szemi", euler(False)), ("pontos", exact())):
    print(nev, "0,05 s-ig:", np.abs(y[:int(0.05*fs)]).max(), "| 0,5 s-ig:", np.abs(y).max())

Közös alap (Python, SuperCollider, Max/MSP gen~)

Python

import numpy as np, wave
LN1000 = np.log(1000)

def oscillator(m, k, c, J=1.0, fs=44100, T=3.0):
    """1. pont: egy tömeg–rugó–fék (SI), kitérés egy J impulzusra."""
    w0, s = np.sqrt(k/m), c/(2*m); wd = np.sqrt(w0**2 - s**2)
    t = np.arange(int(fs*T))/fs
    return J/(m*wd) * np.exp(-s*t) * np.sin(wd*t)

def resonator(m, k, c, J=1.0, fs=44100, T=3.0):
    """Ugyanez két mintás rezgőként: y[n] = a1 y[n-1] + a2 y[n-2]."""
    w0, s = np.sqrt(k/m), c/(2*m); wd = np.sqrt(w0**2 - s**2)
    r, th = np.exp(-s/fs), wd/fs; a1, a2 = 2*r*np.cos(th), -r*r
    y = np.zeros(int(fs*T)); y1 = y2 = 0.0
    for i in range(len(y)):
        y[i] = (J/(m*wd)*np.sin(th) if i == 0 else 0) + a1*y1 + a2*y2
        y2, y1 = y1, y[i]
    return y

def bank(w, s, a, fs=44100, T=3.0):
    """Modális bank. w: szögfrekvencia [rad/s], s: sigma [1/s], a: erősség (1/w_d-t a függvény adja)."""
    w, s, a = map(np.asarray, (w, s, a))
    t = np.arange(int(fs*T))/fs
    ok = (w < 0.9*np.pi*fs) & (s < w)               # Nyquist fölött / túlcsillapított: kihagyjuk
    wd = np.sqrt(w[ok]**2 - s[ok]**2)
    y = (a[ok]/wd * np.exp(-np.outer(t, s[ok])) * np.sin(np.outer(t, wd))).sum(1)
    return 0.5*y/np.max(np.abs(y))

def write_wav(name, y, fs=44100):
    with wave.open(name, "wb") as f:
        f.setnchannels(1); f.setsampwidth(2); f.setframerate(fs)
        f.writeframes((y*32767).astype("<i2").tobytes())

SuperCollider

(
// Közös hangszóró-függvény: spec = [w, s, a] listák (w: rad/s, s: sigma, a: erősség)
~modal = { |spec, dur=4, level=0.5|
    var w = spec[0], s = spec[1], a = spec[2];
    var nyq = 0.9*pi*Server.default.sampleRate;
    var ok  = (0..w.size-1).select { |i| (w[i] < nyq) and: { s[i] < w[i] } };
    var wd  = ok.collect { |i| (w[i].squared - s[i].squared).sqrt };
    var amp = ok.collect { |i, j| a[i] / wd[j] };
    var sg  = ok.collect { |i| s[i] };
    var t   = Sweep.ar(Impulse.ar(0));                       // idő az ütés óta
    var y   = Mix(SinOsc.ar(wd/(2*pi), 0, amp) * (sg.neg * t).exp);
    y * level / amp.abs.sum.max(1e-12) * EnvGen.kr(Env([1,1,0], [dur, 0.05]), doneAction: 2)
};
// 1. pont (egyetlen rezgő): m=0.01, k=76000, c=0.049
{ var m=0.01, k=76000, c=0.049, w0=(k/m).sqrt, s=c/(2*m), wd=(w0.squared-s.squared).sqrt;
  SinOsc.ar(wd/(2*pi)) * (s.neg * Sweep.ar(Impulse.ar(0))).exp * 0.3 * EnvGen.kr(Env([1,1,0],[3,0.05]), doneAction: 2) ! 2 }.play;
)

Max/MSP gen~ (genexpr)

gen~ megjegyzés. A genexpr-ben az y1, y2 (és hasonló, betű+szám) nevek ütközhetnek a beépített nevekkel, ezért a kódokban ya, yb, zya, cfa stb. szerepel. Az if/else ágban vagy ciklusban először létrehozott változó kívül nem látszik, ezért minden ideiglenes változó a kód elején kap kezdőértéket.

Ugyanaz a két mintás rezgő, mint a Python resonator. Beállítás: hozz létre egy [gen~] objektumot, nyisd meg, tegyél bele codebox-ot; az ütést [click~] adja a bemenetre. Újabb ütés a futó hanghoz hozzáadódik, ami a lineáris rendszerre helyes.

// 1. pont – egyetlen tömeg–rugó–fék, gen~ (codebox). in1: ütés (0→1), out1: kitérés [m]
Param m(10, min=1, max=100);       // tömeg [g]
Param k(76, min=5, max=500);       // rugómerevség [kN/m]
Param c(0.049, min=0, max=200);    // csillapítás [N·s/m]
Param J(1, min=0, max=10);         // impulzus [N·s]
History ya(0), yb(0), prev(0);     // (az y1, y2 nevek ütköznek a gen~ beépített neveivel)

mm = m/1000;
w0 = sqrt(k*1000/mm);              // omega_0 [rad/s]
s  = c/(2*mm);                     // sigma [1/s]
wd = sqrt(max(w0*w0 - s*s, 1e-9)); // omega_d (túlcsillapítva kb. 0 kimenet)
r  = exp(-s/samplerate); th = wd/samplerate;
trig = (in1 > 0 && prev <= 0);
v = trig*J/(mm*wd)*sin(th) + 2*r*cos(th)*ya - r*r*yb;   // y[n] = a1 y[n-1] + a2 y[n-2]
yb = ya; ya = v; prev = in1;
out1 = v;

A teljes modális bank gen~ változata (több módus, 16-ig) a 2. óra anyagában van.

Feladatok (1. óra)

  1. Három beállítás (az 1. pont és az 1. demó után). Számold ki \(f_0\), \(\zeta\), \(T_{60}\) és \(c_{krit}\) értékét: (a) \(m=10\) g, \(k=76\) kN/m, \(c=0{,}049\) N·s/m; (b) \(m=5\) g, \(k=300\) kN/m, \(c=7{,}6\) N·s/m; (c) \(m=10\) g, \(k=76\) kN/m, \(c=55{,}1\) N·s/m. Ellenőrizd a láncdemóval (N = 1).
  2. N = 2 kézzel. Számold ki \(f_1\), \(f_2\) és a módusalakokat \(f_0=439\) Hz-re, majd az amplitúdóarányt \(a_2/a_1\) (ütés és hallgatás a 2. tömegnél).
  3. Python (házi). Futtasd a Kódok fül oscillator és resonator függvényét (m=0.01, k=76e3, c=0.049), és vesd össze a két kimenetet: mekkora a relatív eltérésük, ha az egyiket egy mintával eltolod? Miért?

Mini-teszt (6 kérdés, 10 pont)

  1. (1 pont) Mekkora \(f_0\), ha \(m=10\) g, \(k=76\) kN/m?
  2. (2 pont) \(m=5\) g, \(k=300\) kN/m, \(c=7{,}6\) N·s/m: mekkora \(\zeta\) és \(T_{60}\)?
  3. (1 pont) Mekkora a kritikus csillapítás \(m=10\) g, \(k=76\) kN/m esetén?
  4. (2 pont) Két tömegű fal–szabad láncban mekkora \(f_2/f_1\)?
  5. (2 pont) Miért száll el az explicit Euler?
  6. (2 pont) Mi a cos szerepe az \(a_1=2r\cos\theta\) együtthatóban?

Skála: 9–10 kiváló · 7–8 jó · 5–6 megfelelő · 4 vagy kevesebb: nézd át a Megoldások fület.

Megoldások (ellenőrzéshez)

1. feladat. \(c_{krit}=2\sqrt{km}\).

\(f_0\)\(\zeta\)\(T_{60}=13{,}8\,m/c\)\(c_{krit}\)
(a)438,8 Hz\(8{,}9\cdot10^{-4}\)2,82 s55,1 N·s/m
(b)1232,8 Hz0,0989,1 ms77,5 N·s/m
(c)438,8 Hz0,9993 (majdnem kritikus)2,5 ms55,1 N·s/m

A (c) esetben \(\omega_d\approx0\), a rendszer nem lengést, hanem gyors lecsengést ad (a demóban a hang tompa „puffanás”).

2. feladat. \(f_1=271\) Hz, \(f_2=710\) Hz; \(\mathbf u_1=(1;1{,}618)\), \(\mathbf u_2=(1;-0{,}618)\). Módus-tömegek: \(m_1=3{,}618\,m\), \(m_2=1{,}382\,m\). Ütés és hallgatás a 2. tömegnél: erősség \(a_n=u_n(2)^2/(m_n\omega_n)\), tehát \(a_1\propto0{,}7236/\omega_1\), \(a_2\propto0{,}2764/\omega_2\), így \(a_2/a_1=0{,}382\cdot0{,}382\approx0{,}146\) (a 2. módus kb. 17 dB-lel halkabb).

3. feladat. A relatív eltérés kb. \(6\cdot10^{-5}\) (a két kimenet egy mintával eltolva egyezik).

Mini-teszt. (1) 439 Hz. (2) \(\zeta=0{,}098\), \(T_{60}=9{,}1\) ms. (3) 55,1 N·s/m. (4) \(f_2/f_1=2{,}618\) (nem 1,618). (5) Az explicit Euler \(|a_2|=1-2\sigma T+\omega_0^2T^2\) kis csillapításnál 1 fölé megy, a pólus sugara 1-nél nagyobb, így minden mintánál nő a hang, mint a visszacsatolás. (6) A cos adja a hullám sebességét (az óriáskerék forgása): ez a hangmagasság.

Szótár (magyar – angol)

FogalomAngolulJelentés
MódusmodeMozgásforma, ahol minden pont ugyanazon a frekvencián, rögzített arányban mozog.
Sajátfrekvencia, sajátalaknatural frequency, mode shapeA módus ωn és un: a det(K − ω²M) = 0 megoldásai.
Tömeg-, merevség-, csillapításmátrixmass, stiffness, damping matrixM, K, C: a mozgásegyenlet Mẍ + Cẋ + Kx = f mátrixai.
OrtogonalitásorthogonalityumTM un = 0, ha m ≠ n; ezért esik szét a rendszer független rezgőkre.
Módus-tömegmodal massmn = unTM un.
Módus-koordinátamodal coordinateqn: az n. módus kitérése, x = Σ qnun.
Csillapítási tényező, σ, ζdamping ratio, decay rateσ = c/2m [1/s]; ζ = c/(2√(km)) [–]; ζ = 1 a kritikus csillapítás.
Rayleigh-csillapításRayleigh dampingC = αM + βK; σn = (α + βωn²)/2.
T60T60, decay timeA lecsengés ideje 60 dB-lel (az amplitúdó ezredrészére): T60 = ln 1000 / σ.
Impulzusválaszimpulse responseA rendszer válasza egy rövid ütésre; a modális szintézis ennek a módusonkénti összege.
Két pólusú rezgőtwo-pole resonatoryn = a₁yn−1 + a₂yn−2; a modális bank építőeleme.
Explicit / szemi-implicit Eulerexplicit / semi-implicit EulerKözelítő, lépésenkénti számolás; az explicit elszállhat.
Pólus sugarapole radiusr = √(−a2): 1 alatt a hang elhal, 1 fölött elszáll.
Modális bankmodal filter bankPárhuzamosan futó rezgők összege.
Nyquist-frekvenciaNyquist frequencyfs/2; efölötti módust nem szintetizálunk (a demó 0,45·fs-nál vág).
Ütés és hallgatás helyeexcitation / pickup pointAz erősség módusonként un(p)·un(q).
Klank / DynKlankKlank, DynKlank (SuperCollider)Rezonátorbank: frekvencia-, amplitúdó- és 60 dB-es lecsengési lista.
gen~, genexprgen~, genexpr (Max)Mintaszintű jelfeldolgozás Max-ban, szöveges kóddal.

Jelölések és mértékegységek

JelEgységJelentés
m, k, ckg, N/m, N·s/mtömeg, rugómerevség, csillapítás
ω0, f0rad/s, Hz√(k/m), illetve ω0/2π
σ, ζ1/s, –lecsengési ráta, csillapítási tényező
ωdrad/scsillapított szögfrekvencia √(ω² − σ²)
un(j)–az n. módusalak a j. tömegnél
mnkgmódus-tömeg (a demóban m·S)
p, q–ütés és hallgatás helye (tömeg sorszáma)
α, β1/s, sRayleigh-együtthatók (a demóban β µs-ban)
g, fc–, Hzmagas módusok féke, kalapács vágófrekvenciája
fsHzmintavételi frekvencia

Források

JelHivatkozásMire használható
[1]Adrien, J.-M. (1991). The Missing Link: Modal Synthesis. In: De Poli, Piccialli, Roads (szerk.), Representations of Musical Signals, MIT Press, 269. oldaltól.a modális szintézis alapgondolata, 6. és 8. pont
[2]Morrison, J. D., Adrien, J.-M. (1993). MOSAIC: A Framework for Modal Synthesis. Computer Music Journal 17(1), 45–56.modális keretrendszer, Modalys előzménye
[3]van den Doel, K., Pai, D. K. (1998). The Sounds of Physical Shapes. Presence 7(4), 382–395.módusok, ütés helye, bank algoritmus (8. pont)
[4]van den Doel, K., Kry, P. G., Pai, D. K. (2001). FoleyAutomatic: Physically-based Sound Effects for Interactive Simulation and Animation. SIGGRAPH 2001, 537–544.interaktív modális szintézis, anyagparaméterek
[5]O'Brien, J. F., Cook, P. R., Essl, G. (2001). Synthesizing Sounds from Physically Based Motion. SIGGRAPH 2001, 529–536.módusok számítása, csillapítás
[10]Smith, J. O. Physical Audio Signal Processing, W3K Publishing (online: ccrma.stanford.edu/~jos/pasp/).hullámvezetők, két pólusú rezgő, módusok
[12]Cook, P. R. (2002). Real Sound Synthesis for Interactive Applications, A K Peters.modális szintézis játékokban, gyakorlat
[13]Inman, D. J. Engineering Vibration, Pearson.mozgásegyenlet, sajátérték-feladat, modális csillapítás (2–6. pont)
[14]Rayleigh, J. W. S. (1894). The Theory of Sound, 2. kiadás, Macmillan.lineáris rezgések, a módusszétválasztás klasszikus forrása
[16]SuperCollider Help: Klank, DynKlank, Ringz. · Cycling '74: Max dokumentáció, gen~ és genexpr.a Kódok fül SuperCollider és gen~ részei
[17]Smith, J. O. Review of Physical Signal Models (Music 420), CCRMA, Stanford University. ccrma.stanford.edu/~jos/ReviewPM/ (State Space to Modal Synthesis)pólusok megosztása, diagonalizálás, párhuzamos szűrőbank (10. pont)

A hivatkozások számozása ([n]) a következő jegyzettel azonos.