Somaplayer 0.2.0

Andrea Marchesini <bakunin@autistici.org>

12 giugno 2004

Abstract

somaplayer  un player musicale per quasi tutte le 
tipologie di file audio (ad esempio mp3, ogg, wav, 
aiff, cdr, mat4, mat4 e altri) e capace di gestire 
infiniti output in contemporanea. Gli output possibili 
possono essere sonori (le casse del tuo computer) 
attraverso ogni device, demone o driver, l'encoding in 
tutti i formati audio supportati, streaming verso ogni 
protocollo web (icecast, icecast2, shoutcast) oppure 
l'invio ad un demone del suono apposito capace di 
mixare svariati input e utilizzarli a sua volta con 
tutti gli output qui elencati.

Abstract

In questo documento si spieger come utilizzare 
somaplayer e il demone del suono sds in ogni sua parte 
con esempi, parti teoriche e tecniche.

Table of Contents

1 Introduzione
    1.1 Requisiti
    1.2 Compilazione e Installazione
2 Avvio di SomaPlayer
    2.1 Avvii rapidi
    2.2 Grafica
    2.3 Testuale
3 Input
4 Output
    4.1 soundcards
    4.2 Altri audio device
        4.2.1 OSS
        4.2.2 ALSA e ALSA09
        4.2.3 ESD 
        4.2.4 ARTS
        4.2.5 SUN, IRIX
        4.2.6 NULL, STDOUT
    4.3 File 1-1
    4.4 Encoding MP3/OGG
    4.5 Streaming
    4.6 Output SDS
    4.7 Errori degli output
5 SdS
    5.1 Audio Output
    5.2 Input
    5.3 Libsdsdsp.so
6 Contatti
7 Conclusione



1 Introduzione

Ora vado a spiegare come installare somaplayer. Se 
qualcuno trova che non sia stato molto chiaro lo 
pregherei di farmelo presente cos da porter correggere 
questo testo.

1.1 Requisiti

Inziamo col dire che somaplayer si installa su sistemi 
Linux (suggerito 2.6 + nptl), BSD, MacOSX, e in 
generale su qualsiasi sistema POSIX. Con un l'aiuto di 
cygwin si pu compilare anche su Windows.

Per installare correttamente il programma avete bisogno 
di un po' di librerie. Non tutte sono fondamentali ma 
certe sono altamente suggerite.

Ecco qui l'elenco commentato di ci che vi serve:

* libao - libreria sonora per la gestione delle piu' 
  diverse architetture sonore. http://www.xiph.org/ao/ 
  (altamente consigliata)

* libsndfile - libreria per la lettura e la scrittura 
  di file sonori 1-1 (wav, aiff, ...). 
  http://www.mega-nerd.com/libsndfile/ (consigliata)

* openssl - libreria per la gestione di connessioni 
  cripatate. http://www.openssl.org (consigliata)

* libmad - libreria per il decoding di file mp3. 
  http://mad.sourceforge.net (altamente consigliata)

* libid3tag - libreria per la gestione dei tag id3 dei 
  file mp3. http://mad.sourceforge.net

* id3lib - libreria per la gestione dei tag id3 dei 
  file mp3. http://id3lib.sourceforge.net (da 
  installare assieme ad libid3tag)

* libogg - gestione del formato ogg/vorbis. 
  http://www.vorbis.com (altamemte consigliata)

* libvorbis - gestione del formato ogg/vorbis. 
  http://www.vorbis.com (altamente consigliata)

* gtk+2.4 (e quindi anche glib2.4, pango e atk) 
  interfaccia grafica. http://www.gtk.org (consigliata)

1.2 Compilazione e Installazione

Somaplayer  scaricabile dal sito internet 
http://soma.realityhacking.org. Al momento della 
scrittura di questo testo, l'ultima versione rilasciata 
 la 0.2.0 accessibile con questo link:

http://soma.realityhacking.org/src/somaplayer-0.2.0.tar.gz

La procedura di compilazione  simile a quasi ogni 
altro programma distribuito a sorgenti:

Si estrae il contenuto dell'archivio:

tar xvfz somaplayer-0.2.0.tar.gz

Si lancia lo script configure:

./configure

Consiglio sempre prima di controllare le opzioni che lo 
script offre:

./configure --help

Si compila e si installa:

make && make install

L'ultimo comando  da effettuarsi come root.

A questo punto sulla vostra macchina  installato in 
maniera corretta somaplayer.

2 Avvio di SomaPlayer

