English (UK)

Tratto da programmazione.it scritto da Leonida Castaldo

Il processo di codifica MP3 è assolutamente identico al processo di codifica descritto per il layer2. Anch'esso si basa sull'applicazione di un filtro analizzatore, ma a differenza del processo di divisione del suono in bande uguali descritto nel precedente articolo, le sottobande non sono tutte della stessa dimensione. Questa scelta è dovuta al fatto che alcune frequenze possono contenere un numero maggiore di informazioni e di conseguenza meritano un trattamento differente e non possono essere banalizzate.

L'evoluzione al layer3, e quindi il processo di codifica che porta effettivamente al file MP3, si basa ancora sull'utilizzo di un algoritmo DCT, ma nella sua variante, il Modified DCT (MDCT). Tramite l'applicazione di questo algoritmo, le bande sono ulteriormente divise con un processo di filtraggio delle sottobande, noto come sub-band filtering. Esso implica la divisione delle 32 bande in 6 o 18 sottobande, sulle quali sarà ripetuto il processo applicato alle sottobande, in altri termini saranno monitorate e, in funzione del mascheramento e della ridondanza previste, saranno fatte passare solo parte di esse.

E' evidente che la differenza tra layer2 e layer3 è minima, ma questa semplice modifica implica anche un incremento non indifferente del rapporto di compressione, cosa che risulterà chiara e indiscutibile al termine dell'articolo. L'insieme di frequenze in uscita, rappresentanti il bit-stream di ingresso, sono ordinate dalla frequenza più bassa a quella più alta. Il flusso dati così ottenuto è a sua volta diviso in tre intervalli di frequenza: frequenze alte, frequenze medie, frequenze basse, quindi è applicato l'algoritmo di Huffman a ciascun intervallo di frequenze completando il processo di compressione.

Con questo la compressione audio è completa, ma per capire quale sia il rapporto di compressione ottenuto al termine del processo, è più utile ricorrere ad un esempio. Consideriamo un file audio della durata di 3 minuti (180 secondi), la durata è quella media di un brano musicale. Considerando un bitrate di 1411 Kbps (1411000 bit), un file audio in formato Wave ha una dimensione complessiva di 1411000 x 180 = 253980000 bit equivalente a 31747500 byte, cioé circa 30,3 MB.

Il bitrate associato alla qualità CD di un file MP3 è compreso tra 128 Kbps e 112 Kbps. Scegliendo un bitrate di 128 Kbps, lo stesso file compresso in MP3 occuperà 128000 x 180 = 23040000 bit, cioé 2880000 byte, quindi circa 2,7 MB. Il rapporto di compressione è quindi di circa 11/1, cioé si è avuto una riduzione di spazio di circa 11 volte rispetto al file originale, pur conservando la stessa qualità audio del file Wave.

Per quanto riguarda il processo di decodifica, esso implica l'applicazione inversa del processo di codifica, in particolare viene usato un "filtro analizzatore inverso", che riorganizza le bande di ogni sezione secondo l'originario ordine temporale. Le bande saranno infine riunite generando il flusso audio originale. L'esempio dimostra matematicamente il motivo per il quale il formato audio MP3 ha riscosso e ancora riscuote un così grande successo. Recentemente sono state proposte soluzioni che assicurano un rapporto di compressione ancora migliore, in particolare Microsoft ha proposto il formato di compressione audio WMA.

Tratto da programmazione.it scritto da Leonida Castaldo

Il primo passo del processo di codifica MP3 consiste nell'applicazione di un filtro analizzatore, processo che per il layer2 dello standard MPEG, richiede l'ausilio di algoritmi quali FFT o DCT.

Il motivo per il quale è necessaria l'applicazione del filtro è che potendo presentarsi simultaneamente più suoni, è indispensabile separarli affinché possano essere trattati in modo differente. Il suono entrante viene diviso a tale scopo in 32 sottobande uguali, che consentono un'organizzazione dei diversi tipi di suono in base alla frequenza.

Per stabilire quanto spazio assegnare ai suoni e di conseguenza all'informazione in essi racchiusa, viene definito un ordine di priorità. In base a quest'ordine viene assegnato meno spazio, quantizzato in un numero inferiore di bit per rappresentare l'informazione, ai suoni ritenuti meno rilevanti e viene associato più spazio ai suoni più rilevanti. Il raggruppamento in sottobande dei suoni è eseguita sulla base dei parametri di mascheramento nel dominio del tempo e della frequenza, conosciuti a priori per ogni banda.

