振動と波動について (Oscillation and Wave) v0.7.3


1. 振動 (Oscillation)

“振動”の説明によると 抵抗のない床の上に質量 Mがあり それが壁にバネとダンパで継っています。
質量 Mが移動する時 バネはその変移量に比例した抵抗力を出します。

fig.1

そこで ダンパの係数を p・バネの強さを示す係数を qとすると 質量 Mに加わる力 Fは...

fig.2

となり それをニュートンの運動方程式...

fig.3

に入れると...

fig.4

各種の運動を示す典型的な方程式となります。

その解法はここでの説明ではありませんが それを「ルンゲ・クッタ法」で解いたプログラムがありましたので それをJavaに移植して見ました。 (横軸は時間 t・縦軸が変位 xです)
バネの強さQとダンパの強さPをスライドバーで可変するようにしてあります。

  1. P = 1, Q = 4 ダンパが弱く振動しながら減衰
  2. P = 4, Q = 1 ダンパが強く振動せずに減衰
  3. P = 0, Q = 4 ダンパが無く振動は持続
(ボタンを押して下さい。別のフレームで実行します。 (S・M・Lで表示サイズが変わります))
MD5 (Bane.zip) = 2d274adbb49e1f76fb96d3606d852962
Bane > S M L  Source File ・ Bane.zip (v0.3) SIZE = 1190

3.の時の振動数は固有振動数で この系特有の振動数だそうです。
1.のグラフは何処かで見た事がないでしょうか?
「実験室」でピアノの音を再現した時のグラフに似たようなのがありました。
ピアノの方はもっと周波数が高いのでラッパの先 朝顔型をしていましたが 同じ減衰振動です。

次は 上の式に外から力がかかった場合です。

fig.5

外部の力としては 正弦波(W)で その振幅は固定としています。

MD5 (BaneOut.zip) = 90a8b63c0740012a3984cfc124e4c8f8
BaneOut > S M L  Source File ・ BaneOut.zip (v0.3) SIZE = 1326

1. P = 1, Q = 4の場合 時間が経つと外力と同じ振動数で振動させられています。
しかし振幅は固有振動数(W = 2) の時に最大で それより大きくても小さくても振幅は小さくなります。
これを共振現象と言います。

ピアノで言えば 弦1本だけで鳴っているのではなく 様々な倍音の弦から駒・ 響板・さらに鉄骨・外装・置かれた環境などまでにも継って行きます。


2. 波動 (Wave)

様々な波の性質を表す“波動方程式”と言うものがあります。

fig.6

弦の振動が 振幅 y・時間 t・位置 xによってどう表されるかを 示す方程式です。
この場合は 弦の両端は固定され, 弦は分割したの点で表しています。 基音の場合は弦の中央が一番大きく振動します。 (振幅は拡大して表現しています。また初期値をサイン波としています)
振幅の大きさは時間とともに変わり その振動数が音の周波数となります。

参考までにスライドバーで周波数を少し変えられるようにしてあります。
その方程式の解法は説明出来ませんが 「ガウス・ザイデル法」のプログラムを同じくJavaに移植して見ました。

MD5 (Hadou.zip) = 7fe44b7991079ad5dbf26d8b189f6d40
Hadou > S M L  Source File ・ Hadou.zip (v0.3) SIZE = 1567

同じ波動方程式を 「差分方程式」で解いたプログラムがありましたので Javaに移植しました。
打弦点を変えて弦の動きの変化を見て下さい。

MD5 (String0.zip) = ccbedc6042bbbd9e36412e810d03b04f
String > S M L  Source File ・ String0.zip (v0.5.1) SIZE = 1877
cent-javascript html5 HTML5版です。

3. 弦の振動

上記の“弦の振動”の時 弦はどのような音を発してるのでしょう?
音ではありませんが 弦の振動の計算式があります。

ハープの様に三角形に弦に自由振動を起こした時(撥弦)

fig.7
MD5 (Harp.zip) = bb0aced962e4785d350591963d596fc0
Harp > S M L  Source File ・ Harp.zip (v0.4) SIZE = 1296
(倍音次数 mは 1~20まで示しています。 緑色は 全ての波形を合計したラインです。時間成分は省略しています。)
1/(mπ)^2 で示されるように この場合は次数 mの2乗に反比例して倍音が 減少して行きます。

