C SInt32 整数を [-1, 1] の範囲の float に変換し、元に戻すことができる必要があります。24 ビット整数に関するこの質問の議論を見てきました。
C/C++ - 24 ビット符号付き整数を float に変換する
そして、私は似たようなことを試しました:
// Convert int - float
SInt32 integer = 1;
Float32 factor = 1;
Float32 f = integer / (0x7FFFFFF + 0.5);
// Perform some processing on the float
Process(f);
// Scale the float
f = f * factor;
// Convert float - int
integer = f * (0x7FFFFFF + 0.5);
ただし、これは機能しません。私が行っている作業にはオーディオプログラミングが含まれており、変換によってシューという音が発生するため、機能しないことはわかっています。
係数を 0.0001 に設定してフロートを小さくするとパチパチ音が消えるため、変換の問題であると確信しています。おそらく、逆変換によってintが制限外になり、切り捨てられている可能性があります。
アドバイスをいただければ幸いです。