Вверх ↑
Ответов: 8978
Рейтинг: 825
#1: 2007-09-27 09:55:50 ЛС | профиль | цитата
Dilma, спасибо за подсказку; я не уверен в правильности, но вот какие изменения внёс в компонент

hiBASS_Record.pas
......
строка 126 WaveHdr.dwBytesPerSec := 24*c*f div 8; //Заменил 16 на 24
строка 127 WaveHdr.wBitsPerSample := 24;

строка 142 rh := BASS_RecordStart(f,c,256,@RecordCallback, cardinal(self)); //заменил 0 на 256, (согласно API данные звука представляются 4-х байтными числами с плавающей запятой)

*************************************
Надо ли менять размерность массива на [0..7] ? в разделе
type

строка 71 cWavFmt: array[0..3] of Char;

*************************************
В результате на выходе получаю поток из 4-х байтных чисел (single) в диапазоне +-1,0000

Читаю поток в IC так:
......
var
_Left,_Right:single;

leng := len div 8;
for i := 1 to leng do
begin
St.Read(_Left,4);St.Read(_Right,4);
......
При проигрывании МР3 файла на выходе получаю значения в диапазоне +-0,15 хотя ранее при 16-битной звуковой карте в этом файле значения были в диапазоне +-24000, да и на слух все звуковые файлы стали гораздо тише (что, впрочем, не плохо )

Для обратного преобразования в BASS есть метод SampleTo24Bit Method (Single), но я его пока не использовал.
карма: 19

0