Soundflowerの構成をカスタマイズしてみる – LadioCast開発記その28

in LadioCast
2007-12-06-1.png

おなじみSoundflowerはLadioCastで音声配信を行う際に大変役立つソフトウェアで、簡単にいうと仮想的な出力デバイスと入力デバイスとの対を作り結線してループバックラインを用意してくれるものですね。
デフォルトの構成では2chライン1本と16chライン1本の構成ですが、プロパティファイル /System/Library/Extensions/Soundflower.kext/Contents/Info.plist に変更を加えることでカスタマイズできるようです。ここでは試しに2chラインのみ3本の構成にしてみます。区別するためにデバイス名の後ろにA,B,Cと加えることにしましょう。
変更は難しくありませんが参考のためファイルの変更内容を最後に付けます。形式がdiffコマンドによるファイル差分出力ですので悪しからず。実際の変更には、ユーザーrootが所有者である同ファイルに対しての書き込み権限が必要です。ファイルは念のためバックアップをとっておきましょう。
変更が済んだ後Macを再起動します。意図どおりの構成に変っていれば成功です。
(画像は以上のカスタマイズをした後のシステム環境設定 – サウンド – 出力のスクリーンショットと、作成された全てをLadioCastの入力デバイスに選択してみた様子です。)

2007-12-06-2.png

ファイル/System/Library/Extensions/Soundflower.kext/Contents/Info.plist差分

35c35
< 					<string>Soundflower (2ch)</string>
---
> 					<string>Soundflower (2ch) A</string>
74c74
< 					<string>Soundflower (16ch)</string>
---
> 					<string>Soundflower (2ch) B</string>
91c91
< 							<integer>16</integer>
---
> 							<integer>2</integer>
108a109,147
> 				<dict>
> 					<key>BlockSize</key>
> 					<integer>8192</integer>
> 					<key>Description</key>
> 					<string>Soundflower (2ch) C</string>
> 					<key>Formats</key>
> 					<array>
> 						<dict>
> 							<key>IOAudioStreamAlignment</key>
> 							<integer>1</integer>
> 							<key>IOAudioStreamBitDepth</key>
> 							<integer>32</integer>
> 							<key>IOAudioStreamBitWidth</key>
> 							<integer>32</integer>
> 							<key>IOAudioStreamByteOrder</key>
> 							<integer>0</integer>
> 							<key>IOAudioStreamDriverTag</key>
> 							<integer>0</integer>
> 							<key>IOAudioStreamIsMixable</key>
> 							<integer>1</integer>
> 							<key>IOAudioStreamNumChannels</key>
> 							<integer>2</integer>
> 							<key>IOAudioStreamNumericRepresentation</key>
> 							<integer>1936289396</integer>
> 							<key>IOAudioStreamSampleFormat</key>
> 							<integer>1819304813</integer>
> 						</dict>
> 					</array>
> 					<key>NumBlocks</key>
> 					<integer>2</integer>
> 					<key>NumStreams</key>
> 					<integer>1</integer>
> 					<key>SampleRates</key>
> 					<array>
> 						<integer>44100</integer>
> 						<integer>48000</integer>
> 						<integer>96000</integer>
> 					</array>
> 				</dict>

さらに念のため変更後のファイル全体もアップロードしておきました。Info.plist

7 Responses to “Soundflowerの構成をカスタマイズしてみる – LadioCast開発記その28”

  1. かわうそさんこんばんは。
    私は OSX10.5 を使っていますが、どうもこの方法を実行しても、システム環境設定のサウンドにA,B,Cの3つのラインが出てきません。
    この方法は OSX10.4 までしか対応していないのでしょうか?
    もちろんSoundflowerは1.2.1にしておきました。
    もしかすると、Info.plistを上書きしたのが問題だったのでしょうか?

  2. かわうそ

    犀さんこんな奥地までようこそ^^!
    Soundflower 1.2.1がチャンネルを構成しているのはOSのバージョンにかかわらずこのファイルに依っているはずですので、後は見てうまいこと追加・変更してあげるということになりますね。前提知識無くとも見ればなんとなくわかります。
    変更後の再起動は必須です。

  3. かわうそさんこんにちは。
    「ユーザーrootが所有者である同ファイルに対しての書き込み権限が必要です」と書かれていますが、実際にはどうすればよいのでしょうか?
    私は Property List Editor で info.plist を変更して上書き保存をしたところ、 You do not have appropriate access privileges. とエラーが出ました。
    そこで、一旦デスクトップ上に保存して、Contents フォルダ上にドラッグして認証して上書きしました。
    再起動をしますが、リンゴマークが回転したままで起動できません。
    アクセス権に問題があるんでしょうが、途方に暮れてます・・・(-_-)

  4. かわうそ

    犀さんこんにちは!
    その後回復・起動できましたか? できない場合はMacの様々ある起動方法を調べて、当該ファイルを元に戻す等して通常起動できるまでにまずなることが先決ですね。
    上書きの方法自体はそれでよかったと思います。
    root(スーパーユーザ)のaccess privilegesで当該ファイルを開くには、例えばTerminalアプリケーションで
    sudo open /System/Library/Extensions/Soundflower.kext/Contents/Info.plist
    と実行したり、その他様々なやり方が考えられます。
    いずれにしてもこの記事はSoundflowerのハックについての話でしたので、またいろいろ知識をつけた上で挑戦してみて下さい。
    ではでは。

  5. トマト

    はじめまして。MacでUSTREAM放送する方法を調べているうちにこちらのブログに辿り着きました。
    Soundflowerのラインを増やしたいと考え、Info.plistの内容を書き換えてみたのですが何も反映されません。
    現在のバージョンでは無理なのでしょうか?
    もしよろしければヒントを教えて頂けたら幸いです。

  6. kawauso

    トマトさんこんにちは!
    改めて今のOS X 10.8でやってみると単純なファイル書き換えだけではうまくいかなくなっていますね。
    セキュリティー強化のようです。
    書き換え後手動でSoundflowerカーネル拡張モジュールを再ロードして(kextunload,kextload)、カーネル拡張情報のキャッシュを更新(kextcache)すれば反映されて定着するようです。
    この手順について改めてブログのエントリーを書きたいと思います。
    ではでは。

  7. トマト

    ご回答ありがとうございました。
    手順についての記事を期待して待っています。
    よろしくお願いいたします。

Leave a Reply to トマト

Click here to cancel reply.

*