2017-02-03 4 views
2

OfflineAudioContext.startRendering()は、選択したビット深度(16ビットまたは24ビット)を含むAudioBufferを出力できますか?私はAudioContext.sampleRateで出力のサンプルレートを簡単に設定できることを知っていますが、どのようにビット深度を設定しますか?特定のビット深度でのレンダリング方法は?

オーディオ処理についての私の理解はかなり制限されているので、おそらくそれは私が思うほど簡単ではありません。

編集#1:あなたは、出力のサンプルレートを設定する方法についてのアイデアを持っている場合、それはあまりにも素晴らしいことだので

は実際には、AudioContext.sampleRateは、読み取り専用です。

編集#2:

私はサンプルレートが(DataViewで)エンコードされたWAVのチャンネル数の後に挿入されていると思います

答えて

1

WebAudioのみ動作するのであなたは、直接これを行うことはできません浮動小数点値を使用します。あなたはこれを自分で行う必要があります。基本的には、オフライン・コンテキストからの出力を取り出し、すべてのサンプルに32768(16ビット)または8388608(24ビット)を掛けて整数に丸めます。これは、コンテキストからの出力が-1から1の範囲内にあることを前提としています。そうでない場合、追加のスケーリングを行う必要があります。最後に、最終結果を32768(8388608)で除算して浮動小数点数を戻したい場合があります。それは最終的なアプリケーションが何であるかによって異なります。

+0

ありがとう、ありがとう。だから私は 'audioBuffer.getChannelData(0 | 1)'の各値に32768か8388608のいずれかを掛け合わせて、それで最終的な.wavファイルは対応するビット深度になりますか?そして、なぜ私は32768または8388608で最終結果を分割する必要があるのか​​分からない...私は初期値を取り戻すだけではないのだろうか? – maximedupre

+0

まず、OfflineAudioContextを作成するときに、サンプルレートを指定する必要があります。 –

+0

現在、AudioBufferからWAVファイルを作成するWebAudioはサポートされていません。あなたはそれをするためにいくつかの図書館を見つける必要があります。 (または、自分でやることを学びます.WAVファイルは非常にシンプルです) –

関連する問題