二つのwaveファイルを合成するには?


 2008-03-04 00:15:58  No: 30020  IP: 192.*.*.*

いろいろと探したのですが資料が見つからず悩んでおります。

やりたいことは音声ファイルの重ね合わせです。
複数の音声を同時に鳴らす方法は見つかるのですが…
鳴らした音を録音するのではなく、データ的に処理して出力したいのです。
どなたかご存じありませんでしょうか?
よろしくお願いします。

編集 削除
うんと  2008-03-04 02:13:24  No: 30021  IP: 192.*.*.*

>データ的に処理して出力したいのです。

で、一つの音声ファイルでできて、二つでできない理由は?

編集 削除
もにゃ  2008-03-04 09:29:30  No: 30022  IP: 192.*.*.*

うーん。
おそらくwaveファイルを展開して、
ゴリゴリ合成していくしか道はないと思います。
win32apiレベルでは実装されてませんね。

>で、一つの音声ファイルでできて、二つでできない理由は?
二つではなく、n個の処理まで拡張すると省エネかな?
合成音を特殊なソフトなしで配布可能とか。
まぁすでに存在してますが。

編集 削除
 2008-03-04 10:24:31  No: 30023  IP: 192.*.*.*

失礼しました。説明不足ですね。
出力というのはファイルへの書き出しということです。
A.wavとB.wavの音声を重ねてC.wavに出力したいと考えています。
AなりBなりのデータをC.wavに追記していくことは出来そうなのですが、AとBの音声の重ね方がわかりません…
資料になりそうなサイトなどあればいいのですが。

編集 削除
nyr  2008-03-11 18:19:07  No: 30024  IP: 192.*.*.*

要は波形データなんだから、ガツガツ足していけばいいんじゃないでしょうか…
という方針の下、http://www.kk.iij4u.or.jp/~kondo/wave/  あたりを参考にしてみると、
Bit数を読んで、dataフラグを検索、dataフラグの後ろをBit数の分だけ読む。
そんでもって2つの値を合成して書き出せばいいんじゃないかと思いますが、どうでしょう?
試したことないですけど。

編集 削除
Mr.XRAY  URL  2008-03-11 22:40:07  No: 30025  IP: 192.*.*.*

音声,つまり,波形というのは,周波数分解できます.
これを,例えば周波数特性といいます.
いろいろな周波数が合成されてできているんですね.
オーディオ機器のカタログにも周波数特性が記載されています.
音声処理は通常この周波数空間で行います.
数学的には,数式で簡単なのですが,コンピュータで処理する場合は,
デジタルなので,それなりのアルゴリズムがあります.

音声処理,自己相関関数,線形予測法などの語句で調べてみてください.

編集 削除
Mr.XRAY  URL  2008-03-11 22:49:36  No: 30026  IP: 192.*.*.*

もののついでで,音声は1次元の周波数空間ですが,
私が関係する医療関係は画像なので,2次元の周波数空間を扱います.
したがって,処理にえらい時間がかかるんです.そこでいろいろなアル
ゴリズムが開発,研究されています.

画像の,例えば,ひとつのScanLineを考えると,その濃淡の変化を波形として
扱うわけですね.

編集 削除
うんと  2008-03-11 23:44:56  No: 30027  IP: 192.*.*.*

それはフーリエ展開のことを言ってるんでしょうけど、今回の質問に何の関連があるのですか?
nyr さんの言われるとおり、ただ足して出力するだけだと思います。

編集 削除
Mr.XRAY  URL  2008-03-12 00:21:18  No: 30028  IP: 192.*.*.*

>nyr さんの言われるとおり、ただ足して出力するだけだと思います。

ありっ!? それは大変失礼しました.
波形を扱うのは,みんなそうだと信じていました  (^_^;)

編集 削除
無関係  2008-03-12 18:17:37  No: 30029  IP: 192.*.*.*

> それはフーリエ展開のことを言ってるんでしょうけど、今回の質問に何
> の関連があるのですか?
> ただ足して出力するだけだと思います。

↓ 足して出力するだけ。
http://www.geocities.co.jp/AnimalPark-Shiro/1620/ft/1.html

編集 削除
Mr.XRAY  URL  2008-03-14 08:23:16  No: 30030  IP: 192.*.*.*

そういえば,DirectSoundというAPIがあるようです.
これも時間軸の振幅を足すだけかな? (笑)

編集 削除
通りすがり  2008-03-14 09:16:38  No: 30031  IP: 192.*.*.*

「SoundEngine」などの波形編集ソフトなどでも同様ですが
元データ(.wavファイル)からコーデックを元にメモリー上に
展開して、その後波形データとしてからでないと単に足すだけでは
ダメだと思いますが・・・
(.wavには非圧縮やコンテナ形式でADPCM、MP3など各種の形式が入ります)

編集 削除
通りすがり  2008-03-14 09:45:16  No: 30032  IP: 192.*.*.*

ついでに、参考になるかな...

Windowsサウンドプログラミング—音の知識×プログラミングの知識 (単行本)  田辺 義和 (著) 

VC++がサンプルですが、Windows/APIなどを使っているのでいいかも・・・

編集 削除