Projekt-tråd: bygga raspberryPi-internetradio

Permalänk

Projekt-tråd: bygga raspberryPi-internetradio

Hej,
Dragit fram min raspberry pi 3 och tänkte bygga en internetradio-sändare.
Målet är att ta en snygg men kass gammal radioapparat, använda den som case, stoppa in rpi:n i den, plugga in en högtalare via 3.mm-uttagaet, löda på ett par fysiska knappar för att hoppa till nästa/föregående station (eller om jag är lat kanske bara köra via en USB-numpad eller liknande så att jag slipper löda och skriva lågnivå-kod för att ta emot knapptryck-inputs.) Eventuellt slänga på en liten LED-skärm också som visar nuvarande stationsnamnet.

(Det finns ju gott om fin mjukvara för att hantera GUI-applikationer för internetradio men jag är ute efter att ha en command-line-applikation som snurrar och bara tar input från fysiska knappar)

Tänkte att jag startar en tråd för att kanske kunna ställa frågor samt dokumentera mina öden och äventyr då jag hittat del tips som kanske kan var av hjälp till andra.

Suttit ett tag och letat genom olika applikationer för att spela internetradiostreams via url men till slut föll jag på ett litet enkelt opensource-projekt https://github.com/ednl/piradio
Man bygger ihop en enkel txt-fil med en lista på sina favorit-radiostationer och stream-urls i stil med

Huvudsakliga logiken ligger i ett bash-script som kör commandlineapplikationen "mpc" för att spela upp streams, hantera volym etc.

Får se hur långt jag kommer innan jag stöter på hinder, min erfarenhet är att media brukar krångla på Linux i allmänhet och på raspberry pi i synnerhet.

Till en början kan jag fråga er - har ni några generella tips när det gäller ljuduppspelning på raspberry pi?

Permalänk

Första problemet jag stötte på är att när jag pluggar i en högtalare i 3.5-mm porten på RPI så blir det direkt ett statiskt brus.
Börjar jag spela ljud från en internetradioström låter det helkackigt. Som en FM-radiosändning som ligger några steg fel och spelas genom högtalarna på ett passagerarplan, urusel kvalité och fullt med störningar och knaster.

Provar istället med att köra bluetooth.
Inte helt enkelt att få igång detta på en rpi, så jag skriver lite om hur jag gjorde.
rpi3 har BT-stöd. Och alla utom de tidigaste versionerna av Raspbian ska ha paketet "pi-bluetooth" installerat per defautl.
Men som vanligt med barebones-Linux betyder inte detta att det bara är att tuta och köra.
Men man måste pilla en del för att få det att lira.

Först vill man kanske skaffa ett GUI för att kunna connecta till BT-devices.

sudo apt-get install pi-bluetooth blueman

Ger ett menyitem som heter Bluetooth Manager

Men per default visar Bluetooth Manager bara upp en massa device-ids i stil med 123abc456, och verkar inte kunna särskilja på ljudenheter och andra datorer utan kräver ett lösenord oavsett vad man försöker connecta till

För att hantera Bluetooth-ljud på rimligt vis verkar man också behöva installera pulseaudio (default-ljudhanteraren "alsa" är för basic för detta) och diverse bluetoothplugins för pulseaudio

sudo apt-get install pulseaudio pavucontrol pulseaudio-module-bluetooth

Fört efter detta kan man faktiskt se devicenames såsom "Samsung speaker" i Bluetooth Managern, och välja att connecta till dom.

Med BT blir ljudet klockrent!
Så det verkar faktiskt vara så att hallonpajens 3.5mm-port som är kass.

Permalänk

Att slå på bluetooth som output för alla program visade sig inte helt enkelt.

Efter att ha konfat upp bluetooth som ljud-output för min user så funkar det bra för alla program som körs på user-level.
Funkar exempelvis klockrent att spela internetradio över BT via vlc

Men nu råkar det vara så att just den mjukvara jag valt kör "mpc" som program.

Och mpc körs "system wide", inte på user-level.
Program som körs "system wide" struntar i mina user-level settings som anger att allt ljud ska gå via BT.

Försökte givetvis åtgärda detta genom att ange settings för mpc att allt ljud ska gå via BT.
Men trots att "mpc outputs" listar alla ljud-outputs utom BT som deaktiverade så spelas det likt förbaskat inget ljud ur blåtandhögtalarna med mpc.

Tillbaka till ritbordet.

Permalänk

Gissar att jag kan stöta på fler problem framöver om jag fortsätter köra ljudspelarprogram som inte respekterar de settings gälller för user-level.

Funderar på om jag helt enkelt ska skriva om bash-scriptet som kör själva ljudspelaren (https://github.com/ednl/piradio) till att använda ett program som körs på user-level. Typ VLC. Istället för mpc.

Ser egentligen ingen uppenbar fördel med mpc.

Det enda kruxet just nu är att jag är lite för kass på bash och terminal-sessioner för att veta hur jag isåfall ska få det att lira enligt principen att jag ska kunna starta scriptet via en terminal och låta det köra i bakgrunden - och sen skicka in nya kommandon för att exempelvis byta radionkanal.

Men vad vet jag - fördelen med mpc kanske just var att det går att hantera på ett sådant vis (då man har en server (mpd) som hanterar innehållet och sen en klient (mpc) som hanterar själva spelaren) - kanske VLC inte kan hanteras på samma vis.

Permalänk
Medlem

Finns en lösning med squeezelite och squeezebox som ev kanske kan fungera för dig.
http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-installing-squeezelite-player-on-raspbian/