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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2013, 17:43   #1
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию Воспроизвести перед музыкой звук

Всем привет, у меня появилась задача.. Но не получается ее выполнить.
У меня при нажатии кнопки воспроизводится музыка, и потом через заданный интервал она повторяется, музыка воспроизводится через bass.
Но если в CheckBox поставить галочку, то перед каждым воспроизведением музыки - должен воспроизвестись совсем другой звук.
Я сделал так:
в VAR
PHP код:
  ChannelDWORD;
  
PrivlekDWORD
при создании формы

PHP код:
Channel := Bass_streamCreateFile(falsePChar('name.wma'),0,0,0);
Privlek := Bass_streamCreateFile(falsePChar('sound\1500.wma'),0,0,0); 
в таймер, который воспроизводит музыку

PHP код:
begin
if(TimerVremya.Enabled Truethen
  begin
    
if(CheckBox1.Checked Falsethen
    begin
    Bass_channelPlay
(Channelfalse);
    
Panel1.Caption := 'Playing';
    
TimerFraza.Enabled := False;
    
end
    
else
    
begin
     Bass_channelPlay
(Privlekfalse);
     
Timer2.Enabled := True;
     
TimerFraza.Enabled := False;
    
end;
end
ну и Timer2
PHP код:
Bass_channelPlay(Channelfalse);
    
Panel1.Caption := 'Playing';
    
Timer2.Enabled := False
получается если стоит галочка, то будет воспроизводится звук(он 1 секунду длится), и включаться таймер на 1 секунду(timer2), и когда таймер закончится, то будет воспроизводится музыка... Но звук не воспроизводится. Почему? Как лучше сделать?
TUberwer вне форума Ответить с цитированием
Старый 16.08.2013, 19:37   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Самый обычный ответ: Галочка не стоит.
Вот и ответ на вопрос. Что задал по умолчанию(стоит галочка или нет)?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 16.08.2013, 20:04   #3
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

по умолчания не стоит, но галочку я поставил перед запуском воспроизведения
TUberwer вне форума Ответить с цитированием
Старый 16.08.2013, 20:12   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от TUberwer Посмотреть сообщение
по умолчания не стоит, но галочку я поставил перед запуском воспроизведения
А ты поток из файла музыки и звука создавал?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 16.08.2013, 20:27   #5
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

это?

PHP код:
Channel := Bass_streamCreateFile(falsePChar('name.wma'),0,0,0); 
Privlek := Bass_streamCreateFile(falsePChar('sound\1500.wma'),0,0,0); 
получается так, задаю я интервал на 5 сек.

но первый интервал не 5 а 6 секунд(6-тая секунда должна быть как-бы с воспроизведением звука), а второй и третий и все остальные интервалы по 3 секунды...(сама "музыка" идет 2 секунды)
TUberwer вне форума Ответить с цитированием
Старый 16.08.2013, 22:26   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Говоришь сам звук длится 1 секунду, тогда поставь Interval у таймера отвечающего за начало воспроизведения музыки на 1000 и пропиши там код:
Код:
if CheckBox1.Checked=false then exit;
if BASS_ChannelisActive(...)<>BASS_ACTIVE_STOPE then exit; //...- название потока, в котором звук
BASS_ChannelPlay(Channel);
BASS_StreamFree(...);//...-название потока, в котором звук
CheckBox1.Checked:=false;
Timer1.Enabled:=false;
BASS_ACTIVE_STOPE активируется при BASS_ChannelStop или после окончания воспроизведения звукового потока. Если есть кнопка Стоп, то советую завести переменную типа TPlayerMode. Описание типа:
Код:
TPlayerMode = (play,pause,stop);
Дальше можешь просто запускать таймер, просто присваевая его свойству Enabled значение true.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 16.08.2013, 22:29   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Кстати, bass.dll не поддерживает wma-файлы. Тепе придется их конвертировать в любой другой или использовать BASSWMA.dll для создания потока из файла с помощью функции BASS_WMA_StreamCreateFile. Параметры теже.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.08.2013, 10:07   #8
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

странно.. у меня музыка .wma, проигрываю на bass, все ок..
TUberwer вне форума Ответить с цитированием
Старый 17.08.2013, 11:12   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от TUberwer Посмотреть сообщение
странно.. у меня музыка .wma, проигрываю на bass, все ок..
дествительно странно.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизвести звук при появлении в ячейке заданного значения SVGuss Microsoft Office Excel 15 19.01.2017 00:14
Как воспроизвести звук из ресурса (mp3) nick42 Общие вопросы C/C++ 0 14.10.2011 16:29
Как воспроизвести звук с модема используя BASS Aliens_wolfs Компоненты Delphi 0 20.05.2011 13:50
После какого-то события воспроизвести звук ubun Общие вопросы Delphi 3 06.01.2011 18:47
Как воспроизвести звук ? RNT Общие вопросы C/C++ 9 13.08.2009 20:04