wav ファイルからウェーブを出力しようとしていますが、サンプルの長さをどのようにすればよいかわかりません。
これは私がアーカイブしたいものです(色なし):
したがって、データを読み取るために、次のコードを使用します。
// first we need to read our wav file, so we can get our info:
byte[] wav = File.ReadAllBytes(filename);
// then we are going to get our file's info
info.NumChannnels = wav[22];
info.SampleRate = bytesToInt(wav[24], wav[25]);
// nr of samples is the length - the 44 bytes that where needed for the offset
int samples = (wav.Length - 44) / 2;
// if there are 2 channels, we need to devide the nr of sample in 2
if (info.NumChannnels == 2) samples /= 2;
// create the array
leftChannel = new List<float>();
if (info.NumChannnels == 2) rightChannel = new List<float>();
else rightChannel = null;
int pos = 44; // start of data chunk
for (int i = 0; i < samples; i++) {
leftChannel.Add(bytesToFloat(wav[pos], wav[pos + 1]));
pos += 2;
if (info.NumChannnels == 2) {
rightChannel.Add(bytesToFloat(wav[pos], wav[pos + 1]));
pos += 2;
}
}
BytesToFloat = 2 バイトを -1 から 1 の間の float に変換します
これでデータのリストが 2 つになりましたが、1 行を作成するために何個の数値を取得すればよいのでしょうか?
私を最も混乱させているのは、曲を再生すると、ほとんどの音楽プレーヤーで次のデータが表示されることです。これは、私の目には 1 つのサンプルの表現です。
しかし、これらのバーのそれぞれの値と、サンプルに含まれるバーの数をどのように知ることができますか?