Re: Скрипты PAL для Sam Broadcaster
-
Отредактировано radioplus (13-04-2022 12:25:00)
Первый русскоязычный форум посвященный интернет-радиовещанию
Форум интернет радио Icecast и Shoutcast → Технологии вещания, софт, скрипты → Скрипты PAL для Sam Broadcaster
Страницы Назад 1 … 8 9 10 11 12 … 21 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
-
Отредактировано radioplus (13-04-2022 12:25:00)
Друзья помогите!Я прочитал много тем но так и не нашел ответ!В общем что нужно прописать в PAL скрипте что бы песни играли не в случайном порядке (Random) а по порядку (1-20) выручайте!
Нашёл скрипт времени с новостями (или тем что вам захочется)
var strFile, strPath : String;
var P,F : Tplayer;
strPath := 'd:\RADIO\Clock\';
PAL.Loop:=True;
PAL.WaitForTime('XX:59:50');
PAL.LockExecution;
strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3';
Case strFile Of
'd:\RADIO\Clock\07-00.mp3' : Begin
If (DayOfWeek(Now) = Sunday) Or (DayOfWeek(Now) = Monday) then
Queue.AddFile('d:\RADIO\news\новость 18.mp3', ipTop)
Else
Queue.AddFile('d:\RADIO\news\новость 20.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\08-00.mp3' : Begin
If (DayOfWeek(Now) = Sunday) Or (DayOfWeek(Now) = Monday) then
Queue.AddFile('d:\RADIO\news\новость 18.mp3', ipTop)
Else
Queue.AddFile('d:\RADIO\news\новость 20.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\09-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\гороскоп.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\11-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\гороскоп.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\12-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\новость 12.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\13-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\новость 12.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\15-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\новость 15.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\16-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\новость 15.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\18-00.mp3' : Begin
Queue.AddFile('d:\RADIO\news\новость 18.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\19-00.mp3' : Begin
If (DayOfWeek(Now) <> Sunday) AND (DayOfWeek(Now) <> Saturday) then
Queue.AddFile('d:\RADIO\news\новость 18.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
'd:\RADIO\Clock\20-00.mp3' : Begin
If (DayOfWeek(Now) = Sunday) Or (DayOfWeek(Now) = Saturday) then
Queue.AddFile('d:\RADIO\news\новость 18.mp3', ipTop)
Else
Queue.AddFile('d:\RADIO\news\новость 20.mp3', ipTop);
Queue.AddFile(strFile, ipTop);
Aux1.QueueSong(Queue.NextInQueue);
If DeckA.Status = psPlaying then
Begin
DeckB.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
F := DeckA;
P := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
DeckA.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
F := DeckB;
P := DeckA;
Aux1.FadeToPlay;
End;
End;
Else
Begin
Queue.AddFile(strFile, ipTop);
If DeckA.Status = psPlaying then
Begin
Aux1.QueueSong(Queue.NextInQueue);
DeckA.FadeToPause;
P := DeckA;
F := DeckB;
Aux1.FadeToPlay;
End
Else
Begin
Aux1.QueueSong(Queue.NextInQueue);
DeckB.FadeToPause;
P := DeckB;
F := DeckA;
Aux1.FadeToPlay;
End;
End;
End;
PAL.UnlockExecution;
PAL.WaitForTime('+00:00:09');
P.FadeToPlay;
If P.Status <> psPlaying then F.Play
Else F.QueueSong(Queue.NextInQueue);
пишет LAZ2735:
Нашёл скрипт времени с новостями (или тем что вам захочется)
Спасибо за скрипт,давно искал...:)
Может подскажет кто, как реализовать подобное для Sound FX?
Перед проигрыванием Sound FX - убавление громкости играющей деки, после проигранного Sound FX, возвращение громкости обратно. Пытался вставить из этого примера, работает только изначальное снижение громкости, но как только запускается наложение Sound FX (код ниже), то громкость резко возвращается на исходную,
То есть по сути, не выходит нормально сделать тайм ожидания, для возвращения громкости.
Исходное
var Song : TSongInfo;
var P : TPlayer;
PAL.Loop := True;
PAL.WaitForTime('+00:05:00');
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom,NoRules);
if Song <> nil then
begin
P.QueueSong(Song); //
P.Play;
end;
end;
То, что пытался сляпать (ибо не варю пока в pal)
var Song : TSongInfo;
var P : TPlayer;
var i : integer;
PAL.Loop := True;
i := ActivePlayer.GetVolume;
PAL.WaitForTime('+00:05:00');
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 160;
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom,NoRules);
if Song <> nil then
begin
PAL.WaitForTime('+00:00:10');
ActivePlayer.Volume := i - 160;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i;
P.QueueSong(Song);
P.Play;
end;
end;
Как и куда только не вставлял PAL.WaitForTime с возвратом громкости, но результата не удалось получить. Как только стартует наложение Sound FX, громкость просто резко возвращается.
Помогите подправить в работоспособный вариант... (может уже было решение где-то этой проблемы, не удалось найти)
пишет JamStyle:
пишет LAZ2735:
Нашёл скрипт времени с новостями (или тем что вам захочется)
Спасибо за скрипт,давно искал...:)
Опишите пожалуйста подробнее, что это за СКРИПТ ВРЕМЕНИ С НОВОСТЯМИ? Как он применяется и для чего он нужен.
UP. Помогите, ребятушки.
пишет Render:
UP. Помогите, ребятушки.
Для тех кто в танке, громкость для активного плеера ActivePlayer.Volume и не каким макаром не влияет на SoundFX
Соответственно меняй ActivePlayer на SoundFX, хоть немного думай.
Отредактировано KyPIIaToB (10-02-2012 12:40:14)
пишет KyPIIaToB:
пишет Render:
UP. Помогите, ребятушки.
Для тех кто в танке, громкость для активного плеера ActivePlayer.Volume и не каким макаром не влияет на SoundFX
Соответственно меняй ActivePlayer на SoundFX, хоть немного думай.
Видимо не совсем правильно объяснил, мне и не нужно влиять на громкость SoundFX.
Нужно всего лишь перед запуском звука из SoundFX, снижать громкость ActivePlayer, во время выполнения SoundFX (наложения), громкость ActivePlayer - всё так же должна оставаться на сниженном уровне, то есть некий timewait, пока проигрывается звук SoundFX и затем после окончания некого timwait равного к примеру 5 секундам, возвращение громкости ActivePlayer в предыдущее положение.
Повторюсь, начало - работает, как нужно. То есть громкость снижается на ActivePlayer перед запуском SoundFX, но вот дальше...
Как только стартует наложение звука, громкость резко возвращается назад и как сделать, чтобы даже во время наложения, бегунок громкости на ActivePlayer оставался на том же месте и ждал своего "прихода", мне не известно.
Если совсем на простом языке, то:
Играет трек.
В какой-то момент, громкость трека уменьшается где-то на 50%
Сверху накладывается какой-то звуковой эффект (причём громкость трека всё так же 50%)
По окончании наложения, возврат громкости трека на предыдущее значение.
Фуф. Вроде так
if Song <> nil then
begin
P.QueueSong(Song);
P.Play;
PAL.WaitForTime('+00:00:10');
ActivePlayer.Volume := i - 160;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i;
end;
Falcon, спасибо, но немного не то, так тоже пробывал уже.
KyPIIaToB, тоже спасибо за направление почти на путь истинный.
В итоге удалось достичь результата таким безобразием. Может кому-то пригодится.
var Song : TSongInfo;
var P : TPlayer;
var i : integer;
PAL.Loop := True;
i := ActivePlayer.GetVolume;
PAL.Loop := True;
PAL.WaitForTime('+00:05:59');
ActivePlayer.Volume := i - 20;
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i - 60;
ActivePlayer.Volume := i - 70;
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom,NoRules);
if Song <> nil then
begin
P.QueueSong(Song); //
P.Play;
end;
end;
PAL.WaitForTime('+00:00:05');
ActivePlayer.Volume := i
Обнаружил прикольный скрипт, который озвучивает название трека с помощью ranslate.google.com
Видео примера можно глянуть тут http://www.youtube.com/watch?v=zN25zVBN … re=related
Создаем категорию nu , туда помещаем c:\test\nu.mp3
Ну это как пример конечно же
PAL.Loop := True ;
var verzoek, song : TSongInfo;
var map, almost, ready : string ;
Song := ActivePlayer.GetSongInfo;
if (Song['songtype'] = 'J') then
begin
PAL.WaitForTime('+00:00:10');
end
else
Song.Free;
Song := ActivePlayer.GetSongInfo;
map := 'c:\test\nu.mp3' ;
verzoek := CAT['nu'].ChooseSong(smRandom, NoRules) ;
almost := 'Now Playing.'+Song['artist']+'. with.'+Song['title']+'.' ;
ready := URLEncode(almost) ;
WebToFile(map,'http://translate.google.com/translate_tts?tl=en&q='+ready) ;
Aux2.QueueSong(verzoek);
Aux2.Play;
PAL.WaitForPlayCount(1) ;
Источник http://broadcasterforum.nl/viewtopic.ph … 929#p24862
Я совсем новичок в етом деле так что прошу строго не судить. Скажите как PAL скриптом сохранить в файл содержимое Queue???
И просветите меня, есть ли какая-нибуть документация по PAL скриптам???
пишет tarasian666:
Спасибо.
А по русски нет ничего подобного??
Ребят, просмотрел тему. не нашел...
Какая команда отвечает за кол-во треков в Queue?
Мне надо, сделать условие if Queue.Size(например)='1' then и поехали
PAL.Loop := True;
if (Queue.Count < 3) then
begin
SubDir['C:\Users\Administrator\Downloads\music'].QueueBottom(smLemmingLogic, EnforceRules);
SubDir['C:\Users\Administrator\Downloads\music2'].QueueBottom(smLemmingLogic, EnforceRules);
end;
PAL.WaitForPlayCount(3);
Вставил в pal файл, сохранил, вставил в сэм, проверяю в режиме правки кода в сэме, все срабатывается, если в queue больше 3 треков, то ждет 3 трека, затем повторяет и если меньше, то добавляет... жму окей, выключаю-включаю скрипт через блок PAL scripts, он выполняется независимо сколько треков в queue, все равно добавляет треки из папок, чего не так!?!?!'
зы Разобрался, не актуально
Отредактировано Leff27 (05-05-2012 14:19:23)
Как можно узнать сколько осталось до конца песни и если менее 3-х секунд пустить лайнер в aux?
типо
if (DeckA.Time = 3) or (DeckB.Time = 3) then
begin
Aux.Play(...);
Глушим в деках звук до 20%;
Высчитываем длину трека в Aux(который играет);
time = длина_трека_aux - 3;
WaitForTime(+time);
Возвращаем звук в деках...
end;
Можно такое натворить?))
если нет нужных переменных в pal то можно через базу взять эти переменные
http://support.spacialaudio.com/wiki/PA … anguage%29
пишет Leff27:
Как можно узнать сколько осталось до конца песни и если менее 3-х секунд пустить лайнер в aux?
типоif (DeckA.Time = 3) or (DeckB.Time = 3) then begin Aux.Play(...); Глушим в деках звук до 20%; Высчитываем длину трека в Aux(который играет); time = длина_трека_aux - 3; WaitForTime(+time); Возвращаем звук в деках... end;
Можно такое натворить?))
ActivePlayer.Duration вот так узнаем время трека.
Интересует подобное решение, может кто осилит подсказать, реально или нет такое сделать и если реально, пример не помешал бы.
Примерные действия:
- указывается переменной директория для сканирования
- сканирование всех треков из этой директории, высчитывание bpm (есть подобная кнопка если смотреть инфо о треке в sam)
- сохранение bpm каждого трека (рекурсивно), можно как в сами файлы, в id-теги, так и в бд (в моём случае fb).
В конечном результате должно быть так, чтобы можно было просмотреть в инфо о треке и его bmp был уже известен, без нажатия на эту кнопку.
Были бы широкие познания в pal, да и вообще в sam, не задавался бы таким вопросом.
Приветствую )
Есть мысль автоматизировать весь процесс радио вещания, ну что касательно записей...
Создан шаблон расписания, по рубрикам к примеру, соответственно к каждой рубрике привязана папка с mp3 файлами. Так вот есть ли такой скрипт, что бы в определенное время SAM загружал файлы из определенной папки и рандомом естественно.. ?
Отредактировано Ramalinga (15-05-2012 11:07:31)
Страницы Назад 1 … 8 9 10 11 12 … 21 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум интернет радио Icecast и Shoutcast → Технологии вещания, софт, скрипты → Скрипты PAL для Sam Broadcaster