Le sottobande nelle quali è stato diviso il suono, sono raggruppate in frame (sezioni). L'assegnazione di priorità alle bande è un processo eseguito in funzione di ipotesi sul dove si presenterà il mascheramento e che richiede un'attenta analisi dei frame. Le zone "mascherate" saranno quelle in cui sarà tollerata la distorsione del suono (il suono non è completamente nascosto), quindi l'informazione che contengono sarà rappresentata con un numero inferiore di bit, cioé il suono sarà ritenuto meno prioritario.

Le sottobande per le quali il mascheramento è completo, quindi quelle in cui i suoni sono coperti completamente da suoni adiacenti più forti, non saranno fatte passare, in altri termini non saranno codificate in quanto non potranno essere percepite. Il numero di bit da assegnare è prestabilito in base alla qualità del suono decisa prima di avviare il processo di codifica. Il primo passo consiste in definitiva nell'applicazione di un metodo, che suggerisce come ripartire correttamente le risorse disponibili eliminando gli sprechi. Le risorse sono rappresentate in questo caso dallo spazio che si è deciso di investire nella compressione.

Stabilite le priorità, il successivo passo è l'assegnazione concreta dei bit per la rappresentazione dell'informazione. Questo processo avviene come detto sulla base degli effetti del mascheramento, è chiaro che sezioni in cui il mascheramento previsto è esiguo, comporterà l'assegnazione di un numero di bit maggiore. Al termine del secondo passo, ciascuna sezione sarà rappresentata da un insieme di dati in forma binaria. La successione di bit usata per rappresentare tali dati è il bit-stream di ingresso o meglio, la sequenza di dati che porterà alla composizione del file MP3 nel dominio della compressione layer3 (bit-stream di uscita).

Per ora siamo ancora nel dominio del layer2 dello standard MPEG1, ma come detto il processo di codifica di tale standard si evolve in funzione del layer precedente, quindi il passo che conduce al layer3 e quindi all'effettiva codifica MP3 è breve e semplice se studiato in funzione del suo predecessore.

Tratto da programmazione.it, scritto da Leonida Castaldo

La codifica audio MP3 sfrutta il mascheramento delle onde sonore per comprimere un file, ma questo non implica necessariamente un'esclusione netta delle onde mascherate; il processo è molto più complesso e sottile. Per comprendere meglio in cosa consiste il mascheramento, descritto sommariamente nel precedente articolo, si consideri la seguente figura:

L'onda con picco maggiore, di colore più intenso, rappresenta il suono più forte. Se l'onda successiva è quasi contemporanea a quella più forte - in altri termini se si susseguono in un periodo breve quasi istantaneo o simultaneo - essa è mascherata e quindi non viene percepita o viene percepita solo in parte.

La codifica adattiva si basa sull'assegnazione di uno spazio minore, tradotto in un numero inferiore di bit usati per rappresentare i dati associati alle onde mascherate, variabile sulla base dell'entità del mascheramento. Questa divisione dello spazio in parti non identiche, induce una distorsione sonora, in altri termini il suono apparirà meno pulito, ma questa differenza sarà impercettibile proprio per effetto del mascheramento. Ovviamente variare le risorse usate per rappresentare l'informazione implica anche una considerevole riduzione di spazio pur non eliminando completamente parte del suono.

MP3 è un formato audio compresso, ma per eseguire la codifica deve lavorare su un suono digitalizzato precedentemente registrato. Il nome generico per il sistema di registrazione digitale è Pulse Code Modulation (PCM). Il processo di registrazione audio in digitale è stato descritto negli articoli introduttivi alla compressione audio. Un aspetto importate da sottolineare è che il PCM registra informazioni audio quanto più possibile vicine al suono originale, ma applica un taglio alle onde sonore, selezionando quelle che rientrano in una frequenza percepibile dall'orecchio umano, quindi non superiore ai 22 KHz. A un simile valore corrisponde una frequenza di campionamento di 44100 Hz che è poi la qualità audio di un CD.

La codifica MP3 si articola in 5 passi ed è un'evoluzione dei layer1 e layer2 della compressione audio/video descritta dallo standard MPEG1. Data la similitudine tra layer2 e layer3, può risultare più comprensibile il processo partendo dalla codifica audio del layer2. Il primo passo nel processo di codifica (MPEG1 layer2) è l'applicazione di un filtro analizzatore con l'ausilio di algoritmi quali: Fast Fourier Trasformation (FFT) o Discrete Coseno Trasformation (DCT).

Tratto da programmazione.it scritto da Leonida Castaldo

