サウンド&ソフトウェアアート 2010
サンプリング&プレイバック
サンプリングについて
サンプリグ (標本化)とは
- 時間的に連続した信号を一定の間隔をおいて測定することにより、離散的な(連続でない)データとして収集すること
- 時間的に連続した信号 = アナログ信号
- 離散的な信号 = デジタル信号
音響における、サンプリング・プレイバック
- オーディオ信号をデジタル・レコーディングして、再生すること
- サンプリング – アナログ信号をデジタル信号に→AD変換
- プレイバック – デジタル信号をアナログ信号に→DA変換
コンピュータで音響を処理する際の情報の流れ
- マイクで音を収録、物理振動を電気信号に
- サンプリング周波数の半分以上の周波数の波形は折り返し雑音となってしまう
- ローパスフィルタ(アンチエイリアシングフィルタ)で、余計な高周波成分をカット
- アナログからデジタルに変換 (AD変換)
- メモリに保存
- 保存したメモリー内の信号を様々な手法で加工、処理 ← この部分が創作の主な部分
- デジタルからアナログに変換 (DA変換)
- サンプリングのした信号のままでは、余計な高周波成分が含まれている(量子化ノイズ)
- ローパスフィルタ(平準化フィルタ)で、余計な高周波成分をカット
- アンプ(amplifier)で信号を増幅
- スピーカーから音を物理振動へ変換
サンプリング周波数と量子化ビット数
- サンプリング周波数 – 1秒間にいくつのサンプルを使用してサンプリングするか、単位はHz
- 量子化ビットレイト – AD変換の際に信号を何段階の数値で表現するか、単位はbit
主なメディアのサンプリング周波数と量子化ビット数
- CD – サンプリング周波数:44,100Hz、量子化ビット数:16bit
- DV(ビデオ) – サンプリング周波数:48,000Hz、量子化ビット数:16bit
- DVD-Video – サンプリング周波数:48,000Hz/96,000Hz、量子化ビット数:16bit/24bit
- コンピュータ(Mac, win) – 設定やオーディオインタフェイスの性能により異なる
- Macの場合は「Audio MIDI 設定」で現在の設定を確認可能
ナイキストの定理 (標本化定理)
- 情報理論分野における重要な定理
- 原信号に含まれる最大周波数成分をfとすると2fよりも高い周波数fsで標本化した信号は、低域通過(ローパス)フィルターで高域成分を除去することによって原信号を完全に復元することができる
- つまり、復元したい周波数の上限の2倍のサンプリング周波数でサンプリングすることで、完全に元の音声を再現できることができる
- CDのサンプリング周波数は、44,100Hzに設定されている。これは人間の耳が20Hzから20,000Hzまでしか聞くことができないという性質から導きだされている
サンプリング周波数の1/2以上の周波数の波形は再現できない (wikipediaより)
Max/MSPでサンプリング&プレイバック
ディスクベース v.s. メモリベース
- ディスクベースのサンプリング
- ハードディクス上のサウンドデータを直接再生
- プログラミングが楽←→自由度が低い
- 長時間のサウンドもへっちゃら
- メモリベースのサンプリング
- ハードディスク上のサウンドデータをメインメモリに読み込んでから再生する
- 自由度が高い←→プログラミングが大変
- 長時間のサウンドを扱うとメモリを大量に消費してしまう
ディスクベースのサンプリング・プレイバック
- sfrecord~
- ハードディスクへサウンドを録音する
- 第1引数はチャンネル数
- sfplay~
- ハードディスクからサウンドを再生する
- 第1引数はチャンネル数
サウンドファイルの再生
- sfplay~ サウンドファイルを再生する
- メッセージ “open” を入力すると、サウンドファイル選択画面に
- トグルボタンで、start / stop
- “speed 値” で再生スピードを変化させられる
サウンドファイルへ録音
- sfrecord~ サウンドファイルを録音しファイルに保存
- 録音に際しては、手順が重要
- sfrecrod~に”open”を入れて、サウンドファイルを保存
- “adc~” をonにすると録音準備状態になる
- トグルスイッチをonにすると録音が開始する
メモリベースのサンプリング
- メインメモリ上に指定した容量の容器を用意する必要がある
- “buffer~” オブジェクトがこの容器の相当する
- buffer~
- サンプリングのためのバッファーを確保するためのオブジェクト
- buffer~ [バッファー名] [バッファーサイズ] [チャンネル数]
- 下の例の場合
- バッファー名:mybuf
- サイズ:10000ms
- チャンネル数:2
“buffer~” に録音 (サンプリング) する
- record~ オブジェクトを使用する
- record~ バッファー名
- 例:オーディオ入力を mybuf という名前のバッファーに録音する
“buffer~” に録音したサンプルの中身を表示する
- waveform~ オブジェクトを使用する
- 「set バッファー名」というメッセージを入れると内容を表示する
- buffer~ に「read」というメッセージを入れるとオーディオファイルを読み込んでメモリに取り込むことができる
- buffer~, recod~, waveform~ を組合せることで、リアルタイムに録音した音をメモリに保存し、その内容を波形として確認することができる
メモリーベースのプレイバック
- groove~を利用すると、高度なプレイバックが実現できる
- 再生範囲の指定、スピード、ループ など
メモリーベースのプレイバック:応用
- 2つの buffer~ を並列して使用
- buffer~ の名前に注意 (同じ名前は使ってはいけない)
- 再生位置をランダムに変化させる
- sah~ と組合せる
- sah~:サンプル&ホールド:一定の間隔に信号を切り刻んで変化させる装置
フィルタと組み合わせる
来週までの課題
Fine Collection of Curious Sound Objectsを参考に、録音、再生、音響合成を使用して、簡単なインタラクションによって、音を発生する「楽器 (ソフトウェア版)」を作成する。
サンプルファイルのダウンロード
解説で触れた全てのファイルはダウンロード可能です。以下のリンクからダウンロードしてください。