[Приложение] Sound Direct Manager

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Вт апр 07, 2015 3:30 pm

старенький vb6.
исходники я выложил тоже в первом сообщении.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1754 раза
Контактная информация:

Re: Sound Direct Manager

Сообщение skysilver » Вт апр 07, 2015 3:35 pm

Понятно. Был бы С/С++, тогда б, возможно, и сам бы взялся портировать.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Вт апр 07, 2015 3:48 pm

у bass.dll есть примеры на С
Все очень подробно!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Идеальный мультирум в Majordomo

Сообщение Amarok » Ср апр 08, 2015 8:49 am

Небольшое сочинение на тему.
Идеальный мультирум в Majordomo
Мультирум должен иметь возможность отправлять звук на указанное устройство. В качестве указателя логичнее всего использовать ip-адрес. Сама Алиса должна уметь определять терминал для вывода звука. К примеру, я запрашиваю прогноз погоды со своего андроида и, естественно, ответ должен озвучиваться только на нем.
Так-же в настройках должна быть функция подмены одного ip-адреса на другой. Для примера: я со своего сотика спрашиваю у Алисы время, а ответ слышу на компьютере.
Должна быть возможность выбора типа озвучиваемых сообщений для каждого терминала. Опять же - пример: ребенку в комнате нужно ежечасно слышать время, маме это вообще никуда не уперлось и ей время нужно называть лишь по запросу, папе говорим лишь о неполадках, а о том что грабят - орём на всю квартиру.
За это сообщение автора Amarok поблагодарили (всего 2):
triada13 (Ср апр 08, 2015 11:12 am) • Vovix (Ср апр 08, 2015 11:19 am)
Рейтинг: 2.33%
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Ср апр 08, 2015 1:23 pm

Так собственно все это уже есть!
Тип сообщений в моем примере связи с МД зависит от значения $level. Тут и ночные сообщения, и мультирум, и тревожные любого уровня. Куда чего отправлять, выбирайте сами. Куда укажите, туда сообщение и полетит.
Личный разговор с терминалом у меня уже был ранее реализован в шаблонах поведения. Но то было через голосовой ввод с сохранением id сессии так сказать. Вчера пробовал вариант с именами пользователей. Все отлично, но надо еще подумать.
В программе можно отправлять сообщение на канал (на колонку). Но уже есть вариант отправлять на нужный ip. Это элементарно делается в коде скрипта из примера в группах case. Где то мы указываем номер канала, а где то ip куда отправить сообщение. Причем комп с одним ip может обслуживать сразу несколько комнат, разведя по ним каналы карты.
Единственное, чего в программе нет и быть не может, это ответ прямо в браузер. Сценарий конечно может перехватить и понять что это нужно отправить именно на в браузер со страницей МД, но в МД пока нет функции проигрывания звука. Конечно ее можно написать самому. Но это дело будущего. sdm мог бы для этого стримить в файл, а браузер терминала проигрывать его.
Сперва нужно обговорить алгоритм работы. Написать то не проблема. Нужно четко представлять задачу.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Sound Direct Manager

Сообщение ингвар » Ср апр 08, 2015 1:57 pm

Большое спасибо за программу подключить получилось но есть пару вопросов
1 Если программа не открыта или закрылась с ошибкой то звук не будет воспроизводиться?
2 Так как только учусь как написать скрипт на подобие - который говорит время на определенный канал?
Windows 10 + Raspberry Pi3 + ESP8266
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Ср апр 08, 2015 2:28 pm

