|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Индикатор уровня звука.
Вот дошел наконец то до индикатора уровня звука.
Вот только незнаю даже с чего начать то.. Как это дело осуществляется?? Чтоб ProgressBar мне уровень звука показывал. И причем не тормозил, а выводил без запозданий.. Мне надо не с линейного входа а когда воспроизвожу Mp3. Мож библиотека спецовая есть? |
#2
|
|||
|
|||
Есть компоненты!
Конечно есть - Mmtools называется. Правда триальные они, если программу запускаешь не из Дельфина, то ругается с требованием регистрации, но это не проблема - если подойдут тебе компоненты, то я без проблем помогу с лекарством :-)
|
#3
|
|||
|
|||
А с Bass-ом я могу ченть соорудить? Потому что я на нем плеер начал уже делать, точне сделал почти, осталось тока индикатор.
|
#4
|
||||
|
||||
с басс можно.. ты не пробовал у них главную демку на сайте качать?
да и вообще что ты хочешь ? какой именно уровень звука? Нет повести печальнее на свете, чем повесть о заклиневшем Resete. |
#5
|
|||
|
|||
Я не уровень хочу. А когда музыка звучит чтоб прогрессбары показывали уровень звука во время игры. (ну по простому, чтоб дергались под музыку 2 полоски). :d Блин посинел от такого описания аж.. :d
Я сгенерю файл в адобу аудишне, например частотой 2000 кгц. И уровнем 0 децибел. И вот буду на своем плеере воспроизводить и индикатор уровня должен тоже так же показывать 0 децибел, но градуировку сделать не сложно. А вот как сообразить индикатор. Например в винампе не индикатор уровня и просто куча полосочек бегает, это все туфта, и показывают они непойми чего. Хотя называется это чудо Анализатор спектра частот. Я сам электронщик и понимаю для чего это все надо. |
#6
|
|||
|
|||
С индикатором разобрался но на половину. Он моно получился.
Стерео не получается. А кстати в этой библиотеке басс отлично работает анализатор спектра, показывает реальную частоту! Это радует! Клево чел шарит в этом деле раз написал такой модуль! Да и индикатор уровня получился точный!! Просто супер! Вот тока с ДПС эффектами разобраться надо и эквалайзер ну никак не получается.. Копался я в исходниках копался но для начинающего это дебри, так и не докопался! Вот так сделал просто попробовать, ничего не меняется но и ошибку не выдает. Bass.BASS_FXSetParameters(Hand,@eqparam); eqparam.fCenter := 3000; // частота eqparam.fBandwidth := StrToInt(ED1.Text); //непонял для чего eqparam.fGain := 15; // уровень частоты. Bass.BASS_FXSetParameters(Hand,@eqparam); Подскажите плиз. |
#7
|
||||
|
||||
Я делал так (выдержка из исходника):
Код:
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
|
|||
|
|||
Отлично!!
Кажись начинаю уже принцип понимать! Это супер!! Спасиб огромное! Заработало! Только вопросик. Точно такие частоты?? 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
|
||||
|
||||
Можешь сделать свой набор любой длинны и частот...
|
#10
|
|||
|
|||
странно, регулируется но когда +15 все хрипит..
Басс если увеличить все ревет. Хитрость есть какая?? Ведь в том плеере демо, все регулируется отлично. |
#11
|
||||
|
||||
Возможно дело в строке
Код:
p.fBandwidth := 36; |
#12
|
|||
|
|||
fBandwidth Это я так понимаю ширина полосы фильтра.
Тоесть если задана частота 1Кгц то если bandwidth = 0 то ровно 1 кгц фильтрует а если 36 то захватывает от 1 до какого то определенного числа.. Сделал я 18 полос От 20-20 000 для MP3 это смешно конечно но для Wav сойдет. Ну вроде регулируется но 36 выставлять нельзя, очень уж хрипит все. Надо соображать какой то автоматический регулятор уровя частоты которая зашкаливает, типа АРУ но по частотам. Ведь если мы знаем уровень определенной частоты (анализатор спектра же можно сообразить) то можем ее регулировать автоматом. На слух вроде регулирует но не все полосы, некоторые вместо 20-30 гц высокие регулируют почему то. Я еще белый шум сгенерю, и попробую с выхода звуковухи сниму на анализатор спектра. Погляжу что там творится. А вообще клнечно обалденная библиотечка по звуку! Только бы знать бы там все. |
#13
|
|||
|
|||
А можно BASS_Fx применять к линейному входу??
Тоесть обрабатывать звук с входа карточки?? Там тоже поток как то присваивать? Вот это бы тема была! Яб тогда компрессор сделал для кривых фильмов. Где то переводчик орет как ненормальный где вообще ничего не слышно. |
#14
|
|||
|
|||
Ну так никто этого не делал??
Можно же как то это организовать ведь точно знаю.. Очень надо! |
#15
|
||||
|
||||
А примеры к библиотеке смотреть не пробовал?
|