WASAPIのテスト





Delphi6でWASAPIを使ってWaveサウンドを再生させてみました。

WASAPIの排他モードで動きます。
完全ロスレスです。データは24bitで送信しているので、
24bitのwavサウンドはボリュームを落とせません。(ビットが欠けるため)
16bitのwavサウンドは、8bitの範囲でボリュームが可変できます。

浮動小数点などは使っていないので、出力の「デジタルデータ」の品質は、生データの品質を保っています。
(ボリュームを落とすと、DACのSNなどで劣化するとは思いますが。)

ヘッダがなかったのでちょっと大変でしたが、一応できました。

サポートするつもりはほとんどないので、私の環境で動けばいいかな?
くらいなのですが、公開してみます。

ファイルは読み込まれるとメモリにすべて読み出され、
メモリから再生されます。
filetypesman-x64などで、wavファイルをこのプログラムで開くようにすると
(openなどを上書きせずにopen2などのコマンドを作ってデフォルトにしたほうが後々よいです)
このプログラムでWavファイルを再生することができます。

対応しているのは、wavサウンド(16bit,24bit)のみ。

対応デバイスは、2ch, ビット長(32bitまたは24bit), 有効ビット24bit, レイテンシ200ms。
もう少し手を加えればいろいろ対応できるとは思うのですが・・・。


ソースコード(いろいろ無いのでこのままでは動きません)

2017.11.02
一部のページのファイルが破損する出来事がありました。
不正アクセスや、改ざんとは少し違いますが、念のため実行可能ファイルは
削除します。

ご迷惑をおかけします。

使ってみられる方は、まず、メインメニューの「開く」でファイルが正常に再生されるかどうか
試してみるといいと思います。再生されないようならopenの設定をしても開けません。

排他モードを使いますので、排他モードを使うチェックを入れておいてください。



WASAPIでIAudioClientをInitializeするときにひっかかったのが
WAVEFORMATEXTENSIBLE構造体のcbSizeの値です。

sizeof(WAVEFORMATEXTENSIBLE)にすると失敗するデバイスがあります。
22とかいう数字にしないといけません。

PlayPCMWinのソースを読んでわかりましたが、普通は気づかないですね。




戻る
inserted by FC2 system