CGプログラミング演習
8 SoundFlower のインストールとセットアップ方法

Processing で音を取り扱うにあたって、非常に便利な SoundFlower のインストールとセットアップ方法を説明します。
SoudeFlower を利用することにより、マシンからの出力音をすべて、Processing で利用可能になります。

1 SoundFlower について

  • SoundFlower を用いれば、さまざまな外部アプリケーションと Processing を連携させることができます。
    • [iTunes]→[SoundFlower]→[Processing + Minim]
    • [Max/MSP]→[SoundFlower]→[Processing + Minim]
    • [SuperCollider]→[SoundFlower]→[Processing + Minim]
    • [Chuck]→[SoundFlower]→[Processing + Minim]
      ...
  • どのようなアプリケーションであれ、マシンから音声を出力するアプリケーションすべてが対象です。

2 SoundFlower のインストールとセットアップ方法

手順 1

SoundFlower 配布元ウェブサイトから最新版の dmg をダウンロードする

手順 2

  • インストール後「システム環境設定」の中の「サウンド」項目を選択し「出力」を「SoundFlower (2ch)」に設定する。

手順 3

  • 「システム環境設定」を変更すると、マシンから音が出なくなります。
  • この時点でもまだマシンから音が出ている場合は設定が反映されていない可能性があるので、もう一度再起動してください。
  • 音を出すには、「アプリケーション」フォルダの中にインストールされた「SoundFlowerbed」を起動し、出力先として「Built-in Output」を選択します。

手順 4

  • つづいて、「SoundFlowerbed」のメニュー項目から「Audio Setup」を選択します。
  • すると、Audio MIDI 設定ウインドウが開くので「オーディオ装置」タブの中の「デフォルトの入力」を「SoundFlower (2ch)」とします。
  • これで設定完了です。

3 動作テスト

  • それでは、実際にマシンの音声出力が、Processing に接続されているかどうかを確かめてみましょう。
  • 動作テスト用にサンプルプログラムを作成してみました。
  • このサンプルプログラムは、プログラム起動直後から録音を開始し、プログラム終了時に録音を終了します。
  • プログラムを終了したら、プロジェクトフォルダの内容を確認してみてください。
  • プロジェクトフォルダに「myrecording.wav」が保存されており、マシンの出力音声が録音されていれば成功です。

プログラム起動時に録音を開始し、キーボードの「s」を押すと録音内容がファイルに保存される。

import ddf.minim.*;

Minim minim;
AudioInput in;
AudioRecorder recorder;

// 事前準備
void setup()
{
  size(512, 200);

  // mini を準備する
  minim = new Minim(this);

  // 入力源を定める
  // *通常は、マイク入力となるが、SoundFlower を用いると、マシンからの出力音を入力源となる
  in = minim.getLineIn(Minim.STEREO, 512);

  // minim によるレコーダーの生成
  recorder = minim.createRecorder(in, "myrecording.wav", true);

  // 録音の開始
  recorder.beginRecord();
}

// 描画内容の定義
void draw()
{
  // 背景色を黒に設定
  background(0);

  // 線の色を白に設定
  stroke(255);

  // ステレオ入力の内容を描画
  for (int i = 0; i < in.left.size()-1; i++)
  {
    line(i, 50 + in.left.get(i) * 50, i + 1, 50 + in.left.get(i+1) * 50);
    line(i, 150 + in.right.get(i) * 50, i + 1, 150 + in.right.get(i+1) * 50);
  }
}

// キーボードが押されたときの処理
void keyReleased()
{
  // s を押すと、録音したファイルが保存される
  if ( key == 's' )
  {
    // 録音を終了する
    recorder.endRecord();
    
    // 録音内容をファイルに保存する
    recorder.save();
    println("Done saving.");
  }
}

// 描画を終了した際に行う処理内容を定義
void stop()
{
  // 入力源の処理を終了する
  in.close();

  // minim を終了する
  minim.stop();

  // アプリケーション全体を終了する
  super.stop();
}

4 SoundFlower との連携後に行うこと

  • SoundFlower との連携を終えたら、設定をもとに戻します。
  • これをしないと、その後 Skype による通話などを行う際に、内蔵マイクが利用できなません。
  • ただし、設定次第で、Skype の通話内容などをそのまま録音することも可能です。

元に戻す手順 1

  • システム環境設定」の「サウンド」項目を選択し、「入力」タブ/「出力」タブの内容をそれぞれ下記のように元に戻します。

元に戻す手順 2

  • SoundFlowerbed のメニュー項目を「Built-in output」から「None (OFF)」に戻します。

元に戻す手順 3

  • SoundFlowerbed のメニュー項目から「Audio Setup...」を選択し、Audio MIDI 設定ウインドウが開くので「オーディオ装置」タブの中の選択項目を下記画面のように元に戻します。