• Non ci sono risultati.

Sviluppo del Lavoro

4.9 Visualizzatore PDF

Le funzionalit`a dell’app REMIND comprendono anche la gestione di file PDF contenenti metadati e informazioni contestuali relativi al nastro magnetico digitalizzato.

Per fare ci`o in un primo momento `e stata esplorata la possibilit`a di usare la componente PdfRenderer [27]. Questa classe, presente da Android API 21 in poi, permette la visualizzazione di un file PDF in maniera molto semplice. Fin da subito `e stata evidente la mancanza di molte funzioni, come lo zoom e lo scrool continuo, che rende la navigazione nel file poco intuitiva.

Per questo motivo si `e scelto di usare la libreria Android PdfViewer [28], una libreria per visualizzare documenti nel formato PDF in Android, con supporto per animazioni, gestures, zoom e doppio tocco. Essa `e basata su PdfiumAndroid per decodificare i file PDF e funziona dalle API 11 (Android 3.0) in poi. Un’altra importante peculiarit`a `e la licenza `e l’utilizzo della licenza Apache 2.0 che ne consente una grande flessibilit`a.

La classe PdfRenderer `e stata comunque utilizzata per fornire un’anteprima del documento nel menu che elenca le propriet`a delle canzoni in libreria

Figura 4.12: File PDF gestito con la libreria PdfViewer.

4.10 Equalizzazioni

In questa sezione verr`a discussa la parte di gestione delle equalizzazioni partendo dalla loro descrizione teorica.

4.10.1 Introduzione

Gli standard di equalizzazione sono comunemente identificati dalle iniziali dell’or-ganizzazione che scrisse lo standard e tra le varie a disposizione quelle di nostro interesse nell’applicazione sono:

NAB L’americana National Association of Broadcasters

CCIR La francese Consultative Committee on International Radio. Attorno al 1993 il nome CCIR fu cambiato in ITU-R, International Telecommunication Union - Radiocommunications.

Le equalizzazioni standard presentate fanno riferimento alla seguente formula [29] che esprime il livello del segnale in dB al variare della frequenza.

N (dB) = 20log10ωt1 v u u t 1 + (ωt1)2 1 + (ωt2)2 Con ω = 2πf .

I parametri che permettono di ottenere la risposta in relazione allo standard sono riportati nella tabella 4.1.

Velocit`a (ips) 30 15 7,5 3,75 Parametri (us) t1 t2 t1 t2 t1 t2 t1 t2 CCIR ∞ 17,5 ∞ 35 ∞ 70 3180 90 NAB ∞ 17,5 3180 50 3180 50 3180 90 Tabella 4.1: Valori dei parametri delle varie equalizzazioni

La formula e i parametri possono essere espressi direttamente in frequenza per fornire un’intuizione migliore del loro effetto sul segnale, ricordando che τ = 2πF1 .

N (dB) = 10log101 + (Flow/f )

2

1 + (f /Fhi)2

Velocit`a (ips) 30 15 7,5 3,75 Parametri (Hz) Flow Fhi Flow Fhi Flow Fhi Flow Fhi CCIR 0 9000 0 4500 0 2270 50 1800 NAB 0 9000 50 3150 50 3150 50 1800

Tabella 4.2: Valori dei parametri delle varie equalizzazioni

L’applicazione usa le formule nella loro versione lineare, per cui i valori di equalizzazione del filtro in frequenza si ottengono con:

F = ωt1 v u u t 1 + (ωt1)2 1 + (ωt2)2 F−1 = 1 ωt1 r 1+(ωt1)2 1+(ωt2)2

Di seguito vengono rappresentate le curve principali degli standard NAB e CCIR. I valori esatti variano a seconda della velocit`a desiderata ma, a meno di leggere variazioni, le forme che ne derivano sono principalmente due.

102 103 104 Frequenza (Hz) -20 -15 -10 -5 0 5 10 15 20 R is p o s ta ( d B ) NAB Riproduzione Registrazione

Figura 4.14: Equalizzazione NAB.

102 103 104 Frequenza (Hz) -20 -15 -10 -5 0 5 10 15 20 R is p o st a ( d B ) CCIR Riproduzione Registrazione

4.10.2 Implementazione

L’applicazione gestisce due equalizzazioni, NAB e CCIR, con 4 possibili velocit`a di registrazione/esecuzione: 3,75 , 7,5, 15, 30 ips. Questo da vita a 32 possibili combinazioni tramite la velocit`a di digitalizzazione del brano e la sua equalizzazione, e la velocit`a di riproduzione e l’equalizzazione desiderata nell’applicazione.

