yoppa.org


Software and Bio Art Workshop 2009

Max/MSP入門1:サンプリング&プレイバック

授業スライド

スライドをダウンロード (PDF形式)

サンプルファイル

授業で説明したファイルは下記からダウンロードしてください

今日の内容

  • Max/MSPを駆け足でマスターする!
    • 基本的な使いかた
      • ロック、アンロック、プレゼンテーションモード
      • オブジェクトの種類
      • オブジェクトの接続
    • 音を出してみる
      • 音量の調節
      • 音を混ぜる
      • エンベロープ
    • サンプリング・プレイバック
      • ディスクベース
      • メモリベース

Max/MSP基本的な使いかた

  • “MaxMSP.app”を起動
    • “MaxMSP Runtime.app” ではないRuntimeは既にできあがったプログラム(パッチ)の実行専用
    • Runtimeはフリーでダウンロードできる

  • Max/MSP基本構成
    • Maxウィンドウ
      • 処理結果やエラーなどのテキスト情報を表示

  • Patcherウィンドウ
    • ここにプログラムを作成する

  • Patcherウィンドウの画面をダブルクリックする
    • オブジェクトパレットが表示される
    • 分野別に整理された「道具箱」のようなもの

  • パーツを組合せて、下記のパッチを組んでみる

  • オブジェクト
    • MaxMSPを構成する、パーツのブロックをオブジェクトと呼ぶ
    • オブジェクトの入出力はインレット、アウトレットと呼ばれる
      • インレット:オブジェクトの上部にあるコネクター
        • オブジェクトへの入力を意味する
      • アウトレット:オブジェクトの下部にあるコネクター
        • オブジェクトへの出力を意味する
      • インレットとアウトレットの数はオブジェクトによって異なる

  • 基本的なオブジェクト
    • オブジェクトボックス:汎用的オブジェクト
    • メッセージ:数字、文字列、bangなどを出力
    • ボタン:クリックでbangを出力
    • トグルボタン:ON/OFFを切り替える
    • ナンバーボックス (int 整数)
    • ナンバーボックス (float 浮動点少数)

  • GUIパーツ:様々なインタフェイスになる

  • ケーブルの色の違いに注意
    • 黒いケーブルはひとつの値 (数値、メッセージ)
    • 縞々のケーブルは、シグナル (連続する大量の数値)

  • パラメータを変化させられるように改造する
    • スピーカーを”dac~”に変更
    • ボリュームの調整を”*~”に

  • 音量の調整には “ ~ “を使う
    • “ ~ “が付くオブジェクトは全てシグナルの処理に関係する
      • cycle~など
    • ~” は、シグナルの全ての値に一定の数をかけ算する
    • 音量の調整と同じ意味となる

  • 波形を表示してみる
    • scope~オブジェクトを追加
    • 周波数や音量を変化させて、音と波形を観察

  • 音量の時間的変化 (エンベロープ)
    • function と line~ を組み合わせて実現できる

  • 周波数 (音程) をキーボードから入力できるようにしてみる
    • mtof:MIDIのノートナンバーを周波数に変換する

  • プレゼンテーションモード
    • あらかじめ決めておいたパーツのみを表示
    • 配置やサイズも調整可能
    • さっきのパッチの必要部分だけを抜き出してプレゼンテーションモードとして配置してみる

サンプリング&プレイバック

  • サンプリング&プレイバックとは
    • オーディAZオ信号をデジタル・レコーディングして、再生すること
    • サンプリング
      • アナログ信号をデジタル信号に→AD変換
    • プレイバック
      • デジタル信号をアナログ信号に→DA変換
  • コンピュータで音響を処理する際の情報の流れ

  • サンプリングレート:時間軸の分割
  • 量子化ビット数:振幅の分割

  • ディスクベースのサンプリング
    • ハードディクス上のサウンドデータを直接再生
    • プログラミングが楽←→自由度が低い
    • 長時間のサウンドもへっちゃら
  • メモリベースのサンプリング
    • ハードディスク上のサウンドデータをメインメモリに読み込んでから再生する
    • 自由度が高い←→プログラミングが大変
    • 長時間のサウンドを扱うとメモリを大量に消費してしまう

ディスクベースのサンプリング・プレイバック

  • sfrecord~
    • ハードディスクへサウンドを録音する
    • 第1引数はチャンネル数
  • sfplay~
    • ハードディスクからサウンドを再生する
    • 第1引数はチャンネル数
    • gateオブジェクトを使ってループ再生を実現している
  • サウンドファイルの再生
    • 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~を利用すると、高度なプレイバックが実現できる
    • 再生範囲の指定、スピード、ループ など

  • メモリーベースのプレイバック:応用1
    • 2つの buffer~ を並列して使用
    • buffer~ の名前に注意 (同じ名前は使ってはいけない)

  • メモリーベースのプレイバック:応用2
    • 再生位置をランダムに変化させる

  • メモリーベースのプレイバック:応用3
    • sah~ と組合せる
      • sah~:サンプル&ホールド
      • 一定の間隔に信号を切り刻んで変化させる装置

  • メモリーベースのプレイバック:応用4
    • フィルタと組み合わせる
    • filtergraph~ : 様々なフィルタをグラフィカルに操作できる