Разпространен музикален плейър на Raspberry Pi
(Да, публикацията се припокрива много с публикацията за разпределения аудио плейър на Odroid U2, но е малко по-лесна за настройка)
Започнах да мечтая за такава система през 2003 г., веднага след като започнах да живея в апартамент с >1 стаи и въпросът за музиката в кухнята (и наистина в целия апартамент) се издигна с пълна сила. Ситуацията се утежнява от факта, че апартаментът е построен според архитектурния гений на Никита Сергеевич Хрушчов, а компютърът е поставен в „далечната“ стая, така че в кухнята е малко повече от напълно чут.

Времето минаваше, апартаментите се променяха, различни варианти бяха обмисляни и отхвърляни, сънят оставаше, или отиваше в пълния фон, или отново излизаше от дълбините на подсъзнанието, но количката не се движеше.

заден план
По времето, когато прекрасните едноплаткови компютри Raspberry Pi бяха широко разпространени, бях сменил 3 места на пребиваване, същия брой работни места, както и страната на пребиваване, така че поради изобилието от случващото се, сънят дори не издаде слаб глас, след като отдавна заспа в прашен килер в дъното на паметта. Въпреки това все пак поръчах малината. Защо - той все още не разбираше, но не можеше да устои: съотношението цена / потенциални възможности реши всичко. „Това в бъдеще ще бъде както NAS, така и уеб сървър за експерименти и куп всичко останало“, помислих си (е, на NAS, както се оказа, не се дърпа, но дори и да го знаех тогава, така или иначе нямаше да ме спре).

Въпреки това, след като „малината“ попадна в ръцете ми, просто имах блокиране както на работа, така и с лични проекти, така че „зрънцето“ лежеше на рафта и лежа няколко месеца, без да вкуси електричество.

Но един ден всичко се промени.
„И двете включени, но имам товаИма!"
— Е, ще правим ли нещо или какво?
Планът узря бързо: включваме външен винт с музика в usb порта, свързваме високоговорители към аудио изхода, поставяме MPD на малината и получаваме отличен музикален плейър, който може да се управлява от всеки компютър в къщата (има много клиенти за всяка ОС). И така, малината най-накрая намери приложение, весело мигаше многоцветни светодиоди и беше добре.
„Хех, има такова прекрасно нещо като Icecast2, което е отлично с MPD и поточно предаване на музика към мрежата!“
„И кой ви пречи да вземете още няколко малини, да напишете прост софтуер, който по команда от мрежата включва/изключва същия mplayer, за да възпроизведе даден URL (този, където Icecast2 излъчва от първата малина), и накрая да ме пусне оттук??“
„И така, спрете, подобно на онова проклето нещо ли е, което потенциално може да играе по мрежата? Или може би не е нужно да ограждам градината с Icecast2 и самонаписан превключвател за включване/изключване?“
И така се случи ... Но шкафът остана несглобен.

Така че да тръгваме. Изходен материал: два или повече Raspberry Pis (единият ще бъде сървърът, който управлява MPD, останалите са клиенти), същият брой високоговорители за възпроизвеждане на звук, малко познания по Linux и вечер свободно време. И, разбира се, музикална колекция с правилно написани тагове, защото. MPD работи с тях. Имах всичко това на склад, така че уведомих предварително жена си, че ме няма на следващата вечер, разболях се, изчезнах от вкъщи, отидох във Ванкувър и като цяло емигрирах от тази планета и че ще се върна утре за вечеря, и се потопих с глава в Google. Google не разочарова.
Подготвителен етап (еднакъв за сървър и клиенти)
Няма да давам подробностиопишете процеса на инсталиране на системата на Raspberry Pi, има много инструкции в интернет. Само ще направя уговорка, че аз, като фен на Debian с 8 години опит, използвах Raspbian, така че всички инструкции ще бъдат дадени за него. Като цяло изтегляме изображението, флашваме го, поставяме картата, зареждаме. Първоначалната настройка също е стандартна, ще изброя какво направих:
Е, да започваме:
1.Първо, нека актуализираме системата до ново състояние и инсталираме PulseAudio. Като цяло сега ще правим много неща от корена, така че отидете под неговия акаунт по любимия си начин (изберете по ваш вкус):
2.предполага се, че всичко ще работи веднага след зареждането, в идеалния случай - без x и потребителско влизане, имаме нужда PulseAudio да работи в режим на цялата система. За да направите това, редактирайте файла/etc/default/pulseaudioкакто следва:
3.След това, за да работи всичко, трябва да добавите pi потребителя към групата за импулсен достъп:
4.Сега нека разрешим аудио приемане по мрежата. За да направите това, добавете реда към файла/etc/pulse/system.pa
4.Всъщност стартирайте услугата pulseaudio
Тук общата част свършва. Нека да преминем към настройките на клиента и сървъра.
Може би това ще изглежда странно за някого, но „клиентът вече е готов“ и не е необходима допълнителна конфигурация, така че тогава се преместваме стриктно до сървъра, около 50 метра, ще се погрижим за сървъра.
На първо място, трябва да инсталирате MPD на сървъра и в същото време конзолния клиент (за първоначална настройка):
Посочете пътя към колекцията
Bindim към всеки мрежов интерфейс:
Към стандартен порт:
Автоматично актуализиране на колекцията при промяна на файловете:
(и така нататък, според броя на съществуващите клиенти)
Е, нека рестартираме MPD. рутоваясесията може да бъде прекратена.
Сканирайте колекцията, за да създадете база данни (това ще отнеме известно време, в зависимост от размера на колекцията):
Всъщност това е.
Не остана нищо: как да управлявам целия този бизнес. Тук няма нищо сложно, имаме на разположение вагон и малка количка клиенти за всякакви операционни системи. Когато избирате, не забравяйте да обърнете внимание дали клиентът може да превключва изходните канали (или, както се наричат още, изходни устройства) - всъщност това е точно функцията, която ви позволява да включвате / изключвате един или друг клиент. Под Mac се спрях на Theremin, под Linux - на Gmpc, не трябваше да използвам клиенти под Windows, така че не мога да посъветвам нищо.

кулминация
"Ура. Това е, за което мечтаех 10 години. ”
Допълнителни градуси на топлина се генерираха от осъзнаването на факта, че не става въпрос за "ракетна наука", а всичко беше сглобено буквално вечер от "импровизирани материали" и без нито едно парче синя електрическа лента. Заслушах се - чу се звук и от офиса на горния етаж! Влязох в менюто и махнах отметката от "Дневна" - звукът от високоговорителите в залата изчезна и остана само в офиса.


В рамките на няколко минути вътрешният перфекционист поиска обединяването на интерфейса между устройствата и операционните системи и затова в главата ми веднага мина луда мисъл „Но аз искам уеб интерфейс, но с всички необходими функции!“ Един бегъл преглед на Интернет остави тъжно усещане: „Този май е нищожен, но оскъден. Това изглежда е функция, но е поставено през op. Този е изоставен.” Е, и така нататък. Да не говорим, че всички те имаха един фатален недостатък. Като цяло най-изобретателните читатели вече разбраха всичко: реших да напиша свой собствен, „с музикални нотипартии и пианисти. Освен това никога не съм се занимавал наистина с уеб разработка, но винаги съм искал да опитам ужасния jQuery звяр и като цяло да преценя докъде са стигнали уеб технологиите от последния път, когато написах и изоставих моя „хамстер“ на narod.ru, с javascript и въртящи се менюта. Затова за три делнични вечери и един почивен ден на света се роди такова чудо:

(екранна снимка, направена от BlackBerry PlayBook)