PC内で鳴っているあらゆる音のレベル?を取得したいのですが、いい方法が見つかりません。
音量ミキサーを開いたときのスピーカーの欄に、音量を変更するバーがありますよね。そのバーの中に音のレベルに合わせて上下する灰色と緑のものがありますが、その値を取得したいです。
音のレベルと言っていいのかわかないので検索しようもなく、調べても現在のマスター音量を取得するものくらいしか見つかりません。
何か方法はありますでしょうか?
windows7
VC++2010
C言語
PC内の音をプログラムで取得する方法
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PC内の音をプログラムで取得する方法
たぶん、仮想ドライバを作らないと出来ないかもしれません。
PC出力の音を録音するソフトやステレオミキサーのソフトなどもドライバですので。
PC出力の音を録音するソフトやステレオミキサーのソフトなどもドライバですので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: PC内の音をプログラムで取得する方法
そうですか…。softya(ソフト屋) さんが書きました:たぶん、仮想ドライバを作らないと出来ないかもしれません。
どうやらwindowsのドライバ開発キットはVCの有償版にしか対応していないようで、お金のない私にはドライバの開発が行えないようです。
他の方法があるのかもしれませんが、そこまでして作りたいわけでは無いのであきらめます。
Dango San
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PC内の音をプログラムで取得する方法
まぁ、ドライバは難しいと思うので無理して挑戦することはないです。
WDFと言うフレームワークは楽になっているらしいですが、ドライバ自体を私はやったことがありません。
とりあえず、やってみたい人向けに情報だけ載せておきます。一応無料出来るはずです。
「Windowsデバイスドライバ開発入門 - 人とか機械とか」
http://seashowwww.hatenablog.jp/entry/2 ... 1268399521
デバッグ途中ではブルースクリーンとか色々危険な目に合うと思うので、仮想PC上でドライバのデバッグをやるべきかと思う次第です。
サウンド系の仮想ドライバがユーザーモードで動くなら、この危険はありませんがサウンドドライバを書いたことがないのでこれまた不明です。
WDFと言うフレームワークは楽になっているらしいですが、ドライバ自体を私はやったことがありません。
とりあえず、やってみたい人向けに情報だけ載せておきます。一応無料出来るはずです。
「Windowsデバイスドライバ開発入門 - 人とか機械とか」
http://seashowwww.hatenablog.jp/entry/2 ... 1268399521
デバッグ途中ではブルースクリーンとか色々危険な目に合うと思うので、仮想PC上でドライバのデバッグをやるべきかと思う次第です。
サウンド系の仮想ドライバがユーザーモードで動くなら、この危険はありませんがサウンドドライバを書いたことがないのでこれまた不明です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: PC内の音をプログラムで取得する方法
windows7なら,録音デバイスのステレオミキサーを有効にしてから,
waveIn系のAPIを使えばそれっぽいことができるかもしれないです.
waveIn系のAPIを使えばそれっぽいことができるかもしれないです.
Re: PC内の音をプログラムで取得する方法
wavein系のAPIでPCMのデータを受け取ることまではできました。
しかし、そのPCMのデータのどこの部分が波形として表示させるべき場所でしょうか?
データはchar型ですが数値として取る場所がわかりません
今は携帯の投稿なので詳しく書けませんが、どうぞよろしくお願いします
しかし、そのPCMのデータのどこの部分が波形として表示させるべき場所でしょうか?
データはchar型ですが数値として取る場所がわかりません
今は携帯の投稿なので詳しく書けませんが、どうぞよろしくお願いします
Dango San
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PC内の音をプログラムで取得する方法
waveInは使ったことが無いですが、ただのPCMなのでベタでバッファに格納されているはずです。
ステレオかモノラルか、8bitか16bitかはwaveInOpenの時にご自身で指定されているはずですが。
※ char型のバッファからwaveInOpenのパラメータに応じて自分で1バイトづつとりだしてください。
ステレオかモノラルか、8bitか16bitかはwaveInOpenの時にご自身で指定されているはずですが。
※ char型のバッファからwaveInOpenのパラメータに応じて自分で1バイトづつとりだしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PC内の音をプログラムで取得する方法
PCMが16bitの場合は1バイトづつじゃなく、shortにキャストした方が良いんですが大丈夫ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。