職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

金管楽器の管長

昨日、金管楽器奏者の方々と管の長さについての話題になったので、計算方法などを書き留めておきたいと思います。
読むには高校の物理で習う「気柱の振動」の知識が必要ですので、「もう忘れたよー」という方は わかりやすい高校物理の部屋:気柱の振動 こういったサイトで復習してきて下さい。

計算の前提条件

以下の文中では、このような条件で計算しています。

  • 空気中の音速:345メートル毎秒(気温23℃くらいのとき)
  • 基準音 A=442Hz
  • 高2病全開!(開口端補正を無視)

平均律

計算に入る前に、調律法について知らなければなりません。調律法とは簡単に言うと音の並べ方のことです。ドの音の周波数がxHzだったとすると、ド♯の音は何Hzにするべきか、という感じですね。
平均律とは調律法の一つで、最もよく採用される調律法の一つです。音は1オクターブ上がると周波数が2倍に増えます(これは調律法に関わらず普遍、のはずです)が、平均律では音が半音上がった音の周波数を、元の音の周波数に2の12乗根だけ乗じたものになるように定義します。12回だけ「半音上がる」とオクターブ上がる訳ですから、ちょうど周波数が2倍になって辻褄が合いますね。
従って、平均律の計算をするには2の12乗根の値を求める必要があります。

2の12乗根の値

ggrks
というのは、非常に的を得た話です。
http://www.google.co.jp/#hl=ja&sclient=psy-ab&q=2%E3%81%AE12%E4%B9%97%E6%A0%B9&oq=2%E3%81%AE12%E4%B9%97%E6%A0%B9
Google先生は 1.05946309 という答えを教えてくれました。

プログラミング初心者の方へ

C言語には pow という関数がありますね。他の言語にも似た機能を持つ関数があるはずです。使ってみて下さい。
手元にあったJava環境で計算した値は、 1.0594630943592953 でした。

プログラミング初心者の方の中で、好奇心旺盛な方へ

近似値を求めるアルゴリズムっていろいろあるので、それらを使って2の12乗根を計算するのも面白いです。ぜひやってみましょう。
僕は面倒くさがりなのでやりません(笑)


この記事では、計算用に (2の12乗根)=1.059463 としておきます。

B♭トランペットの管の長さ

チューニングB♭(記譜音で、第3間のドの音)は、基準音 A=442Hz の半音上です。この音は

442Hz * (2の12乗根) ≒ 468.28Hz

となります。
トランペットの基本振動はこの音の2オクターブ下になりますので、その周波数は

468.28Hz ÷ 4 = 117.07Hz

となります。
この基本振動の波長は、音速は 345メートル毎秒 であることから

345m/s ÷ 117.07Hz = 2.95m

となります。
トランペットは開管の構造ですので、基本振動しているとき管の長さは(高2病全開ですので)半波長と同じになり、

2.95m ÷ 2 = 1.48m

ですね(かなり誤差まみれな計算ですが)。

B♭トロンボーンユーフォニアムの管の長さ

B♭トランペットのオクターブ下ですので、管の長さは2倍になりますね(これも高2病全開な前提ですが)。およそ2.95mということになります。

おまけ:人間の耳に聴こえないほどのハイノート

人間の耳の可聴域は20Hzから20000Hzくらいと言われています。
この20000Hzという音をB♭トランペットで吹くには、どれくらい頑張ったら良いのでしょうか。
チューニングB♭(記譜音で、第3間のドの音)は前述の計算の通り 468.28Hz ですね。
これのオクターブ上(ハイB♭:初心者でも数ヶ月間真面目に練習すれば吹けることもある)が 936.56Hz
これの更にオクターブ上(ダブルハイB♭:吹ける人がバンドに1人居るか居ないか、くらい)が 1873.12Hz
これの更にオクターブ上(トリプルハイB♭:吹ける人が世の中には居るらしいが、僕は聴いた事無い)が 3746.24Hz
これの更にオクターブ上(クアッド?ハイB♭:吹ける人は世の中には居ないだろう)が 7492.48Hz
これの更にオクターブ上(???ハイB♭:吹ける人は居ないはず)が 14984.96Hz
これの完全5度上(Fの音)が 20002.52Hz

結論:無理。