| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как определить уровень звука в данный момент? |
| Автор: Pakshin A. S. 5.11.2004, 22:53 | ||
| Единственное, что удалось найти это компонент на Дельфи (с исходным кодом) на http://www.torry.net/mixer.htm компонент называется Vumeter v.1.0. Я его не разбирал, но похоже что он опрашивает Audio Mixer Driver (или что-то подобное). Автор ответа: Vit -------------------------------------------------------------------------------- Я построил диограмму так: Назначил F:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead ); Затем считал заголовок Wav- SampleCount, SamplesPerSec, BitsPerSample, Channeles. Затем считал данные- GetMem(buf, SampleCount * Channeles * BitsPerSample); Описал массив Volume- SetLength(Volume, SampleCount); Затем - F.Read(buf^, SampleCount*2); F.Free; Затем заполнил массив -
Затем строил график(в экранных координатах) - по горизонтальной оси откладывал значения SampleCount, по вертикальной значения Volume[h]. График получается точно такой же как в SoundForge. Единственно, я писал программу для конкретного случая - у меня файлы по 10 минут, моно, 11025 Гц., 16 бит. Так что программа у меня не универсальная. Но работает нормально. По времени: обработка файла и построение графика около 4 -5 секунд. Автор ответа: TPavel |