- PR -

ボリュームコントロールをソフトで制御する方法について

1
投稿者投稿内容
Bob
会議室デビュー日: 2004/09/27
投稿数: 15
投稿日時: 2005-03-22 21:45
お世話になります。

今、XPで音声を鳴らすたびに、SpeakerをOnにし、音声の再生が終わったら、SpeakerをOffにする必要がありますが、ソフト的に制御方法がご存知でしたら、教えていただきたいですが。

DirectXで再生等はできますが、ハードの制御は出来ますか?

以上、宜しくお願いいたします。
松竹梅
会議室デビュー日: 2002/12/26
投稿数: 6
投稿日時: 2005-03-23 20:53
 こんばんわっ♪

 やったことがないので、定かではないですが。。。
 ミキサあたりじゃないでしょうか。
mixerSetControlDetails() かなにかで制御できませんかねぇ。

 詳しくなくって、すみません。
Bob
会議室デビュー日: 2004/09/27
投稿数: 15
投稿日時: 2005-03-24 11:56
松竹梅 様

ご返事ありがとうございました。まさにMixerのことです。大変参考になりました。

ただ、C#から単純な数値を取得する場合、簡単にDLLImportで出来ますが、構造体そのものを取得するには、何かいい方法がありますか?

以上、宜しくお願いいたします。
松竹梅
会議室デビュー日: 2002/12/26
投稿数: 6
投稿日時: 2005-03-27 22:25
 遅くなりましてすみません。
 解決できましたか?
 私もそんなに詳しいわけでは無く、実際調べてみないとわからないので、具体的に
どの関数を使われるのか、教えていただけると何かのお役に立てるかもしれないです。
Bob
会議室デビュー日: 2004/09/27
投稿数: 15
投稿日時: 2005-03-28 14:57
レスありがとうございます。
とりあえず、C++でMixerアクセス用DLLを作成し、mixerOpen()→mixerGetControlDetails→mixerSetControlDetails(音量を最大に)→PlaySound→mixerSetControlDetails(音量を最小に)→mixerCloseの順にやれば、何とかできるようになりました。

ここで、PalySoundでは、ファイル名を渡すときに、C#ではunsafeにて、無理やりUnmagedCodeを組み込み、ポインタを渡しています。

ただ、PlaySoundでは*.wavファイルしか再生できず、他のフォーマットのものを再生するには、例えば*.auなど、どうすればよろしいでしょうか?

以上、宜しくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)