また ピアノのようなインパルスの場合(打弦)

fig.8
MD5 (Piano.zip) = bb8640433315fc690ddfc693b7dea0b1
Piano > S M L  Source File ・ Piano.zip (v0.4) SIZE = 1261
(倍音次数 mは1~100まで示しています)
1/mπで示される様に 次数 mに反比例して倍音は減少し (1)より高次倍音が多く含まれている事を示しています。

ではその倍音部分の大きさはどう決まるのでしょう? (ピアノの場合打弦点は 1/8と経験的に決められているようですが)
(1)(2)の式で sin mπ(x0/l)の部分が打弦点 x0と次数 mの関係する所で その関係式だけを取り出してグラフにして見ました。 (横軸が倍音次数 m・縦軸は相対的な大きさです)

MD5 (Sin.zip) = 4459afbaa85cc383d4dea64fca312524
Sin > S M L  Source File ・ Sin.zip (v0.4) SIZE = 1121

ハープ弦を 撥弦位置で見てみます。

MD5 (Sinhsp.zip) = 38691ccb5cfa61df320c34c94b6dc3e8
Sinhsp > S M L  Source File ・ Sinhsp.zip (v0.4) SIZE = 1515

横軸が倍音数で緑色の縦の棒グラフが その大きさです。
白色の線は その倍音を全て合わせた時の波形を表します。
倍音数(Partial)を 1にすると一つのサイン波のみになるのが判ります。

ピアノ弦を 打弦位置で見てみます。

MD5 (Sinpsp.zip) = 2609f3ec71a98f02c18c462f0510e189
Sinpsp > S M L  Source File ・ Sinpsp.zip (v0.4) SIZE = 1511

(1)(2)の式に“時間関数”成分を加えました。

MD5 (Hsound.zip) = 5578f7ba3caf308e8b6a605e7b257887
Hsound > S M L  Source File ・ Hsound.zip (v0.5.1) SIZE = 1828
cent-javascript html5 HTML5版です。

(ピアノの場合 インパルス(衝撃音)が元なのですが その為には倍音数を∞(無限大)まで合成しなくてはなりません。
現在は40倍までですが それが400倍でも1000倍でも少し先端が尖ったぐらいで 動作はどんどん遅くなり実用になりませんので とりあえず40倍としています)

MD5 (Psound.zip) = 16f72b417d1ae5c5381ceb94047a59e3
Psound > S M L  Source File ・ Psound.zip (v0.5.1) SIZE = 1812
cent-javascript html5 HTML5版です。

4. そして…

先の波動方程式(1)から ピアノ弦の方程式が様々研究・ 実験されています。

fig.7
Y = 変位
x = 弦の軸方向の位置座標
t = 時間
T = 張力
I = 2次モーメント
E = 縦弾性係数
S = 断面積
ρ = 密度
σ = 弦の単位長さの質量
κ = ジャイレーション半径(?)
r = 空気摩擦抵抗
b = 減衰係数
f() = ハンマーの方程式

今では 駒・響板・そしてハンマーまでも方程式で計算され, 整音作業までもシミュレーションされる時代になって来ましたし, インハーモニシティについての理解も深まって来た様に思います。
願わくば パーソナルコンピューター上で誰でも自由に そうした創造的な実験が出来るように成りますように…


5. 追記です。 (v0.5)

2010年「クラヴィコードにおける弦振動の解析 -ヘルムホルツからの考察」高澤 嘉光 (音楽音響研究会資料 MA2010-5) が発表されました。

そこには これまでの弦振動の ギター・ハープなどの撥弦(plucking)、 ピアノなどの打弦(striking)、ヴァイオリンなどの擦弦(bowing)に加えて クラヴィコードを第4の振動方式として撞弦(pushing)と名付けています。

