2

今日は興味深い質問があります。

いくつかのポケモン オーディオ ファイルを 8 ビット サンプル(0 ~ 255 の値)のリストに変換する必要があります。これらのサウンドを再生する必要がある MC6800 チップセットでアセンブリ ルーチンを作成しています。関数が呼び出されたときにプログラムがループする 8 ビット サンプルの配列を含める予定です。

オーディオ ファイル (wav/mp3) をコンマ区切りの 8 ビット テキスト サンプル値のリストに変換する方法を知っている人はいますか? または、この相対的な方法の何か?

よろしくお願いします!

4

4 に答える 4

4

コマンドラインの「sox」ツールまたは Audacity オーディオ エディタを使用して、ファイルを生の未署名の 8 ビット モノラル オーディオ ファイルに変換できます。

Audacity 1.3 以降では、オーディオを開き、[エクスポート] を選択し、形式として [Wave、AIFF、およびその他の非圧縮タイプ] を選択し、[オプション...] をクリックして、[形式] で [その他...] を選択し、[RAW] を選択します。ヘッダーには、符号化として符号付き 8 ビット PCM を使用します。(申し訳ありませんが、無署名は利用できません。)

コマンド ラインから、1 チャネルの場合は -c 1、ヘッダーなしの場合は -t raw、符号なし線形の場合は -u、サンプルあたり 1 バイトの場合は -1 を指定して sox を試します。

次に、「hexdump」などのツールを使用して、ファイルのバイトを数値としてダンプし、コードに貼り付けることができます。

于 2009-12-07T21:41:21.927 に答える
0

soxにない場合は、それを使用して raw (ヘッダーなし) ファイルを生成し、raw ファイルを自分でコンマ区切りに変換する必要があります。

編集: sox には、Web ページからの形式の 1 つとして「生のテキスト データ」があります。最初のパスでサウンド ファイルを符号なし 8 ビット リニア サンプルに変換し、このオプションを出力に使用して、必要な出力を正確に得ることができます。

于 2009-12-07T21:38:24.713 に答える
0

.wav の場合、これは非常に単純なプロセスです。.wav 仕様は、Google 検索で簡単に見つけることができます。これは、ヘッダーと単に生のサンプルで構成されます。最初にヘッダーを読み取ってから、すべてのサンプルをループする必要があります。通常は 16 ビットのサンプルなので、-32768 ~ 32767 の範囲から 0 ~ 255 の範囲に正規化する必要があります。最初は単純なスケーリングをお勧めします。それがうまくいかない場合は、サンプルの中から実際の最小値と最大値を見つけて、それに応じてスケールを調整してください。

于 2009-12-07T21:39:13.177 に答える
0

多くはオーディオ形式に依存します。たとえば、ウェーブ形式は、圧縮されていないインターリーブされた PCM データで構成されます。

つまり、8 ビットのステレオ ファイルの場合、各サンプルは次のように配置されます。

[左サンプル 1][右サンプル 1][左サンプル 2][右サンプル 2]...[左サンプル n][右サンプル n].

つまり、各 8 ビット ステレオ サンプルは 2 バイトに格納されます。左チャンネル用に 1 つ、右チャンネル用に 1 つ。これは、サウンド ハードウェアが必要とする可能性が最も高いデータ形式です。

16 ビットまたは 24 ビットのオーディオ ファイルはそれぞれの方法で機能しますが、左右のサンプルはそれぞれ 2 バイトまたは 3 バイトになります。

明らかに、wave ファイルには大量の extyra 情報が含まれています。RIFF形式に従います。それに関する情報と、www.wotsit.org などの場所で使用される "チャンク" ウェーブ ファイルを見つけることができます。

MP3 の解凍はより複雑です。デコンプレッサを手に入れて、MP3 でエンコードされたオーディオで実行するのが最善です。ITは反対側から上記のようにPCMデータを吐き出します。

于 2009-12-07T21:41:13.660 に答える