var Done : Boolean = False; var Song : TSongInfo; While not Done do begin if QueuedPlayer <> nil then begin Done := True; Song := QueuedPlayer.GetSongInfo; if (Song<>nil) then case song['songtype'] of 'S' : QueuedPlayer.Volume := 255; // уровень громкости обычных треков 'A','J','P' : QueuedPlayer.Volume := 320; // уровень громкости джинглов из категории A,J,P 'C' : QueuedPlayer.Volume := 128; // уровень громкости из категории разное (эту строчку можно удалить) else QueuedPlayer.Volume := 255; // повторная проверка состояния громкости end; end; end; PAL.Loop := True; // повторный запуск выполнения скрипта
var Song : TSongInfo; var P : TPlayer; P := Aux1; PAL.WaitForTime('20:00:00'); ActivePlayer.FadeToPause; if P <> nil then begin Song := CAT['20'].ChooseSong(1,NoRules); P.QueueSong(Song); P.Play; end; DeckA.Eject; DeckB.Eject; if Aux1.Status = 1 then begin
var Song : TSongInfo; var P : TPlayer; ActivePlayer.FadeToPause; // Перевод текущего трека в режим пауза P := Aux1; // через что играть if P <> nil then begin Song := Cat['20'].ChooseSong(1,NoRules); begin Aux1.QueueSong(Song); Aux1.Play; End; End; DeckA.Eject; // Очистка DeckA от текущего трека DeckB.Eject; // Очистка DeckB от текущего трека PAL.WaitForTime('+00:00:30'); // время ожидания 30 сек IdlePlayer.Next; // Вставка очередного трека в ожидании в свободный плеер DeckA.Play; // Начало воспроизведения через DeckA или DeckB.Play; // Начало воспроизведения через DeckB
var Song : TSongInfo; var P : TPlayer; var i : integer; ActivePlayer.FadeToPause; // Перевод текущего трека в режим пауза P := Aux1; // через что играть if P <> nil then begin Song := Cat['20'].ChooseSong(1,NoRules); begin Aux1.QueueSong(Song); Aux1.Play; End; End; DeckA.Eject; // Очистка DeckA от текущего трека DeckB.Eject; // Очистка DeckB от текущего трека PAL.WaitForTime('+00:00:30'); // время ожидания 30 сек IdlePlayer.Next; // Вставка очередного трека в ожидании в свободный плеер DeckA.Play; // Начало воспроизведения через DeckA или DeckB.Play; // Начало воспроизведения через DeckB
var Song : TSongInfo; var P : TPlayer; PAL.WaitForTime('9:40:00'); ActivePlayer.FadeToPause; P := Aux1; if P <> nil then begin Song := Cat['20'].ChooseSong(1,NoRules); begin Aux1.QueueSong(Song); Aux1.Play; End; End; DeckA.Eject; DeckB.Eject; var Waiting : Boolean = True; while Aux1.status = 0 do begin Waiting := False; end; IdlePlayer.Next; DeckA.FadeToPlay; DeckB.FadeToPlay;
//Скрипт для остановки воспроизведения в деках и запуска в Aux1, например, заранее записанной рубрики. //Скрипт ставим в Scheduler на более раннее время чем указанное время срабатывания скрипта. //by Zidane Tribal //14.10.2014 var Song : TSongInfo; var P : TPlayer; PAL.WaitForTime('9:40:00'); //время в которое сработает скрипт ActivePlayer.FadeToPause; //фейдим активную деку в паузу. Можно прописать FadeToStop. P := Aux1; //через что будет играть трек if P <> nil then begin Song := Cat['20'].ChooseSong(1,NoRules); //выбираем категорию где лежит наш трек begin Aux1.QueueSong(Song); //вставляем трек Aux1.Play; //проигрываем End; End; DeckA.Eject; //очищаем деки А DeckB.Eject; //и В var Waiting : Boolean = True; while ((Aux1.Duration-Aux1.CurTime)>4500) do //выставляем через какое время до окончания трека скрипт продолжит работу begin Waiting := False; end; IdlePlayer.Next; //вставляем трек из Queue в одну из дек DeckA.FadeToPlay; //запуск с фейдером DeckB.FadeToPlay; //запуск с фейдером
PAL.WaitForTime('9:40:00'); //время в которое сработает скрипт
// Запуск этого сценария через планировщик (Event Scheduler) в 9:59:12 var P : TPlayer; var Song : TSongInfo; var OldTime : DateTime; OldTime := Now; PAL.Loop:=True; // Запуск выполнения работы скрипта if (now >= T['09:59:16']) and (now <= T['09:59:30']) then // Время работы первого сценария 14 сек begin Queue.Clear; // Очистка плейлиста от треков Cat['english'].QueueBottom(smMRPA, EnforceRules); // Ставим 3 трека в плейлист из текущей категории Cat['english'].QueueBottom(smMRP, EnforceRules); Cat['english'].QueueBottom(smLemmingLogic, EnforceRules); Queue.AddFile('C:\voice-show\start-english.mp3',ipTop); // (Фоновый джингл) Голос ведущего о начале передачи (ТОП 20+, Алтернатива ...) PAL.WaitForTime(T['+00:00:20']); // Задержка 20 сек. от повторного срабатывания End; if (now >= T['09:59:26']) and (now <= T['10:50:26']) then // Время работы второго сценария 51 мин begin Cat['english'].QueueBottom(smLemmingLogic, EnforceRules); // Добавление 1 трека из категории, можно изменить на (smMRPA, EnforceRules) PAL.WaitForPlayCount(1); // Повторный запуск через 1 трек End; if (now >= T['10:58:16']) and (now <= T['10:58:30']) then // Время работы третьего сценария 14 сек begin P := Aux1; // через что играть (Эффект налаживания на играющий трек) if P <> nil then begin Song := Cat['end-english'].ChooseSong(1,NoRules); // (Чистый джингл без фона) Голос ведущего о завершении текущей передачи if Song <> nil then begin Aux1.QueueSong(Song); Aux1.Play; End; End; PAL.WaitForTime(T['+00:00:20']); // Задержка 20 сек. от повторного срабатывания End; if (now >= T['10:59:16']) and (now <= T['10:59:30']) then // Время работы поледнего сценария 14 сек begin Queue.Clear; // Очистка плейлиста от оставшихся треков Cat['russian'].QueueBottom(smMRPA, EnforceRules); // Ставим 2 трека в плейлист из другой категории Cat['russian'].QueueBottom(smMRP, EnforceRules); PAL.Loop:=False; // Завершение работы всего скрипта в режим стоп End; // После выполнения всех пунктов сценария, скрипт завершает свою работу
var P : TPlayer; var Song : TSongInfo; var strFile, strPath, strJingle : String; strPath := 'C:\Users\saxell\Desktop\Jingles\'; // Ïóòü ê ïàïêå, ãäå ëåæàò îòáèâêè ÷àñîâ strJingle := 'C:\Users\saxell\Desktop\Jingles\EuropeRussia-reklama.mp3'; //Ïóòü è íàçâàíèå äæèíãëà ïîñëå îòáèâêè ÷àñîâ PAL.Loop := True; PAL.WaitForTime('XX:59:45'); //çàïóñêàåìñÿ â êîíöå êàæäîãî ÷àñà. 45 ñåê - âðåìÿ áóôåðåçàöèè, ïîäáèðàåì ïî ñâîì ïàðàìåòðàì, âêóñàì strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //îïðåäåëÿåì íàçâàíèå ôàéëà ñ íóæíûìè ÷àñèêàìè. Ôîðìàò èìåíè ôàéëà XX-XX.mp3 P := Aux1; if P <> nil then begin Queue.AddURL('mms://live.rfn.ru/vesti_fm',ipTop); PAL.WaitForTime(T['+00:00:15']); //Wait 15 secs Queue.AddFile(strJingle, ipTop); Queue.AddFile(strFile, ipTop); P := ActivePlayer; if P <> nil then P.FadeToNext; end;
{Запуск скрипта через планировщик установить за 10 секунд до начала точного времени запуска} var P : TPlayer; var Song : TSongInfo; var strFile, strPath, strJingle : String; strPath := 'C:\CLOCK\'; // Путь к папке, где лежат отбивки часов strJingle := 'C:\CLOCK\start_hour.mp3'; // Путь и название джингла после отбивки часов PAL.Loop := False; // Одноразовый цикл работы скрипта PAL.WaitForTime('XX:59:46'); // Точное время запуска (подгоняем секунды опытным путём) strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; // Определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3 P := Aux1; if P <> nil then begin Queue.AddURL('http://icecast.vgtrk.cdnvideo.ru/vestifm_mp3_192kbps',ipTop); // Путь URL внешнего источника новостей Queue.AddFile(strJingle, ipTop); Queue.AddFile(strFile, ipTop); P := ActivePlayer; if P <> nil then P.FadeToNext; end; {Здесь очень важно настроить секунды в зависимости от длины ваших файлов отбивки часов и джингла время ожидания PAL.WaitForTime('+00:00:24'); необходимо изменить и добиться срабатывания IdlePlayer.Volume := 633; на увеличение громкости иначе не будет срабатывания увеличения громкости} PAL.WaitForTime('+00:00:24'); // 24 сек. ожидания к принудительному увеличению уровня громкости не активного плеера (подгоняем секунды опытным путём) IdlePlayer.Volume := 731; // увеличение положения громкости не активного плеера выше стандартного PAL.WaitForTime('+00:03:18'); // время ожидания до завершения вещания новостей ActivePlayer.Volume := 537; // начало уменьшения горомкости новостей ActivePlayer.Volume := 474; ActivePlayer.Volume := 411; ActivePlayer.Volume := 348; ActivePlayer.Volume := 285; ActivePlayer.Volume := 222; ActivePlayer.Volume := 159; ActivePlayer.Volume := 96; ActivePlayer.FadeToNext; // плавный переход заврешения новостей и начало воспроизведения текущего трека в ожидании PAL.WaitForTime('+00:00:04'); // 4 сек. ожидания (не изменять) DeckA.Volume := 255; // возврат положения громкости DeckA в нормальное состояние DeckB.Volume := 255; // возврат положения громкости DeckB в нормальное состояние {После завершения сценария скрипт завершает свою работу}