Форум русскоязычного сообщества Ubuntu


Автор Тема: Проигрывание музыки на переменах в школе  (Прочитано 2304 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн YDenis

  • Автор темы
  • Активист
  • *
  • Сообщений: 555
    • Просмотр профиля
Здравствуйте.
Подскажите пожалуйста. Ubuntu 12.04. Средняя школа. Нужно автоматизировать проигрывание музыки на переменах. Т.е в определенное время автоматом включалась музыка - на переменах, по окончании перемены соответственно отключалась.
Требования:
1. безмониторный вариант
2. оператор закинул музыку в расшаренную папку - она проигрывается, без ручного построения плейлистов
3. возможность легкого изменения расписания проигрывания (в случае если расписание перемен изменено)
4. плавное нарастание и плавное затухание громкости в начале и конце проигрывания.

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

Спасибо

Оффлайн 027

  • Участник
  • *
  • Сообщений: 108
  • Cinnamon
    • Просмотр профиля
Re: Проигрывание музыки на переменах в школе
« Ответ #1 : 29 Январь 2015, 23:20:27 »
Дело было вечером, делать было нечего заинтересовала меня ваша задачка.

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

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

Собственно, по пунктам.

Цитировать
1. безмониторный вариант
Слава богу, не винда, никаких проблем. Консольный плеер — тысячи их.

Цитировать
2. оператор закинул музыку в расшаренную папку - она проигрывается, без ручного построения плейлистов
В том числе есть и такие, которые запросто умеют проигрывать файлы из конкретного каталога (или директории) (мышевозное слово «папка» на этом ресурсе лучше не употреблять :) )
Например, mocp.

Цитировать
4. плавное нарастание и плавное затухание громкости в начале и конце проигрывания.
Эта фича (fading) может и есть у какого плеера, но у простецкого mocp я в мане не нашел. Да и фиг с ней, есть функция управления громкостью, и у нас не венда какая, а вовсе даже линукс.
То есть напишем простенький скрипт, и он будет делать то, что надо нам, а не только то, что неведомый вендопрограммист для себя придумал.

