Musiikit soimaan Debianista Androidiin

Mu­sii­kin soit­ta­mi­nen De­bi­an-pöy­tä­ko­neel­ta ver­kon yli And­roid-tab­le­til­le on­nis­tuu kyl­lä, mut­ta hie­man sää­tö­jä täy­tyy teh­dä.
Kuva: Kuva­kaappaus BubbleUPnP-sovel­luksesta

Tykkään tiskata kuulokkeet korvilla. Yleensä pistän soittolistan pyörimään Android-tabletin Grooveshark-sovelluksesta1, josta musiikki kantautuu langattomasti Bluetooth-palikkaan ja sieltä kuulokkeisiin. Sovelluksen kautta ei voi kuitenkaan kuunnella Broadcast-lähetyksiä (esim. GIGA:n lähetystä), mikä on vähän harmi.

Debian-pöytäkoneeni täyskokoisella selaimella Broadcastit luonnollisesti toimivat, mutta Bluetoothia tuossa koneessa ei ole, eikä yhteys etäisyyden puolesta toimisi välttämättä kuitenkaan. En myöskään mielelläni vetäisi kuulokejohtoa koneelta asunnon läpi tiskipöydän ääreen, joten jonkinlainen langaton ratkaisu on siis tarpeen.

Spesifejä PulseAudio→Android -sovelluksia on olemassa, mutta näistä yksikään ei vaikuttanut ensisilmäyksellä kelvolliselta: olisi asennettava ohjelmistoja Debianiin pakettivarastojen ulkopuolelta, ja ostettava Android-sovelluksen Pro-versio mainosten poistamiseksi. Siispä digitaaliset legopalikat esiin ja tehään itte!

Debian-säädöt

PulseAudio-äänet saa vietyä UPnP-striimiksi Rygelin ja sen GSTLaunch-liitännäisen avulla. Rygel on asennettuna valmiiksi, mutta GSTLaunch-osa on asennettava erikseen. Asennetaan samalla muut tarvittavat työkalut:

sudo apt-get install rygel-gst-launch pavucontrol paprefs

Sitten kytketään PulseAudion UPnP-tuki päälle. Helpointa tämä on graafisella paprefs-sovelluksella, jonka Verkkopalvelin-välilehdeltä valitaan valintalaatikot Tarjoa paikalliset äänilaitteet saataville DLNA/UPnP-mediapalvelimena ja Luo erillinen äänilaite median DLNA/UPnP-suoratoistoa varten.

Tämän jälkeen GSTLaunch-liitännäinen on otettava käyttöön muokkaamalla ~/.config/rygel.conf -tiedostoa (esim. nanolla tai geditillä). Jos Rygelin asetuksia ei ole koskaan säädetty, saattaa tiedosto puuttua. Tällöin kannattaa käynnistää ja sulkea rygel-preferences kertaalleen, jolloin ohjelma luo oletusasetukset näppärästi. rygel.conf-tiedostosta poistetaan tämän jälkeen koko tiedoston lopussa oleva [GSTLaunch]-osio, ja korvataan se seuraavalla pätkällä:

[GstLaunch]
enabled=true
launch-items=myaudioflac
myaudioflac-title=FLAC-ääni laitteelta @HOSTNAME@
myaudioflac-mime=audio/flac
myaudioflac-launch=pulsesrc device=upnp.monitor ! flacenc

Jos GStreamer-liukuhihna on tuttu, saa striiminsä halutessaan myös muissa muodoissa. Itse päädyin kuitenkin FLAC:iin, sillä se on oletuksena tarpeeksi korkealaatuinen, mutta mahtuu kuitenkin vaivatta kulkemaan WLAN:issa tabletille.

Tässä vaiheessa on varminta käynnistää Rygel ja PulseAudio uudelleen:

killall rygel
pulseaudio –kill
pulseaudio –start
nohup rygel &
Oh­jel­man saa tuut­taa­maan ään­tä verk­koon vaih­ta­mal­la sen ulos­tu­lo­lait­teen. Sa­mal­la ta­val­la ää­net saa myös ta­kai­sin kai­ut­ti­miin.
Kuva: Kuva­kaappaus pavucontrol-ohjelmasta

Seuraavaksi laitetaan musiikit soimaan Groovesharkista. Oletuksena äänet tulevat koneen kaiuttimista, joten käännetään Grooveshark soittamaan verkkoon: avataan pavucontrol, ja valitaan Toisto-välilehden ALSA plug-in [plugin-container] -ohjelman kohdelaitteeksi sisäisen äänentoiston sijaan DLNA/UPnP Streaming. Tässä vaiheessa kaikki on valmista Debianin puolesta.

