♪ Tömeg–rugó–csillapítás

Egy súly egy rugón

🎯 Alapötlet
Ha egy súlyt egy rugóra akasztunk, kimozdítjuk és elengedjük, oda-vissza lendül, és közben egyre kisebbeket. Három tulajdonsága dönt mindenről: mennyire nehéz (\(m\)), mennyire merev a rugó (\(k\)), és mennyire fékezi valami (\(c\)). Ezt a három számot halljuk meg: hangmagasságot és lecsengést.

1. Newton törvénye

A súlyra két erő hat: a rugó visszahúzza a kimozdulás felé, arányosan (\(-k\,x\)), a csillapítás pedig fékezi a mozgást (\(-c\,v\)). A tömeg tehetetlensége (\(m\,a\)) azt szabja meg, hogy ez a két erő mekkora gyorsulást okoz. Newton törvénye szerint \(m\,a\) egyenlő az erők összegével:

\( m\,\ddot x + c\,\dot x + k\,x = 0 \)

ahol \(x\) a kitérés (a nyugalmi helyzettől), \(\dot x\) a sebesség, \(\ddot x\) a gyorsulás.

2. Sajátfrekvencia: mekkora a hangmagasság?

\( f_0=\dfrac{1}{2\pi}\sqrt{\dfrac{k}{m}} \)

Merevebb rugó vagy könnyebb súly: magasabb hang. Két könnyen megjegyezhető szabály: a merevséget négyszerezve a hang pontosan egy oktávval magasabb, a tömeget négyszerezve egy oktávval mélyebb. Példa: \(m=10\) g, \(k=76\) kN/m esetén \(f_0\approx 439\) Hz. Ez ugyanaz az elv, mint a húrnál: a nehezebb húr mélyebb, a feszesebb magasabb.

3. Csillapítás: meddig cseng?

A csillapítás mértéke a csillapítási tényező, ami a csillapítást a „kritikus” értékhez viszonyítja:

\( \zeta=\dfrac{c}{2\sqrt{k\,m}},\qquad c_{krit}=2\sqrt{k\,m} \)

TartományMi történik?Hasonlat
\(\zeta<1\) alulcsillapítottoda-vissza rezeg, közben elhalharang, húr
\(\zeta=1\) kritikusa leggyorsabban áll meg rezgés nélkülajtócsukó
\(\zeta>1\) túlcsillapítottnem rezeg, lassan visszakúsziksúly a mézben

Alulcsillapított esetben a rezgés amplitúdója \(e^{-\sigma t}\) szerint csökken, ahol \(\sigma=\dfrac{c}{2m}\). A T60 (60 dB-es, ezredrésznyi csökkenés ideje):

\( T_{60}=\dfrac{\ln 1000}{\sigma}\approx 13{,}8\,\dfrac{m}{c} \)

Ez a képlet alulcsillapított esetben pontos, és nem függ a merevségtől (\(k\)-tól). Kritikus közelében és túlcsillapításnál csak közelítés. Példa: \(m=10\) g, \(c=0{,}05\) N·s/m esetén \(T_{60}\approx 2{,}8\) s. A tényleges frekvencia csillapítással kissé alacsonyabb: \(f_d=f_0\sqrt{1-\zeta^2}\), de kis csillapításnál ez alig különbözik.

4. Fázistér: a mozgás képe

Ha egy koordinátarendszerben a kitérést és a sebességet együtt ábrázoljuk, egy csillapítás nélküli rezgés kör (ha a sebességet a \(\omega_0\) körfrekvenciával elosztjuk; egyébként ellipszis), a csillapított rezgés befelé tartó spirál. Amikor a súly a szélén van, áll (a sebesség nulla), a közepén a leggyorsabb. A túlcsillapított esetben nincs spirál, csak egy kör nélküli, íves visszakúszás a középpontba.

5. Digitális megvalósítás

A számítógépben minden hangmintát az előző kettőből számolunk ki:

\( y[n]=a_1\,y[n-1]+a_2\,y[n-2],\quad a_1=2r\cos\theta,\; a_2=-r^2 \)

