Soundflowerの複数バス化改造

Macで音声を扱う際に定番となっている Soundflower というフリーウェアがあります。これはMac内に仮想の音声バスを作成し、アプリ同士やオーディオ・インターフェースを繋ぎ込む際のベースとなるものです。

Twitpic

Soundflower
http://cycling74.com/products/soundflower/

インストールすると Soundflower 2ch と Soundflower 16ch (最新バージョンでは64ch) という2種類の仮想バスが追加されます。Soundflower はアプリではなくOSのkext(カーネル拡張)として組み込まれますので仮想バスは常時稼働しています。これをどう使うかはルーティングを行うアプリや、やりたい事によるのですが、ちょっと使い込むと仮想バスが2つでは足りない事例が出て来ます。

この記事は Soundflower の仮想バスを3つ以上に増設する為の改造方法を説明するものです。

この記事の短縮URLは、http://bit.ly/10GxeHS

このジャンルのソフトには、音声ルーティングを行う Jack OSX や Audio Hijack Pro や Wiretap Anywhere などがありますが、Soundflower はルーティングを行うのでなく、あくまで「仮想バス」を作り出すソフトです。当然 Mac OS X 上からも音声デバイスとして見えますので、システム音声の入出力先として指定する事ができます。

Jack OSX
http://www.jackosx.com/
Audio Hijack Pro
http://www.rogueamoeba.com/audiohijackpro/
Wiretap Anywhere
http://www.ambrosiasw.com/utilities/wta/

2ch/16ch(64ch) の2つの仮想バスがあるので、工夫をすれば大抵の用途はカバー出来ますが、アプリによっては 16ch(64ch) 側の仮想バスが使用できない場合があったり、複数のアプリで別々に仮想バスを使いたい場合などはカバー出来ない場合が出て来ます。

具体的には Google+ の Hangout では音声デバイスとして 16ch(64ch) 側の仮想バスを使用することができません。画面上は選べますが機能はしません。このため Hangout の音声をルーティングし、自分の声をミックスしてUstに流すなどを、Mac内で完結させることができません。(この種の配信をしている人は外部ミキサーを使用しています)

2ch 側の仮想バスは使用できますので、Soundflower 2ch が複数あればいいのですが、残念ながら1つしかありません。そこでこの改造 Tips が必要になってくるのです。

注:この Tips は Soundflower 本体を改造します。操作を間違えると Soundflower が機能しなくなるのでご注意ください。

手順0. 準備;改造版 info.plist を作成する。
Soundflower の本体である Soundflower.kext 内にある設定ファイル Info.plist (XMLファイル) を取り出して加工します。既に改造済のファイルを手に入れて差し替える方法でも改造はできます。(改造済 Info.plist は記事の最後にリンクがあります)

加工もしくは差し替えをすべき info.plist ファイルの場所
/System/Library/Extensions/Soundflower.kext/Contents/Info.plist

編集で増殖すべき箇所は以下の AudioEngines array 内の 31行目<dict>から72行目</dict> までの範囲です。

Twitpic

AudioEngines の array 内の2ch設定をコピーし Description を Soundflower (2ch-02) などとします。
必要な数だけ設定をコピーする。並び順も記述順そのままになる。
ディフォルト設定との絡みもあるので、元々の 2ch 16ch の設定はそのままに下に 2ch-02 以降を足す方が安全。

手順1. kext をアンロードする
ターミナル.app を開いて以下のコマンドを実行します。実行には管理者権限のパスワードが必要になります。
このコマンドで OS に組み込まれている Soundflower が停止されます。
sudo kextunload /System/Library/Extensions/Soundflower.kext

手順2. info.plist を差し替える。
Finder上で /System/Library/Extensions/ に移動します。
Finderのメニュー「移動」>「フォルダに移動」>フォルダの場所に移動欄に/System/Library/Extensions/ と入力し「移動」ボタンを押す。

Soundflower.kext を右クリックし「パッケージの内容を表示」する
Contents フォルダ配下に改造した info.plist を上書きコピー

手順3. ファイルの属性を変更する。
ターミナル.app で以下のコマンドを実行します。実行には管理者権限のパスワードが必要になります。
このコマンドで差し替えたファイルをシステムが実行できるように変更します。
sudo chown root:wheel /System/Library/Extensions/Soundflower.kext/Contents/Info.plist
sudo chmod 644 /System/Library/Extensions/Soundflower.kext/Contents/Info.plist
※上記コマンドをダブルクリックで実行するスクリプトは記事の最後にリンクがあります。

手順4. kext をロードする。
ターミナル.app で以下のコマンドを実行します。実行には管理者権限のパスワードが必要になります。
このコマンドで Soundflower をOSに組み込みます。
sudo kextload /System/Library/Extensions/Soundflower.kext
※上記コマンドを含むダブルクリックで実行するスクリプトは記事の最後にリンクがあります。