Somaplayer ha una doppia modalit di avvio: testuale o 
grafico (se lo si  compilati con il supporto per 
gtk+2.4). Se noi proviamo in un terminale a lanciare 
somaplayer senza opzioni, questo ci mostra una pagina 
di aiuto in cui ci dice tutti gli argomenti che accetta:

* -ao o --audiooutput - specifica un output audio 
  predefinito. Se non si mette niente somaplayer andr 
  a cercarsi il device sonoro e suoner la playlist. 
  Possono esserci diversi output audio in una stessa 
  sessione di somaplayer ma lo spieghero' meglio pi avanti.

* -ad o --audiodevice - ogni output audio ha bisogno di 
  qualche opzione. Lo si fa con questo argomento.

* -cd o --cdromdevice - si pu settare il device per 
  accedere al cdrom nel caso non sia stato trovato 
  quello corretto durante la compilazione.

* -dsp o --devicedsp - si pu settare il device audio 
  predefinito anche questo, nel caso non sia stato 
  trovato quello corretto durante la compilazione.

* -z o --random - attiva la playlist random.

* -r o --repeat - attiva la ripetizione della playlist.

* -nb o --nobuffer - fa si che somaplayer non 
  bufferizzi l'input. Questo  altamente sconsigliato 
  per gli streaming.

* -nv o -noverbose - somaplayer non scriver niente a schermo.

* -g o --graphic - avvio grafico.

* -b o --buffer - si pu specificare una dimensione del 
  buffer precisa. Di default si ha 1024bytes.

* -v o --volume - setta il volume di output ad un 
  valore percentuale da 0 a 100.

* -m o --mic - attiva come input audio il microfono o 
  il line-in.

* -d o --daemon - avvio del demone del suono (SdS 
  spiegato in seguito)

Un sempio pratico dopo tutto questi dati  semplicemente:

somaplayer file.mp3

e somaplayer suoner il vostro mp3.

Somaplayer gestisce anche un suo file di configurazione 
ove salva il volume, il balance, la dimensione del 
buffer e altri valori in modo che non si possa debba 
metterli ogni volta.

2.1 Avvii rapidi

Quando si sviluppa un software capita molto spesso di 
eseguire velocemente il proprio programma per testare o 
debuggare. Io, diciamolo, scrivere somaplayer -d -g 
(anche se col completatore automatico della bash)  
lungo. Ho quindi creato dei links simboli che 
permettono di avviare certe modalit predefinite senza 
bisogno di specificare nessun parametro. Questi sono:

splayer - come scrivere somaplayer

gsplayer - come scrivere somaplayer -g

sds - uguale a somaplayer -d

gsds - somaplayer -g -d

Ovviamente ognuno di questi links gradisce gli stessi 
argomenti di somaplayer :

2.2 Grafica

La modalit grafica di somaplayer (per ora non parliamo 
di SdS)  molto semplice:

<Graphics file: sp1.jpg>


Si pu aggiungere brani musicali dal menu, dal pulsante 
add o col tasto destro dalla playlist e con la 
pulsantiera in alto si pu effettuare le optioni 
standard di un player.

Nel menu input si attiva la playlist o il microfono e 
da output si gestiscono gi output audio che in testuale 
si gestivano con l'opzione -ao.

Nel menu principale si pu salvare la configurazione, 
aggiungere il file alla propria playlist, salvarla e uscire.

2.3 Testuale

Tutto quello che si pu fare in grafica lo si pu fare 
in testuale e viceversa. Ecco qui una tabellina dei 
comandi che il player accetta durante una esecuzione:

* SPAZIO - pausa/play 

* ENTER - next

* q - uscita

* v - abbassa il volume di un punto percentuale

* V - alsa il volume di un punto percentuale

* M - setta il volume all 100%

* m - setta il volume allo 0%

* b - sposta il balance a sinistra di un punto percentuale

* B - sposta il balance a destra di un punto percentuale

* l - setta il balance a sinistra

* L - setta il balance a destra

* c - setta il balance centrato

* r - attiva la ripetizione della playlist

* R - disattiva le ripetizioni della playlist

* z - attiva il random playling

* Z - disattiva il random playling

* TASTI DIREZIONALI - fanno riinziare, cambiare in 
  avanti o in dietro

* s - salva la configurazione

3 Input

Gli input che somaplayer  capace di gestire sono questi:

* mp3 - in locale o su web (ssl e ipv6)

* ogg - in locale o da web (ssl e ipv6)

