А теперь посмотрите на сэмплы что выдаются на звуковуху. +16755 и сразу -25347.Конечно будет шуметь. Выходные сэмплы должны быть в точности как и входные, только 16 бит и в прямом коде.
Старший байт b3 и это очевидно. Его не нужно использовать в формуле расчета вообще, так как переходя с 24бит на 16 мы полюбому жертвуем динамическим диапазоном, и лучше нам его ограничить сверху.
#cpp
If (byte3=255 | byte3=0)
If (byte3=255)Sound := byte2*256 + byte1 - 65536 ;
Else Sound := byte2*256 + byte1 ; нормальная работа
Else
If byte3>=127 Sound := -32767 ; Наступило ограничение вследствие
Else Sound := 32768 ; выхода за пределы 16бит диапазона
Извините за мои Ся, кодим как могЁм