2016-06-26 19 views
0

私が知っているPCMデータファイルが有効です。私はそれを演奏したり、断片的に編集したりすることができ、それは常に個々の作品と同様に再生されます。PCMデータを視覚化する方法

しかし、私はバイト

bytes[i] | (bytes[i+1] << 8) 

からショートパンツの中にそれを翻訳しようとすると、ファイルは16ビット、シングルチャネルおよび44100サンプリングがあります。私は、波のように見えるものは視覚的に見ません。

私は、消音器の中で、私は中央に1つの非常に大きな音で録音しました。それでも私が摂取したチャートは、他のすべてのチャートと同じように見えました。私はどういうわけかこれを間違っていますか?または私が読んでいる/試していることを誤解している?

私が探しているのは、単語の隙間を見つけるための閾値が非常に低いことです。

おかげ

+0

サンプルPCMファイルを共有します。 – selbie

+0

@selbieはおそらく正しいでしょう。もう少しコードを表示し、実行しているプラ​​ットフォームを説明し、PCMファイルについてもう少し詳しく教えてください(wav、aiffなど) –

答えて

2

私の霊魂力は、これがbig-endian vs little-endianものであることを示唆しています。ビッグエンディアンでソースファイルが格納されたサンプルの場合

、これはあなたが何をしたいそうです:それは価値がある何のため

(bytes[i] << 8) | (bytes[i+1]) 

、WAVファイルは、リトルエンディアンです。

他の可能性が含まれます:

私はあなたのコードが表示されませんが、多分あなたのコードは、すべてのループの繰り返しで1の代わりに、2 iによってが増加しています。 (自分のコードでよく起こった間違いです)。

署名されたタイプまたはキャスト。符号付きの場合と符号なしの場合のビット操作の方法を明示してください。 "バイト"が "unsigned char"または "char"の配列であるかどうかはわかりません。また、「char」の既定値が符号付きまたは符号なしになっているとは限りません。これは良いかもしれません:

unsigned char b1 = (unsigned char)(bytes[i]); 
unsigned char b2 = (unsigned char)(bytes[i+1]); 
short sample = (short)((b1 << 8) | (b2)); 
+0

ありがとうございます@selbie。あなたはそれが大きな問題ではなかったということは間違いありませんでした。 –

+0

助けに私の精神的な力を使用してうれしいです。私の能力は、あなたが答えを受け入れ、それに緑色のチェックボックスを付ける未来を示しています。 :) – selbie

関連する問題