そしてそれらの振動を ヘルムホルツ波(Helmholtz motion)の観点から見ています。

  1. 始めに クラヴィコードの弦振動(撞弦 - pushing)を差分法で求めます。

    siki-0
    MD5 (clavi.zip) = 8a28dd1b22891765af0685344ddc9f3b
    clavi > S M L  Source File・clavi.zip (v0.5.0.1) SIZE = 1842
    (以下 HTML5版 4点)

    > html5 (※v0.6: HTML5のcanvasとJavaScriptで表示します。)

    (実際は 左端のタンジェントの移動距離は 5[mm]で 弦長は1000[mm]です)

    使い方:
  2. 次は チェンバロの弦振動(撥弦 - plucking)です。

    ダランベール(d'Alembert)形式では 「撥弦運動は弦に沿った正方向と負方向の2つの進行波の和で表される」 事を示しています。

    siki-1

    それを ヘルムホルツ波(Z波)で表します。

    siki-2
    MD5 (pluck.zip) = 0543dbb3c5d9f6c62ebe0df49476cdf1
    pluck > S M L  Source File・pluck.zip (v0.5.0.1) SIZE = 1793

    > html5 (※v0.6: HTML5のcanvasとJavaScriptで表示します。)

    「撥弦によって 右回りと左回りの2つのヘルムホルツ波が発生する」 事を示しています。

  3. 次は 打鍵振動(打弦 - striking)です。

    siki-3

    「打鍵振動は Δtの間隔で撥弦された1回目の振動と2回目の振動の差分である」 そうです。

    それを ヘルムホルツ波(Z波)で表します。

    siki-4
    MD5 (strik.zip) = 979318670d61b4c053fbae898814d385
    strik > S M L  Source File・strik.zip (v0.5.0.1) SIZE = 2096

    > html5 (※v0.6: HTML5のcanvasとJavaScriptで表示します。)

    「打鍵振動は 右周りヘルムホルツ波と左回りヘルムホルツ波の時間差Δtの 差分の和である」事を表します。
    そして 打鍵でヘルムホルツ波は右回りと左回りのそれぞれ 2個 計4個が現れます。

    ピアノの加重時間 Δtはハンマーヘッドの軟硬度と密接に関係していて
    Δtとモード成分の強さQnとの関係は以下の式で表されます。
    siki-6
    Δt/T(振動の周期)をパラメータにしたQnの絶対値を グラフにしてみます。(横軸は倍音数で縦軸はデシベルです)
    Qn
    加重時間Δtが短い程 高いモードが強くなっているのが分かります。 また Δtが長くなるとミッシング・モード(消失する倍音)が現れます。 [§]
    cent-javascript html5 HTML5版です。
  4. そして ヴァイオリン(擦弦 - bowing)です。

    siki-5
    MD5 (bow.zip) = 3feed73e003cb307a79986b18b06d0b0
    bow > S M L  Source File・bow.zip (v0.5.0.1) SIZE = 2103

    > html5 (※v0.6: HTML5のcanvasとJavaScriptで表示します。)

    「復合Z波は M個の右回りと左回りのヘルムホルツ波から構成されているが 右回りは位相が全て一致しているが 左回りは2θづつ遅れている」事を表しています。
    (運弓によって擦弦位置が弦の10分の1で Mは約10になりますが 時には駒近くで Mが20に達する事もあるそうです)

4つの振動励起方法による弦振動に現れるヘルムホルツ波の数です。
  1. 撞弦(pushing): 1個
  2. 撥弦(plucking): 左回 1個, 右回 1個, 計 2個
  3. 打弦(striking): 左回 2個, 右回 2個, 計 4個
  4. 擦弦(bowing): 左回 M個, 右回 M個, 計 2M個

参考までにそれぞれの音を比べて見ます。(v0.7)

まず 周波数分布を示します。 左からクラヴィコード(Pushing)・ピアノ(Striking)・ハープ(Plucking)です。
横軸は倍音数で 縦軸は音量を表します。

ピアノとハープは打弦点を1/8に設定して計算しています。 クラヴィコードは打弦点が無い(0)ので消失する倍音はありません。

pushing partial striking partial plucking partial
変更履歴:

参考文献:
Dobashi.M
Last modified: 1月 03日 火 09:09:13 2023 JST