Copy Link
Add to Bookmark
Report
BFi numero 13 file 16
================================================================================
---------------------[ BFi13-dev - file 16 - 20/08/2004 ]-----------------------
================================================================================
-[ DiSCLAiMER ]-----------------------------------------------------------------
Tutto il materiale contenuto in BFi ha fini esclusivamente informativi
ed educativi. Gli autori di BFi non si riterranno in alcun modo
responsabili per danni perpetrati a cose o persone causati dall'uso
di codice, programmi, informazioni, tecniche contenuti all'interno
della rivista.
BFi e' libero e autonomo mezzo di espressione; come noi autori siamo
liberi di scrivere BFi, tu sei libero di continuare a leggere oppure
di fermarti qui. Pertanto, se ti ritieni offeso dai temi trattati
e/o dal modo in cui lo sono, * interrompi immediatamente la lettura
e cancella questi file dal tuo computer * . Proseguendo tu, lettore,
ti assumi ogni genere di responsabilita` per l'uso che farai delle
informazioni contenute in BFi.
Si vieta il posting di BFi in newsgroup e la diffusione di *parti*
della rivista: distribuite BFi nella sua forma integrale ed originale.
--------------------------------------------------------------------------------
-[ THREADS ]--------------------------------------------------------------------
---[ S0MA PR0JECT ]-------------------------------------------------------------
-----[ bakunin <bakunin@autistici.org> http://soma.realityhacking.org ]--------
-------- Soma Project -------
by Andrea Marchesini
a.k.a bakunin
bakunin@autistici.org
INTRO
E' da tempo che non scrivo un articolo per una ezine o una rivista che si
occupa di questioni digitali e quando smaster mi ha chiesto se avevo voglia di
stendere qualcosa sul mio ultimo progetto per BFI, mi ha fatto un piacere
enorme.
Da quando giravo nel mondo underground delle chat e dei newsgroup, e
frequentavo gente (o meglio nick) che si occupavano di sicurezza e
sperimentazione (ma per lo piu' perdita di tempo) sono cambiate molte cose.
Specialmente per me.
Il progetto che vi presento, infatti, riguarda un percorso che e' durato due
anni e che mi ha portato da scrivere moduli per apache o librerie abbastanza
poco utilizzabili, a scrivere software per un bacino di utenza piu' ampia, che
sanasse lacune in campi ben lontani dal mondo hacker e piu' vicini all'utente
medio.
Avevo voglia di sentire tutte le vibre propositive che nascono attorno a
comunita' di sviluppo di progetti complessi, ma fruibili da chiunque, buttarmi
nella programmazione di qualcosa che non ha un tempo di creazione breve ma che
ha pressoche' infiniti sviluppi e situazioni applicabili.
Il software che sto sviluppando da quasi un anno permette la gestione completa
di uno studio radio organizzandone il palinsesto, le differite, le
registrazioni, la consultazione e l'amministrazione. Ormai e' abbastanza stabile
ed utilizzato qua e la' nel globo terreste. L'ho presentato all'ultimo
hackmeeting e all'ultimo, nonche' primo, transhackmeeting che si e' tenuto a
Pola nel mese di giugno.
Chiunque voglia aderire al progetto, che ovviamente e' succube della licenza
virale e poco protettiva GPL, puo' consultare il sito internet:
http://soma.realityhacking.org
o inviarmi una email:
bakunin@autistici.org
soma@inventati.org
UNA RADIO OGGI
Cosa serve per fare una radio? O un'antenna grossa grossa con cui piratare una
fettina della banda disponibile, oppure un collegamento ad internet, meglio
ancora se si hanno entrambe le cose.
Ma una radio in streaming e' un qualcosa di gratuito per tutti che non incorre
in fastidiosi problemi legali che con l'antenna quasi sicuramente si dovranno
affrontare.
Ci si appoggia quasi sempre ad un server di streaming che, grazie ad una banda
considerevole, e' capace di fornire cio' che si produce alla rete.
Il problema che si incontra istantaneamente quando si procedere sulla strada
dello streaming e': come farsi conoscere?
Sono nati alcuni siti web per mettere in contatto gli utenti con le radio, ma
siamo ancora molto lontani dalla propagazione di massa propria dell'etere.
I principali software che si occupano di distribure lo streaming generato da una
qualche radio funzionano sfruttando il protocollo HTTP. Cito:
* icecast[1-2] - http://www.icecast.org
* shoutcast - http://www.shoutcast.com
Questi diffondono uno streaming audio encodato in mp3 o ogg (solo icecast2) a
chiunque ne faccia richiesta e ormai quasi ogni player audio e' capace di
effettuare una connessione di questo tipo.
Esistono molti meno software invece capaci di generare uno streaming verso un
server di diffusione:
* Darkice - genera uno streaming mp3/ogg e lo streamma verso uno o piu' server
icecast/shoutcast ascoltando dal device audio (/dev/dsp ad esempio).
* Muse - programma capace di encodare file audio (o input da line-in/mic)
e di streammarli verso servers di diffusione.
* Moduli aggiuntivi a xmms o winamp.
* Altri...
Con solo questi strumenti pero' non si puo' fare una radio seria. Non esistono
infatti software specifici per gestire bene un palinsesto, o un demone del
suono capace di gestire in maniera adeguata uno o piu' streaming, gestori di
differite, tools di amministrazione.
Avevo ampio raggio per sperimentare sulle radio. Ed ecco cosa ne e' uscito:
SOMA PROJECT
Soma e' una suite di software capace di gestire una radio dall'inizio alla fine.
Possiede un demone del suono, uno scheduler, diversi tools di amministrazione,
un player e altro ancora.
.: SomaPlayer :.
Inzio illustrando il player: somaplayer e' un programma capace di ricevere in
input file audio di quasi ogni tipologia (circa 25 tipi tra cui mp3, ogg, wav,
aiff e altro), legge cdaudio, accetta file in streaming (col supporto per ipv6
e ssl) su protocollo http e gestisce line-in e microfono oltre a leggere
playlist in formato pls (xmms like) o m3u (winamp like). Gli output che e'
in grado di fornire sono infiniti. Ovvero e' possibile inserire nuovi output
al volo, eliminarli, modificarli, separatamente al playing dell'input. Le
tipologie di output che sa gestire ad ora sono:
* Audio interface: supporta OSS, ALSA, ALSA9, ESD, ARTS, JACKD e altro con la
capacita' di andare alla ricerca dell'interfaccia audio adeguata al sistema
su cui gira.
* Encoding mp3 o ogg.
* Scrittura di file 1-1 ovvero quelli che non hanno una forma di compressione
(wav, aiff, au, cdr, paf, svx, nist, voc, ircam, w64, mat4 e altro ancora).
* Streammare su un server icecast, icecast2, shoutcast.
Ad esempio e' possibile streammare l'input su due server icecast a qualita'
diverse, salvare il tutto in formato mp3 sul proprio computer e intanto
ascoltarlo. Oppure, rimuovendo l'audio, puoi anche non ascoltare piu' quello che
somaplayer sta facendo e nel frattempo continuare ad aggiungere o rimuovere
output senza intaccare il lento scorrere degli input.
Soma ha una duplice interfaccia: grafica (gtk+2.4.x) e testuale e con ognuna di
queste e' possibile avere il controllo della playlist (salvabile in ogni
istante), del volume e del balance, come praticamente ogni player al mondo.
.: SdS :.
Un altro output che non ho indicato nell'elenco sopra citato e' SdS (Soma
Distributed Sound). Questo output richiama un altro elemento di questa suite di
software che non e' ne' piu' ne' meno che un demone del suono.
Come ogni demone del suono e' in grado di ricevere input (l'output dei player),
mixarli e darne degli output. Gli input possono essere infiniti e arrivare anche
via rete, gli output sono gli stessi di somaplayer compreso l'invio ad altri SdS
con la possibilita' quindi di comporre una scala gerarchica abbastanza
complessa.
Attraverso una libreria e uno script (libsdsdsp.so e sdsdsp) e' possibile
wrappare l'output di un qualsiasi player e redirigerlo verso SdS con un ennesimo
input. Esattamente come fa ESD con esddsp.
Immaginiamo quindi una radio che ha un server di streaming su cui gira sds e
altri computer dedicati a gestire
A) una playlist e un microfono per il dj;
B) un'intervista o degli stacchi musicali, anche da remoto.
Il tutto fluisce al demone che genera a sua volta come output una copia in
locale della vostra trasmissione e uno streaming verso un server di produzione
o verso l'antenna della vostra radio in etere.
Anche SdS gira in modalita' testuale o grafica: compare sotto forma di mixer
delle tracce in input con balance e volumi separati, solo, mute e led luminosi
per i clip esattamente come ogni mixer che si rispetti.
.: Somad :.
Quello che mancava a questo punto era un demone capace di gestire uno o piu'
palinsesti.
Somad legge un file di configurazione, un file di palinsesto e schedula le
trasmissioni della vostra radio.
Una trasmissione come l'ho intesa io, non e' altro che un ora di inizio, un'ora
di fine e una tipologia. Ho ipotizzato 4 tipologie possibili:
- Files
- Streaming
- Silence
- Module
Files:
Una playlist molto semplice e' una sorta di bobina. Negli orari in cui non
c'e' nessun dj, capita spesso di voler mandare in onda pezzi musicali scelti
o presi random tra certe directory.
In questa tipologia e' possibile impostare le directory (lette
ricorsivamente) e i file (in locale o remoti), specificare se si desidera
selezionare i brani in modo randomico o avere stacchi pubblicitari: in questo
specifico caso si potra' impostare nel dettaglio ogni quanti brani parte uno
spot e di quanti pezzi dovra' essere composto attingendo dalle proprie
directory o da file locali e remoti.
In piu' e' possibile scegliere se essere netti sull'ora di fine della
tramissione oppure aspettare che il brano in corso finisca per poi passare
alla trasmissione successiva.
Streams:
Uno streaming e' una redirezione dell'audio che arriva da un'altra radio. Non
ha intermezzi pubblicitari, non puo' essere mandato random.
Silence:
Equivale esattamente a non mettere la trasmissione: somad si stoppa fino alla
prossima necessita'.
Module:
Non posso prevedere io tutte le necessita' di una radio. Ho scritto quindi
somad per poter caricare moduli runtime e far gestire a questi moduli cio'
che la trasmissione necessita. Per ora ne ho scritto solo uno che permette di
mandare differite, ma ognuno puo' farsi i propri, compilarli come liberie e
aggiungerli nel palinsesto.
Il palinsesto e' amministrabile attraverso un tool testuale chiamato somaclient
o via web attraverso qualche riga di php (somadmin). Si puo' cambiare runtime
il palinsesto, aggiornarlo, passare ad una versione precedente oltre che
stoppare, riavviare e chiudere somad.
.: Altro :.
Attorno a questi applicativi ho scritto una serie di altri tools che
semplificano la vita ad un amministratore radio. Sono un controllore di sintassi
per i file di palinsesto (somacheck), un gestore di avvii rapidi di spot
radiofonici (somabutton), un tool di scaricamento streaming, un'interfaccia
grafica semplificata per somaclient e script che permettono di usare somaplayer
al posto di lame e cdparanoia.
CONCLUSIONE
Il tutto all'oggi risulta molto stabile e ho ancora tante idee su possibili
implementazioni. Ma piu' che altro ho intenzione di mostrare e utilizzare questo
accrocchio di codice nelle radio vere e di creare attorno a cio' una comunita'
capace di dare buoni spunti, feedback e novita'. Poi cambiero' licenza
diventando milionario con una vendita a radio DJ.
Happy hacking.
Bakunin
================================================================================
------------------------------------[ EOF ]-------------------------------------
================================================================================