451

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

учись. учись ... главное чтоб толк был, а не просто трата времени .. как в моем случае.  Линукс хорошо тренирует память, внимательнсоть. усидчивость.  Но самое главное он отнимает у человека драгоценное жизненное время!

Отредактировано radio_good (09-07-2017 20:08:44)

452

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

я уже привык к PAL скриптам, обожаю их!
сейчас потихоньку учу SAM Broadcaster автоматизации с объединением PAL и PHP скриптам
недавно получилось отправка формы данных с сайта на удалённый комп где стоит SAM Broadcaster
вернее - текстовое сообщение которое отображается вместе с ради-потоком
можно посылать короткие сообщения - к примеру: пожелания, поздравления с праздником и так дал...
пока ещё сыровато... получилось а, мне нужно сделать так чтоб сообщение стиралось до нового и так далее
вообщем как получится тогда выложу ...

Отредактировано wisher (12-07-2017 11:48:29)

453

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

не знаю ... меня особо никогда не интересовала тема технической работы отсылки титров, сбора статистики, скриптов, плееров и т.п.
У меня всегда был на первом месте вопрос по выдаваемому звуку слушаетлям. Обработка треков до ПО процессора с высоким/низким RMS, сама работа процессора в целом (limiter/gain/comressor/speed), каков должен быть RMS на входе и выходе, так-же динамика и частотная харакетритика звучания.
Моё мнение - удачный и сбалансировнный звук, который хочется слушать и слушать, с хорошей динамикой в звучании и это успех на 50% работы радио .. и в этом вопросе куда больше сложной и рутинной работы чем, например над скриптом вывода титров или ковров на сайт)
Например, хороша динамика на радио Максимум в фм-диапозоне, где чувствуется мощь и loud, не возможно оторваться от приемника... так-же Русское радио - яркое, громкое звучание задающее хорошее настроение, но чуть устаешь .. нужна привычка.

Вопросы автоматизации р/вещания решает софт - там всё есть. Остается лишь настроить "под себя" и в путь! Ротация - это индивидуальный вопрос, который решает для себя каждый сам. . инструменты для этого есть.

Отредактировано radio_good (11-07-2017 01:22:36)

454

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

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

Отредактировано wisher (10-07-2017 12:55:11)

455

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

Обновлённая версия Хит-Парад Топ-10 с быстрой загрузкой треков в очередь!
1.Плюс выбор дня недели для воспроизведения, вечер, день или утро ...
2. Дополнение для автоматизации - аудио-треки с голосом ведущего!

var P : TPlayer;
var OldTime : DateTime;
OldTime := Now;
PAL.Loop:= True; // Скрипт будет выполнятся постоянно
// ------------- насторить секунды для точного запуска (интервал не более 30 сек.)
if (now >= T['19:59:16']) and (now <= T['19:59:46']) and // запуск в 20:00 вечера
((DayOfWeek(Now) = Sunday)) then // запускается только в воскресенье 
    begin
// -----------------------------------------------------------------------------
Queue.AddFile('C:\hiparad\end-voice.mp3',ipTop); // голос ведущего о завершении Хит-парада
// -----------------------------------------------------------------------------
var D : TDataSet;
var C : Integer;
D := Query('SELECT songlist.*, count(*) as cnt '+
              'FROM songlist,requestlist '+
              'WHERE songlist.ID = requestlist.songID '+
              '      AND requestlist.code < 700 '+
              'GROUP BY songlist.ID '+
              'ORDER BY cnt DESC LIMIT 10',[],True); // лимит 10 треков
// ставим в очередь на воспроизведение с 10 трека по 1
C := 0;
D.First;
while not D.EOF do
begin
C := C + 1;
WriteLn('#'+IntToStr(C)+'. '+D['artist']+' - '+D['title']);
Queue.AddFile(D['filename'],ipTop);
D.Next;
// ----------------------------------------------------------------- (7-8 сек. фоновый джингл - Желательно из ударных инструментов)
Queue.AddFile('C:\hiparad\silent-jingl.mp3',ipTop); //  джингл - для красивого эффекта перехода от трека к треку
end;
Queue.AddFile('C:\hiparad\start-voice.mp3',ipTop); // голос ведущего о начале Хит-парада
// -----------------------------------------------------------------------------
PAL.WaitForTime(T['+00:01:00']); // задержка 1 мин. от повторного запуска
end;