ahol \(r=e^{-\sigma/f_s}\) (a lecsengés egy mintányi lépésben) és \(\theta=2\pi f_d/f_s\) (a forgás egy mintányi lépésben). A „megütést” egy egyetlen mintányi impulzus adja az elején. Túlcsillapított esetben \(a_1=z_1+z_2,\; a_2=-z_1z_2\), ahol \(z_{1,2}\) két valós szám. Ez a két mintányi memóriájú rekurzió egy rezonáns szűrő: a következő órák modális szintézisének építőköve. A Karplus-Strong körben ugyanezt a visszacsatolás-gondolatot használtuk, de két minta helyett \(N\) mintányi memóriával.

5/b. Három digitális módszer: Euler és az egzakt rezonátor

Ugyanazt az egyenletet többféleképpen lehet lépésenként megoldani (\(h=1/f_s\) a lépésköz, az állapot a kitérés és a sebesség). A \(c/m=2\sigma\) és \(k/m=\omega_0^2\) jelöléssel:

MódszerLépés
Explicit Euler\(x_{n+1}=x_n+h\,v_n\), \(\;v_{n+1}=v_n+h\,(-\omega_0^2x_n-2\sigma v_n)\)
Szemi-implicit Euler\(v_{n+1}=v_n+h\,(-\omega_0^2x_n-2\sigma v_n)\), \(\;x_{n+1}=x_n+h\,v_{n+1}\) (az új sebességgel lépünk)
Egzakt rezonátor\(y_n=a_1y_{n-1}+a_2y_{n-2}\) a 5. pont szerint (a pólusok pontosan a valódi rezgés pólusai)

Mi történik lépésenként? Az explicit Euler mátrixának determinánsa \(1-2\sigma h+h^2\omega_0^2\): a rezgés minden lépésben \(\sqrt{1-2\sigma h+h^2\omega_0^2}\)-szeresére változik, tehát nő, ha \(2\sigma\lt h\,\omega_0^2\). Hangoknál ez szinte mindig így van: a Harang (439 Hz, \(\sigma\approx2{,}4\) 1/s, 44,1 kHz) esetén \(h\omega_0^2/2\approx86\) 1/s, vagyis a hang másodpercenként \(e^{86}\)-szorosára robban. A szemi-implicit Euler determinánsa pontosan \(1-2\sigma h\) (a lecsengés gyakorlatilag helyes), és stabil, ha \(h\,\omega_0\lt 2\). A frekvenciája csak kissé magas: csillapítás nélkül \(2\sin(\theta/2)=h\omega_0\), azaz \(f\approx f_0\,(1+(h\omega_0)^2/24)\): 439 Hz-nél 0,3 cent, 3,5 kHz-nél már kb. 18 cent. Az egzakt rezonátor a szabad lecsengést lépésközről függetlenül pontosan adja (a frekvencia és a lecsengés is pontos), és mindig stabil (\(r\lt1\)).

MódszerStabil?FrekvenciaLecsengésMikor jó?
Explicit Eulernem, ha \(2\sigma\lt h\omega_0^2\)pontatlanhamis (nő)soha hangszintézisre; tanulságnak jó
Szemi-implicit Eulerigen, ha \(h\omega_0\lt2\)kissé magasmajdnem pontosnemlineáris rugó, közben változó paraméter, tetszőleges erő, tömegek hálózata
Egzakt rezonátormindigpontospontoslineáris, állandó paraméterű rezgő: a legolcsóbb és a legpontosabb

5/c. Euler valódi mértékegységekkel: F = m·a + c·v + k·x

A teljes Newton-törvény külső erővel: \(F = m\,a + c\,v + k\,x\). Mértékegységek (SI): \(F\) [N], \(m\) [kg], \(a\) [m/s²], \(c\) [N·s/m], \(v\) [m/s], \(k\) [N/m], \(x\) [m], \(h=1/f_s\) [s]. Ellenőrzés: kg·m/s² = N; (N·s/m)·(m/s) = N; (N/m)·m = N, vagyis minden tag erő. Ebből a gyorsulás: \(a=(F-c\,v-k\,x)/m\). A szemi-implicit Euler lépése:

