ちょっと書くのも憚られるぐらいのポカミスなんだけど、昨日の記事でバレてしまっているので書くけど..。
16bitのデータをbyte列に変換するところでミスをやっていた。
昨日のコード
1 2 3 4 5 6 7 8 |
for(int i = 0; i < idata.Length; i++) { byte[] dd = BitConverter.GetBytes(idata[i]); b_out[i] = dd[0]; b_out[i + 1] = dd[1]; b_out[i + 2] = dd[0]; b_out[i + 3] = dd[1]; } |
これだと、b_outの一番目以降は上書きされてしまう。 これじゃまともな音にはならない。
で、修正
1 2 3 4 5 6 7 8 |
for (int i = 0; i < idata.Length; i++) { var dd = BitConverter.GetBytes(idata[i]); b_out[i * 4] = dd[0]; b_out[i * 4 + 1] = dd[1]; b_out[i * 4 + 2] = dd[0]; b_out[i * 4 + 3] = dd[1]; } |
これで正常に再生できるようになった。
で、SDRのハードウエアを繋いでやってみたけど、ラジオNIKKEIは受信できず。 そこで、1kHzで変調をかけた信号源を繋げてみたら、見事に受信できた。 パチパチパチパチ..。
一応、AMの復調まではできたけど、まだまだ課題は多い。
先は、長いなぁ..。