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

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

 

410
Евгений @Drakkar
ubuntu-studio, Спасибо, но я ни разу не был на их форуме и тем более не особо в английском. Можно ссылочку на решение ?

398
ubuntu-studio @ubuntu-studio
Drakkar пишет:

ubuntu-studio, Спасибо, но я ни разу не был на их форуме и тем более не особо в английском. Можно ссылочку на решение ?


По предыдущему вашему посту можно сделать вывод, что вы на правильном пути.

********** на форум СЭМа

********** на вики страницу с описанием команд и логики скриптов

********** которая, возможно, вам поможет

********** на стороннем ресурсе о теме

Удачи вам.

410
Евгений @Drakkar
спасибо за правильные сцылки!

PS. В статье на стороннем ресурсе о проблеме Сэма скрипт не совсем корректный

DIR['d:Music'].Rescan;

Он сканирует всю директорию и да, добавляет треки в категорию Music (All), но когда его запускаешь повторно, он опять всю папку добавляет в категорию, создавая дубли :)

Что касается ссылок на офф.форум сэма, то с переводчиком гугл штудирую.
Странно, что на нашем форуме нет решения данной проблемы.

Отредактировано Drakkar - 10.04.2014
85
YNC @pluta
Вот исправленный скрипт последних выпусков новостей.

PAL.Loop:=True;
PAL.WaitForTime('XX:15:00');
Queue.AddURL('http://realaudio.rferl.org/RU/news/news_RU.mp3',ipTop);
ActivePlayer.FadeToNext;
PAL.WaitForTime('XX:45:00');
Queue.AddURL('тут такаяже ссылка как сверух',ipTop);
ActivePlayer.FadeToNext;

4
ZRadio_top @sunfm
Здравствуйте!
Необходим скрипт, который будет останавливать скрипт.
То есть, мне нужен script_1.PAL, который по своим функциям будет останавливать роботу зацикленного скрипта script_2.PAL
Настройки в Event-е не подходят.
Жду ответа, заранее огромное спасибо!

243
Владислав @VladokZzz
Drakkar пишет:

djnewborn пишет:

VladokZzz пишет:

Скиньте плз код для реализации обновления трэков в категории из папки.
Есть папка D:/Music и категория All в SAM
Нужно по времени запустить импорт в категорию, но без повторов.
Спасибо

Задача поставлена криво

в сэме есть 2 типа категорий - "Playlist" и "Content"
так вот, вторая не подразумевает наличия дублей в принципе, если конечно вы импортируете одну и ту же папку.
если первая - то хз, вроде нет встроенного механизма удаления дублей из скрипта


PAL.Loop := True;