\( a_n=\dfrac{F_n-c\,v_n-k\,x_n}{m},\qquad v_{n+1}=v_n+h\,a_n,\qquad x_{n+1}=x_n+h\,v_{n+1} \)

Az explicit Eulernél ugyanez az \(a_n\), de \(x_{n+1}=x_n+h\,v_n\) (a régi sebességgel lépünk). Az „ütés” egyetlen lépésnyi erőimpulzus: \(F_0=J/h\), ahol \(J\) az impulzus [N·s]; ekkor \(v_0=J/m\).

Számpélda: \(m=0{,}010\) kg, \(k=76\,000\) N/m, \(c=0{,}05\) N·s/m, \(h=22{,}7\) µs (44,1 kHz), \(J=1\) mN·s. Ekkor \(v_0=J/m=0{,}10\) m/s, \(\omega_0=\sqrt{k/m}=2757\) rad/s (\(f_0=439\) Hz), a legnagyobb kitérés \(x_{max}\approx v_0/\omega_0\approx 36\) µm. A kritikus csillapítás \(c_{krit}=2\sqrt{k\,m}=55{,}1\) N·s/m.
Stabilitás mértékegységekkel: az explicit Euler akkor instabil, ha \(c\lt h\,k\) (a \(2\sigma\lt h\omega_0^2\) feltétel \(m\)-mel szorozva). Itt \(h\,k=22{,}7\,\text{µs}\cdot 76\,000\,\text{N/m}\approx1{,}72\) N·s/m, ami sokkal nagyobb, mint \(c=0{,}05\), tehát felrobban. A szemi-implicit Euler stabil, ha \(h\lt2\sqrt{m/k}\) (itt \(\approx 726\) µs, a lépésköz 22,7 µs).

Melyik a jobb? Lineáris, állandó paraméterű rezgőre (és a több tömeges lánc módusaira) az egzakt rezonátor: pontos, mindig stabil, és minden módus csak két szorzás. Amit viszont nem tud: nemlineáris rugót (gong), a menet közben változó \(k\)-t vagy \(m\)-et, és tetszőleges külső erőt. Ezekhez a szemi-implicit Euler kell (vagy a vele egyenértékű Verlet-lépés), elég nagy mintavételi frekvenciával, hogy \(h\omega_{max}\) kicsi maradjon. Az explicit Euler ezek közül sosem jó választás: hozzáad egy negatív csillapítást. A több tömegű láncot is lehet lépésenként szimulálni (\(m\ddot x_j=k(x_{j-1}-2x_j+x_{j+1})-c\dot x_j\), szemi-implicit Euler minden tömegre); ehhez \(h\,\omega_0\lt1\) kell, mert a lánc legmagasabb módusa közel \(2\omega_0\). Előnye, hogy nemlineáris rugókra is működik, hátránya, hogy a módusok frekvenciája kissé pontatlan, és módusonként nem állítható a csillapítás.

6. Kényszerrezgés és rezonancia

Ha a rendszert kívülről lökdössük, a rezgés akkor lesz a legnagyobb, ha a lökések ritmusa a sajátfrekvenciához illeszkedik (hinta). A rezonancia élességét a \(Q=\dfrac{1}{2\zeta}\) mutatja; a rezonancia sávszélessége kb. \(f_0/Q=2\zeta f_0\). Kis csillapítás: éles, hosszú rezonancia; nagy csillapítás: széles, rövid. A hangszertest is így működik: a húr „löki”, a test pedig azokat a frekvenciákat erősíti, amelyekhez rezonanciái vannak.

7. Kapcsolat a Karplus-Strong körrel

Egyetlen tömeg-rugó rezgő egyetlen tiszta hangot (egy módust) ad. A Karplus-Strong kör olyan, mintha sok rezgő szólna egyszerre, egész számú többszörösökre hangolva (1f, 2f, 3f...), mindegyik a saját ütemében halkulva. A húr valójában tömegek és rugók sora is lehetne: két tömegnél két hang, sok tömegnél sok hang lesz. Ez a következő óra témája.

8. Több tömeg: egy rögzített és egy szabad vég