Цитировать
3. возможность легкого изменения расписания проигрывания (в случае если расписание перемен изменено)
Здесь тоже нет проблем, потому что есть cron. Стандартный юниксовый планировщик задач (шедулер). Напрямую редактировать список задач шедулера не так сложно, но неудобно. Да и дело ответственное, пятиклассника не пригласишь. Слишком легко напортачить. Надо написать скрипт, который будет читать и парсить какой-то очень простой текстовый файл. Типа такого:
09:45-09:50
10:35-10:40
и т.д.
Но тут я пока что чайник галимый, и лучше позвать опытных товарищей. Наример, камрада Azure, он человек толковый и отзывчивый. Не, ну распарсить я таки смогу, я не знаю, как грамотно и надежно скормить cron`у новое расписание. Скриптом. С учетом подводных камней. Пока что не знаю, даже не гуглил еще. :)

======================================

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

1. Все они, явно или неявно, состоят из сервера и клиента.
2. Сервер конкретно играет музычку, то есть: читает файл, декодирует и отправляет готовый звук на выход.
3. Клиент — это некая программа, которая посылает команды серверу, а тот их исполняет, по возможности. Команды простенькие, например «убавь громкость на 10». Или «запусти следующий файл из ранее указанного списка».
4. Обычно поиск выводит на парочку mpd/mpc. С ними все ясно. Первый — демон (на что как бы намекает буква d). Второй — клиент. Навороченная парочка, но я предлагаю посмотеть на крошку mocp - Music On Console Player.

Это сервер и клиент в одной тарелке, простой, как гарнир к котлетам. Ну хорошо, составной гарнир.

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

Но! Если ты попытаешься запустить mocp с командами «играть конкретно что хочу», напорешся на унылое сообщение типа «сервер не найден».

А мы посмотрим man mocp, а там в принципе все написано, но! надо иметь некоторую привычку и некий опыт уяснения этих ваших манов, иначе фиг поймешь, чего это оно пыталось косноязычно сказать.

1. Чтобы сыграть музычку из консоли, надо сначала запустить сервер. (Внезапно!)
2. Потом ему нужно скормить тупейшие и простейшие команды.
3...
4. ПРОФИТ!

Запуск сервера:
mocp -S(большая S, не перепутайте с малой)

Сказать серверу, где лежит склад музычки:
mocp -a /путь/к вашей/музычкеСервер скажет себе: «Ага!» — и создаст текущий плейлист в типичном месте для *nix утилиток ~/.moc

Сказать серверу, чтоб завел музычку:
mocp -fp«p» — это играть
«f» — это использовать следующий файлик из плейлиста
можно еще рандомный, предыдущий, я не проверял, а этот вроде работает. Вернее, начал работать, когда я к двум аудиофайликам добавил третий, а на двух он все время норовил один и тот же играть. Пробуйте, дерзайте, тестируйте, не стесняйтесь, это вам надо, не мне.

Сказать, чтоб заткнулся:
mocp -s(А вот тут маленькая s)

Как видите, все просто.

Продолжение следует.

Пользователь решил продолжить мысль [time]30 Январь 2015, 00:28:05[/time]:
Цитировать
4. плавное нарастание и плавное затухание громкости в начале и конце проигрывания.
Проще пареной репы. Ибо не винда, а вовсе даже bash.

Создаем где-нить два файлика и делаем их исполняемыми.

Первый назовем start.sh (можете обозвать, как хотите):
#! /bin/bash
mocp -S &>/dev/null
mocp -v 0
mocp -a /home/onotole/1/1
mocp -fp
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
sleep 0.2
mocp -v +10
Первая строка, где про бин-баш, это какой язык программирования у нас тута.
Во второй пытаемся запустить сервер для проигрывания музычки, а если он заругается (мол, уже запущено) отправить ругательства в /dev/null
Вы следите за руками? :) «Установить громкость в ноль»
Сказать серверу, чтобы посмотрел по указанному пути и сочинил из уведенного плейлист.
А теперь играй! (Ну и что, что громкость ноль)
Прибавить громкость на 10 единиц (хз, чего это, проценты?.. децибелы?..)
Ждать 0,2 секунды.
Прибавить громкость на 10 единиц.
И т.д.
И т.д.
И т.д.
Тут можно разрисовать задержки и уровни, как нравится. Но, конечно, можно написать математически выверенный цикл. А можно расставить цифры методом тыка.

Пользователь решил продолжить мысль [time]30 Январь 2015, 00:40:52[/time]:
Чтобы плавно прекратить звуки, делаем все наоборот:
#! /bin/bash
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
sleep 0.2
mocp -v -10
mocp -s
Осталось написать скриптик, который по нажатию кнопки «Сделай мне пес...то» будет импортировать расписание из произвольно нахреначенной кривыми руками таблицы в екселе.
« Последнее редактирование: 30 Январь 2015, 00:43:17 от 027 »
Если бы было достаточно man bash, не было бы ABS.

Оффлайн YDenis

  • Автор темы
  • Активист
  • *
  • Сообщений: 555
    • Просмотр профиля
Re: Проигрывание музыки на переменах в школе
« Ответ #2 : 30 Январь 2015, 07:55:04 »
027,
Офигеть не встать.
Огромадное спасибо, очень помогли.
Удачи!

Оффлайн 027

  • Участник
  • *
  • Сообщений: 108
  • Cinnamon
    • Просмотр профиля
Re: Проигрывание музыки на переменах в школе
« Ответ #3 : 30 Январь 2015, 20:14:50 »
Да на здоровье. Я ж говорю, сам увлекся и теперь выпиливаю сам себе звуковую напоминалку, мол, харэ позвоночник горбатить, встань, разомнись.  :)

Кстати, я там забыл очистку предыдущего автосозданного плейлиста указать. Надо еще один ключик добавить:
mocp -c -a /путь/к вашей/музычкеИначе он будет тупо добавлять все новые и новые записи к старым, а файлики-то тю-тю.

Еще обнаружил, что после исполнения скрипта stop.sh у меня звук пропал. :)
Все просто — главная «ручка громкости» выкручена на ноль.
Поэтому после остановки воспроизведения надо выставить громкость, отличную от нуля, например, 50.
mocp -v 50Чтобы не случился казус — запускаешь какой-нить другой плеер, а в ответ тишина.

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

Кроме того, по науке не надо бы оставлять висящий в фоне процесс, если он тебе не нужен больше. Заодно это может пригодиться для дальнейшей автоматизации: скажем, раз в неделю перезаливаем новую музычку. Это крайне нежелательно делать во время перемены — ведь плейлист уже сформирован, а тут — раз, и файлы пропали. Если по команде «стоп машина» мы будем останавливать сервер, легко будет обнаружить, поет сейчас эта радива, или не поет. Что-то вроде ps -u | grep mocp. И заблокировать замену содержимого каталога с выдачей предупреждения оператору. Ведь не факт, что он в школе сидит и ушами слышит, может он из дома рулит.

Поэтому завершающими командами стоп-скрипта надо остановить воспроизведение, выставить громкость и загасить наш музыкальный сервер:
mocp -s
mocp -v 50
mocp -x

Ну и напоследок: при коротком плейлисте надо обеспечить автоперемотку. Делается это ключиком «o» с параметрами:
mocp -fp -o n,ro — это включить режим, а какой конкретно, перечислено дальше через запятую
r — это конкретно режим repeat, обеспечит бесконечную музычку по кругу, пока не заткнешь.
n — это некий autonext. Что он делает, бог весть, ведет себя непонятно. Но с ним вроде немного лучше.



Пользователь решил продолжить мысль [time]30 Январь 2015, 20:47:13[/time]:
Ну и напоследок. На этом компе не только монитор не нужен, а и вообще графическая подсистема. Вместе с клавой, мышью, ковриком для мыши и тапочками для тараканов. Звуки и без этих прибамбасов чудно извлекаются.

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

Пользователь решил продолжить мысль 30 Январь 2015, 20:56:21:
Собственно, даже без видюхи можно. И без винта. Простой копеечной флешкой можно обойтись. Лишь бы железяка умела с флешки грузиться. И даже без сети. Пришел, выдрал флешку, засунул другую, с заранее поготовленными наборами новой музычки, нажал ресет.
« Последнее редактирование: 30 Январь 2015, 20:56:21 от 027 »
Если бы было достаточно man bash, не было бы ABS.

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1024
    • Просмотр профиля
Re: Проигрывание музыки на переменах в школе
« Ответ #4 : 31 Январь 2015, 08:48:26 »
А есть ещё musicpd (в репозитории лежит как Mpd). Скриптуется на раз.

 

Страница сгенерирована за 0.159 секунд. Запросов: 24.