.wav形式のサウンドファイルを読み込み,その音データの順番を反転させるプログラムを組みたいのですが逆再生のままになってしまいます。

なにがいけないのか,修正していただけるでしょうか?

switch (BitsPerSample) {
case 16:
for (i=0; i<nData/2; i++) {
tmp = buf16m[i];
buf16m[i] = buf16m[i+1];
buf16m[i+1] = tmp;
}
break;
case 8:
for (i=0; i<nData/2; i++) {
tmp = buf8m[i];
buf8m[i] = buf8m[i+1];
buf8m[i+1] = tmp;
}
break;
default:
printf("Error!\ n");
}

回答の条件
  • 1人2回まで
  • 登録:2006/12/24 10:43:14
  • 終了:2006/12/31 10:45:02

回答(1件)

id:T-pon No.1

T-pon回答回数424ベストアンサー獲得回数42006/12/24 10:58:19

ポイント60pt

提示されたコードだと全データの順番がひっくり返ることにはならないと思います。すなわちa-b-c-d-e-...-zのデータがz-y-x-...-aとなるわけではありません。

ではどう働くかというと、まず1-2-3-4-5-...-10と並んだデータがあるとします。

i=1のforループで、2-1-3-4-5-...-10となります。

i=2のforループで、2-3-1-4-5-...-10となります。

i=3のforループで、2-3-4-1-5-...-10となります。

以下同じで、頭のデータが後ろへ移動してゆくだけで、全体としてはひっくり返りません。

for (i=0; i<nData/2; i++) {</p>

tmp = buf8m[i];

buf8m[i] = buf8m[nData-(i+1)];

buf8m[nData-(i+1)] = tmp;

}

でよいのではないでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません