
Settantasettesimo articolo dedicato alle web radio.
Cominciamo le guide avanzate dedicate ad icecast su linux, studiando i file XML di esempio che vengono forniti a corredo con ices2.
E’ chiaro che il server icecast può non essere utilizzato necessariamente con ices2, ma in questo caso, risulta secondariamente necessario alla trasmissione (quantomeno per passare da un livello amatoriale ad uno semi-professionale) conoscere e sapere manipolare i file di configurazione, che in questo caso sono del tipo Extensive Markup Language.
Il primo di questi file che considereremo è quello dedicato allo streaming da ALSA. Alsa sta per Advanced Linux Sound Architecture e contraddistingue in questo caso una modalità di streaming improntata sul live o sull’ingresso della scheda audio, ad esempio un banale simulcasting.
Andiamo quindi a considerare le parti di questo file, che è meglio ricordare, si trova in /usr/share/doc/ices2/examples
La prima parte del file è questa:
<!-- run in background -->
<background>0</background>
<!-- where logs go. -->
<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<!-- size in kilobytes -->
<logsize>2048</logsize>
<!-- 1=error, 2=warn, 3=infoa ,4=debug -->
<loglevel>4</loglevel>
<!-- logfile is ignored if this is set to 1 -->
<consolelog>0</consolelog>
Il tag background va settato ad 1 se si vuole porre ices in background.
Il tag logpath identifica una directory che può essere scritta dall’utente che ices2 sta identificando. Può essere piazzata ovunque, ma chiaramente devono essere abilitati i permessi di scrittura.
Il tag logfile identifica il nome del file di log. Alla riapertura del log file l’esistente viene rinominato come “logfile”.1
Il tag logsize indica la massima grandezza del file di log prima di andare in modalità ciclica di scrittura.
Il tag loglevel Indica un numero che rappresenta il livello di logging prescelto.
1 – Loggati solo i messaggi d’errore
2 – Come il punto uno, ma anche i Warnings verranno loggati
3 – Come il punto due, ma anche i messaggi informativi verranno loggati.
4 – Come il punto tre, ma anche i messaggi di debug verranno loggati.
Il tag consolelog, se impostato ad 1 causa l’apparizione dei messaggi loggati in console, piuttosto che in un log file.
Nelle applicazioni più sensibili al ritardo (tra cui OVVIAMENTE una radio), è sconsigliato avere logging in console. E’ un opzione utile in fase di studio del software.
Il tag pidfile consente di creare un file in cui è scritto il ProcessID del processo ices2 corrente.
Veniamo adesso alla sezione stream.
La sezione stream è composta da tre sottoparti, chiamate metadata, input e instance.
Esaminiamole tutte e tre nel dettaglio.
Metadata intuitivamente si capisce già su cosa abbia influenza, ovvero si occupa di trasmettere tutti i dati a corredo della trasmissione stessa.
Le sue sottoparti sono nome, genere, descrizione e url, esattamente gli stessi campi che si trovano in generale nei server shoutcast, ma in realtà praticamente in tutti.
Input invece tratta la parte hardware della trasmissione, vediamo come.
Module, ci indica di scegliere quale modulo hardware stiamo trattando, qui si parla di alsa, per cui scriviamo alsa.
I successivi parametri sono rate, channels, device e i metadata.
Rate indica la frequenza di campionamento del segnale analogico di partenza. E’ normalmente settata a 44100 hertz, se non sapete come mai, vi invito caldamente a leggere il teorema divino.
Channels indica se vogliamo una trasmissione mono o stereo.
Device indica la posizione della scheda audio nell’elenco delle periferiche del nostro sistema.
Metadata e metadatafilename rappresentano uno switch di scrittura e un nome file dove vengono scritti i metadati.
Istance rappresenta la generica istanza di trasmissione. Dico “generica” in quanto, se conoscete il software di cui stiamo parlando, o avete letto altri articoli (non per forza di questo blog) su ices2, saprete che è un source multi-instanziabile, ovvero ha la possibilità di trasmettere, a differenza di molti software per shoutcast ad esempio, lo stesso stream a più server contemporaneamente.
hostname indica l’indirizzo ip del server da contattare, può essere sia un ipv4 che ipv6.
port indica la porta del processo sul server da contattare, vi ricordo che si comunica in tcp.
password non necessità spiegazioni
mount, identifica il cosidetto mountpoint, ovvero un particolare stream in un singolo server icecast, che può trasmettere più stream contemporaneamente.
yp è uno switch che abilita o disabilita la visione pubblica dell’emittente.
La sezione Encode indica i parametri di codifica dello stream, che devono matchare chiaramente quelli impostati in hardware nella sezione precedente.
Il tag downmix è uno switch che indica se, in caso di necessità, si preferisce diminuire il numero di canali da due ad uno, ovvero passare da stereo a mono.
La sezione Resample definisce la frequenza in hertz a cui passare in caso ad esempio di problemi di rete. Tipicamente si preferisce passare ad un valore pari alla metà della frequenza di partenza. Ricordatevi sempre che sempre per il teorema divino, se volete ricostruire senza aliasing un segnale che ha banda N hertz, avete bisogno di una frequenza di campionamento NON INFERIORE a 2N hertz. Quindi avere 22050 hertz di frequenza di campionamento, consente di sentire discretamente una banda di 10000 hertz. Sufficiente per il parlato ma non certo per la marcia turca di mozart.
Con questa sezione finisce la parte alsa, vedremo nei prossimi articoli di considerare anche le altre opzioni possibili, ovvero OSS e una playlist.





