説明が必要かどうかはわかりませんが、軽く解説しておきます。
音がおかしくなる理由は「1かたまりの大きさが違う」からです。
たとえば2サンプルの音データがあるとして(短すぎとか言わない)
本来は
PCM[0]=32768
PCM[1]=36768
になっていないといけないのに
パソコンから送った時点では
PCM[0]=-2147446880
になっています(※具体的な数は「エンディアン」によって違います)
ここで「なんで2サンプルなのに1要素なんだよ(バコッ」というツッコみをします。
最初に「1かたまりの大きさが違う」と言ったのがここで出てきますね。
プチコンの整数型変数は大きさが32bitですが音データは1サンプル16bitですよね。
32/16 = 2
「1要素に2サンプルはいるから詰め込んじゃえ」ということになっています。
ビット演算によって詰め込まれているので
32768<<16 OR 36768 = -2147446880
ということでパソコンから送ったデータの数の正体が分かりました。
つづく