Kössünk \(N\) azonos tömeget (\(m\)) azonos rugókkal (\(k\)) sorba: a fal – rugó – 1. tömeg – rugó – 2. tömeg – … – \(N\). tömeg elrendezésben az első rugó a falhoz van rögzítve, az utolsó tömeg szabadon lóg. Minden tömegre külön mozgásegyenlet van, és a szomszédok erőt adnak át egymásnak. Az eredmény \(N\) módus: \(N\) tiszta rezgésforma, mindegyiknek saját frekvenciája és alakja.

\( f_n=\dfrac{1}{\pi}\sqrt{\dfrac{k}{m}}\;\sin\dfrac{(2n-1)\pi}{2(2N+1)},\qquad u_n(j)=\sin\dfrac{(2n-1)\,j\,\pi}{2N+1} \)

(\(n=1\ldots N\) a módus, \(j=1\ldots N\) a tömeg sorszáma, \(u_n(j)\) a \(j\). tömeg kitérése az \(n\). módusban.) Ellenőrzés: \(N=1\)-re \(f_1=\frac{1}{2\pi}\sqrt{k/m}\), vagyis visszakapjuk az egyetlen tömeg-rugó rezgőt. Kis \(n\)-re a frekvenciák aránya közel \(1:3:5:\dots\) (páratlan többszörösök, mint a félig zárt síp), a magas módusok viszont a szinusz miatt „összesűrűsödnek”: a lánc nem pontosan harmonikus. Tömegarányos csillapításnál (minden tömegre ugyanaz a fék) minden módus ugyanolyan gyorsan cseng le, \(\sigma=c/2m\). Ha a szomszédok között is van fék, a magas módusok gyorsabban halnak el (\(\sigma_n=\frac{c}{2m}+\frac{\beta\omega_n^2}{2}\)): ezért tompul a pengetett húr hangja.

A hang előállítása: minden módus egy külön, két mintányi memóriájú rezgő (lásd 5. pont), és a kimenet ezek összege. Az \(n\). módus erőssége \(u_n(\text{ütés helye})\cdot u_n(\text{hallgatás helye})/\omega_n\): ha egy módus csomópontján ütsz, az a módus nem szólal meg.

9. Bővítések (előre tekintve)

  • Nemlineáris rugó: ha a rugó merevsége a kitéréssel változik, a hangmagasság az amplitúdótól függ (gong, tam-tam).
  • Több tömeg: a 8. pontban és a Több tömeg fülön megismert módusok; a következő lépés a két rögzített végű lánc (húr) és a hangszertest.
  • Gerjesztett rezgő: a húr és a test kapcsolata.

Élő demó

🎯 Mit csinálj?
Állítsd be a súlyt, a rugót és a fékezést, majd nyomd meg az Ütés gombot. Az ábra a kitérést mutatja az idő függvényében, a másik ábra a fázisteret (kör / spirál).
Nyomd meg az Ütés gombot.

Kitérés az idő függvényében

Fázistér (kitérés – sebesség)

Kipróbálni való:
  • Négyszerezd a merevséget (76 → 304 kN/m): a hang pontosan egy oktávval magasabb lesz. (A 300 már 11 centtel alatta marad.)
  • Emeld a csillapítást, amíg a hang már nem rezeg: itt van a kritikus határ (\(\zeta\approx1\)).
  • Váltsd a „Digitális módszert” Explicit Eulerre és ütsd meg a Harangot: a rezgés felrobban (⚠ INSTABIL), és a fázistér kifelé tartó spirál. Szemi-implicit Eulerrel és az egzakt rezonátorral ugyanaz a hang szól; a kiírt „mért f” a különbséget mutatja.
  • Nézd a fázisteret: a Koppanásnál jól látszik a befelé tartó spirál, a Harangnál csak nagyon lassan zsugorodó kör (fordulatonként ~0,6%-ot), a Guminál nincs kör.

Több tömeg egymáshoz kötve

🎯 Mit csinálj?
A fal – rugó – tömeg – rugó – tömeg … lánc bal vége rögzített, a jobb szabad. Állítsd a tömegek számát, és ütögess a lánc különböző pontjain. Az alsó ábra mutatja, hogyan mozognak a tömegek egy-egy módusban, a fenti pedig a hangot.
Nyomd meg az Ütés gombot.

