Thursday, April 24, 2014

第3回サンプリングの基礎と応用

今回は前回の終わりに少し使ったサンプル音の読み込みと再生、サンプル音のコントロールについて体験します。。


Array(アレイ)にサンプル音を読み込んで鳴らす(復習)

前回はすでにパッチが用意されている状態でした。
今回はゼロから作ってみましょう。
まず、本日の資料ファイルをダウンロードしてください。


Arrayとはデータを格納できる箱の集合体です。データを収める箱がたくさん集まっている、と考えてください。
それぞれの箱の群れには音のデータやシーケンスデータを格納して呼び出すことができます。
例えば、音のデータを格納するには、サンプリング周波数44.1kHzの1秒間の音であれば、44100個の「箱」を持つArrayを用意すれば事足ります。
それは1秒間が44100サンプル(データの単位)で構成されている音だからです。
それぞれの箱には1サンプル毎の音の強さのデータが格納されます。
データの群れを先頭から呼び出し、DA変換(デジタルアナログ変換)をして、スピーカーから出力すれば、音が再生されます。

では、音のデータを格納するArrayを作って音を読み込みましょう。

  1. 配置メニュー - [アレイ]を選択します。
  2. アレイのプロパティが開くので名前をつけます。ここではkickです。[内容を保存]のチェックをはずしておきます。ここにチェックが入っているとパッチを保存すると同時に音のデータも保存されます。都合の良い時もあるのですが、混乱するといけないので今回ははずしておきます。
  3. すると[kick]という名前のArrayができています。
  4. 同じパッチに図のようにオブジェクトを作ってつなげます。
  5. Bangボタンをクリックして読み込みたいサウンドを選択します。試しにdrumsoundsフォルダ/808_kick.wav を選択します。

読み込んだ音を鳴らす

このArrayに格納されている音のデータを再生する機能を追加します。
いくつか方法がありますが、前回やった[tabplay~]を使う方法です。

  1. 図のようにオブジェクトを配置します。
  2. 垂直スライダーの配置は、配置メニュー - [垂直スライダー]です。長さやスライダーの出力範囲を設定するには、スライダーを右クリック - [プロパティ]を選択します。プロパティ画面で以下のような設定をします。高さを50ピクセル、出力範囲の上を1にしました。
  3. これでBangボタンを実行モードでクリックすれば、音のデータは頭から再生されます。

再生速度や方向を変えて再生する

音のサンプル(データ)をゆっくり再生したり、逆再生する方法にチャレンジしましょう。(画像をクリックすると大きくなります。)
  1. 図のようにオブジェクトをつないでください。
  2. 真ん中のBangボタンをクリックすると普通に再生されます。
  3. これは何をやっているのかというと、[soundfiler]を使ってArrayに音データを読み込むと、アウトレットから音データのサイズがサンプル数で出力されます。
  4. この数字はその下の[line~]に使われます。[pack]オブジェクトで左右のインレットに入力された数字がまとめられます。この場合は[サンプル数 ミリ秒数]という数字のセットで、これを「リスト」と言います。
  5. [line~]は[始まりのサンプル番号, 目的地のサンプル番号 到達する時間 ( というメッセージを受け取ると、その内容の通りの数値の変化カーブ(エンベロープ)を出力します。
  6. [tabread4~]に何番目の箱のサンプルデータを再生するかの命令で、音が再生されます。
このドラム音が鳴るパッチに好きな名前をつけて保存してください。

演習

では、逆再生をしてみたり、2倍の時間でゆっくり再生するように変えてみましょう。
ヒントは以下の通りです。

  • [0, $1 $2 ( のメッセージボックスの中身

サンプル音をパターンで鳴らすシーケンサー

音が鳴るタイミングを記録して、そのパターンを再生する機能を「シーケンサー」(sequencer)と呼びます。
Pdでは、そのパターンを記録するためにも「アレイ」を使います。
すでにseq_block.pdというパッチを用意していますが、以下はその作り方を説明しています。

1. 新規パッチを開いてから、配置メニュー - アレイをクリックしてアレイを配置します。
2. アレイを右クリック - プロパティを選択して以下のように設定します。名前:seq、サイズ:16
3. キャンバスのプロパティで、X,Yのサイズ、Yの始点と終点を変更します。
4. OKボタンをクリックすると「seq」のアレイが設定通りにできています。
5. seqのアレイの下に[tabwrite seq]、メッセージボックス、ナンバーボックスを配置します。ナンバーボックスのプロパティ(Atomボックスのプロパティ)で最小値0、最大値4に設定しておきます。ナンバーボックスの数値を変更すると、seqのアレイの0番目のバーが動くのを確認してください。


6. ナンバーボックスとメッセージボックスの組み合わせを16組まで増やします。メッセージボックスのリストの2番目の数値は増やしていきます。数値は0〜15です。


7. 記録したシーケンスを再生する部分を追加します。[tabread seq]と前回作ったのと同じ0〜15の数値を繰り返し出力する部分をつなぎます。

パッチの全体図

8. このパッチをseq_block.pdという名前で保存します。保存する場所は前述のドラム音を鳴らすパッチを保存したのと同じフォルダ(階層)にします。
9. 先ほどのドラムのパッチの中で、[seq_block]というオブジェクトを作ります。これはサブパッチと似ていますが、同じ階層にある他のパッチを呼び出しています。これをAbstraction(アブストラクション)と言います。これを以下のように配置します。



10. 上記の図では、キャンバスのプロパティで親パッチ(Abstractionを配置したパッチ)で表示する設定をしています。(この後に説明)


サブパッチやAbstractionの一部を表示する

ここではサブパッチやAbstractionの一部を親パッチで表示する方法について、上記の[seq_block]を例に説明します。

1. Abstractionの[seq_block]の中を開いて、何もない場所を右クリック - [プロパティ]を選択すると、「キャンバスのプロパティ」画面が表示されます。



2. 「親パッチに表示する」にチェックを付けてからOKボタンをクリックします。親パッチに灰色の四角が表示、サブパッチには赤線の四角が表示されます。この赤線が親パッチへの表示範囲です。


3. キャンバスのプロパティ画面でXとYの「サイズ」を変更してOKボタンをクリックすると、赤線枠のサイズも変更します。ここでは音量のスライダーだけを親パッチに表示します。サブパッチの中のオブジェクトを全選択して移動させて赤線枠に合わせてからサイズを変更します。(サイズはX=545, Y=80)




4. Abstractionを閉じると親パッチに表示されています。プロパティで「オブジェクト名と引数の非表示」にチェックをつけると、Abstractionのパッチ名が消えて、赤線枠の部分だけが親パッチに表示されます。この操作はサブパッチでも同じです。

チャレンジ


  • ドラムの音を他の音に入れ替えて当てはめてみましょう。
  • 複数の音を鳴らせるパッチに変えてみましょう。
  • 逆再生と順再生、再生速度の変更と、シーケンスのデータごとに変えられる仕組みはどう作るでしょうか?



No comments:

Post a Comment