Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

wavein   Найти похожие ветки 

 
race1   (2005-12-23 15:14) [0]

Я записываю звук через ф-ии wavein... Всё записывается нормально, но при прослушивании того что записалось слышны щелчки и прочие неприятные артефакты. Это при том, что во время записи никаких щелчков небыло.

В качестве буфера я использую буфер под 5 секунд wav данных стерео и 16 бит (882000 байт). Щелчки наблюдаются не в местах где заполненный буфер передаётся мне в программу, и я его копирую себе (т.е. в 5, 10, 15 и т.д. сек), а по всей длине записанного файла. Если делать буфер под одну секнду, тоже есть щелчки.

Я уже придумал делать два буфера - когда приходит один, на устройство посылаем другой. Не помогает.


procedure waveInProc(hwi: HWaveIn; uMsg: Cardinal; dwInstance, dwParam1, dwParam2: DWORD);
begin
if (uMsg <> WIM_DATA) or (dwParam1 = 0) then Exit;

Inc(FCurBuf);
if FCurBuf = 2 then FCurBuf := 1;

WaveInAddBuffer(FWaveIn, @FBufHdrs[FCurBuf], SizeOf(TWaveHdr));

// FBufLen := 882000
// FWAVMem: TMemoryStream
// FWAMMem.Size := FBufLen
FWAVMem.Write(PWaveHdr(dwParam1)^.lpData^, PWaveHdr(dwParam1)^.dwBytesRecorded);
end;


 
programania ©   (2005-12-24 23:12) [1]

Может разные параметры источника и приемника?
лучше установить прием на 44100 16 2 а в wav преобразовать как надо
Вот похожий пример записи с одного из входов "Запись" в файл wav
http://programania.com/sv.zip  3кб
там еще показывает звук на экране
но щелчки и прочие неприятные артефакты я не слышу хотя пишется в 1 буфер


 
race1   (2005-12-25 06:47) [2]

Я как раз за основу взял ваш пример :)

А что значит "лучше установить прием на 44100 16 2 а в wav преобразовать как надо"? Как это "как надо"?


 
programania ©   (2005-12-25 22:59) [3]

>А что значит "лучше установить прием на 44100 16 2
Это значит как сейчас в примере в const и процедуре Start

>а в wav преобразовать как надо"? Как это "как надо"?
Если важно качество то лучше как в примере ничего не преобразовывать
иначе например для микрофона хватит 11025 гц 8 бит 1 канал
для этого поменять в iniWav и перед выводом в wav преобразовать
массив отсчетов mz взять каждый 8-ой, поделить на 256 и записать в массив shortInt



Страницы: 1 вся ветка

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
2-1146666776
De
2006-05-03 18:32
2006.05.21
Деструктор в DLL есть?


2-1146557123
49 Cent
2006-05-02 12:05
2006.05.21
Можно ли изменить угол для Timage?


2-1146036331
valdemot
2006-04-26 11:25
2006.05.21
компилятор


3-1143451965
Физик
2006-03-27 13:32
2006.05.21
Как правильно соединяться с базой данных под Personal Oracle?


15-1145530800
Александр Б.
2006-04-20 15:00
2006.05.21
отладчик + bpl