Lo standard di compressione audio MP3 è oggi uno dei più usati in assoluto in quanto offre un rapporto di compressione altissimo, che limita notevolmente lo spazio occupato da un brano su un calcolatore, pur conservando un’ottima qualità del sonoro. MP3 è l’acronimo di MPEG1 Layer3, si tratta quindi di un formato audio digitale interno al noto standard di compressione audio/video MPEG. MPEG è uno standard ISO sviluppato a livelli: in altri termini ogni livello successivo al precedente offre un rapporto di compressione migliore e ogni livello di codifica non è altro che un’evoluzione del precedente.

La compressione MP3 fa uso, per il processo di codifica, di algoritmi con perdita di informazione; esso infatti si basa non sulla riproduzione fedele di un’onda sonora, ma piuttosto sulla parte di essa che effettivamente può essere percepita dall’orecchio umano, trascurando il resto.

Gli algoritmi di codifica audio si basano sul modello psicoacustico. Gli studi di psicoacustica sono incentrati sull’analisi della percezione delle onde sonore dall’apparato uditivo umano e sulla loro conversione in pensieri. Da tali studi, come anticipato negli articoli introduttivi alla compressione audio, due elementi sono considerati di particolare rilievo e sono usati per definire processi di codifica efficienti.

Il primo elemento è il valore di frequenza percepibile dall’orecchio umano, stimato in un range che varia tra i 20 Hz e i 20 KHz . Il secondo elemento è il fenomeno di mascheramento, cioè la copertura di un suono relativamente debole da un suono più forte immediatamente precedente o contemporaneo. Il mascheramento può essere inteso nel dominio del tempo o nel dominio della frequenza.

Nel dominio del tempo esso implica che un suono debole che segue immediatamente un suono forte, sia udito parzialmente o non sia udito del tutto. Il mascheramento nel dominio della frequenza implica invece che un suono con frequenza maggiore, prodotto simultaneamente a un suono con frequenza minore, sia dominante e offuschi il suono più debole.

La riduzione del suono in funzione del modello psicoacustico è fondata su due concetti essenziali. Il primo di essi implica l’eliminazione delle onde sonore al di sopra della soglia percepibile (ridondanza), in quanto sarebbe inutile conservare suoni non percepibili dall’orecchio umano. Il secondo concetto è l’irrilevanza di parte dell’informazione che a causa del mascheramento non sarà comunque completamente percepibile.

Il processo di codifica percettiva, o meglio il processo di compressione audio, si basa fondamentalmente sul concetto di irrilevanza a sua volta incentrato sul fenomeno di mascheramento, sia temporale che nel dominio della frequenza, dal prossimo articolo introdurrò il processo di codifica chiarendo come sfruttare tali elementi a vantaggio di un rapporto di compressione considerevole.

Tratto da programmazione.it scritto da Daniele Mercatante

La soluzione “fai da te” si basa sull’utilizzo di due software per il lato server e quello client. E' chiaro che basta un minimo investimento per ottenere un sistema VoIP tra due sedi aziendali dislocate geograficamente in città diverse. La lista della spesa, relativamente a quanto non è già presente di solito in un’azienda, comprende:

  • n. 2 schede per la connessione del canale telefonico tradizionale al server VoIP;
  • il software server Asterisk;
  • il software client X-lite;
  • un box adattatore per telefoni tradizionali.

La cosa più interessante della lista presentata è che si dovranno solo pagare le 2 schede, con un costo di circa 300 euro per ciascuna, ed i box per adattare i telefoni tradizionali, con un costo di qualche decina di euro. I software menzionati invece fanno parte del parco offerto dalla comunità dell’Open Source.

Tutto quanto è riportato nello schema grafico dovrebbe essere già presente in un’azienda o comunque non rappresenta un elemento indispensabile, si pensi ai telefoni VoIP, che sono sicuramente utili e dispongono di molte funzionalità aggiuntive, ma non sono indispensabili nell’ottica del contenimento dei costi per l’adeguamento tecnologico. La soluzione che è rappresentata nell’immagine si avvale della rete pubblica e dunque può non necessitare, per il suo solo funzionamento, di connessioni VPN. Una connessione VPN rafforza la soluzione in termini di sicurezza, ma non è indispensabile come alcuni dei sistemi che vengono proposti da molte società del settore della fonia per aziende. Naturalmente la soluzione precedente può essere disegnata, con qualche piccolo e non costoso accorgimento, per utilizzare una più sicura VPN, che darebbe garanzia di privacy, che oggi non guasta mai.

Tratto da programmazione.it scritto da Alessandro Vinciarelli 

Con lo sviluppo delle tecnologie e dei framework per il Web, sempre più applicazioni lasciano i computer desktop e si trasferiscono sulla Rete. Questa nuova meta è caratterizzata, tra l’altro, dalla possibilità di accedere alle informazioni direttamente da Internet, in qualsiasi posto del mondo ci si trovi. Si partì da semplici applicazioni e da quei servizi utilizzati maggiormente. Quello che stiamo osservando ora, e nel recente passato, è la migrazione della nostra scrivania su Web.

Sul sito ufficiale di Fedora Project è pubblicata un’intervista ad uno degli sviluppatori di questa nuova linea di pensiero, Colin Walters. Come si ricorda nell’intervista, il successo di applicazioni come Yahoo! Mail o GMail o ancora Google Docs sono il segno evidente che le necessità degli utenti sono sempre più orientate alla consultazione e all’utilizzo on line. Per questa ragione gli sviluppatori di GNOME e Bigboard stanno impegnando sforzi e risorse su questa strada.

“Il risultato che si vuole ottenere è una riorganizzazione del desktop che permetta gli utenti di utilizzare al meglio queste componenti on line. Attualmente, per quanto riguarda il livello di sviluppo, si parla di librerie per la comunicazione con online.gnome.org (che verrà utilizzato come servizio di memorizzazione delle personalizzazioni, configurazioni e stato del desktop virtuale), una nuova sidebar, ecc.”

Per il momento Colin Walters si ritiene soddisfatto soprattutto in termini di caratteristiche già implementate nel prototipo e di integrazione con altri sistemi e applicazioni on line come quelle offerte da Google. Quello su cui c’è ancora da lavorare un po’ è la semplicità di utilizzo e l’ottimizzazione della banda nella comunicazione.

Probabilmente, quindi, non avremo alcuna release ufficiale fino a quando questo prodotto non uscirà dalla fase di prototipo nella quale si trova attualmente. Questo succederà, secondo le previsioni di Colin Walters, contemporaneamente all’uscita di Fedora 8.

Tratto da programmazione.it scritto da Daniele Mercatante

Lo stato dell’arte evidenzia che i tempi sono ormai maturi per l’adozione dei sistemi VoIP anche nelle piccole e medie imprese, in genere le realtà più resistenti all’investimento. Una PMI effettua un investimento verso le nuove tecnologie solo a fronte di un’esigenza ormai diventata impellente. La tendenza rimane quella di andare avanti con le soluzioni più datate e che hanno un costo già ammortizzato e per le quali il mantenimento non richiede somme ingenti. Questo è il motivo per cui la maggior parte delle PMI continuano a mantenere dei sistemi di telefonia tradizionali, ignorando il ritorno da un investimento nell’ambito del VoIP.

I sistemi VoIP sicuramente consentono una serie di risparmi dati innanzitutto dall’abbattimento di alcune spese telefoniche ed in secondo luogo dalla possibilità di sfruttare dei telefoni VoIP installati sulle singole postazioni di lavoro. Quello che scoraggia in genere le PMI, escluso quelle che lavorano nel settore ICT, sono i costi di impianto. Le aziende che vendono sistemi VoIP, sicuramente molto validi, offrono delle soluzioni che necessitano di costi di impianto non risibili per piccole realtà (specie nelle condizioni di mercato in lenta ripresa per molti settori). Una soluzione spesso perseguita dalle aziende è quella del noleggio operativo o del leasing che poco si discostano tra loro, imponendo una “costo fisso mensile” per l’utilizzo del nuovo sistema.

Il costo di un telefono VoIP va dalle poche decine di euro fino a qualche centinaio, a seconda delle funzionalità offerte dagli stessi. Comunque è evidente che un’azienda, bene che vada, dovrà sopportare un costo fisso mensile per l’utilizzo di un sistema che gli offre ben poco rispetto al precedente se non il risparmio delle telefonate tra sedi diverse. Ogni telefonata terminata su PSTN (la rete pubblica) continuerà a costare alle aziende, che pagheranno il consumo al gestore prescelto. Risulta evidente che in questo modo non è molto ambito il passaggio a sistemi VoIP, si risparmia meno di quanto si dovrebbe pagare per implementarlo.

Non tutti sono a conoscenza di nuove soluzioni, sviluppate dalle comunità dell’open source, che rendono a disposizione di tutti dei sistemi free, che possono essere paragonate con le soluzioni basate sull’utilizzo di centraline telefoniche VoIP ed apparati fisici di fonia di ultima generazione. Queste sono le soluzioni fai da te, spesso ignorate per mancanza di know how o perché reputate poco stabili.

