人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.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");
}



●質問者: aki_720
●カテゴリ:コンピュータ
✍キーワード:CASE switch WAV データ ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● T-pon
●60ポイント

提示されたコードだと全データの順番がひっくり返ることにはならないと思います。すなわち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;

}

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