Visual Analyser Project (vers. 25 Silvia edition )
|
Introduzione
Nota all'introduzione. Queste poche righe sono state scritte molti anni fa, quando VA era all'inizio delle sua "carriera" ed io ancora non avevo iniziato molte mie nuove avventure (per esempio il dottorato). Nelle sue linee essenziali quanto scritto risulta ancora attuale e valido, ma è da tener presente che si rifà essenzialmente ai primi anni di "vita" di VA, con un contesto molto diverso da quello attuale. VA è cresciuto, così come i programmi concorrenti e gli utilizzatori sono molti di più e variegati. La rivista Nuova Elettronica ha pubblicato un numero enorme di articoli che fanno riferimento a VA, ed ultimamente anche altri si sono dedicati a VA fornendomi preziosissimi contributi. Pertanto, esorto il lettore a cogliere le linee essenziali del discorso fatto in questa pagina ed a valutare anche altre introduzioni fatte in riviste e altrove in questo sito.
L’idea alla base di questo programma, e di tutti quelli con le medesime funzioni, nasce dalla constatazione che la stagrande maggioranza dei moderni Personal Computer basati su processori Intel (e simili) sono dotati di una scheda sonora, normalmente di buona qualità, e talvolta integrata nella stessa scheda madre. In ogni modo il costo è estremamente basso, pertanto chiunque può dotare il proprio PC di una scheda sonora, anche nel rarissimo caso essa non fosse presente o magari di qualità non soddisfacente. Ancora, le moderne schede sonore di alto livello sono dotate di amplificatori di ottima qualità e convertitori A/D D/A molto precisi (esempio. Soundblaster Audigy, Terratec etc) e consentono a VA di funzionare al meglio, fornendo prestazioni di elevato livello. Scheda audio significa un completo sistema per l'acquisizione digitalizzata di segnali elettrici nel range di frequenze che vanno da circa 20 a 20.000 Hz. Ossia, ogni PC con scheda audio è dotato (almeno) di un doppio convertitore Analogico-Digitale e Digitale-Analogico e di un amplificatore audio stereo. Attualmente poi, la potenza di calcolo di un PC medio è tale da consentire l’implementazione di routine che fino a pochi anni addietro erano appannaggio esclusivo dei DSP (Digital Signal Processor). I DSP sono dei processori espressamente studiati per il trattamento dei segnali numerici, tipicamente dopo una conversione da segnale analogico, e sono oramai inseriti praticamente ovunque (per esempio nella vostra autoradio). Quindi: abbiamo a disposizione un dispositivo che ci consente di acquisire i segnali elettrici e/o di sintetizzarli (la scheda audio); un'altro che ci consente di elaborarli (il processore del PC); un dispositivo per l'output grafico dei dati (lo schermo del PC e la scheda video); un dispositivo che ci consente di stampare i dati (la stampante); infine, un dispositivo che ci consente di memorizzarli per eventuali analisi successive (il nostro hard disk). E tutto è già presente in casa, senza nessuna spesa aggiuntiva! Perché dunque non sfruttare appieno questo ricco patrimonio hardware presente nel nostro Personal Computer? Questo programma nasce appunto da queste considerazioni e dall’esperienza congiunta di chi scrive nel campo dei DSP e dei PC. Questo significa che ho lavorato in aziende che si occupano, tra le varie cose, di problematiche tipiche della fantastica materia nota come “Elaborazione numerica dei segnali”. Uno dei progetti cui ho preso parte consisteva nella scrittura di firmware per schede a DSP ( riconoscitori DTMF, generatori di toni, filtri digitali, FFT etc.) e programmi di supporto e messa a punto su PC. Ma anche in aziende che si occupavano di apparecchiature militari che gestivano immagini e piani di volo (quindi grosse quantità di dati da elaborare velocemente), ed altre, ovunque ci fossero problematiche inerenti DSP e PC. Una mai dimenticata passione per l'elettronica e la circuitistica audio in genere, mi hanno dunque spinto a realizzare questo software, chiamato per ora, senza molta fantasia, Visual Analyser, ora giunto alla versione 4.0 (5.5)(6.0)(7.0)(8.0)(9.0)(2010) - aggiunta 2024 vers. 25 Con il tempo, spinto da ovvia curiosità, ho cercato di analizzare e confrontare quanto già esisteva in ambito commerciale e/o dilettantistico, scoprendo con una certa soddisfazione che il mio Visual Analyser era in grado di competere con ben più blasonati software già in circolazione. Tranne forse, e solo per ora, nell'estetica e nei "gadgets" in essi presenti, che il tempo tiranno spero mi permetterà di aggiungere. Più avanti, ho potuto notare come il numero di prodotti simili è cresciuto in maniera veramente considerevole, ma quasi nessuno presenta la caratteristica di essere pensato espressamente per appassionati di elettronica. Molti sono di tipo generale, quindi dispersivi, oppure dedicati ma troppo limitati. Altri ancora, ed è la maggioranza, pensati solo per appassionati di musica, e quindi orientati ad altre classi di problemi. In ultimo, non tutti contengono alcune "chicche" esclusive di VA (es. conversione D/A), e costano parecchio, costringendo in pratica l'appassionato a utilizzare le onnipresenti versioni "craccate". Con VA è possibile trasformare il proprio PC in un completo set di strumenti per l'analisi e la generazione dei segnali audio (relativamente agli usi nel campo di test e analisi di circuiti ad audiofrequenza), con la sola scheda sonora normalmente presente nella stragrande maggioranza dei PC IBM e IBM compatibili. Naturalmente le prestazioni saranno fortemente dipendenti dalla macchina utilizzata e dalla scheda sonora ivi presente. In ogni modo ho effettuato delle prove con dei vecchi Pentium 133 Mhz e Windows 95b senza riscontrare grosse difficoltà, a patto di accontentarsi di una generica riduzione delle prestazioni (nel caso di frequenze di campionamento "estreme" e/o buffer molto grandi). Appositi messaggi di "warning" dovrebbero tuttavia mettere in guardia da apparenti od effettivi blocchi del sistema. Pensate ad esempio a dover tarare un amplificatore audio in classe B appena costruito. Oppure dover mettere a punto un oscillatore sinusoidale, o magari usare un tracciacurve per rilevare le caratteristiche di un semiconduttore. O dover rilevare la risposta in frequenza di un amplificatore commerciale... Tutte cose che richiedono un oscilloscopio e magari un analizzatore di spettro. Ed un generatore di funzioni. E per questo tipo di applicazioni in fondo basta una banda passante abbastanza ristretta, che rende VA un'applicazione a dir poco ideale. Il programma non necessita di installazione, essendo completamente "contenuto" nel solo file eseguibile (VA.exe) distribuito compresso come file zip. Scritto completamente in C++, utilizza un Thread per leggere i dati dalla scheda sonora (di default) del sistema, un Thread che gestisce gli output grafici, ed un ultimo Thread che gestisce l'interfaccia utente. A breve verrà distribuito un valido file di help a corredo, ed una versione per il sistema operativo LINUX. Mi scuso in anticipo per la documentazione vergognosa che in pratica si riduce a queste poche pagine web realizzate di corsa e senza competenza alcuna. Per quanto possibile ho cercato di rendere il programma indipendente dalle caratteristiche della scheda sonora. Ad esempio, per determinare la risposta in frequenza di un amplificatore (o di un qualsiasi device audio) sarà sufficiente selezionare la modalità A - B o B - A in maniera da graficare la differenza in Db tra i due canali. In tal modo, se si connette ad un ingresso (p. es. line-in canale sinistro, ossia A) l'uscita del device audio ed all'altro ( line-in canale destro, B) direttamente il segnale in ingresso (per esempio prelevato dall'uscita stessa delle casse della scheda audio tramite il generatore interno settato su RUMORE BIANCO, oppure con generatore esterno eventualmente già in vostro possesso) il programma considererà la risposta differenza tra i due canali, ossia verranno quasi totalmente eliminate le interferenze relative alle caratteristiche dell'amplificatore audio presente nella scheda sonora. In altre parole, il segnale in ingresso al vostro device sotto analisi verrà considerato come livello di ZERO DB armonica per armonica. La risposta graficata sarà dunque composta dal segnale in analisi (dopo il device) MENO il segnale in ingresso (prima del device): così facendo le attenuazioni o distorsioni proprie della scheda sonora saranno, armonica per armonica, eliminate perchè PRESENTI IN EGUAL MISURA E CON SEGNO OPPOSTO IN TUTTI E DUE I SEGNALI. Il tutto ovviamente nei limiti che un siffatto calcolo consente; via assicuro che i risultati ottenibili sono a dir poco sorprendenti. Rimando le discussioni tecniche più dettagliate alla sezione risposta in frequenza . Qualora abbiate l'esigenza di analizzare in maniera più dettagliata lo spettro (o risposta in frequenza) appena ricavata, potrete sfruttare la finestra di edit dello spettro, che vi consentirà anche di stampare e salvare. Mi scuso di nuovo per la (spero momentanea) mancanza di documentazione esaustiva, e per l'assenza di un testo in inglese, presente per ora solo nei messaggi/scritte/hints del programma in se, ma, come detto, ho scritto questo programma per mio uso e consumo senza pensare a possibili diffusioni in rete. La repentina decisione di mettere il programma a disposizione di tutti, è stata presa grazie alla constatazione che analoghi programmi commerciali presentavano costi proibitivi e prestazioni non molto dissimili da questo mio modesto lavoro; e che quindi, l'uso da parte di altri utenti .... a me non costava assolutamente nulla ed inoltre avrebbe potuto contribuire, con un utilizzo più ad "ampio raggio", ad una più accurata individuazione di bachi e possibili miglioramenti. E, infine, perché NON è sempre vero che nella vita tutto si deve pagare, ma esistono ancora persone che fanno cose per il puro gusto di farle! In pratica, ho utilizzato API native di windows anche laddove esistevano colludatissimi framework e classi di oggetti pre-costituiti. Essi normalmente incapsulano magistralmente la maggior parte delle API, rendendone certamente più facile l'utilizzo e garantendone eventualmente il porting verso altre piattaforme (vedi Borland con Delphi/C++ Builder e Kylix). Ma, ovviamente, pagando il prezzo di un overhead che si fa sentire sia in termini di dimensioni del programma che di velocità di esecuzione. Questi "tool" sono in genere forniti a corredo di tutti i più blasonati compilatori (dalle VCL di Borland C++ e OWL a MFC di Visual C++), ma ho preferito non usarli (come detto) semplicemente per ottenere ragionevoli velocità di esecuzione, data la natura "real-time" del problema. E non meno importante, perché ho dovuto fare i conti con il multitasking e multithreading di windows nelle sue varie versioni. In ultimo, dato il non trascurabile fatto che NON HO TROVATO classi che consentivano di gestire l'acquisizione dei campioni audio dalle schede sonore e viceversa (eccetto i soliti player e/o registratori di file wave). Fermo restando che semplicemente potrebbe essere una mia svista. In ogni modo è stato particolarmente interessante ed istruttivo capire quali Api (o "sottoapi") usare e come. Questo invero rende il programma meno portabile, anche se a breve conto di effettuare comunque un porting sull'interessantissimo sistema operativo Linux, cosa già in "pentola" da tempo. Nota della versione 3.0 - oltre ad aver analizzato numerosi tool, ho individuato produttori di librerie di classi e VCL che affrontavano in maniera eccellente questa classe di problemi. Gli inconvenienti da me riscontrati sono di due tipi: il costo; i tempi di esecuzione. Ergo, continuo a costruire le classi per conto mio, imparando e ottenendo prestazioni migliori. Nota delle versioni a partire dalla 4.0 - per la rappresentazione e l'analisi dei dati con le finestre "memo" e "edit spectrum" ho preferito usare oggetti già esistenti per la visualizzazione dei grafici. In tal caso infatti erano venuti a mancare i requisiti di "real time" e quindi per evitare di re-inventare la ruota ho usato oggetti trovati a corredo del mio compilatore. Se qualcuno è interessato a questo programma, lo scarichi e lo usi liberamente, e per qualsiasi delucidazione o consiglio e/o bachi individuati non esisti pure a scrivermi all'indirizzo già segnalato(e-mail). |
Pubblicazioni recenti:
|
Invia una e-mail a
alfredo[at]accattatis.org in caso di domande o consigli sul sito.
|