2011年5月17日火曜日

Puredata で簡易サンプラー その1


Puredata (以下Pd)で簡単な音を出すパッチの紹介です。
「サンプラー」とは、マイクなどで録音(サンプリング)した音を、任意のタイミングで再生するものです。
Arduino (Pduino) と組み合わせて、外部のセンサーやボタンに反応して音を出す、といった使い方を想定しています。

Pd は一般的な音楽ソフトのように、「音楽ファイルを再生」といった機能がありません。
Array (配列) にサンプルデータを記憶し、音として再生する、といった手順をとります。

今回は、sample という名前の 88,200点(44.1kHz サンプリングで 2秒分)のArray を使っています。
Array へのデータ書き込みは [tabwrite~ sample] で行っています。
その上の [Sampling_from_Mic] をBang すると、[adc~] (A/D Converter)から88,200点(2秒)、サンプリングします。

単純に再生するだけであれば、緑の[Play_2] をBang します。
すると、[tabplay~ sample] を使って、Array のデータを44.1kHz で取り出します。

取り出したデータは [dac~] (D/A Converter) に入力することで、音として再生されます。
(その間にある [hip~ 5](High-Pass Filter) は直流カットのため、[*~ 0.5] は音量調整のために入れています。)

・[dac~] の入力は、この例では Lch, Rch の2系統ありますが、データがモノラルなので、同じデータを入れています。
・[soundfiler] の周りはファイルの読み書きです。
・[; pd dsp $1;( は Media メニューの audio ON, audio OFF と同等の動作です。


水色の[Play_1] の方はもう少し複雑な読み出しをしています。
事前に作り込んだオーディオファイルなら良いのですが、マイクからサンプリングすると、どうしてもマウスのクリック音や、発声までの無音が入ってしまいます。
それらを取りたかったので、[Slider_1] を付けてみました。
(このSlider はArray と連動しているわけではなく、単純にサイズを合わせただけのものです。)

Array の波形を見ながら、不要な部分を[Slider_1] で指示します。
この値を [vline~] に入力します。
[vline~] に入力しているのは、Array の開始点、終了点、再生時間 の3つのパラメータです。
[/ -44.1] という部分で、通常の再生スピードとなります。この値を他の数値にすると、再生ピッチが変わります。うまく調整することで、音階も作れます。

[vline~] の出力を [tabread4~ sample] に入力する事で、開始点と再生ピッチを指定した再生が可能になります。



Puredata ファイル(zip 圧縮) : Download


0 件のコメント:

コメントを投稿