Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
Speaker [7]
Аудио [51]
Видео [11]
Джойстик [2]
Запись звука [5]
Микрофон [3]

Наш опрос
Какие компоненты добавлять больше?
Всего ответов: 49

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Мультимедиа » Аудио

Как определить уровень звука в данный момент

Я построил диограмму так:
Назначил 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;
Затем заполнил массив -

buf16 := buf;
for h := 0 to SampleCount - 1 do
begin
Volume[h] := abs(buf16^);
inc(buf16);
end;
FreeMem(buf);

Затем строил график(в экранных координатах) - по горизонтальной оси откладывал значения SampleCount, по вертикальной значения Volume[h].

График получается точно такой же как в SoundForge.

Единственно, я писал программу для конкретного случая - у меня файлы по 10 минут, моно, 11025 Гц., 16 бит. Так что программа у меня не универсальная. Но работает нормально. По времени: обработка файла и построение графика около 4 -5 секунд.

Категория: Аудио | Добавил: Skinner (07.07.2008)
Просмотров: 404 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz