(L) idea

Delete this message

Reply to this message
Author: Angelo Rindone
Date:  
Subject: (L) idea
http://s8suono.com/jic
articolo scritto da un collaboratore di S8
Andrea Bertolazzi che ha sviluppato lo script
di cui sopra



                    SENTI COME SUONA IL MIO JUKE BOX


                 tratto da INTER.NET GENNAIO 2002 n°75


In questo articolo cercheremo di illustrarvi come si può trasformare
Gnu/Linux in un juke-box utilizzabile sia attraverso Internet che in una
rete privata, l'esempio di un Internet Cafè. Il nostro obiettivo è
quello di permettere alle persone che hanno accesso al servizio di poter
selezionare, attraverso un'interfaccia grafica, la canzone che
preferiscono scegliendola da una lista preventivamente costituita.
Esattamente ciò che avverrebbe trovandosi di fronte ad un juke-box, ma
risparmiando i soldi della selezione ;).

Il vantaggio del sistema è l'indipendenza relativa al luogo di accesso
al servizio, cosa differente nel caso di comuni juke-box; tutto quello
che serve è un programma client che possa collegarsi al server in esame.

L'esecuzione dei brani avviene rispettando il comportamento classico di
questo tipo di apparecchiature, e quindi ogni canzone selezionata resta
in memoria pronta ad essere eseguita non appena la precedente si è
conclusa.

Altra particolarità sta nel fatto che lo stesso progetto, oltre che in
locale, lo si può utilizzare attraverso Internet, allargando in modo
significativo il numero dei potenziali ascoltatori delle nostre canzoni.
Identifichiamo allora quali sono i programmi che possono soddisfare le
nostre esigenze. In primo luogo avremo bisogno di un programma lato
server che si occupi di diffondere il suono attraverso la rete
(streaming audio), sia esso locale che su Internet, le canzoni che
vengono selezionate, un programma che riproduca file sonori ed un altro
che li prepari prima di passarli al server.

Nel caso della trasmissione via Internet, sarà necessario utilizzare uno
strumento di compressione Mp3 per contenere le dimensioni dei file da
distribuire. Si noti inoltre che qualora si voglia utilizzare questo
progetto per diffondere musica attraverso Internet bisogna prestare
particolare attenzione alla banda di cui si dispone dato che questo
fattore determina la qualità dell'audio e il numero di ascoltatori
simultaneamente possibili.



Nell'esempio del nostro ipotetico Internet Cafè, dovremo inoltre
preoccuparci di adottare, per ogni nostra macchina client, un software
che sia in grado di riprodurre i file sonori in remoto e non
necessariamente vincolata ad una precisa piattaforma. Per ogni sistema
operativo sono reperibili programmi che leggono i file Mp3 e a titolo di
esempio possiamo indicare MacAmp per sistemi MacOs o WinAmp per sistemi
Microsoft Windows. Per il funzionamento del software si presuppone che
abbiate nel vostro sistema un server Web Apache con attivo il supporto
per Php; l'aspetto è relativamente semplice se si considera che tutte le
distribuzioni Gnu/Linux reperibili di fatto li contemplano.

Di seguito riportiamo i programmi che abbiamo scelto di utilizzare per
la realizzazione del progetto:

Icecast (http://icecast.org): è appunto il programma server che permette
di fare lo streaming dei file sonori, e quindi di renderli disponibili
all'ascolto.

xmms (http://www.xmms.org): è il lettore dei file Mp3 che abbiamo scelto
per il nostro juke-box.

liveice plugin per xmms (http://www.xmms.org): è il programma che
permette di trasmettere il sonoro da xmms al server Icecast.

xmms-shell (http://xmms-shell.sourceforge.net/): è un programma di
utilità che permette di comandare da remoto xmms.

Lame (www.sulaco.org/Mp3): è invece il compressore Mp3, necessario per
fare lo streaming Mp3 a campionamento più basso.

class.id3.php (http://leknor.com/code/) di Sandy McArthur, Jr.: è un
programma scritto in Php, necessario al fine di manipolare le
informazioni dei file Mp3 che verranno visualizzate nella console del
jukebok (ad esempio per intervenire sul nome dell'autore o sugli altri
campi di descrizione del file che il formato Mp3 prevede).

JIC (Juke-box Internet Cafè) jic.tar.gz che si compone di due parti
distinte, la prima si occupa dell'amministrazione (JICadmin.Php) del
sistema, e la seconda visibile a tutti che è il jukebok vero e proprio
(index.Php, play.Php).



La maggior parte dei programmi da noi indicati è disponibile in svariati
formati per ogni distribuzione quali ad esempio .rpm o .deb; resta
inteso che in caso di problemi con pacchetti indicati o per proprio
desiderio è sempre possibile compilare il codice sorgente con:

./configure
make
make install


Lo schema rappresentativo del nostro sistema è abbastanza semplice. La
scelta della canzone che si desidera ascoltare (attraverso il
navigatore) avviene tramite l'esecuzione di un file Php che richiama
l'applicazione xmms-shell; quest'ultima si occuperà di aggiungere alla
lista di canzoni di xmms quelle selezionate, mentre i plugin liveice e
lame si occuperanno di ricampionare il suono e direzionarlo sulla porta
del server Icecast, che permetterà poi a tutti i possessori di un
lettore Mp3 con supporto per lo streaming di ascoltarvi.

Una volta procurato il software potremo cominciare a implementare il
nostro JIC!

Una volta installati a dovere i precedenti applicativi, scompatteremo il
nostro software nella nostra Document Root (di norma /var/www/ nei
sistemi Debian, /home/httpd per RedHat). Faremo in modo che l'utente
base di Apache (indicato in httpd.conf) abbia i permessi di scrittura
nella directory JIC. Effettuata l'operazione ci collegheremo con il
nostro browser all'indirizzo http://localhost/JIC/admin.Php e da questa
pagina potremo accedere alla console amministrativa del nostro juke-box.
Qui potremo ricercare e maneggiare gli Mp3 presenti sul nostro computer.
In sé non c'è nulla di complicato: si sfruttano le potenzialità di xmms
ma soprattutto di xmms-shell piccola utilità a riga di comando, che ci
permetterà di usare xmms da un comune navigatore per Internet.

A questo punto potrete configurare, per lo streaming, il plugin di xmms,
LIVEICE. Aperto xmms con la console amministrativa dal navigatore andate
su "Options"---->"Preferences"---->"Effect/General Plugins"--->"Effects
Plugins, selezionate LiveIce 1.0.0 [libliveice.so] e premete il pulsante
"Configure". Qui potrete selezionare tutti i parametri di campionamento
e di descrizione della vostra radio. Nei campi relativi al server
selezionate gli stessi parametri del server radio Icecast. Il default è
localhost->8000-> e la password è "hackme" mentre lo Stream Point per la
nostra implementazione potete non considerarlo eliminandolo
direttamente.





Salvate le modifiche e avviate il plugin. A questo punto sarà necessario
configurare il server radio. Nella directory delle configurazioni (conf)
dove avete installato icecast troverete un file di configurazione dal
nome icecast.conf.dist da rinominare in icecast.conf. Il file di
configurazione, malgrado la notevole mole di parametri in esso presenti,
dovrebbe già andare bene nella configurazione iniziale. E' bene comunque
conoscere la possibilità di configurare il server a proprio piacimento.



Mandiamo dunque in esecuzione il server radio (basta lanciare
l'eseguibile icecast), e facendo suonare xmms (usate il vostro
admin-juke-box per comandarlo) vedrete che il server riceverà il
contatto del vostro xmms.

Questi sono alcuni comandi della console di icecast.

Appena il vostro xmms comincerà a suonare il server icecast vi
risponderà con qualcosa di molto simile

-> [19/Jul/2001:21:55:38] Accepted encoder on mountpoint /live_xmms from
localhost. 1 sources connected

cioè ha accettato una connessione da localhost.

Nelle impostazioni di icecast si possono accettare più connessioni.
Digitate al prompt di icecast il comando "list" che vi darà la lista di
esse.

-> list

Listing connections:

[Id: 0] [Host: icecast console] [Type: admin] [Connected for: 5 minutes
and 28 seconds]

[Id: 1] [Host: localhost] [Type: source] [Connected for: 3 minutes and
13 seconds]

End of list listing (2 listed)

In questo caso due sono le connessioni: lo stesso server Id:0 e la Id:1,
la nostra sorgente di musica proveniente da xmms.

Per scoprire le caratteristiche di ogni connessione il comando apposito
è "describe numero connessione" (ex. describe 1)

In questo caso:

-> describe 1
Connection info
Connection id: 1
Connection socket: 13
Connect time: 5 minutes
Connection host and ip: localhost [127.0.0.1]
End of connection info
Misc source info:
Connected: yes
Source Type: encoder
Protocol: x-audiocast
Number of clients: 0
Dumpfile and dumpfd: (null) : -1
Stream priority: 0
Stream title:
Stream url: http://yp.icecast.org
Stream msg: (null)
Stream length: -1
Source name: Esse Otto Radio
Source genre: JukeBox
Source bitrate: 24
Source url: http://www.s8suono.com
Source mount: /live_xmms
Source content id: (null)
Source description: OdJ on Gnu/Linux ;-))
Megabytes read: 0
Megabytes written: 0
Client connections: 0
Client connect time: 0 minutes
Average client connect time: 0 minutes
Average client transfer: 0
End of source info

Se osservate le precedenti righe potete notare le impostazioni
precedentemente fatte nel plugin di liveice_xmms. Se volete invece
sapere quanti ascoltatori sono sintonizzati potete digitare "listeners",
mentre per una lista di tutti i comandi è comunque sempre possibile
digitate "help".

Una volta terminata la procedura appena illustrata, chiunque potrà
collegarsi all'indirizzo Ip della vostra macchina sulla porta di
trasmissione (la 8000 è quella di default) e potrà ascoltarvi,
indipendentemente dal sistema operativo utilizzato.

Siamo finalmente giunti all'implementazione del JIC. Scompattate il
pacchetto jic.tar.gz nella vostra Document Root e seguite le operazioni
illustrate di seguito. Come potete ben vedere ci sono due parti
fondamentali di JIC: una componente amministrativa e una pubblica che
rappresenta il juke-box vero e proprio visibile all'utente finale. Per
prima cosa per poter accedere alla parte di configurazione dovete
preparare una password con il comando "htpasswd -bc .htpasswd user
password": questo genererà un file .htpasswd contenente la vostra
password criptata. E' bene non lasciare questo file nella cartella di
Apache (quella che prima abbiamo chiamato Document Root) per protegerci
ulteriormente dai malintenzionati.

Ora preparate un altro file .htaccess in cui ci saranno scritto tutti
gli utenti abilitati alla console amministrativa. Il file si presenta
così:

AuthUserFile /home/tulas/.htpasswd
AuthName RadioJukeBox
AuthType Basic
Limit GET
require valid-user
/Limit

Lanciate il vostro navigatore preferito e collegatevi all'indirizzo
http://localhost/JIC/Admin/admin.Php. Se avete fatto le cose
correttamente, vi verrà chiesto di autenticarvi; se i dati forniti sono
corretti diverrete amministratori del juke-box e avrete a disposizione
quattro opzioni affiancate da alcuni piccoli consigli.



Prima cosa dovrete lanciare xmms con il relativo collegamento presente.
Se non appare entro pochi secondi, controllate i permessi sul vostro
display. Questo perché il server XFree su cui lanciate tutte le
applicazioni grafiche di Gnu/Linux, non permette l'esecuzione di comandi
se non dall'utente che ha lanciato "startx" e quindi dal "proprietario
della sessione grafica. Il comando per abilitare l'accesso al vostro
display ad altri utenti è:

$ xhost +

oppure, in maniera più sicura e precisa
$ xhost +.

Come seconda cosa dovrete far ricercare al vostro JIC, i file Mp3 che
vorrete rendere disponibili nel vostro juke-box cliccando sul link Mp3.
E' buona norma ancora una volta, non mettere la cartella Mp3 nel
Document Root, se non volete che qualcuno, una volta individuati gli Mp3
li possa anche scaricare. Cambiando la variabile $percorso si potrà
indicare dove cercare gli Mp3. Fatto questo controllate che xmms abbia
ora in playlist tutte le canzoni trovate e che nella directory Admin
siano presenti i file lista_Mp3, lista_Mp3.pls e lista, necessari alla
prima pagina del vostro juke-box.

Si suppone che gli Mp3 contengano già le relative informazioni su
autore, titolo della canzone, album e cioè i cosidetti TAG. Nel caso
voleste mettere mano a tali informazioni potete usare il link TAG.
Ricordatevi però che ogni volta che modificate i tag dovrete rilanciare
il link Mp3 per ricostruire tutti i file citati precedentemente.
Arrivati a questo punto non vi resta che eseguire il vostro player xmms,
seguendo il link "accendi".

Infine è necessario configurare la variabile $doc_root (che troverete in
index.php), configurandola con la posizione dove avete scompattato il
file jic.tar.gz. Se tutto è andato a buon fine potete collegarvi al
vostro juke-box all'indirizzo http://localhost/JIC/index.php e
selezionare la vostra canzone... a questo punto buon ascolto... anzi
meglio, buona trasmissione!