Hang az idő függvényében

Módusalakok (a bal oldalon a fal)

Kipróbálni való:
  • N = 1: ugyanazt a hangot kapod, mint az Élő demóban (azonos m, k, c).
  • N = 2 és 3: hány hang szól? Mekkora a frekvenciák aránya? Mit mutat az 1. és a legmagasabb módus alakja?
  • Ütés helye = 1 (a falhoz legközelebbi tömeg) és = N (a szabad vég): melyik hang gazdagabb? Miért?
  • Emeld a „magas módusok extra fékjét”: a hang tompul, mert a magas módusok hamar elhalnak.

Forráskódok

SuperCollider

// Egy tömeg-rugó-csillapítás rezgő ütésre adott válasza
// freq: a rezgés frekvenciája (Hz), decay: T60 lecsengési idő (mp)
(
{
    var freq = 440, decay = 2.8;
    Ringz.ar(Impulse.ar(0), freq, decay) * 0.1 ! 2  // halkan kezdj, majd állíts
}.play;
)

A Ringz ugyanezeket a pólusokat használó, két mintányi memóriájú rezonáns szűrő (a kimenetét még egy 0,5·(1 − z⁻²) tagon átvezeti, ezért ~1 csúcsú); a decay a 60 dB-es lecsengési idő. Sok rezgőhöz a Klank használható.

SuperCollider – több tömeg (fal – rugó – tömeg … szabad vég)