Отредактировано wisher (10-07-2017 15:53:38)

456

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

radio_good пишет:

gyurgin вообще не признает никакой софт работающий на Windows!
gyurgin  линуксойд ...
Единственный софт это OOО "Тракт-Софт",  ну здесь, извиняйте, не поспоришь с лидером рынка ... )

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

457

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

Большая просьба о помощи!

Нужен скрипт выполняющий следующие требования:

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

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

Есть ли у кого такой скриптик.

Буду очень благодарен.

Спасибо.

458

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

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

459

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

gyurgin_

Я не специалист по скриптописанию, но мне кажется так можно порешать....

Есть скрипт делающий отбивку часа:

var P    : TPlayer;
var Song : TSongInfo;
var strFile, strPath, strJingle : String;

strPath := 'd:\Music MP3\iradio\Zastavki\'; // Путь к папке, где лежат отбивки часов
strJingle := 'd:\Music MP3\iradio\Zastavki\tchas_otbivka.mp3'; //Путь и название джингла после отбивки часов

PAL.Loop := True;

P := SoundFX; // Проигрывание файлов **-00.mp3 через SoundFX, а не через деки.

PAL.WaitForTime('XX:59:15'); //запускаемся в конце каждого часа. 45 сек - время буферезации, подбираем по свом параметрам, вкусам

//strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3

P := Aux1;
if P <> nil then
begin

    Queue.AddFile(strJingle, ipTop);
//    Queue.AddFile(strFile, ipTop);




P := ActivePlayer;
if P <> nil then P.FadeToNext;



end;

Он крутится в разделе PAL скрит в закладке B.

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

460

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

хочу присоединиться к обсуждению. привет ребята!
моё мнение, думаю всё можно реализовать главное обдумать действия и правила вещания, что очень важно!
при таком раскладе, что было написано выше, можно использовать сценарии, я уже как-то писал на предыдущих страницах этой темы.
или уж по простому, использовать встроенный планировщик, создать два PAL скрипта отбивки часов, к примеру 1-й будет работать в обычном режиме во все дни недели с указанием времени, но ограничить включение скрипта в нужное день и время.
2-й скрипт настроить на тот день и время когда нужно делать паузу или в приглушённом виде транслировать через дополнительные деки.
в подробности не буду вдаваться, хорошо подумать как и что и методом тыка и всё получиться
останется только поработать над удалением не нужных функций во втором PAL скрипте, возможно придётся что-то добавить...
да и ещё в обоих файлах заменить строчку PAL.Loop := True; на одноразовое включение PAL.Loop := False;
я не профессионал сам ещё учусь, готового решения у меня нет, помню что-то подобное делал...
в любом случае желаю удачи, чтоб всё получилось!!!

Отредактировано wisher (23-11-2017 13:18:37)

461

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

вот готовое решение из 2-х файлов с включением через Планировщик!
1-й скрипт оставляем обычный, за исключением  замены строчки PAL.Loop := True; на одноразовое включение PAL.Loop := False;

это уже 2-й скрипт с изменениями

