第27回 音と波動

波は正弦波が基本。CindyScriptには、正弦波を音として鳴らす関数playsin()があります。これにより、弦の振動、うなりなどのシミュレーションができます。

playsin()関数の基本的な使い方は playsin(f)です。fは振動数(Hz)。これにいくつかのオプションがつけられるのですが、その詳細については後ほど述べるとして、ごく基本的な波長と振動数の関係を音として鳴らすことをやってみましょう。

まず、波長をコントロールするためのスライダを作ります。

(1) 画面下のツールから「座標軸を描く」と「グリッドを描く」をクリックして方眼を出しておきましょう。

(2) 「直線を追加する」ツールボタンを選んで(クリックし)、適当な場所に直線を引きます。x軸上がいいでしょう。ぴったりx軸上に乗せるためには、スナップツール(磁石アイコン)をONにしておくとよいでしょう。「要素を動かす」ツールボタン

で動かすモードにして、2点を方眼の交点にスナップするようにすればぴったり乗ります。

(3) 編集メニューから「インスペクタ」をクリックしてインスペクタを表示します。「要素を動かす」モードであることを確かめて直線をクリックし、インスペクタの「色、大きさ、表示方法」を出し、「ラベルをつける」のチェックを外します。また、直線を描くのに使った2点をクリックして選択し、インスペクタの「表示する」のチェックを外します。これで、x軸上に直線だけが表示されます。

(4) 「線分を追加する」ツールボタンを選んで、原点を左端にしてx軸上に線分を描きます。右端は(10,0) くらいにしておきましょう。これがスライダになります。(1)からの手順通りならば、線分CDになっているでしょう。

(5) 「要素を動かす」モードにして左端の点Cを選択し、インスペクタの「ピンで留める」にチェックマークをつけます。これで、左端は固定されます。色が暗い赤になります。また、右端の点Dの色は青に変えておきましょう。

(6) スクリプトメニューからCindyScriptを開き、Drawスロットをクリックします。

ここからが スクリプトです。画面上には正弦波つまりy=sin(ax)のグラフを描き、スライダで波長を変えて、それに応じて音を鳴らすようにします。

まずグラフ。線分CDが波長ということにしますが、x軸上の10の長さが振動数110Hzに対応する長さということにしましょう。これはもちろん変えても構いません。ここでは、楽器のチューニングはA(ラ)の音が440Hzなので、その4分の1の110にしていますが、単純に100でも結構です。

正弦波を描くにはplot関数を使います。x軸上のCDの長さが波長になるようにするには、どんな関数にすればいいですか?

点Dの座標はD.xで表されますので

plot(sin((2*pi)/D.x*x));

となります。piは、CindyScriptで優先的に使う変数で円周率πを表します。

次に音を鳴らす関数 playsin()です。CDの長さが10のとき110Hzで、波長が短くなればそれに比例して振動数が高くなるように計算します。振動数をfとすれば

f=10/D.x*110;

となります。そこで、次のようにしますが、これをDraw スロットに書くとうまくいきません。(やってみましょう。耳障りな音が混入するはずです)そこで、Mouse Upスロットに書きます。そうすれば、点Dをドラッグしてマウスボタンを離したときに1秒間音が鳴ります。

--- Mouse Up スロット ----------------------------------------------------

f=10/D.x*110;

playsin(f);

--------------------------------------------------------------------------------------

これで基本的なことはできあがりです。

点Dをドラッグして波長を短くすれば音が高くなります。

この回は、もう少し続きを書くつもりですが、そのまえに練習問題を出しておきましょう。

【練習問題】

(1) 今鳴っているのが何Hzの音なのか、どこかに表示するようにしなさい。使う関数は drawtext([x,y],文字や数字) です。

(2) ベースの周波数を880位にすると、かなり高い音がでます。ある高さになると不快になり、ある高さを超えると聴こえなくなります。いわゆるモスキート音。その境目は? 

(3)MatheVitalから、次の作品をダウンロードして、playsin()関数の働きを解析してみましょう。(こちらは難しいので、今すぐでなくて構いません)

Obertöne I 正弦波と音 ファイル名は Fourier4.cdy

Obertöne II ぎざぎざ波形の音 ファイル名は Fourier3.cdy

その他、次のところにいろいろな作品があります。