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.
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.
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).
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.
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.
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.
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.
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.
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\).
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.
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.
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ó.
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.
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.
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())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())(
// 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;
)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.
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?Skála: 9–10 kiváló · 7–8 jó · 5–6 megfelelő · 4 vagy kevesebb: nézd át a Megoldások fület.
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 s | 55,1 N·s/m |
| (b) | 1232,8 Hz | 0,098 | 9,1 ms | 77,5 N·s/m |
| (c) | 438,8 Hz | 0,9993 (majdnem kritikus) | 2,5 ms | 55,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.
| Fogalom | Angolul | Jelentés |
|---|---|---|
| Módus | mode | Mozgásforma, ahol minden pont ugyanazon a frekvencián, rögzített arányban mozog. |
| Sajátfrekvencia, sajátalak | natural frequency, mode shape | A módus ωn és un: a det(K − ω²M) = 0 megoldásai. |
| Tömeg-, merevség-, csillapításmátrix | mass, stiffness, damping matrix | M, K, C: a mozgásegyenlet Mẍ + Cẋ + Kx = f mátrixai. |
| Ortogonalitás | orthogonality | umTM un = 0, ha m ≠ n; ezért esik szét a rendszer független rezgőkre. |
| Módus-tömeg | modal mass | mn = unTM un. |
| Módus-koordináta | modal coordinate | qn: 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ás | Rayleigh damping | C = αM + βK; σn = (α + βωn²)/2. |
| T60 | T60, decay time | A lecsengés ideje 60 dB-lel (az amplitúdó ezredrészére): T60 = ln 1000 / σ. |
| Impulzusválasz | impulse response | A 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 resonator | yn = a₁yn−1 + a₂yn−2; a modális bank építőeleme. |
| Explicit / szemi-implicit Euler | explicit / semi-implicit Euler | Közelítő, lépésenkénti számolás; az explicit elszállhat. |
| Pólus sugara | pole radius | r = √(−a2): 1 alatt a hang elhal, 1 fölött elszáll. |
| Modális bank | modal filter bank | Párhuzamosan futó rezgők összege. |
| Nyquist-frekvencia | Nyquist frequency | fs/2; efölötti módust nem szintetizálunk (a demó 0,45·fs-nál vág). |
| Ütés és hallgatás helye | excitation / pickup point | Az erősség módusonként un(p)·un(q). |
| Klank / DynKlank | Klank, DynKlank (SuperCollider) | Rezonátorbank: frekvencia-, amplitúdó- és 60 dB-es lecsengési lista. |
| gen~, genexpr | gen~, genexpr (Max) | Mintaszintű jelfeldolgozás Max-ban, szöveges kóddal. |
| Jel | Egység | Jelentés |
|---|---|---|
| m, k, c | kg, N/m, N·s/m | tömeg, rugómerevség, csillapítás |
| ω0, f0 | rad/s, Hz | √(k/m), illetve ω0/2π |
| σ, ζ | 1/s, – | lecsengési ráta, csillapítási tényező |
| ωd | rad/s | csillapított szögfrekvencia √(ω² − σ²) |
| un(j) | – | az n. módusalak a j. tömegnél |
| mn | kg | módus-tömeg (a demóban m·S) |
| p, q | – | ütés és hallgatás helye (tömeg sorszáma) |
| α, β | 1/s, s | Rayleigh-együtthatók (a demóban β µs-ban) |
| g, fc | –, Hz | magas módusok féke, kalapács vágófrekvenciája |
| fs | Hz | mintavételi frekvencia |
| Jel | Hivatkozás | Mire 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.