Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.11.2006, 01:12
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию Индикатор уровня звука.

Вот дошел наконец то до индикатора уровня звука.
Вот только незнаю даже с чего начать то..
Как это дело осуществляется??
Чтоб ProgressBar мне уровень звука показывал.
И причем не тормозил, а выводил без запозданий..
Мне надо не с линейного входа а когда воспроизвожу Mp3.

Мож библиотека спецовая есть?
Ответить с цитированием
  #2  
Старый 29.11.2006, 21:48
CyberM@D CyberM@D вне форума
Прохожий
 
Регистрация: 07.11.2006
Адрес: г.Санкт-Петербург
Сообщения: 31
Репутация: 10
Лампочка Есть компоненты!

Конечно есть - Mmtools называется. Правда триальные они, если программу запускаешь не из Дельфина, то ругается с требованием регистрации, но это не проблема - если подойдут тебе компоненты, то я без проблем помогу с лекарством :-)
Ответить с цитированием
  #3  
Старый 30.11.2006, 15:10
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

А с Bass-ом я могу ченть соорудить? Потому что я на нем плеер начал уже делать, точне сделал почти, осталось тока индикатор.
Ответить с цитированием
  #4  
Старый 30.11.2006, 15:48
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
По умолчанию

с басс можно.. ты не пробовал у них главную демку на сайте качать?

да и вообще что ты хочешь ? какой именно уровень звука?
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.
Ответить с цитированием
  #5  
Старый 30.11.2006, 23:49
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

Я не уровень хочу. А когда музыка звучит чтоб прогрессбары показывали уровень звука во время игры. (ну по простому, чтоб дергались под музыку 2 полоски). :d Блин посинел от такого описания аж.. :d
Я сгенерю файл в адобу аудишне, например частотой 2000 кгц. И уровнем 0 децибел. И вот буду на своем плеере воспроизводить и индикатор уровня должен тоже так же показывать 0 децибел, но градуировку сделать не сложно.
А вот как сообразить индикатор. Например в винампе не индикатор уровня и просто куча полосочек бегает, это все туфта, и показывают они непойми чего. Хотя называется это чудо Анализатор спектра частот.
Я сам электронщик и понимаю для чего это все надо.
Ответить с цитированием
  #6  
Старый 01.12.2006, 23:14
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

С индикатором разобрался но на половину. Он моно получился.
Стерео не получается. А кстати в этой библиотеке басс отлично работает анализатор спектра, показывает реальную частоту! Это радует!
Клево чел шарит в этом деле раз написал такой модуль!
Да и индикатор уровня получился точный!! Просто супер!
Вот тока с ДПС эффектами разобраться надо и эквалайзер ну никак не получается.. Копался я в исходниках копался но для начинающего это дебри, так и не докопался!
Вот так сделал просто попробовать, ничего не меняется но и ошибку не выдает.

Bass.BASS_FXSetParameters(Hand,@eqparam);
eqparam.fCenter := 3000; // частота
eqparam.fBandwidth := StrToInt(ED1.Text); //непонял для чего
eqparam.fGain := 15; // уровень частоты.
Bass.BASS_FXSetParameters(Hand,@eqparam);

Подскажите плиз.
Ответить с цитированием
  #7  
Старый 02.12.2006, 12:41
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Я делал так (выдержка из исходника):
Код:
const
  MAX_EQ = 11;
  eq: array[1..MAX_EQ] of integer = ( 80, 260, 440, 620, 800, 980, 1160, 1340, 1520, 1700, 1800 );

type
  PMyArray = ^TMyArray;
  TMyArray = array[1..MAX_EQ] of integer;

type
  TBassPlayer = class
  private
    Stream: HSTREAM;  // Указатель на текущий поток
    p: BASS_FXPARAMEQ;
    fx: PMyArray;
    ...

constructor TBassPlayer.Create;
begin
   BASS_Init( -1, 44100, 32, Handle, nil );
   BASS_Start;
end;

(* Загрузка файла *)
procedure TBassPlayer.LoadFile(f: string);
var
  i: byte;
