================================================================================ ---------------------[ 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 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 ]------------------------------------- ================================================================================