ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
3   •   Посмотреть все темы

Скрипты PAL для Sam Broadcaster

 

888
Falcon @Falcon
radioplus пишет:

Есть скрипт, который постоянно выпускает джинглы:

PAL.Loop := True;
PAL.WaitForPlayCount(1);
PAL.WaitForTime('+00:02:00');
CAT['Station IDs (All)'].QueueTop(smLRPA, NoRules);


Как его отключать в определённые часы? К примеру в воскресенье с 16:00:00 до 16:50:00 и в понедельник с 0:00:00 до 0:50:00, чтобы в это время он не втсавлял джинглы после каждого трека?
Спасибо!

Вот отличный пример на сайте сэма:
**********

43
_ @radioplus
Мне нужен скрипт, который будет выключать джинглы, а не включать в определённое время! То есть как сделать так, чтобы скрипт не выполнялся в определённый день и в определённое время, к примеру в воскресенье с 15:00 до 16:00? может так:
PAL.Loop := True;
var mytime : DateTime = now;
var I : Integer;
var start_time, end_time : DateTime;
end_time := date + EncodeTime(15,59,30,0);
start_time := date + EncodeTime(17,15,00,0);
if DayOfWeek(Now) = Sunday then
begin
if( mytime >= start_time) and (mytime <= end_time) Then
begin
PAL.WaitForPlayCount(1);
PAL.WaitForTime('+00:03:00');
CAT['Station IDs (All)'].QueueTop(smLRPA, NoRules);
end;
end;


Так он не запускается пока не дождётся времени старта! Скорее всего как то иначе, только вот как?

888
Falcon @Falcon
if DayOfWeek(Now) != Sunday then
begin
if( mytime >= start_time) and (mytime <= end_time) Then
begin
PAL.WaitForPlayCount(1);
PAL.WaitForTime('+00:03:00');
CAT['Station IDs (All)'].QueueTop(smLRPA, NoRules);
end;
end;

43
_ @radioplus
и в чём разница? Это скрипт включения программы в определённое время. А мне нужен отключения работы скрипта в определённый день и время.

1572
KyPIIaToB @KyPIIaToB
radioplus пишет:

Мне нужен скрипт, который будет выключать джинглы, а не включать в определённое время!

А я что тебе сказал? создаешь правило и все.

43
_ @radioplus
-

Отредактировано radioplus - 13.04.2022
6
Ëкарный @isaul
Друзья помогите!Я прочитал много тем но так и не нашел ответ!В общем что нужно прописать в PAL скрипте что бы песни играли не в случайном порядке (Random) а по порядку (1-20) выручайте!

57
LAZAR @LAZ2735
Нашёл скрипт времени с новостями (или тем что вам захочется)
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);








332
Игорь @JamStyle
LAZ2735 пишет:

Нашёл скрипт времени с новостями (или тем что вам захочется)


Спасибо за скрипт,давно искал...:)

7094
--- @Render
Может подскажет кто, как реализовать подобное для 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, громкость просто резко возвращается.
Помогите подправить в работоспособный вариант... (может уже было решение где-то этой проблемы, не удалось найти)

410
Евгений @Drakkar
JamStyle пишет:

LAZ2735 пишет:

Нашёл скрипт времени с новостями (или тем что вам захочется)


Спасибо за скрипт,давно искал...:)

Опишите пожалуйста подробнее, что это за СКРИПТ ВРЕМЕНИ С НОВОСТЯМИ? Как он применяется и для чего он нужен.

7094
--- @Render
**********. Помогите, ребятушки.

1572
KyPIIaToB @KyPIIaToB
Render пишет:

**********. Помогите, ребятушки.

Для тех кто в танке, громкость для активного плеера ActivePlayer.Volume и не каким макаром не влияет на SoundFX
Соответственно меняй ActivePlayer на SoundFX, хоть немного думай.

Отредактировано KyPIIaToB - 10.02.2012
7094
--- @Render
KyPIIaToB пишет:

Render пишет:

**********. Помогите, ребятушки.

Для тех кто в танке, громкость для активного плеера ActivePlayer.Volume и не каким макаром не влияет на SoundFX
Соответственно меняй ActivePlayer на SoundFX, хоть немного думай.

Видимо не совсем правильно объяснил, мне и не нужно влиять на громкость SoundFX.
Нужно всего лишь перед запуском звука из SoundFX, снижать громкость ActivePlayer, во время выполнения SoundFX (наложения), громкость ActivePlayer - всё так же должна оставаться на сниженном уровне, то есть некий timewait, пока проигрывается звук SoundFX и затем после окончания некого timwait равного к примеру 5 секундам, возвращение громкости ActivePlayer в предыдущее положение.
Повторюсь, начало - работает, как нужно. То есть громкость снижается на ActivePlayer перед запуском SoundFX, но вот дальше...
Как только стартует наложение звука, громкость резко возвращается назад и как сделать, чтобы даже во время наложения, бегунок громкости на ActivePlayer оставался на том же месте и ждал своего "прихода", мне не известно.

Если совсем на простом языке, то:
Играет трек.
В какой-то момент, громкость трека уменьшается где-то на 50%
Сверху накладывается какой-то звуковой эффект (причём громкость трека всё так же 50%)
По окончании наложения, возврат громкости трека на предыдущее значение.

Фуф. Вроде так :|

888
Falcon @Falcon
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;

7094
--- @Render
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

1572
KyPIIaToB @KyPIIaToB
Обнаружил прикольный скрипт, который озвучивает название трека с помощью ranslate.google.com
Видео примера можно глянуть тут **********

Создаем категорию 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) ;


Источник **********

2
aeroman @aeroman
Я совсем новичок в етом деле так что прошу строго не судить. Скажите как PAL скриптом сохранить в файл содержимое Queue???
И просветите меня, есть ли какая-нибуть документация по PAL скриптам???

6245
2
aeroman @aeroman
tarasian666 пишет:

**********

Спасибо.
А по русски нет ничего подобного??