// n tömeg egy láncban, bal vége rögzített, jobb vége szabad
// f0: egy tömeg-rugó (1 tömeg) sajátfrekvenciája, t60: lecsengési idő (mp)
(
{
    var n = 5, f0 = 439, t60 = 2.8;
    var freqs  = Array.fill(n, { |i| 2 * f0 * sin((2*i+1) * pi / (4*n+2)) });
    // erősség: u(ütés)*u(hallgatás)/frekvencia; itt az utolsó (szabad) tömeget ütjük
    var amps   = Array.fill(n, { |i| sin((2*i+1) * n * pi / (2*n+1)).squared / freqs[i] });
    var decays = Array.fill(n, t60);   // tömegarányos fék: minden módus ugyanúgy cseng
    Klank.ar(`[freqs, amps.normalizeSum, decays], Impulse.ar(0)) * 0.2 ! 2  // halkan kezdj
}.play;
)

A Klank egyszerre több Ringz-szerű rezgőt futtat; a frekvenciákat és az erősségeket az 8. pont képletei adják.

Max/MSP gen~ – három tömeg (N = 3, szabad végre ütve)

History a1(0);  History a2(0);   // 1. módus
History b1(0);  History b2(0);   // 2. módus
History c1(0);  History c2(0);   // 3. módus
Param f0(439, min=20, max=2000);   // egy tömeg-rugó sajátfrekvenciája (Hz)
Param t60(2.8, min=0.05, max=10);  // lecsengési idő (mp)

r = exp(-6.9078 / t60 / samplerate);
// f_n = 2 f0 sin((2n-1) pi / 14), kis csillapításnál a csillapított frekvencia is ennyi
th1 = twopi * 2 * f0 * sin(pi/14)   / samplerate;
th2 = twopi * 2 * f0 * sin(3*pi/14) / samplerate;
th3 = twopi * 2 * f0 * sin(5*pi/14) / samplerate;
// erősség: u_n(3)^2 / omega_n (az ütés és a hallgatás is a 3. tömegnél van)
g1 = pow(sin(3*pi/7),  2) / sin(pi/14);
g2 = pow(sin(9*pi/7),  2) / sin(3*pi/14);
g3 = pow(sin(15*pi/7), 2) / sin(5*pi/14);

ya = in1 * sin(th1) * g1 + 2*r*cos(th1) * a1 - r*r * a2;  a2 = a1;  a1 = ya;
yb = in1 * sin(th2) * g2 + 2*r*cos(th2) * b1 - r*r * b2;  b2 = b1;  b1 = yb;
yc = in1 * sin(th3) * g3 + 2*r*cos(th3) * c1 - r*r * c2;  c2 = c1;  c1 = yc;
out1 = (ya + yb + yc) / (g1 + g2 + g3);   // csúcs legfeljebb ~1

Ez három, párhuzamosan futó rezgő, mint az egzakt rezonátor. Az in1-re egyetlen mintányi impulzust küldj ([click~]).

Max/MSP gen~ – Euler valódi mértékegységekkel (F = m·a + c·v + k·x)

History x(0);                          // kitérés (m)
History v(0);                          // sebesség (m/s)
Param m(0.010,  min=0.0001, max=1);        // tömeg (kg)
Param k(76000,  min=100,    max=5000000);  // rugómerevség (N/m)
Param c(0.05,   min=0.001,  max=200);      // csillapítás (N·s/m)
Param gain(25000, min=1, max=1000000);     // csak a hallgatáshoz: kimenet = kitérés (m) · gain

h = 1 / samplerate;                    // lépésköz (s)
// in1 a külső erő F (N). Ütés: egy mintányi F = J / h erő (J az impulzus, N·s);
// pl. J = 1 mN·s, 44,1 kHz-nél F = 44,1 N. Más erő is jó (pl. szinusz: kényszerrezgés).
a  = (in1 - c * v - k * x) / m;        // F = m*a + c*v + k*x   =>   a = (F - c*v - k*x) / m   (m/s^2)
v1 = v + h * a;                        // új sebesség
x1 = x + h * v1;                       // szemi-implicit Euler: az ÚJ sebességgel lépünk
// explicit Euler lenne (INSTABIL, ha c < h*k):  x1 = x + h * v;
v = v1;
x = x1;
out1 = x1 * gain;                      // 36 um * 25000 = ~0,9

Az in1-re egyetlen mintányi 44-es értéket küldj (például [click~] után [*~ 44]). Az m, k és c valódi egységekben állítható, a stabilitási feltételek az 5/c pontban vannak.

SuperCollider – Euler valódi mértékegységekkel (előre kiszámolt hang)

// A SuperCollider-ben a mintánkénti visszacsatolás nehézkes, ezért a nyelvi oldalon
// számoljuk ki a lépéseket, és puffert játszunk le. SI-egységek: kg, N/m, N·s/m, N, m, s.
(
s.waitForBoot {
    var m = 0.010, k = 76000, c = 0.05;      // tömeg, merevség, csillapítás
    var j = 0.001;                            // az ütés impulzusa (N·s)
    var h = 1 / s.sampleRate;                 // lépésköz (s)
    var n = (s.sampleRate * 3).asInteger;
    var x = 0, v = 0, a, f, sig = Signal.newClear(n);
    n.do { |i|
        f = if(i == 0) { j / h } { 0 };       // külső erő (N): egy lépésnyi erőimpulzus
        a = (f - (c * v) - (k * x)) / m;      // F = m*a + c*v + k*x
        v = v + (h * a);                      // szemi-implicit Euler
        x = x + (h * v);                      // kitérés (m)
        sig[i] = x;
    };
    sig = sig * (0.3 / sig.abs.maxItem);      // halkan kezdj
    Buffer.loadCollection(s, sig, 1, { |b| b.play });
};
)
Mikor melyiket? Az egzakt rezonátor (fent) pontosabb és olcsóbb, de csak állandó paraméterekre jó. Az Euler-féle változatba viszont beírhatsz tetszőleges erőt vagy nemlineáris rugót (pl. a gyorsulás sorába - k3 * x*x*x, ahol k3 [N/m³] a köbös merevség), és közben f0 is változhat. Ez az elméleti rész 5/b pontjának összevetése.

Max/MSP gen~ (Codebox) – egzakt rezonátor

History y1(0);
History y2(0);
Param freq(440, min=20, max=5000);   // a rezgés frekvenciája (Hz)
Param t60(2.8, min=0.05, max=10);    // lecsengési idő (mp)

sigma = 6.9078 / t60;                // lecsengés (1/mp): ln(1000)/T60
r     = exp(-sigma / samplerate);
theta = twopi * freq / samplerate;

y  = in1 * sin(theta) + 2 * r * cos(theta) * y1 - r * r * y2;  // az ütés az in1-en érkezik; a sin(theta) a csúcsot ~1-re skálázza
y2 = y1;
y1 = y;
out1 = y;
Használat Max-ben: a sin(theta) szorzó nélkül a kimenet csúcsa ~16-szoros lenne (440 Hz-nél), ami torzít és megbánthatja a fület. Az in1-re egyetlen mintányi impulzust küldj (pl. [click~]). Az \(f\) és a \(T_{60}\) üzenetként állítható. Ez a rezgő csillapított, ezért a \(\zeta<1\) esetet valósítja meg.

Feladatok

FeladatLeírás
OktávszabályVálassz egy hangot, majd négyszerezd a merevséget (és külön a tömeget). Mérd az új frekvenciát. Mit várunk?
Kritikus határKeresd meg csúszkával azt a csillapítást, ahol a rezgés éppen eltűnik. Vesd össze a kiírt \(c_{krit}\)-tel.
T60-mérésSzámold ki \(13{,}8\,m/c\) értékét, és ellenőrizd a kiírt T60-nal és a hallott lecsengéssel.
FázistérRajzold le kézzel a fázisteret harangra, kritikus és gumi esetre. Mit jelent a spirál egy fordulata?
HangszínÁllíts be három egymástól nagyon eltérő hangot (harang, koppanás, gumi), és írd le a beállításokat.
Valódi mértékegységekVálassz m, k, c értéket SI-egységekben, és számold ki: \(\omega_0\), \(c_{krit}\), \(v_0=J/m\), \(x_{max}\approx v_0/\omega_0\) és \(h\,k\). Ellenőrizd a demó kiírásával. Mekkora \(c\)-nél lesz az explicit Euler stabil?
Módszer-összevetésÜtsd meg a Harangot mindhárom módszerrel. Melyik robban fel? Számold ki a \(h\omega_0^2/2\) értéket, és vesd össze a \(\sigma\)-val. Mekkora a „mért f” különbsége a szemi-implicit Euler és az egzakt között?
Két tömegN = 2: számold ki \(f_{1,2}\)-t a képlettel, és vesd össze a kiírt értékekkel. Hány Hz a különbségük, és mit hallasz, ha a kettő közel van?
Ütés helyeN = 5: ütögess minden tömegen, a hallgatás helye az 5. Melyik módus tűnik el vagy gyengül? Rajzold le az alakját.
Karplus és rezgőHasonlítsd össze: hány „hang” van egy tömeg-rugó rezgőben, és hány a Karplus-Strong hurokban?

Szószedet

  • Sajátfrekvencia: az a frekvencia, amelyen a rendszer magától rezeg.
  • Csillapítási tényező (\(\zeta\)): a csillapítás és a kritikus csillapítás aránya.
  • Kritikus csillapítás: a rezgés nélküli leggyorsabb megállás határa.
  • T60: az az idő, amely alatt a hang amplitúdója az ezredrészére csökken.
  • Fázistér: a kitérés és a sebesség együttes ábrázolása.
  • Rezonancia: a rendszer erős válasza a sajátfrekvenciájához illeszkedő gerjesztésre.
  • Q-tényező: a rezonancia élessége; nagy Q: keskeny, hosszú rezonancia.
  • Explicit Euler: a régi értékekből lép; a rezgésnél hozzáad egy negatív csillapítást, ezért instabil lehet.
  • Szemi-implicit Euler: a sebességet frissíti először, és az újjal lépteti a kitérést; stabil és közel pontos.
  • Egzakt rezonátor: a valódi pólusokat használó két mintás rekurzió; a lecsengést és a frekvenciát pontosan adja.
  • Módus: egy tiszta rezgésforma a rendszerben: minden tömeg ugyanazon a frekvencián, rögzített arányban mozog.
  • Csomópont: az a pont, ahol egy módus kitérése nulla.

Források

  • N. H. Fletcher, T. D. Rossing: The Physics of Musical Instruments, Springer.
  • J. O. Smith: Physical Audio Signal Processing (online könyv, CCRMA): ccrma.stanford.edu/~jos/pasp/
  • C. Cadoz, A. Luciani, J.-L. Florens: CORDIS-ANIMA, Computer Music Journal, 1993 (tömeg-rugó alapú hangszermodellezés).