MacBSの日常生活的日記

MuteConのCore Audio対応を検討中

先日、やっとLeopard対応をした拙作のフリーソフト「MuteCon
ですが、今までずっとQuickTime関連のAPIを使って音の制御を
していました。

別にそれ自体は古くてOS互換がない、とかいうことはないのですが、
MuteCon自体、iMacなどで現状、ひとつ問題を抱えてるんですよね。

それは内蔵音源を使っていて、ヘッドホン端子にスピーカーが
つないであるケースです。

そうすると、最近のMac OS Xのバージョンでは起動時のところまで
何故か内蔵スピーカーから音が出て、OSの起動が終わってから
ヘッドホン端子に切り替わる、という変な(?)ことをやってくれてます。

内蔵スピーカーとヘッドホンでは独立して音量やミュートの設定が
できるようになっていて、その影響でヘッドホン端子に何か挿して
あると、内蔵スピーカーのミュートをMuteCon側から制御できないんです。

これはOS上でも同じで、端子を抜くと、内蔵スピーカーの設定が
できるようになります。

そこで、もしかしたらCore AudioのFrameWorkを使えば、それも
制御できるのでは?と、色々と試行錯誤しています。

とりあえず、現状までの機能をCoreAudioに移植するところまでは
できたのですが、やはり内蔵スピーカーはデバイスとしては
見えません。

まぁ本来、同じ「内蔵音源」であるわけですから、デバイスは同じ
ですよねぇ。
チャンネルが違うのか?と思ったら、それも違うようで、違うのは
ソースのようです。

ただ、ソースは違うものの、やはりヘッドホンを挿している時は
「Audio MIDI設定」でも内蔵スピーカーの設定はできません。(^^;

うーん、これ、一体どういうことをやってるんでしょうねぇ。
どなたか、Core Audioに詳しい方がいらしたら、ぜひ教えてくださいませ。

おそらく、AudioDeviceGetPropertyInfo()あたりでkAudioDeviceProperty
DataSourcesとかを見て、ごちゃごちゃ、やるんだろうなぁ。(^^;

色々と試行錯誤してみて、もしうまくいったら、MuteConをアップデート
して、対応したいと思います。

モバイルバージョンを終了