Обыскал весь форум в поисках сабжа, подскажите хоть один простой примерчик как отобразить в своей программе уровень звука на входе звуковой карты?
считаный буфер из waveIn уже у меня.
Здравствуйте, crazzypolman, Вы писали:
C>Спасибо за ответ, но алгоритмов я уже насмотрелся, а вот с реализацией никак, и что-то про быстрое преобразование Фурье для вычисления мощности сигнала я видел, но реализаций (примеров попроще) нет вообще нигде, странно — неужели никто таким не занимается и все используют сторонние ActiveX компоненты?
Зачем тебе преобразование фурье для определения уровня звука??
Пики можно считать не только как пики, можно подсчитывать среднеквадратическое значение сигнала (RMS).
Самый простой вариант:
OldPeak:=OldPeak * FadingCoeff;
NewPeak:=GetPeakFromWave(buffer:TArrayOfSomething);
if NewPeak > OldPeak then OldPeak:=NewPeak;
DisplayPeak(OldPeak);
Как подсчитать среднеквадратическое значение сигнала:
Val:=0;
for i:=0 to WindowSize-1 do
Val:=buffer[Offset+i] * buffer[Offset+i];
RMS:=Sqrt( Val / WindowSize);
Естественно это только пример, а значение надо считать инкриментально.
Здравствуйте, Dimonka, Вы писали:
D>Зачем тебе преобразование фурье для определения уровня звука??
D>Пики можно считать не только как пики, можно подсчитывать среднеквадратическое значение сигнала (RMS).
D>Самый простой вариант:
D>D>OldPeak:=OldPeak * FadingCoeff;
D>NewPeak:=GetPeakFromWave(buffer:TArrayOfSomething);
D>if NewPeak > OldPeak then OldPeak:=NewPeak;
D>DisplayPeak(OldPeak);
D>
D>Как подсчитать среднеквадратическое значение сигнала:
D>D>Val:=0;
D>for i:=0 to WindowSize-1 do
D> Val:=buffer[Offset+i] * buffer[Offset+i];
D>RMS:=Sqrt( Val / WindowSize);
D>
D>Естественно это только пример, а значение надо считать инкриментально.
И правда — что это со мной — вроде электротехника была и простого не усмотрел, спасибо за пример, воспользуюсь. Очень доходчиво, чего только больная голова не выдумет

— это я про себя.