Android-säädöt

Ole­tus­ase­tuk­sil­la Rygel syy­tää verk­koon usei­ta UPnP-lait­tei­ta. Ko­ti­ver­kos­sa­ni nii­tä on run­saas­ti jo en­nes­tään­kin.
Kuva: Kuva­kaappaus BubbleUPnP-sovel­luksesta

Androidilla ei tarvitse paljoa tehdä. Käynnistetään aluksi UPnP-toistosovellus − itse suosittelen BubbleUPnP:tä − ja valitaan lähdelaitteeksi GST Plugin ja soitettavaksi kappaleeksi FLAC-ääni laitteelta laitteennimi. Pienen puskuroinnin jälkeen musiikin pitäisi lähteä raikaamaan Android-laitteesta, josta sen voi sitten halutessaan ohjata vaikkapa Bluetooth-kuulokkeisiin.

Kannattaa huomata, että puskuroinnin takia ääni tulee muutaman sekunnin viiveellä, joten esimerkiksi kappaleenvaihdot tapahtuvat pienellä viiveellä. Tämä ei itseäni haittaa, sillä tiskatessa harvemmin viitsin köpötellä kappaletta vaihtamaan.

Silloin tällöin BubbleUPnP ei lähde soittamaan kappaletta, vaan tarjoaa sen sijaan Action Timeout -virhettä. En ole keksinyt toistaiseksi ongelmaan ratkaisua, mutta stop-play -kierros auttaa yleensä. Käsittääkseni ongelma on sovelluksessa. Jos soittoa haluaa kokeilla toisella sovelluksella, saa äänivirran URL-osoitteen näkyviin napsauttamalla keskeltä ruutua. URL kelpaa esimerkiksi Androidin VLC-soittimelle.

1) Sovellus vaatii GS Anywhere -tilauksen, noin kympin kuussa. Suosittelen kokeilemaan!

PC-speaker musiikintoistossa

Musiikkia voi kuunnella myös
PC-speakerista, jos kestää kaiuttimen
mitättömän äänenlaadun.
Kuva: Openclipart

PC-tietokoneisiin on kautta aikain kuulunut äänimerkkejä jakeleva kaiutin, niin kutsuttu PC-speaker, joka on yleensä toteutettu pietsoelektronisella kaiuttimella. Kaiutin sopii hyvin käyttötarkoitukseensa: antamaan yksiäänisiä piippauksia esimerkiksi käynnistyksen yhteydessä.

Nykyään näitä piippereitä tulee harvemmin koteloissa vastaan, mutta hankkimassani uudessa tiedostopalvelimessa tällainen kuitenkin mukana on. Ajattelin huvikseni kokeilla, miten saada moniäänistä musiikkia ulos tuosta laitteesta.

Käytössäni oli Ubuntu Server 11.04, johon asensin riippuvuuksineen tätä käyttötarkoitusta varten alsa-utils- ja mpg321-paketit:

sudo apt-get install alsa-utils mpg321

Koska yleisesti PC-speakerin ääntä ei ole pidetty tarpeellisena tällä vuosituhannella, sen kernelmoduuli on mustalistattu. Otin moduulin kuitenkin käyttöön käsin (mustalistauksen voi poistaa myös pysyvästi, mutten halunnut niin tehdä tällä kertaa):

sudo modprobe snd_pcsp

Jos jostain syystä kerneliin on ladattu jo piipperin toinen moduuli, ”pcspkr”, se pitää ottaa pois:

sudo modprobe -r pcspkr

Tämän jälkeen kaikki tuntui olevan melkein kunnossa, tosin aplay (ALSA:n äänentoisto-ohjelma) herjasi, ettei voinut avata äänikorttia 0. Googletuksen jälkeen kävi ilmi, että kyseessä oli ALSA:n asetuksiin liittyvä seikka, joka esti PC-speakeria olemasta ensimmäinen äänilaite. Tämä hämäsi ALSA:a, ja poistin tämän rajoituksen tiedostosta /etc/modprobe.d/alsa-base.conf kommentoimalla pois rivin ”options snd-pcsp index=-2”.

Sitten vain ALSA:n uudelleenkäynnistys:

sudo alsa force-reload

Tämän jälkeen mpg321 pystyi toistamaan ääntä piipperin kautta. Kun vielä nostin alsamixerillä äänenvoimakkuuden melkein tappiinsa, oli ääni kuultavissa ja paikoitellen jopa tunnistettavissa.

Ok, eihän PC-speakeria tuohon tarkoitukseen ole tarkoitettukaan, mutta tulipahan todettua, että tällainenkin on mahdollista.