* wav, aiff, raw, au... tutti i file 1-1 - in locale

* cdaudio

* playlist nei formati m3u (winamp) e pls (xmms, icecast*)

* microfono/line-in

Si pu concatenare pi file audio e creare una playlist cos:

somaplayer file.mp3 file.wav http://server/file.mp3 
file.pls file.aiff file.ogg

I cdaudio si impostano con una sintassi di questo tipo:

cdrom://*

Con * si intende tutte le tracce del cdrom, oppure via 
numeri per le singole tracce o per un range:

cdrom://2-7

vuol dire dalla traccia 2 alla traccia 7 comprese.

cdrom://2,7

vuol dire la traccia 2 e 7. E ovviamente si pu 
complicare quanto si vuole:

cdrom://2-7,1,4,8-9

Supporta il salvataggio di playlist in formato m3u e pls.

4 Output

Gli output audio che somaplayer pu gestire sono 
diversi e in questa sezione verrano spiegati uno ad 
uno. Da notare che certi output richiedono una grossa 
capacit di calcolo e che quindi possono provocare un 
uso della CPU molto elevato se i computer non sono 
molto recenti.

Per la gestione grafica bisogna cliccare sul menu 
output e utilizzare i pulsanti della nuova finestra che compare:

<Graphics file: sp3.jpg>


Una cosa che si pu fare solo con l'interfaccia grafica 
 quella di inserire o rimuovere runtime un output. Se 
si aggiunge un output questo parte a funzionare 
direttamente dall'instante in cui lo sia ha inserito.

4.1 soundcards

somaplayer -ao audio file.wav

Se si imposta come audio output audio, somaplayer 
utilizza l'architettura audio predefinita del vostro 
sistema. Col termine 'predefinita' intendo ci che le 
libao in fase di compilazione hanno trovato come 
funzionante. Se questo sistema non funziona, somaplayer 
inizia una procedura di ricerca automatica provando 
OSS, ALSA, ALSA09, ESD e altri sistemi di generazione 
audio. Se la procedura va a buon termine, sentirete 
qualcosa, altrimenti avrete un messaggio di errore. Al 
99% dei casi, sentirete qualcosa :)

Molti software che si utilizzano normalmente per fare 
audio (XMMS, MPG123, ...) non hanno questo sistema ma 
utilizzano 1 o al massimo 2 sistemi sonori.

4.2 Altri audio device

Ovviamente si pu lanciare somaplayer per utilizzare 
uno specifico audio ouput sonoro.

4.2.1 OSS

OSS sta per Open Sound System, il sistema sonoro 
proprio del kernel linux 2.2 e 2.4 (ora col 2.6  stato 
sostituito con ALSA). Non tutti hanno OSS per gestire 
la propria scheda sonora, ma  possibile che utiliziate ALSA.

Per lanciare somaplayer con OSS questo  il comando:

somaplayer -ao oss file.mp3

Si pu anche specificare qual  il device sonoro opportuno:

somaplayer -ao oss -ad /dev/dsp file.mp3

4.2.2 ALSA e ALSA09

ALSA sta per Advanced Linux Sound Architecture. Sono 
una serie di moduli (col kernel 2.6  possibile che non 
abbiate moduli ma sia compilato nel dentro il kernel) 
che gestiscono la vostra scheda sonora.

Per lanciare somaplayer con ALSA questo  il comando:

somaplayer -ao alsa file.mp3

Mentre per ALSA09 si fa cos:

somaplayer -ao alsa09 file.ogg

4.2.3 ESD 

Enlightened Sound Daemon  un demone del suono. I 
demoni del suono sono sistemi che miscelano pi 
sorgenti sonore e riescono a fare suonare pi input 
assieme. Sono nati per ovviare al fatto che molte 
schede sonore non sono FULL-DUPLEX, il che vuol dire 
che quando un software vuole suonare, solo lui pu 
utilizzarla finch non ha finito.

ESD funziona via rete su specifiche porte. Con -ad 
potete specificare tutti i parametri del caso.

somaplayer -ao esd file.aiff

4.2.4 ARTS

Esattamente come ESD  un demone del suono:

somaplayer -ao arts file.cdr

4.2.5 SUN, IRIX

La gestione audio di certi sistemi operativi POSIX 
hanno sistemi sonori diversi da quelli sopra elencati.

Sun e IRIX sono supportati con optioni specifiche 
semplicemente impostando -ao sun o -ad irix.

4.2.6 NULL, STDOUT