手順5. カーネルキャッシュをクリアする
ターミナル.app で以下のコマンドを実行します。実行には管理者権限のパスワードが必要になります。
このコマンドで再起動しても改造したバージョンが使用できるようになります。逆にカーネルキャッシュをクリアしないままなら、再起動でデフォルトの設定に戻せます(ただし Info.plist は改造版のままで残っています)。
sudo kextcache -system-caches
※上記コマンドを含むダブルクリックで実行するスクリプトは記事の最後にリンクがあります。

3+1バス改造の例(Multimodx3型)

Twitpic

この並びはオリジナルの仮想バスと互換がないため、環境を戻すとアプリ等の設定が大きくズレる可能性があります。 一方 Multimodx3plus 型にすると Soundflower (2ch) と Soundflower (16ch/64ch) の名前と並び順に互換性があるため、環境を戻してもその部分は保持されます。

9+1バス改造の例(Multimodx9型)

Twitpic

10バスタイプはあまり需要はありませんが複数の Skype アプリを立ち上げて(要改造)音声をミックスするような使い方が可能になります。

Google Hangout での使用例(入力に2ch-02、出力に2ch-03を配置)

Twitpic

この設定だけでは不十分ですが、LineIn などのルーティング アプリや AU Lab などの Mixerを併用することで、完全に Mac内で完結して音声の加工制御が可能になります。

付録 :改造版 Info.plist +コマンドスクリプト

ダウンロードURL:(Google Drive)
http://bit.ly/UDhaR1

Soundflower 各バージョン向けの改造版 Info.plist の詰め合わせセットです。
上記の手順のターミナルコマンドをダブルクリックで実行するスクリプトファイルも付属します。
※あくまで自己責任で改造は行ってください。ファイルやスクリプトの実行により環境が壊れても当方では一切責任は取れません。
※ Soundflower が動作しなくなった場合は、Soundflower 付属の Uninstall Soundflower.scpt(アプリケーションフォルダ内の Soundflower フォルダに有るはずです)でアンインストール後、再度インストールを行ってください。

バリエーションは・・・
・Soundflower のバージョン(1.6.2か1.6.6bか)
・2ch仮想バスの数
・仮想バスの名前をオリジナルと互換性を持たせるか持たせないか
・マルチチャンネルバスが64chの場合16chにするか64chのままか
で分かれています。
ver.1.6.4以降のバージョンは1.6.6b用で互換性はあると思います(たぶん)

内容
SoundflowerMODSet.zip(圧縮アーカイブファイル)
SoundflowerMODSet(展開したフォルダ)

┣1.6.2(Soundflower ver.1.6.2用)
┃ ┣16chOriginal(2ch + 16ch オリジナル)
┃ ┃ ┗Info.plist
┃ ┣Multimodx3(2ch x3 + 16ch 並び順互換無し)
┃ ┃ ┗Info.plist
┃ ┣Multimodx3plus(2ch x3 +16ch 並び順互換有り)
┃ ┃ ┗Info.plist
┃ ┣Multimodx9(2ch x9 + 16ch 並び順互換無し)
┃ ┃ ┗Info.plist
┃ ┗Multimodx9plus(2ch x9 + 16ch 並び順互換有り)
┃   ┗Info.plist

┣1.6.6b(Soundflower ver.1.6.6b用)
┃ ┣16chMod(2ch + 16ch 改造)
┃ ┃ ┗Info.plist
┃ ┣16chModx3plus(2ch x3 +16ch 並び順互換有り)
┃ ┃ ┗Info.plist
┃ ┣16chModx9plus(2ch x9 + 16ch 並び順互換有り)
┃ ┃ ┗Info.plist
┃ ┣64chModx3plus(2ch x3 +64ch 並び順互換有り)
┃ ┃ ┗Info.plist
┃ ┣64chModx9plus(2ch x9 + 64ch 並び順互換有り)
┃ ┃ ┗Info.plist
┃ ┗64chOriginal(2ch + 64ch オリジナル)
┃   ┗Info.plist

┗Command
__┣kext-install.command(差し替えた Info.plist をインストールする)
__┣Permission-Change.command(パーミションの書き換えのみ行う)
__┗Reload-kext.command(kext をアンロード後にリロードする)

トラックバックURL: http://meteor.blog.avis.jp/archives/229/trackback

“Soundflowerの複数バス化改造”への トラックバック ( No )

“Soundflowerの複数バス化改造”への コメント ( 2 )

  1. caitさんの コメント

    細かな記述、本当にありがとうございます。おかげさまでうまくいきました。

  2. しゆうさんの コメント

    ずっとこの方法で使わせていただいていたのですが、どうもYosemiteでできなくなってしまったようです…
    今のところ術はないのでしょうか…?

コメント

(必須)

(必須)
(メールアドレスは公開されません)