La soluzione “fai da te” si basa sull’utilizzo di due software per il lato server e quello client. E' chiaro che basta un minimo investimento per ottenere un sistema VoIP tra due sedi aziendali dislocate geograficamente in città diverse. La lista della spesa, relativamente a quanto non è già presente di solito in un’azienda, comprende:

  • n. 2 schede per la connessione del canale telefonico tradizionale al server VoIP;
  • il software server Asterisk;
  • il software client X-lite;
  • un box adattatore per telefoni tradizionali.

La cosa più interessante della lista presentata è che si dovranno solo pagare le 2 schede, con un costo di circa 300 euro per ciascuna, ed i box per adattare i telefoni tradizionali, con un costo di qualche decina di euro. I software menzionati invece fanno parte del parco offerto dalla comunità dell’Open Source.

Tutto quanto è riportato nello schema grafico dovrebbe essere già presente in un’azienda o comunque non rappresenta un elemento indispensabile, si pensi ai telefoni VoIP, che sono sicuramente utili e dispongono di molte funzionalità aggiuntive, ma non sono indispensabili nell’ottica del contenimento dei costi per l’adeguamento tecnologico. La soluzione che è rappresentata nell’immagine si avvale della rete pubblica e dunque può non necessitare, per il suo solo funzionamento, di connessioni VPN. Una connessione VPN rafforza la soluzione in termini di sicurezza, ma non è indispensabile come alcuni dei sistemi che vengono proposti da molte società del settore della fonia per aziende. Naturalmente la soluzione precedente può essere disegnata, con qualche piccolo e non costoso accorgimento, per utilizzare una più sicura VPN, che darebbe garanzia di privacy, che oggi non guasta mai.

In giro si sente sempre dire che Java è un linguaggio troppo lento per poter sviluppare giochi decenti.
Alcune sue caratteristiche, quali la VM, che lo astrae dall'hardware su cui gira, parrebbero dar ragione ai fautori del C++.
Ciò nonostante, la bravura dei programmatori può supplire parecchio queste limitazioni...
Se avete ancora voglia di mettere le mani sul vecchio, e mai tramontato Quake2, rivedendolo in veste Java provate a dare uno sguardo a Jake2.
La versione del gioco funziona sia su Windows che su Linux, inoltre sono disponibili i sorgenti per adattarla ad ogni eventuale altro sistema operativo.
Non resterete delusi.

A proposito di preveggenza… Stavo leggendo l’articolo relativo alla presentazione dei nuovi prodotti Microsoft, dato che la cosa a breve mi riguarderà molto da vicino. A marzo infatti sarò alla presentazione della piattaforma Microsoft 2008 “Gli eroi siamo noi” per conto dell’azienda. Notavo soprattutto una cosa: la virtualizzazione la fa da padrone.

Ha cominciato un paio di anni fa VMware a far parlare in modo massiccio della cosa consentendo di trasformare interi sistemi operativi in “file” da far girare su un apposito player come fossero veri e propri computer. La cosa esisteva già, ma non era così “di moda”. Ora Microsoft la integra addirittura nel suo sistema operativo server consentendo di virtualizzare applicazioni o dati, Linux con VirtualBox fa lo stesso, VMware rimane e con ESX Server e tutti i tools che ci girano attorno porta a livelli impressionanti questa tecnologia… Sempre più indipendenti dall’hardware per ottenere sistemi scalabili e portabili…

E nel 1995? Qual è stata la road map di Java? Portabilità e indipendenza dall’hardware!!! Infatti all’epoca ho scelto Java proprio per questo: le tecnologie cambiano piuttosto in fretta e con esse tutto ciò che ci viene a diretto contatto, perché quindi non lasciare a Sun o a chi per essa il problema e pensare solo al mio programma sapendo che funzionerà sempre e comunque nel corso dell’evoluzione del mondo dell’informatica? Loro mi forniscono il substrato standard su cui lavorare e io mi dedico ad un’unica tecnologia, costante nel tempo. Starà a me se scegliere le nuove feature proposte o meno. E all’epoca criticavano un sacco la cosa perché la macchina virtuale faceva decadere le prestazioni del sistema, perché il C++ era più veloce e ottimizzato sul sistema, ecc… E ora? Si rimangiano tutto? Tutti a correr dietro alle macchine virtuali? Tutti a sganciarsi dall’hardware? Gente, è da 13 anni che vi diciamo queste cose!!!


© 2017 Bruno Tessaro. My life in the web. All right reserved.