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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 03:03   #11
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Так и не разобрался с уровнем громкости звука. При изменении в программе звук меняется и в системе. Зависит от вида аудиоплаты (встроенная в мать)? Либо у меня создание аудио потока не успешно прошло? Но такая проблема наблюдалась и на нетбуке (хоть там тоде встроенная). Вообще, может мне кто объяснить почему?
Kovax вне форума Ответить с цитированием
Старый 29.05.2011, 14:59   #12
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

bass_channelsetattribute(channel, bass_attrib_vol, 0.5);
устанавливаем громкость для канала, диапазон 0..1 (float)
ZuBy вне форума Ответить с цитированием
Старый 06.06.2011, 07:40   #13
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

1)Как сделать зацикливание воспроизведения отдельного файла, то есть при создании формы пишу
Код:
Bass_Init(-1,44100,0,handle,nil);
Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'music\main.mp3'), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
BASS_ChannelPlay(Channel, false);
и музыка без остановки проигрывается?
2)Как сделать плавный переход между композициями как в AIMP'е?
ZvEr_HaCkEr вне форума Ответить с цитированием
Старый 06.06.2011, 08:47   #14
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
Bass_Init(-1,44100,0,handle,nil);
Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'music\main.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, false);
2. эффект называется кросс фейдинг, теория:
1. при окончании трека (например, за 3 сек до конца) плавно уменьшаем громкость трека
2. создаем следующий поток до того как завершится предыдущий, и ставим громкость 0
3. плавно повышаем громкость новому потоку
4. освобождаем старый поток

делается это при помощи основных функции, BASS_ChannelSlideAttribute, BASS_ChannelIsSliding

Последний раз редактировалось ZuBy; 06.06.2011 в 08:54.
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 14:39   #15
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Здравствуйте.

У меня такой вопрос:
Вот я одновременно проигрываю сразу несколько файлов.
Как мне нажатием Button2 остановить воспроизведение конкретного файла, например test2.mp3, а остальные чтобы дальше воспроизводились ?

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin

Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test1.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, False);

Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test2.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, False);

Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test3.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, False);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 BASS_ChannelStop(Channel); // Останавливает только последний файл (test3.mp3)

 end;

Последний раз редактировалось werrey; 13.06.2011 в 14:52.
werrey вне форума Ответить с цитированием
Старый 13.06.2011, 15:16   #16
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
Channel_1 := Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test1.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel_1, False);

Channel_2 := Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test2.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel_2, False);

Channel_3 :=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'test3.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel_3, False);
ZuBy вне форума Ответить с цитированием
Старый 13.06.2011, 20:36   #17
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Спасибо большое за оперативный ответ.

Подскажите еще на примере, как сделать, чтобы отдельный файл(канал) начинался с плавного увеличения громкости, и в конце проигрывания плавно уменьшался звук?

Читал Ваш пост выше, про функции BASS_ChannelSlideAttribute, BASS_ChannelIsSliding,
но как это применить не понимаю, что-то сложновато для меня.

Заранее благодарю.
werrey вне форума Ответить с цитированием
Старый 13.06.2011, 21:05   #18
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

вот тут показано как это делать (не советую использовать, но для наглядного примера сойдет)
ZuBy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bass.dll larry Общие вопросы C/C++ 1 09.11.2009 13:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
BASS DLL ygy Мультимедиа в Delphi 4 29.09.2009 04:39
BASS.DLL VintProg Мультимедиа в Delphi 2 21.09.2009 16:36
bass.dll Elem Мультимедиа в Delphi 18 19.07.2009 11:04