Nel caso vi serva che il vostro audio non sia da 
sentire ma sia da gestire in altro modo potete 
utilizzare NULL o STDOUT. Il primo non genera nessun 
output sonoro, mentre il secondo scrive su STDOUT (a 
schermo) ci che verrebbe scritto sulla scheda sonora.

4.3 File 1-1

I file 1-1 sono quei file che non hanno nessun sistema 
di compressione. Quelli che sono gestiti da somaplayer sono:

* wav Microsoft WAV format (little endian) 

* aiff Apple/SGI AIFF format (big endian) 

* au Sun/NeXT AU file format (big endian) 

* raw Raw PCM data 

* paf Ensoniq PARIS file format 

* svx Amiga IFF / SVX8 / SV16 format

* nist Sphere NIST format

* voc Voc files ircam Berkeley/IRCAM/CARL

* w64 Sonic Foundry's 64 bit RIFF/WAV

* mat4 Matlab (tm) V4.2 / GNU Octave 2.0

* mat5 Matlab (tm) V5.0 / GNU Octave 2.1

* pvf Portable Voice Format

* xi Fasttracker 2 Extended Instrument

* htk HMM Tool Kit format

Fondamentale  specificare con -ad (audio device) il 
nome del file finale.

somaplayer -ao voc -ad prova.voc file.ogg

Somaplayer convertir il vostro file .ogg in prova.voc.

4.4 Encoding MP3/OGG

Per encodare file mp3 o ogg/vorbis bisogna usare come 
output audio lame o ogg ed  necessario configurare a 
dovere il audio device. I parametri dell'audio device sono:

* rate - default 44100

* bitrate - default 96

* channels - 1 o 2 - default 2

* quality - da 1 a 10 - defualt 10

* lowpass - defualt disattivato

* highpass - default disattivato

* file - file output

La configurazione quindi necessita solo del file di 
output se non si vuole modificare i parametri singoli. 
Il passaalto e passabasso di default sono disattivati.

Quality  necessario se si vuole vuole encodare in un 
file ogg o mp3 qualcosa che  variabile come rate e/o bitrate.

Un esempio pratico :

somaplayer -ao ogg -ad 
file=prova.ogg,channels=1,bitrate=24 file.aiff

In grafica bisogna aggiungere un output ogg/mp3 ed 
impostare i valori identica attraverso il form apposito:

<Graphics file: sp2.jpg>


Dato che la configurazione di encoding  lunga e 
comunque pu essere riutilizzata, ho preferito far s 
che si potesse salvarla in un file. Il contenuto del 
file  esattamente come la configurazione a riga di 
comando scritta cos:

file=output.ogg

rate=44100

quality=10

bitrate=8

...

L'ordine delle voci non conta e non  fondamentale 
mettere tutte le voci (eccetto file=...). Quelle che 
non si mettono vengono settate di default come spiegato sopra.

Per lanciare questo file si fa in questo modo:

somaplayer -ao ogg -ad file.config file.mp3

4.5 Streaming

Gli streaming che somaplayer gestisce come output sono 
di 3 tipologie: icecast, icecast2, shoutcast.

Le voci di configurazione per questi sono le seguenti:

* type - Tipologia di encoding (mp3 o ogg) - default mp3

* rate - default 22050

* quality - default 8

* bitrate - default 24

* channels - default 1

* lowpass - default disattivato

* highpass -de fault disattivato

* password - password di connessione al server

* server - server di streaming

* port - porta di ascolto del server di streaming

* mount - mount point della radio

* genre - default nullo

* name - nome della radio - default nullo

* description - descrizione della radio - default nullo

* url - sito di riferimento della radio - default nullo

* public - l'accesso alla radio  pubblico o no?

* aim - default nullo

* icq - default nullo

* irc - default nullo

* dumpfilelocal - nome del file di dump della radio - 
  default disattivato

* dumpfileremoto - nome del file di dump della radio - 
  default disattivato

Se si genera un output icecast o icecast2 non verrano 
considerate i flag aim, icq, irc e l'encoding ogg. 
Icecast 2 come shoutcast non considera pure il 
dumpremoto. Shoutcast non gestisce la descrizione.

La configurazione, esattamente come l'encoding di file 
mp3 e ogg si pu salvare su un file.

4.6 Output SDS

SdS  trattato in un capitolo apposito. Per ora 
sappiate che per configurare un output verso un servere 
SdS bisogna dire la porta e l'IP del server a cui 
collegarsi. Di default si suppone che il server giri in 
locale sulla porta standard, ma si pu cambiare con facilit:

somaplayer -ao sds -ad localhost http://www.google.it/file.ogg

4.7 Errori degli output

Pu capire che certi output generino errori durante una 
sessione. Immaginatevi che il server di streaming vi 
chiuda la connessione o che finisca lo spazio sul 
vostro computer... Somaplayer reagisce a questo evento 
rimuovendo tra gli output attivi, quello che ha dato problemi.

5 SdS

SdS  un demone del suono. In verit  una specifica 
opzione di somaplayer capace non di gestire gli input 
file/streaming passati attraverso una interfaccia 
grafica o testaule, ma capace di accettare secondo un 
protocollo particolare input gi gestiti da altri 
player (xmms, mpg123, somaplayer stesso, ...) e di 
mixarli. Del mix risultante  possibile farne quello 
che si vuole attraverso uno qualsiasi degli output 
descritti nel capitolo precedente.

Anche SdS ha una duplice interfaccia: testuale e grafica:

<Graphics file: sp4.jpg>


Nella versione grafica c' la possibilit di modificare 
il master e il balance generale di tutti gli input che 
SdS accetter.

All'avvio si pu specificare la porta e l'interfaccia 
di rete sulla quale bindarsi oltre a quanti input si 
pu avere in contemporanea:

* interface - ad esempio localhost

* port - la porta su cui ascoltare

* listen - il numero di input in contemporanea

5.1 Audio Output

La gestione degli output audio con SdS  identica a 
quella fatta da somaplayer sia in versione grafica che 
in versione testuale.

5.2 Input

In interfaccia testuale SdS mostra i dati della 
connessione in entrata ma non  possibile gestire in 
nessun modo volume e balance. In grafica invece avviene questo:

<Graphics file: sp5.jpg>


Per ogni input in entrata compare una barra nuova che 
permette di modificare il volume e il balance del 
singolo input, impostare il solo o il mute oltre che 
attivare 4 pulsanti di gestione dei crossfade. Ogni 
barra aggiuntiva ha un colore del bordo diverso in modo 
da poterla identificare facilmente.

I crossfade sono azionabili dal menu generale e 
permettono di gestire il volume e il balance degli 
input selezionati. I pulsanti di cui sto parlando sono 
i seguenti:

* CVU Crossfade Volume Up

* CVD Crossfade Volume Down

* CBU Crossfade Balance Up

* CBD Crossfade Balance Down

Si pu attivare quali input devono salire (CVU o CBU) e 
quali devono scendere (CVD o CBD). Si attiva la barra 
del crossfade che si vuole usare:

<Graphics file: sp6.jpg>


e lo si usa :)

Dal menu si pu facilmente lanciare anche un somaplayer 
grafico gi configurato per avere come output solo SdS.

5.3 Libsdsdsp.so

Per far si che si possa utilizzare SdS con qualsiasi 
player audio serve una libreria capace captare 
l'accesso di qualsiasi programma verso il device audio 
e di redirigerlo verso il server SdS.

La libreria libsdsdsp serve per fare questo ed  
testata con xmms, cdsound, mpg123, mpg321 e altri 
player opensource.

Per utilizzarla bisogna caricarla in memoria. Esistono 
2 modi per farlo: la prima  quella di aggiungerla 
nella variabile LD_PRELOAD:

export LD_PRELOAD=$LD_PRELOAD;/usr/lib/libsdsdsp.so

Il secondo modo  quello di usare lo script sdsdsp:

sdsdsp xmms file.mp3

Automaticamente questo script caricher questa libreria 
e lancer il programma passatogli come argomento. I 
parametri aggiuntivi che si possono passare a sdsdsp 
sono i seguenti:

* -s o --server - per specificare l'IP del server su 
  cui gira SdS

* -v o --verbose - per settare il verbose di connessione

6 Contatti

Per mettersi in contatto con me o con la comunit che 
ruota attorno a somaplayer (che potete vedere nella 
finestra about dell'interfaccia grafica) potete 
scrivere all'indirizzo:

mailto: soma@autistici.org

Consultate poi il sito internet:

http://soma.realityhacking.org

ed eventualmente fate una donazione :)

7 Conclusione

Somaplayer  nato da pochi mesi ma gi adesso si 
presenta stabile e funzionale. Spero che usandolo 
possiate provare utilit e piacere e se s fatelo 
sapere che fa sempre piacere :)

bakunin
