Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2010, 04:24   #1
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
Лампочка Выравнивание громкости в BASS

Всем доброго времени суток!

Пишу DSP процедуру для басс которая будет выравнивать громкость звука... Но никак не могу добиться нужного результата... Может кто может что подсказать или посоветовать?

Вот сама процедура:
Код:
type
  PSample = ^TSample;
  TSample = record
   data: Single;
  end;

//  ... 

procedure AutoVolume(DSPHandle: HDSP; Channel: DWORD; Buffer: PSample; Length: DWORD; var User: DWORD); stdcall; export;
var
  i: Cardinal;
  L, R: PSample;
begin
  try
    if (Channel = 0) or (Length = 0) then
    Exit;

    i := 0;
    L := buffer;
    R := buffer;
    Inc(R);

    while (i < Length) do
    begin
      L.data := L.data * VolLev;
      R.data := R.data * VolLev;

      Inc(L, 2);
      Inc(R, 2);
      Inc(i, SizeOf(Single) * 2);
    end;
  except
    ;
  end;
end;
Во общем множитель VolLev изменяю в зависимости от уровня пик спектра... Если пики выше указанного уровня, уменьшаю множитель, ниже - увеличиваю... Но вот когда получил значения этих пик через BASS_ChannelGetData, изменил переменную VolLev, а ведь сама DSP процедура вызывается в зависимости от размера буфера... И получается значение уменьшили, а сам звук пока еще стоит на месте... И получается что громкость то падает, то увеличивается... Как то это не правильно...

Подскажите как можно определить уровень громкости всего участка Buffer чтобы задать VolLev такое значение которое будет оптимальным... То есть если уровень громкости участка Buffer сильно большой - уменьшить, а если сильно маленький - увеличить...

Или может быть есть какой-то другой способ добиться нужного результата?
SalasAndriy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Усилитель громкости) TwiX Мультимедиа в Delphi 19 08.04.2010 19:58
Регулятор громкости DeeKei Мультимедиа в Delphi 3 31.03.2010 17:33
Индикатор громкости Air Компоненты Delphi 11 19.07.2008 19:13
регулятор громкости KillbrumX Помощь студентам 2 03.02.2008 18:32
Изменение громкости mutabor Win Api 2 04.08.2007 01:12