In generale `e necessario eliminare l’equalizzazione applicata durante la fase di registrazione, cambiare la velocit`a d’esecuzione del brano e applicare l’equalizzazione desiderata. Questo viene fatto tramite una catena di elaborazione rappresentata nella figura 4.16 che sfrutta gli oggetti gi`a implementati nel codice nativo e che, in ordine, possiede:

• Un oggetto WaveReader legge un file audio nel formato .wav e comunica i valori letti a blocchi ad un primo oggetto FFTConvolver

• Il primo FFTConvolver prende il blocco audio e, tramite la FFT applica un primo filtro in frequenza (se necessario). Successivamente trasforma il risultato tramite la FFT inversa e passa il risultato al RateConverter.

• Il RateConverter si occupa di cambiare la velocit`a di una traccia i cui dati arrivano dal primo filtro FFT e sono destinati ad un secondo filtro, il secondo FFTConvolver

• Il secondo FFTConvolver applica un secondo filtro (se necessario). Il risultato viene poi passato al Mixer

• Il Mixer prende tutte le tracce elaborate e le elabora in modo da renderle riproducibili al canale destro e sinistro.

WaveReader

file.wav  FFTConvolver RateConverter FFTConvolver Mixer

Eq−1 Eq

File.wav FFTConvolver RateConverter FFTConvolver WaveReader Mixer

Figura 4.17: Schema pipeline elaborazione audio con dettaglio dei buffer circolari coinvolti.

Ad esempio, supponiamo di avere un brano digitalizzato tramite l’equalizzazione NAB alla velocit`a di 3,75 ips e che l’applicazione sia settata per riprodurre il brano con l’equalizzazione CCIR alla velocit`a di 7,5 ips, il caso corrisponde alla seconda riga della tabella 4.3. I passi da fare sono:

• Togliere l’equalizzazione N AB3,75 applicata durante la fase di registrazione, e quindi riportando il brano allo stato in cui `e presente sul nastro. Questa fase `

e svolta dal primo FFTConvolver

• Cambiare la velocit`a di esecuzione della traccia usando l’oggetto RateConver-ter.

• Applicare l’equalizzazione CCIR7,5. Questa fase `e svolta dal secondo FFTConvolver.

Eq.originalevel.orignale Eq.nuovavel.nuova Filtro #1 Cambio vel. Filtro #2 N AB3,75 CCIR3,75 N AB3,75−1 7 CCIR3,75 N AB3,75 CCIR7,5 N AB3,75−1 3 CCIR7,5 N AB3,75 CCIR15 N AB3,75−1 3 CCIR15 N AB3,75 CCIR30 N AB3,75−1 3 CCIR30 N AB7,5 CCIR3,75 N AB7,5−1 3 CCIR3,75 N AB7,5 CCIR7,5 N AB7,5−1 7 CCIR7,5 N AB7,5 CCIR15 N AB7,5−1 3 CCIR15 N AB7,5 CCIR30 N AB7,5−1 3 CCIR30 N AB15 CCIR3,75 N AB15−1 3 CCIR3,75 N AB15 CCIR7,5 N AB15−1 3 CCIR7,5 N AB15 CCIR15 N AB15−1 7 CCIR15 N AB15 CCIR30 N AB15−1 3 CCIR30 N AB30 CCIR3,75 N AB30−1 3 CCIR3,75 N AB30 CCIR7,5 N AB30−1 3 CCIR7,5 N AB30 CCIR15 N AB30−1 3 CCIR15 N AB30 CCIR30 N AB30−1 7 CCIR30 Tabella 4.3: Elenco delle elaborazioni da effettuare nel caso di registrazioni da NAB a CCIR

Alcuni casi potrebbero non richiedere cambi di velocit`a e/o filtraggi, in questi casi i filtri FFTConvolver e il RateConverter vengono settati con parametri che non modificano le tracce ma risultano ancora in funzione (questo per non complicare troppo il codice con casi particolari da gestire). Nel caso dei filtri in frequenza, ad esempio, essi sono sempre in funzione, ma, se non richiesti, vengono settati con una risposta piatta in frequenza a 0 dB.

Documenti correlati