ингвар писал(а):1 Если программа не открыта или закрылась с ошибкой то звук не будет воспроизводиться?
Если отправка заданий из МД в SDM настроена через командную строку, программа будет каждый раз открываться, читать сообщение и самоуничтожаться. Иначе, если не брякнуть SDM после выполнения задания, второе задание уже не придет, т.к. МД будет ожидать завершения первой копии программы. Поэтому в ini файле есть по умолчанию включенная настройка, чтобы SDM закрывалась если запуск был с параметрами командной строки.
А если отправка заданий идет по TCP порту, то при закрытой программе конечно же ничего не прозвучит. Но при этом МД запишет ошибку, посмотреть которую можно в Панель управления - СИСТЕМА - Ошибки системы.
ингвар писал(а):2 как написать скрипт на подобие - который говорит время на определенный канал?
Тут задумка такая: Сценарий sayHook перехватывает все сообщения для штатной функции say(). У этой функции есть параметр $level. С помощью него можно задавать важность сообщения или отправить его в нужную комнату. В первом сообщении указаны все возможные варианты значения $level.
Например:
say('Привет'); или say('Привет',0); прозвучит во всех колонках днем, а ночью только в указанной с приглушенной громкостью.
say('Привет',1); Отправит сообщение в первый канал звуковой карты.
say('Привет',2); во второй.
say('Привет',10); общее не тревожное сообщение в любое время суток.
ну и т.д.
За это сообщение автора Bagir поблагодарил:
ингвар (Ср апр 08, 2015 3:36 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
ингвар
Сообщения: 142
Зарегистрирован: Вт ноя 25, 2014 2:06 pm
Благодарил (а): 33 раза
Поблагодарили: 0

Re: Sound Direct Manager

Сообщение ингвар » Ср апр 08, 2015 3:58 pm

Bagir писал(а): say('Привет'); или say('Привет',0); прозвучит во всех колонках днем, а ночью только в указанной с приглушенной громкостью.
Когда стоит параметр 0 или ни чего то сообщения пишется в чат,не проговаривая его,а когда 1,2 итд то по каналам говорит, в чем может быть проблема?
И еще вопрос как сделать в скрипте чтоб регулировалась громкость ?

Заметил что программа работает когда ставишь параметр 1-8 (количество каналов) если ставишь другое число 0 или 30 (40) то тишина а если поставишь 9 то она вобще закрывается с ошибкой
Windows 10 + Raspberry Pi3 + ESP8266
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Ср апр 08, 2015 10:34 pm

Большое спасибо за тест и комментарии. Но если собирайтесь пользоваться программой и дальше, то Вам обязательно следует еще раз полностью перечитать первое сообщение. Там есть ответы на все вопросы. Я периодически его обновляю.
Почему 1-8. Потому что самая "широкая" звуковая карта имеет 8 каналов. Если у Вас карта только на 2 канала, то конечно же не стоит слать проге команду отправить сообщение на третий канал. В лучшем случае будет штатная ошибка. В худшем - аварийный вылет. Подобные ошибки я буду закрывать по мере возможности. Но пока надо быть аккуратнее. И уж точно не стоит слать проге команду отправить что то на 9 канал )). Но это вовсе не означает, что 9 никогда не пригодится. Вы можете обработать 9 в группах case сценария sayHook. Тогда он будет знать, куда надо отправить это сообщение. И возможно say('Привет',9); полетит у Вас куда нибудь по сети на удаленный плеер.
0 или ничего. Тут надо еще раз проверить. По задумке это общие сообщения. Днем они улетают на все каналы с обычной громкостью, установленной в ini файле. А ночью эти сообщения переадресуются на указанный в

Код: Выделить всё

case 0: // общие не тревожные сообщения ночью переадресуются на указанный канал с пониженной громкостью 
 if (gg('NightMode.status')){ $atr='-outputchannel:3 -volumemessage:40 ';}
 break;
канал с понижением громкости. возможно причина тут. Обратите внимание на gg('NightMode.status') Да и вообще этот сценарий не из тех, которые можно просто скопировать. Его надо основательно изучить и модифицировать под себя. И если будут вопросы и предложения по нему, обязательно пищите. Именно этот сценарий и рулит всеми сообщениями, и в частности мультирумом. А SDM просто проигрывает сообщения на указанном канале при указании параметра outputchannel и только.
Громкость:
В SDM есть два вида громкости. Общая громкость volumemaster и громкость конкретного сообщения volumemessage. Громкость сообщения указывается от общей громкости. То есть она может только уменьшить громкость конкретного сообщения. По умолчанию громкость сообщения выставлена как 70% общей громкости. Для ночных сообщений это будет 40% а для критичных 100%
В sayHook я не задумывал пользовательское управление громкостью сообщений. Я оставил эту возможность только для изменения громкости критичных и ночных сообщений. А вот общей громкостью volumemaster можно и нужно управлять. Пример есть в первом сообщении. Значение этой громкости при изменении сразу записывается в ini файл, и будет восстановлена при следующем открытии программы.
Установку глобальных параметром микшера я оставил на выбор пользователя. Таким образом можно подстроить нужные уровни звучания в разных комнатах.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Sound Direct Manager

Сообщение Bagir » Чт апр 09, 2015 11:18 am

Еще кое что о передаче данных через TCP порт. Работает у меня этот способ стабильно, если не считать, что иногда сразу после моего запроса ловится пустой запрос. Сейчас SDM реагирует на него фразой GET запрос не распознан. Я пока не понял почему такое может происходить. Самый простой способ конечно игнорировать неподходящие сообщения. Эта "отписка" была добавлена для отладки. При этом тело запроса добавляется в поле Медиа. Не по назначению конечно. Это сделал для отладки. Медиа в дальнейшем будет крутить фоновую музыку и Интернет радио. Были еще у кого такие сообщения о не распознанном запросе?
В следующем обновлении я их уберу. Проговариваться не будет, но запись будет добавляться в Журнал для понимания чего происходит.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить