いろいろと探したのですが資料が見つからず悩んでおります。
やりたいことは音声ファイルの重ね合わせです。
複数の音声を同時に鳴らす方法は見つかるのですが…
鳴らした音を録音するのではなく、データ的に処理して出力したいのです。
どなたかご存じありませんでしょうか?
よろしくお願いします。
>データ的に処理して出力したいのです。
で、一つの音声ファイルでできて、二つでできない理由は?
うーん。
おそらくwaveファイルを展開して、
ゴリゴリ合成していくしか道はないと思います。
win32apiレベルでは実装されてませんね。
>で、一つの音声ファイルでできて、二つでできない理由は?
二つではなく、n個の処理まで拡張すると省エネかな?
合成音を特殊なソフトなしで配布可能とか。
まぁすでに存在してますが。
失礼しました。説明不足ですね。
出力というのはファイルへの書き出しということです。
A.wavとB.wavの音声を重ねてC.wavに出力したいと考えています。
AなりBなりのデータをC.wavに追記していくことは出来そうなのですが、AとBの音声の重ね方がわかりません…
資料になりそうなサイトなどあればいいのですが。
要は波形データなんだから、ガツガツ足していけばいいんじゃないでしょうか…
という方針の下、http://www.kk.iij4u.or.jp/~kondo/wave/ あたりを参考にしてみると、
Bit数を読んで、dataフラグを検索、dataフラグの後ろをBit数の分だけ読む。
そんでもって2つの値を合成して書き出せばいいんじゃないかと思いますが、どうでしょう?
試したことないですけど。
音声,つまり,波形というのは,周波数分解できます.
これを,例えば周波数特性といいます.
いろいろな周波数が合成されてできているんですね.
オーディオ機器のカタログにも周波数特性が記載されています.
音声処理は通常この周波数空間で行います.
数学的には,数式で簡単なのですが,コンピュータで処理する場合は,
デジタルなので,それなりのアルゴリズムがあります.
音声処理,自己相関関数,線形予測法などの語句で調べてみてください.
もののついでで,音声は1次元の周波数空間ですが,
私が関係する医療関係は画像なので,2次元の周波数空間を扱います.
したがって,処理にえらい時間がかかるんです.そこでいろいろなアル
ゴリズムが開発,研究されています.
画像の,例えば,ひとつのScanLineを考えると,その濃淡の変化を波形として
扱うわけですね.
それはフーリエ展開のことを言ってるんでしょうけど、今回の質問に何の関連があるのですか?
nyr さんの言われるとおり、ただ足して出力するだけだと思います。
>nyr さんの言われるとおり、ただ足して出力するだけだと思います。
ありっ!? それは大変失礼しました.
波形を扱うのは,みんなそうだと信じていました (^_^;)
> それはフーリエ展開のことを言ってるんでしょうけど、今回の質問に何
> の関連があるのですか?
> ただ足して出力するだけだと思います。
↓ 足して出力するだけ。
http://www.geocities.co.jp/AnimalPark-Shiro/1620/ft/1.html
そういえば,DirectSoundというAPIがあるようです.
これも時間軸の振幅を足すだけかな? (笑)
「SoundEngine」などの波形編集ソフトなどでも同様ですが
元データ(.wavファイル)からコーデックを元にメモリー上に
展開して、その後波形データとしてからでないと単に足すだけでは
ダメだと思いますが・・・
(.wavには非圧縮やコンテナ形式でADPCM、MP3など各種の形式が入ります)
ついでに、参考になるかな...
Windowsサウンドプログラミング—音の知識×プログラミングの知識 (単行本) 田辺 義和 (著)
VC++がサンプルですが、Windows/APIなどを使っているのでいいかも・・・
ツイート | ![]() |