{## Wait for midnight }

PAL.WaitForTime('23:59:59');



{## Scan our promos directory }

DIR['c:\promos\'].Rescan;



{## Take a breather }

PAL.WaitForTime('+00:00:30');



{## Scan our main music directory }

{## Include all subdirectories }

SUBDIR['c:\music\'].Rescan;




Приветствую. Кажется, я понял, что он хотел. Я сам именно с такой целью штудирую Радиоталк уже не первый день, а именно эту ветку с 1 страницы.
Хочется, чтоб СЭМ с периодичностью (К примеру раз в 30 минут) сканировал директорию D:/Music и если обнаруживал там новые треки(новые названия треков), то автоматически добавлял бы их в свою категорию Music (All). Ну и соответственно эти треки, с помощью настроенного Playlist Rotation Rules добавлялись в Queue. Но с добавлением в очередь проблем нет. Есть проблемы с автодобавлением треков СЭМОМ из директории в категорию.
PS. Немного дополнения: дело в том, что у меня вся-вся музыка в одной папке - D:/Music. И если ты добавляешь в эту папку к примеру песен 50, то надо вручную добавлять их в категорию Сэма Music (All), иначе он их просто не увидит. Я делаю это так: Выделил одник кликом Music (All), нажимаю на + , затем Add Files и пошёл их искать в куче треков...


Да именно это и имел ввиду, есть еще одно но, нужно исключить 1 папку Other, которая лежит в папке Music, что бы она не добавлялась. Как создать исключение по названию папки?

7
BadFM_Radio @BadFM_Radio
Доброго времени суток! Подскажите, почему компилятор выдаёт ошибку? Хоть на строке Song := CAT['Open_jingles'].ChooseSong(smRandom,NoRules); хоть на строке Song := DIR['f:\Jingles_BadFM\15-30-45_jingles'].ChooseSong(smRandom,NoRules); - не так и не так не проходит. Спасибо.

PAL.Loop:=True;
PAL.WaitForTime('XX:00:00');
Song := CAT['Open_jingles'].ChooseSong(smRandom,NoRules);
ActivePlayer.FadeToNext;
PAL.WaitForTime('XX:15:00');
Song := DIR['f:\Jingles_BadFM\15-30-45_jingles'].ChooseSong(smRandom,NoRules);
Queue.Add(song,ipTop);
PAL.WaitForTime('XX:30:00');
Song := DIR['f:\Jingles_BadFM\15-30-45_jingles'].ChooseSong(smRandom,NoRules);
Queue.Add(song,ipTop);
PAL.WaitForTime('XX:45:00');
Song := DIR['f:\Jingles_BadFM\15-30-45_jingles'].ChooseSong(smRandom,NoRules);
Queue.Add(song,ipTop);

7
BadFM_Radio @BadFM_Radio
спс, понял уже сам

7
BadFM_Radio @BadFM_Radio
Добрый день! Нужен скрипт для выпуска джинглов следующего вида. В конце нового часа - почасовка (случайная из папки или категории)с прерыванием играющей песни. А каждые десять минут по коду скрипта закидывается вверх плейлиста случайный джингл (из папки или категории). Компилятор выдаёт ошибку в строке:
Queue.Add(Song,ipTop);
Подскажите, в чём проблема. Спасибо.


var P: TPlayer;
var Song: TSongInfo;
var q: integer;
var Time: string;

//================================================================

PAL.Loop := True;
PAL.WaitForTime('XX:XX:40'); // запускаемся в конце каждой минуты
Time:= FormatDateTime('hh:nn', now+1/1440);
q:= 0;
repeat
q:= q+1;
Case Time of

//=================================== планировщик запуска файлов:

'XX:09': Song := CAT['Jingles_10m_20m_30m_40m_50m'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop); //добавляем его в начало очереди
'XX:19': Song := CAT['Jingles_10m_20m_30m_40m_50m'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop); //добавляем его в начало очереди
'XX:29': Song := CAT['Jingles_10m_20m_30m_40m_50m'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop); //добавляем его в начало очереди
'XX:39': Song := CAT['Jingles_10m_20m_30m_40m_50m'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop); //добавляем его в начало очереди
'XX:49': Song := CAT['Jingles_10m_20m_30m_40m_50m'].ChooseSong(smRandom,NoRules);
Queue.Add(Song,ipTop); //добавляем его в начало очереди
'XX:59': Song := CAT['Jingles_open_hour'].ChooseSong(smRandom,NoRules);
P := Aux1;
if P <> nil then
begin
Queue.Add(Song,ipTop);//добавляем его в начало очереди
P := ActivePlayer;
if P <> nil then
P.FadeToNext;//обрываем текущую песню
end;

7
BadFM_Radio @BadFM_Radio
Доброго времени суток! Подскажите, как зациклить этот скрипт, а то после выполнения останавливается. Спасибо!

Pal.WaitForTime(T['XX:59:55']);
CAT['Jingles_open'].QueueTop(smRandom,NoRules);
ActivePlayer.FadeToNext;

398
ubuntu-studio @ubuntu-studio
[quote=BadFM Radio]Подскажите, как зациклить этот скрипт, а то после выполнения останавливается. [/quote]

добавьте в конец строчку без ковычек:

"PAL.Loop := True;"

2
Sterkh @Sterkh
Здравствуйте, обыскал эту ветку-решения не нашел, если пропустил его направьте.
Нужно следующее: есть несколько групп треков, для каждой группы написал джингл-комментарий, необходим скрипт, который при обнаружении трека-триггера в топе списка будет :

1. ставить джингл-комментарий (в топ списка перед триггером), соответствующий группе, из которой этот трек( это, я так понимаю,самое простое решение)
или
2. включать в соседней дэке(либо SFX) со снижением громкости в ведущей дэке на время воспроизведения джингла(известно заранее).

Как я мыслю, в скрипте будет прописано сканирование топ композиции списка, затем проверка, типа, если в топе трек-триггер, то поставить в топ соответствующий джингл, или, если по пункту 2, в момент начала воспроизведения триггера, снижение уровня громкости деки, активация SFX, соответствующего триггеру.
Надеюсь описал задачу не сумбурно и понятно.
Если кого интересует причина необходимости такого выверта, объясню, дневной эфир ведется либо автоматом сервером (скучно и однообразно, разбавлено лишь рекламой), либо с моего компа,но человек, находящийся дома в мое отсутствие, способен лишь перезапустить работу машины и Сэма, вести эфир не умеет.
Не проблема прописать для каждого трека соответсвующий джингл, просто, не знаю как.
Подозреваю, что у моей проблемы может быть и более простое решение, за любую помощь буду благодарен.

Отредактировано Sterkh - 13.07.2014
445
Alex @VapSite
Не проблема прописать для каждого трека соответсвующий джингл, просто, не знаю как.

ручками ручками .... )

Отредактировано VapSite - 13.07.2014
2
Sterkh @Sterkh
VapSite пишет:

Не проблема прописать для каждого трека соответсвующий джингл, просто, не знаю как.

ручками ручками .... )

Приятно умного человека услышать, да еще и в теме который.
Ищу, что именно этими ручками прописывать.

3
kogerer @kogerer
предлагаю свой скрипт планировщика под глючный сэм.
то что сэм глючный я понял еще до версии 4.7.4, другие версии не юзал.
тот кто найдет логические ошибки поиска хеша в этом скрипте, тому дам конфетку.
я это к тому, что я их не нашел. и потому считаю движок сэма не идеальным.
вообщем скрипт работает. но иногда не срабатывает.
некоторые блоки кода позаимствованы из других источников (касается плеера).
скрипт иногда развивается.
все остальное можно будет найти на bezpravil.org/lioblindsoft/soft.html
если вы делаете изменения в этом скрипте и перевыкладываете его, то удаляйте в шапке кода мой ник.

скачать:
**********

далее немного устаревшая справка, но она еще актуальна для текущей версии скрипта 3.2.3.

инструкция по использованию планировщика запуска файлов версии 3.1 :

описание:
планировщик может запускать медиа файлы непосредственно с диска или папок Sam Broadcaster.
умеет стартовать и останавливать плеер.
может миксовать в случайном порядке файлы из папки "Sound FX (All)" и других папок при указании их имен.
также может миксовать файл с диска, на играющий трек или файлы по очереди.
понимает как абсолютное , так и относительное время, включая день недели, день месяца, и месяц.
работает только с внешним файлом ваших программ. который можно назвать "DJ листом".

не рекомендуется изменять код скрипта, во избежание глюков в работе оного.
скрипт распространяется совершенно бесплатно.
и предлагается - как есть..

Сначала о внешней структуре скрипта:
скрипт управляется непосредственно через его рабочую папку "scheduler".
возможно управлять как локально, так и удаленно (например через FTP сервер).
скрипт управляется только через дисковый доступ.

пример для дискового пути - D:\radio\pal\
допустим, что у вас есть такой путь.
скопируйте скрипт планировщика (scheduler.pal) по пути - D:\radio\pal\
туда же скопируйте рабочую папку скрипта "scheduler".
в итоге, в папке PAL у вас окажется файл scheduler.pal и папка - Scheduler

в рабочей папке - Scheduler после первого запуска скрипта, создаются следующие файлы:
lineplayer - папка в которую сохраняются логи о состоянии строки управления плеером и списком очереди (имеется сразу).
служит для отладки скрипта. по умолчанию отключено.

loadlist.dm - файл перезагрузки DJ листа без перезагрузки скрипта.
для этого его нужно удалить.
об этом говорит его расширение - delete me.

running.dm - объявляет, что скрипт работает и обрабатывает данные с DJ листа.
Чтобы приостановить работу DJ листа, следует этот файл удалить.
когда наступит очередная временная точка - создастся файл ignored.dm .
который означает, что DJ лист игнорируется.
Чтобы возобновить работу скрипта вновь, следует этот файл (ignored.dm) удалить.
иными словами этот механизм работает по принципу Т-Триггера.

scheduler.lst - файл планировщик программ вещания или DJ лист.
в него вписываются команды управления скриптом в синтаксисе приведенном ниже.

Valerror.log - содержит информацию о переполнении и размере таблицы поиска хэшей времени.

подключение скрипта к SamBroadcaster:
откройте SamBroadcaster.
в списке скриптов нажмите контекстменю и нажмите на пункт "New Ins".
далее в диалоге можете сразу отметить его авто запуск, поставив флажок на "Automatically start script".
впишите в редактор полный путь к скрипту. например:
Script source file
D:\radio\pal\scheduler.pal
перейдите на jaws курсор и нажмите кнопку - OK.
после этого скрипт будет подключен, а также запускаться автоматически при запуске Сэма.
далее настраиваем планировщик.

настройка планировщика:

открываем скрипт scheduler.pal в обычном блокноте и находим строку:
// укажите текущую директорию для файлов управления. в конце записи ставьте - "\".
Const CurrentPath= 'd:\radio\pal\Scheduler\';

это и есть путь к рабочей папке скрипта. измените его если есть необходимость.
не указывайте не существующих путей.
сохраните изменения в файле, если таковые были сделаны.

далее запускаем скрипт на выполнение - F9.
через некоторое время в рабочей папке - scheduler, будут созданы файлы управления.
заходим в эту папку и открываем в блокноте файл DJ листа - scheduler.lst
далее пишем программу вещания. после этого сохраняем результат и удаляем файл - loadlist.dm , чтобы программа вступила в силу.
также для этого, можно просто перезапустить скрипт - F10 потом F9.

синтаксис ваших команд следующий:

[@mon.day.dw-HH:MM:SS=PlayerMode|FileNamePath1|FileNamePath2|..]

где:
mon - означает имя месяца.
day - означает число месяца.
dw - означает день недели.
HH - означают часы.
MM - означают минуты.
SS - означают секунды.

левую и правую квадратные скобки не вписываем..
в левой части командной строки вписывается месяц, день месяца и день недели, потом "дефис", как разделитель и сразу же время срабатывания в часах, минутах и секундах, в правой (после знака "=") действие проигрывателя.
день месяца, день недели, часы, минуты и секунды обязательно указываются двусимвольными.
месяц указывается трех-символьным.
например:
"янв.05.сб-02:05:00".

если например нужно, чтобы файл проигрывался каждый день каждого месяца в 25 минут каждого часа,
тогда вместо абсолютных часов вписываем - "x" , только прописными буквами.
также прописными "x" прописываются любые параметры кроме минут и секунд, если нужно их применить как любое значение.

тоесть полная запись будет такая - "x.x.x-x:25:00" , без кавычек разумеется.

также можно вписывать сокращенные значения, кроме значение в поле часов - "x:25:00".
пример для срабатывания по субботам Января в 19 часов:
"@янв.x.сб-19:00:00"
можно это же записать сокращенно:
"янв.сб-19:00:00"

это является тождеством.
обратите внимание, что первым символом выступает знак "@".
он обязателен для парсера строки.
если вам необходимо закоментировать строку, то этот знак не вписываем.

ниже смотрите список корректных хэшей и их приоритеты срабатывания.

в правой части строки, после знака "=" - вы вписываете выражение - "PlayerMode|FileNamePath1|FileNamePath2"

где:
PlayerMode - режим проигрывания плеера.
FileNamePath - полный путь к медиа-файлу

PlayerMode может иметь следующие параметры:
"q" - поставить файл в очередь за играющим в данный момент треком.
"ftn" - остановить играющий трек и проиграть указанный файл (FadeToNext (фейд уменьшения на фейд увеличения))
"sdrm" - миксовать случайно выбранный трек из папки сэма "Sound FX (All)" если параметр не указан, или трек из другой папки (при указании ее имени), на играющий трек
"m" - миксовать файл на играющий трек
"ql" - работа со списком очереди - для загрузки папок. (пришлось сделать отдельно, так как тогда все глючит)
"ftp" - включить воспроизведение трека вверху очереди в списке Queue (работает только при остановленом плеере).
"fts" - остановить играющий трек (останова плеера).
"de" - (Deck Eject) извлечение деки A и деки B.
Рекомендуется для завершения эфира, после "fts".

FileNamePath может иметь как один параметр - полное указание пути к файлу, так и дополнительный тэг в префиксе пути.
дополнительный тег нужен, чтобы указать - будет ли файл ставиться следующим или текущим (который игрался последним).

например:
"@x:25:00=ftn|[n]c:\music\radio\*.mp3"

это значит , что в 25 минут каждого часа, каждого дня, каждого месяца в папке радио будет проигрываться очередной файл с расширением .mp3.
файлы должны быть пронумерованы в трехзначном формате - 001.mp3, 010.mp3, 100.mp3.
также можно проигрывать другие медиа-файлы поддерживаемые Сэмом.
также можно проигрывать любые плей-листы (нужно только поменять расширение файлов).
знак - звездочка в этом режиме обязателен!
тэг может иметь варианты:
[n] - поставить следующий файл.
[c] - поставить файл который проигрывался последний раз (например повтор передачи вечером).

также имеется подобная возможность для папок сэма.
[sdn] - поставить следующий трек из папки Сэма.
[sdr] - поставить случайный трек из папки Сэма.

тэги sdn, sdr - вписываются перед именем папки сэма ( [sdn]Music (All) ).
или другой..
в параметр - "ftn", "q" - можно вписывать очередность путей в любом порядке.
тоесть, как пути к конкретным медиа-файлам и плейлистам,
так и к папкам Сэма и папкам с индексными файлами.
а также и URL потоки (вывод новостей или прогноза погоды со сторонней станции).
учтите что URL поток не даст проиграться правосторонней части перечисляемых параметров-путей, пока вы вручную не промотаете список очереди вперед - F4.
также это может сделать и скрипт. достаточно ввести еще одну запись для включения например , какого-нибудь файла.

если в параметре PlayerMode вы указываете - "ftp", "fts", "de", то вписывать параметр "FileNamePath" не нужно..
всего можно перечислить 12 параметров.
для ftn, q - 11.
для ql - 9.
для m, sdrm - 1 (остальные игнорируются).

загрузка папок:
запись выглядит так - "ql|cas|ftn|folder1|other pathes|folder2"
вообщем поддерживаются те же параметры что и - ftn, q, но без возможности проигрывания
индексных файлов.
поддерживается загрузка папок, файлов и плей-листов со статическими именами.
собственно режим только для загрузки папок.
параметр "ql" означает, что применяется этот самый режим.
второй параметр может иметь следующие варианты:
cas - очистить список очереди, загрузить папку, перемешать загруженое.
ca - очистить список очереди, загрузить папку.
as - загрузить папку, перемешать загруженое.
a - загрузить папку.
s - перемешать список очереди.

третий параметр может иметь варианты:
q - не прерывать игру плеера (очередь..).
ftn - сразу после окончания работы режима ql воспроизвести трек, вверху очереди списка очереди.

остальные параметры , это пути к загружаемым папкам и файлам.
при указании пути к папке, обязательно последним символом ставьте - "\".

режимы - sdrm, m - имеют только один параметр FileNamePath.
в нем указывается статический путь к файлу или к папке Сэма.
но для режима "m", можно указать и перечисление файлов, как в режимах - q, ftn.
"@x:25:00=m|[n]c:\music\radio\*.mp3"
"@x.05.x-x:45:00=m|[c]c:\music\radio\*.mp3"

без кавычек разумеется.

пример генерации хэшей для даты - 16 Сентября воскресенье 15:25

приоритет срабатывания хэшей даты / времени следующий:
сен.16.вс-15:25:00
сен.16.x-15:25:00
сен.16-15:25:00
сен.x.вс-15:25:00
сен.вс-15:25:00
x.16.вс-15:25:00
16.вс-15:25:00
x.16.x-15:25:00
16-15:25:00
x.x.вс-15:25:00
вс-15:25:00
сен.x.x-15:25:00
сен-15:25:00
x.x.x-15:25:00
15:25:00
сен.16.вс-x:25:00
сен.16.x-x:25:00
сен.16-x:25:00
сен.x.вс-x:25:00
сен.вс-x:25:00
x.16.вс-x:25:00
16.вс-x:25:00
x.16.x-x:25:00
16-x:25:00
x.x.вс-x:25:00
вс-x:25:00
сен.x.x-x:25:00
сен-x:25:00
x.x.x-x:25:00
x:25:00

---------

чем выше запись хэша, тем выше приоритет.
учитывайте это в планировании передач.

ниже приведены сокращения дней недели и месяцев при указании их в списке планировщика:
вс - воскресенье
пн - понедельник
вт - вторник
ср - среда
чт - четверг
пт - пятница
сб - суббота

---

янв - Январь
фев - Февраль
мар - Март
апр - Апрель
май - можно догадаться
июн - Июнь
июл - Июль
авг - Август
сен - Сентябрь
окт - Октябрь
ноя - Ноябрь
дек - Декабрь

---------

обратите внимание, что между всеми параметрами выражения - PlayerMode и FileNamePath стоят всегда разделители - "|".
и обязательны для парсера разбора строки.

Внимание!
скрипт позволяет вписывать в DJ лист секунды.
лучше вписывать - 00 секунд.
так как этот механизм вычисления упреждающего срабатывания при всех стараниях работает медленно на уровне движка SamBroadcaster.
что приводит к пропуску срабатывания ваших программ заложеных в DJ лист.
чтобы это работало, нужно сделать так, чтобы между любыми программами по ходу времени вещания не было меньше 15 секунд.
причем на уровне минут и секунд. часы игнорируются из-за ограничения процедуры ожидания, заявленую разработчиком SamBroadcaster.
примеры неправильного срабатывания:

20:59:50=program1
21:00:00=program2
в этом случае программа2 не сработает, так как между записями 10 секунд.

20:59:50=program1
23:00:00=program2
тут тоже не сработает программа2, так как здесь также разница в 10 секунд.
напоминаю, что часы игнорируются.

для срабатывания можно записать так:
20:59:45=program1
21:00:00=program2

20:59:45=program1
23:00:00=program2
здесь уже разница в 15 секунд.

также сработает равное время:
20:00:00=program1
23:00:00=program2
здесь полное тождество - 00:00.
при тождестве проблема исчезает.
разные минуты - тождеством не являются.
главное, чтобы конец одной минуты имел разницу в 15 секунд с началом другой минуты.
пример:
20:59:50=program1
23:00:05=program2
здесь разница в 15 секунд.
или:
20:59:50=program1
23:01:00=program2
здесь разница в 1 минуту 10 секунд, что вполне допустимо.

также проблема срабатывания не случится и в пределах одной минуты. главное чтобы минимальная разница была в 15 секунд.
пример:
21:00:00=program1
23:00:20=program2
или:
21:35:25=program1
23:35:45=program2
здесь разница в 20 секунд.

если у вас очень большой DJ лист, то может случиться переполнение статической таблицы поиска хэшей времени.
в этом случае часть невместившихся программ вещания попросту не сработает. также возможно зависание скрипта.
узнать про это можно, открыв файл - Valerror.log
если вы не видите сообщение - "Ошибка! Превышен лимит длины таблицы", то значит все нормально.
обычно запись выглядит примерно так:
Занято столбцов таблицы хэшей - 367 из 2000

если оказалось, что лимит превышен, то откройте файл скрипта - scheduler.pal ,
найдите строку - // размер таблицы хэша поиска времени
и измените значение константы "C" :
Const c= 2000; - на какое нибудь большее значение.
не ставьте значение больше - 32767.
старайтесь вообще не ставить большие значения, так как при запуске скрипта ваш SamBroadcaster затупит - скрипт загружается продолжительное время.

Лисовой Игорь Украина Киев 23 Января 2013

3
kogerer @kogerer
еще забыл сказать о том , что можно управлять энкодерами по их номеру.
для этого используйте команду - se.
знак плюс -включает , а знак минус выключает энкодер.
пример:
@01:07:00=se|+0|+1|-2|-3

5
butthead @butthead
скрипт ретрансляции ни у кого не завалялся?
хотелось бы сделать чтоб допустим с с 0:00 до 8:00 играло интернет радио, после 8:00 брал треки из библиотеки.
как так сделать и возможно ли?буду благодарен :)

1
dalek @dalek
Добрый день. Ребят, перечитал всю ветку, но не увидел нужного мне вопроса.. Подскажи pal или может как -то в настройках замутить что-бы заказанная песня на веб морде добавлялась не в конец списка, а в начало. Благодарю заранее.

410
Евгений @Drakkar
в конец списка какого? Не понял вопроса :)

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

___________________________________________

Render: вот, что мне удалось
я немного изменил скрипт и использую для включения Scheduler (Планировщик) любое время запуска или день недели и так далее...

var Song : TSongInfo;
var P : TPlayer;
var i : integer;

i := ActivePlayer.GetVolume;

ActivePlayer.Volume := 227; // приглушаем уровень громкости играющего трека
ActivePlayer.Volume := 199;
P := Aux1; // через что играть
if P <> nil then
begin
Song := Cat['radio-jingle'].ChooseSong(1,NoRules);
if Song <> nil then
begin
Aux1.QueueSong(Song);
Aux1.Play;
End;
End;
PAL.WaitForTime('+00:00:05'); // время ожидания к возрату увеличения громкости
ActivePlayer.Volume := 227;
ActivePlayer.Volume := 255;

время ожидания меняем на нужную длину вашего джингла
возможно кому то пригодится, удачи!

Отредактировано wisher - 28.06.2023