SND13 - siMonitorSource セレクタ (98 年 4 月 12 日)
Q: siMonitorAvailable および siMonitorSource セレクタはどのようにして使ったらよいのでしょうか。
A: これらのセレクタはサウンド出力コンポーネントで使用するもので、ユーザが聞こえるソースを選択して、それをデフォルトの録音用ソースとします。このセレクタはサウンド出力コンポーネントだけで使用するものなので、このためにサウンドチャネルを使用する必要はありません。
siMonitorAvailable セレクタは、siOSTypeInputAvailable 同様、SoundInfoList を返します。これは short と Handle の構造体です。このハンドルにはモニタ可能な入力ソースの
OSTypes の配列が含まれます。SoundInfoList 構造体の操作方法の詳細については、「Q&A
SND12」を参照してください。
サウンド出力コンポーネントを探し、siMonitorSource および siMonitorAvailable セレクタを使用する方法を示す、サンプルコードを以下に掲載します。
#include <Sound.h>
#include <Errors.h>
#include <Memory.h>
// 使用可能なモニタソースを取得し、それぞれの名前を調べ、
// どのソースがアクティブか調べ、さまざまなソースを設定する
// 簡単なアプリケーション
void main(void) {
NumVersionVariant smVersion;
ComponentResult err;
OSType source;
SoundInfoList monitorList;
Component device;
ComponentDescription looking;
smVersion.parts = SndSoundManagerVersion();
// SoundComponentGet/SetInfo 関数は、Sound Manager 3.1 以降でのみ利用可能。
// System 7.5 以降で動作していることがわかっている場合は、
// SM バージョンのチェックは省略可能。
if (smVersion.whole >= 0x03100000) {
looking.componentType = kSoundOutputDeviceType;
looking.componentSubType = 0;
looking.componentManufacturer = kAppleManufacturer;
looking.componentFlags = 0;
looking.componentFlagsMask = 0;
device = FindNextComponent (0, &looking);
// 使用可能なモニタソースのリストを取得する方法を以下に示す
// (モニタソースがサポートされているかも調べる)
// その結果、各ソースの OSTypes のリストが得られる
// (あとでハンドルの破棄を忘れないように)
err = GetSoundOutputInfo(device, siMonitorAvailable, &monitorList);
if (err != noErr) // モニタソースがサポートされていないため、自分で行う。
goto Exit;
DisposeHandle(monitorList.infoHandle); // 返されたハンドルを破棄するのを忘れないこと
// どのソースがモニタされているのかを調べる
GetSoundOutputInfo(device, siMonitorSource, &source);
// CD をモニタソースとして設定する (すでに存在する場合。err <> noErr だと存在しない)
err = SetSoundOutputInfo(device, siMonitorSource, (void *)kCDSource);
// 再度モニタソースを調べ、上の設定が機能したか確認する。
err = GetSoundOutputInfo(device, siMonitorSource, &source);
}
Exit:
return;
}
セレクタは Universal Headers 3.1 以降で、次のように定義されています。
siMonitorAvailable = FOUR_CHAR_CODE('mnav'),
siMonitorSource = FOUR_CHAR_CODE('mons'),
-- Mark Cookson
devsupport@apple.com
[ Technical Q&A's : Graphics & Media : QuickTime : Sound : SND13 ]
|