{Важно! Настроить запуск скрипта в Планировщике на 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:15'); // Запускаемся в конце каждого часа.
{------------------------------------------------------------------------------}
{--}ActivePlayer.FadeToPause; // Ставим активный плеер на паузу
{------------------------------------------------------------------------------}
{--Определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3--}
strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3';
{------------------------------------------------------------------------------}
P := Aux1; // через что играть
if P <> nil then
begin
{--}Queue.AddFile(strJingle, ipTop);
{--}Queue.AddFile(strFile, ipTop);
{--}Aux1.QueueSong(Queue.NextInQueue);
{--}Aux1.Play;
end;
{------------------------------------------------------------------------------}
{--}PAL.WaitForTime('+00:00:22'); // 10-22 сек. настроить задержку под длину джингла
{------------------------------------------------------------------------------}
{--Включение трека в ожидании, через DeckA или DeckB--}
{--}DeckA.FadeToPlay; // плавное воспроизведение DeckA
{--}DeckB.FadeToPlay; // плавное воспроизведение DeckB
{------------------------------------------------------------------------------}
{После выполнения, скрипт останавливается до последующего запуска через Планировщик}

вся настройка происходит в Планировщике
http://s019.radikal.ru/i602/1711/54/f391bc0fbd1dt.jpg
Желаю удачи!!!

Отредактировано wisher (23-11-2017 13:18:57)

462

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

wisher

Спасибо большое, Вы очень грамотно умеете навести на мысль.

Попробовал некоторые наработки, обкатаю, отпишусь.

463

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

Попробовал...

В этот промежуток:

strPath := 'd:\Music MP3\iradio\Zastavki\'; // Путь к папке, где лежат отбивки часов
strJingle := 'd:\Music MP3\iradio\Zastavki\tchas_otbivka.mp3'; //Путь и название джингла после отбивки часов

PAL.Loop := True;

P := SoundFX; // Проигрывание файлов **-00.mp3 через SoundFX, а не через деки.

PAL.WaitForTime('XX:59:15'); //запускаемся в конце каждого часа. 45 сек - время буферезации, подбираем по свом параметрам, вкусам

//strFile := strPath + FormatDateTime('hh', now+1/24) + '-00.mp3'; //определяем название файла с нужными часиками. Формат имени файла XX-XX.mp3

P := Aux1;
if P <> nil then
begin

после PAL.Loop := True; достаточно вставить условие:

if (now >= T['19:59:00'])  and // запуск в 20:00 вечера
((DayOfWeek(Now) = Friday)) then PAL.WaitForTime(T['+02:00:00']); // задержка 2 часа от повторного запуска

А сам файл записи концерта просто прописывать в евенте.


К вопросу доработки ТОП 10.

Я бы в этом фрагменте:

// ----------------------------------------------------------------- (7-8 сек. фоновый джингл - Желательно из ударных инструментов)
Queue.AddFile('C:\hiparad\silent-jingl.mp3',ipTop); //  джингл - для красивого эффекта перехода от трека к треку
end;

тоже бы цикл подстановки XX_10 ... ХХ_01.mp3 файлов сделал соответственно расположению треков в позиции ТОПа.

Спасибо.

Отредактировано wwc (22-11-2017 22:30:22)

464

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

Большое пожалуйста!
чем смог тем помог, большего конечно не знаю, сам ещё учусь...
Удачи тебе!

465

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

wisher пишет:

Обсуждение зависит от вас! Ждём вместе ... ваших откликов!

Мне интересно.

Вопроса 2.

Первый. Русский текст так и не выводится.

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

Да. И можно ли впихнуть как-то картинку альбома методом запроса URL картинки из плей-листа базы ?

Спасибо.

466

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

привет wwc!
всё будет чётко работать!
для полной работы нужно подключить всё PAL и PHP скрипты, на предыдущей странице я описал только часть из этого...
и главное условие, версия samPHPweb 4.3.6 и локальный WEB сервер - если всё это есть то всё будет работать!
в начале нужно добиться вывода русского текста из баннера, потом подключить php скрипт и он будет сам записывать и перезаписывать текстовый файл. так вот как добиться вывода русского текста? есть ещё одно, настройка Icecast2 если там отображаются иероглифы
типа этого строчку значит вывода не будет...
решение eсть: нужно добавить важную строчку <charset>UTF-8</charset>

     <mount>
        <mount-name>/ваш_моунт.mp3</mount-name>   
        <password>xxxxxxxx</password>   
        <charset>UTF-8</charset>   
        <fallback-mount>/ваш_моунт.mp3</fallback-mount>   
        <fallback-override>1</fallback-override>   
    </mount>

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

по поводу картинок  с помощью URL запросов я не знаю, я просто вывожу стандартными стредствами PHP
вот пример моего кода укороченного

<?php
require("config.php"); // настройка конфигурации
$db->open("SELECT songlist.*, historylist.listeners as listeners, historylist.requestID as requestID, historylist.date_played as starttime FROM historylist,songlist WHERE (historylist.songID = songlist.ID) AND (songlist.songtype='S') ORDER BY historylist.date_played DESC",1); 
$history = $db->rows();
reset($history);
list($key, $song) = each($history);
PrepareSong($song);
//--------------------------------------------------------------------------------------------------
// комбинированные данные: смена переменных на более короткие
$artist_title = $song["combine"]; // сейчас играет артист - композиция
$picture = $song["picture"]; // данные картинка (Альбом)
//--------------------------------------------------------------------------------------------------
echo '<img src="'.$picture.'" alt="'.$artist_title.'" width="160" height="160" />'; // вывод картинки
echo "<br>".$artist_title; // сейчас играет: артист - композиция вывод результата на страницу
?>

Отредактировано wisher (27-11-2017 12:51:26)

467

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

Держи wwc обновлённую версию!  version.2 скрипт вывода кириллицы через Icecast2
Предыдущий скрипт работал у меня через обычные деки А,В. чем создавал лишний текст в истории плейлистов
с такой строкой как эта: ..//192.168.0.02/samPHPweb/recordsms.php тем самым создавая ненужный мусор
в этой версии я изменил работу через дополнительные деки и избавился от ненужного мусора в истории плейлистов.

Внимание! это мои настройки PAL скрипта, возможно нужно будет изменить путь к файлам, вашего Веб сервера.

var Song : TSongInfo; // для функции выключателя по типу S
const Filesongtitle = 'C:\www\htdocs\samPHPweb\recordsms.txt'; // Путь к  текстовому файлу
var UpdSong : TSongInfo;
var Banners : TStringList;
var LinePos : Integer;
{------------------------------------------------------------------------------}
var P : TPlayer;
var URL : String;
// эту строчку пока отключаем
//URL := 'http://192.168.0.02/samPHPweb/recordsms.php'; // Путь к файлу PHP
{------------------------------------------------------------------------------}
PAL.Loop := True;
PAL.WaitForPlayCount(1); // запуск скрипта после завершения очередного трека
PAL.WaitForTime(T['+00:00:01']); // 1-3 сек. задержка выполнения
{------------------------------------------------------------------------------}
{функция выключателя сценария по типу S}
if ActivePlayer <> nil then
begin
  Song := ActivePlayer.GetSongInfo();
  if Song['songtype'] = 'S' then
    begin // начало выполнения сценария
{------------------------------------------------------------------------------}
{-- загрузка URL страницы (PHP скрипта) для записи в текстовый файл --}
P := SoundFX; // через что играть
if P <> nil then
begin
{--}Queue.AddFile(URL, ipTop);
{--}SoundFX.QueueSong(Queue.NextInQueue);
{--}SoundFX.Play; // Воспроизведение через Aux1 или SoundFX
end;
{------------------------------------------------------------------------------}
end;
end; // конец выполнения сценария
{------------------------------------------------------------------------------}
// второй сценарий
PAL.WaitForTime(T['+00:00:06']); // 6-7 сек. задержка выполнения
{функция выключателя сценария по типу S}
if ActivePlayer <> nil then
begin
  Song := ActivePlayer.GetSongInfo();
  if Song['songtype'] = 'S' then
    begin // начало выполнения сценария
{------------------------------------------------------------------------------}
// создаём вывод баннера в эфир
{--}UpdSong := TSongInfo.Create;
{--}Banners := TStringList.Create;
{------------------------------------------------------------------------------}
{-- загрузка текстового файла --}
{--}if FileExists(Filesongtitle) then // чтение
{--}Banners.LoadFromFile(Filesongtitle); // загрузка
{--}UpdSong['title'] := Banners[LinePos]; // текст из файла
{--}Encoders.SongChange(UpdSong); // вывод через радио-поток
{------------------------------------------------------------------------------}
end;
end; // конец выполнения сценария
{------------------------------------------------------------------------------}
Banners.Free; // Очистить информацию после кодирования
UpdSong.Free; // Очистить информацию после кодирования
{------------------------------------------------------------------------------}

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

итак wwc, если русский текст из файла recordsms.txt который ты создал, проходит через Icecast2 сервер и у тебя всё получилось!
тогда позже, выложу PHP скрипт для автоматической записи текстового файла.

важно! (не забыть проверить что текстовый файл создан в  кодировке UTF-8 иначе ничего не получиться).

ещё кое-что, возможно возникнет вопрос почему я использую старую версию samPHPweb 4.3.6, сразу отвечаю с новой у меня
не получилось! так как не силён в PHP также как и PAL, а методом тыка ... всё получилось и работает на 100%
жду откликов! Удачи wwc!

Отредактировано wisher (27-11-2017 17:19:07)

468

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

wisher

Спасибо большое. Появится немного времени, обязательно изучу.

Я пользуюсь SAM Broadcaster PRO 2016.10. В нем все функции вывода контента через WEB реализовал -> http://www.rsgiradio.ru/

Мне Ваша тема интересна с точки зрения подпихивания контента в смартфон или в плееры.

Изначально в плеере отображается и артист, и композиция, и радиостанция. В некоторых плеерах да даже рандомная картинка вытягивается некой сетевой библиотеки. А в процессе запуска баннера остается лишь радиостанция (это при подменяемости баннера через определённый интервал (что и есть интересное решение). Сначала артист - композиция - альбом + картинка, потом баннер. И так по кругу.

Освобожусь обязательно изучу.

Спасибо.

469

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

Уважаемые участники форума !

Нашёл данный скрипт:

var Song : TSongInfo;
PAL.Loop := True;
Queue.AddFile('C:\jingl.mp3',ipTop); // путь до джингла
Song := CAT['CAT (New)'].ChooseSong(smRandom,NoRules);
Queue.Add(song,ipTop);
PAL.WaitForTime('+00:20:00'); //ожидаем до повтора

Как бы сделать так, чтоб он выбирал не по категории, а по последним загрузкам... С категориями немножко непонятно, ведь новый файл может быть где угодно. Хоть Music All, хоть в Power Hit.

Спасибо.

470

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

wwc пишет:

wisher

Спасибо большое. Появится немного времени, обязательно изучу.

Я пользуюсь SAM Broadcaster PRO 2016.10. В нем все функции вывода контента через WEB реализовал ->

Пожалуйста wwc!  самое главное когда всё проверишь, отпишись есть ли вывод кириллицы через Icecast2
если есть, то это уже здорово!
постараемся добиться нужного результата ...

471

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

wwc пишет:

Как бы сделать так, чтоб он выбирал не по категории, а по последним загрузкам...

wwc, я когда-то тоже пытался похожее замутить с загрузкой новых песен, но к сожалению ничего не вышло.
единственное, что и сейчас использую это отдельная категория для новинок помимо основных.
когда загружаю что-то новое ставлю в основные по жанру или по алфавиту
и так-же в категорию новинок. затем через неделю или две просто удаляю их из новинок и всё
а для очистки категории от старого списка треков, использую PAL скрипт очистки, сканирования и заполнения если есть что то новое ...
если такой скриптик нужен могу выложить ...

Отредактировано wisher (27-11-2017 17:19:41)

472

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

решил не дожидаясь, выложить.

// PAL скрипт ничего не выводит, он нужен для очистки, сканирования и заполнения
// Настройка: имя категории, путь к папке, время и дату запуска изменить на свои.
var P : TPlayer;
var OldTime : DateTime;
OldTime := Now;
PAL.Loop := True;
{------------------------------------------------------------------------------}
// 1 сценарий время запуска на 1 минуту раньше чем второй
if (now >= T['11:43:00']) and (now <= T['11:43:30']) and
((DayOfWeek(Now) = Monday)) then // запускается только в понедельник днём
begin
{--}Cat['new-music'].Clear;      // очистка категории от треков
{--}SubDir['C:\new-track'].Rescan;  // сканирование папки на наличие треков
{------------------------------------------------------------------------------}
{--}PAL.WaitForTime(T['+00:01:00']); // 1 мин. ожидания от повторного запуска
{--}End;
{------------------------------------------------------------------------------}
// 2 сценарий время запуска на 1 минуту позже чем первый
if (now >= T['11:44:00']) and (now <= T['11:44:30']) and
((DayOfWeek(Now) = Monday)) then // запускается только в понедельник днём
begin
{--}Cat['new-music'].AddDir('C:\new-track\',False,ipTop); // если найдены треки, заполнить ими категорию
//{--}Cat['new-music'].Shuffle; // перемешать треки если нужно
{------------------------------------------------------------------------------}
{--}PAL.WaitForTime(T['+00:01:00']); // 1 мин. ожидания от повторного запуска
{--}End;

если есть фантазия, возможно пригодиться.
может чё добавить, удалить, изменить много вариантов есть.

Отредактировано wisher (27-11-2017 18:10:14)