さて今回のPure Data入門講座は音ファイルの読み込みと再生についてです。Pdはあらかじめファイルとして保存してある音データを読み込んで再生することも出来ます。この原理をうまく利用すると、ドラムマシーンやシーケンサーのようなプログラムを作ることができるので、覚えておくと色々使いみちがあると思います。
まずはPdのプログラム上に読み込んだ音の置き場所としてアレイを作成しましょう。下図の例ではarray1とうアレイを作りました。この時点でアレイのサイズ等は適当に指定しておいても大丈夫です。つづいて音の読み込みですが、こちらは“soundfiler”というパッチを使います。この“soundfiler”というパッチは、入力に読み込むファイル名と送り先となるアレイをメッセージとして指定することで、音を読み込むことが出来ます。この例では“read -resize drum_test.wav array1”とありますが、drum_test.wavをarray1に読み込むことになります。ちなみに“-resize”と言う引数は、音ファイルの大きさに応じてアレイのサイズを変更する指示となります。
読み込んだ音の再生は画面左下の”tabplay~”というパッチで行います。この例ですと単純にBangを押すとファイルの再生が行われます。このように音ファイルの読み込み・再生は非常にシンプルなプログラムで行うことが出来ます。
続いて上記のプロウグラムの応用例をご紹介します。まずは読み込みの部分に“openpanel”というパッチを設けました。これはファイル選択ダイアログを表示するパッチとなります。ここで選択したファイル名は、“read -resize $1 array1”の“$1”の部分に渡され、最終的に“soundfiler”で読み込みが行われます。ちなみに“openpanel”の入力メッセージはファイル選択ダイアログの表示フォルダ指定となります。この場合はルートが選択された状態でファイル選択ダイアログが開かれます。
続いて再生部分の応用例です。先程の“tabplay~”以外に“tabread~”というパッチを追加しました。“tabread~”は“tabplay~”に比べてより柔軟に音の再生が可能となります。具体的には読み込んだ音ファイルの何点目から何点目まで何秒で再生するかを指定することができます。左側のメッセージボックス“0, 88200 1000”は0点目から88,200点目まで1000ms(1秒)で再生する指示となります。読み込んだ音ファイルが44.1 kHzサンプリングとすると、1秒間で44,100点のデータとなりますので、この例では先頭から2秒間のデータを1秒で再生する命令になるので、結果として倍速再生の様な状態になります。一方右側のメッセージボックス“88200, 0, 2000”は88,200点目から0点目まで2秒間で再生する命令ですので、こちらは逆転再生となります。ちなみにサンプリング周波数とデータ数の関係はこちらのページを参照ください。(http://www.soraotona.net/weblog/?p=319)
このようにPdでは非常にシンプルに音ファイルの読み込みと再生ができますので、ぜひ色々試して見ください!
田園都市線三軒茶屋、セミナー・研修・講座のSoraoto。様々なセミナーやサイエンスカフェなどのイベントを開催しています。また英会話教室を始めとする、大人の学習講座もありますので、ぜひご参加ください。