begin
   Stream := BASS_StreamCreateFile( false, PChar( f ), 0, 0, 0 );
   New( fx );
   for i := 1 to MAX_EQ do
   begin
      fx^[i] := BASS_ChannelSetFX( Stream, BASS_FX_PARAMEQ, 1 );
      p.fCenter := eq[i];
      p.fGain := 0;
      p.fBandwidth := 36;
      BASS_FXSetParameters( fx^[i], @p );
   end;
end;

procedure TBassPlayer.SetEq(Num: byte; Val: integer);
begin
    // Val должен быть в пределах от -15 до 15
   if ( Num < 1 ) or ( Num > MAX_EQ ) then Exit;

   BASS_FXGetParameters( fx^[Num], @p );
   p.fgain := Val;
   BASS_FXSetParameters( fx^[Num], @p );
end;
Примерно так.

P.S.
Для версии библиотеки 2.3.

Последний раз редактировалось Decoding, 02.12.2006 в 12:51.
Ответить с цитированием
  #8  
Старый 02.12.2006, 13:15
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

Отлично!!
Кажись начинаю уже принцип понимать!
Это супер!!

Спасиб огромное!
Заработало!

Только вопросик.
Точно такие частоты?? 80, 260, 440, 620, 800, 980, 1160, 1340, 1520, 1700, 1800 ? или в конце 13 400, 15 200, 17 000, 18 000.
Или свой набор можно сделать? Или это фиксированный набор не больше 11??

Последний раз редактировалось Delphinic, 02.12.2006 в 13:23.
Ответить с цитированием
  #9  
Старый 02.12.2006, 17:58
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Можешь сделать свой набор любой длинны и частот...
Ответить с цитированием
  #10  
Старый 02.12.2006, 22:29
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

странно, регулируется но когда +15 все хрипит..
Басс если увеличить все ревет.
Хитрость есть какая??
Ведь в том плеере демо, все регулируется отлично.
Ответить с цитированием
  #11  
Старый 03.12.2006, 01:28
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Возможно дело в строке
Код:
 
p.fBandwidth := 36;
Здесь можно задать значение от 0 (или 1, точно не помню) до 36. Сделай поменьше.
Ответить с цитированием
  #12  
Старый 03.12.2006, 11:39
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

fBandwidth Это я так понимаю ширина полосы фильтра.
Тоесть если задана частота 1Кгц то если bandwidth = 0 то ровно 1 кгц фильтрует а если 36 то захватывает от 1 до какого то определенного числа..
Сделал я 18 полос От 20-20 000 для MP3 это смешно конечно но для Wav сойдет. Ну вроде регулируется но 36 выставлять нельзя, очень уж хрипит все.
Надо соображать какой то автоматический регулятор уровя частоты которая зашкаливает, типа АРУ но по частотам.
Ведь если мы знаем уровень определенной частоты (анализатор спектра же можно сообразить) то можем ее регулировать автоматом.
На слух вроде регулирует но не все полосы, некоторые вместо 20-30 гц высокие регулируют почему то.

Я еще белый шум сгенерю, и попробую с выхода звуковухи сниму на анализатор спектра. Погляжу что там творится.

А вообще клнечно обалденная библиотечка по звуку!
Только бы знать бы там все.
Ответить с цитированием
  #13  
Старый 04.12.2006, 15:09
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

А можно BASS_Fx применять к линейному входу??
Тоесть обрабатывать звук с входа карточки??
Там тоже поток как то присваивать?
Вот это бы тема была!
Яб тогда компрессор сделал для кривых фильмов.
Где то переводчик орет как ненормальный где вообще ничего не слышно.
Ответить с цитированием
  #14  
Старый 07.12.2006, 20:10
Delphinic Delphinic вне форума
Начинающий
 
Регистрация: 20.11.2006
Сообщения: 134
Репутация: 15
По умолчанию

Ну так никто этого не делал??
Можно же как то это организовать ведь точно знаю..
Очень надо!
Ответить с цитированием
  #15  
Старый 08.12.2006, 00:22
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

А примеры к библиотеке смотреть не пробовал?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter