Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

7
voti

Applicazioni per comunicare con la scheda audio

Indice

Introduzione

Il sistema Theremino è progettato per la didattica e la sperimentazione. Per cui la applicazioni "thereminiche" sono diverse dalle solite applicazioni per PC (ad esempio Photoshop, VLC, Office o Picasa). Prima di tutto possono comunicare tra loro (attraverso gli Slot) e poi sono Open Source. Si può quindi "aprirle" ed esplorare le tecniche utilizzate, ma anche modificarle e imparare a crearne di nuove.

In questo articolo parleremo delle applicazioni che maneggiano segnali di ingresso e uscita attraverso la scheda audio del PC. Come già scritto sono applicazioni utili per la didattica e per la sperimentazione. Un professore potrebbe utilizzarle per mostrare fenomeni fisici e uno sperimentatore potrebbe utilizzarle in laboratorio per eccitare e misurare vibrazioni meccaniche e circuiti elettronici.

Una alternativa a Raspberry e Arduino

Naturalmente si potrebbe fare lo stesso con Arduino ma sarebbe più difficile. Prima di tutto Arduino non può comunicare con le economiche schede audio dei PC, ci vogliono schede particolari, costose e comunque di qualità inferiore. Ma soprattutto il tempo e le conoscenze necessarie per utilizzarli nei propri esperimenti non sarebbero alla portata di tutti.

Si dovrebbero acquistare e collegare gli "shield" adatti, si dovrebbe alimentarli, collegarli senza errori, studiare una strategia per ottenere quello che si vuole e infine programmare il firmware per la specifica applicazione didattica o lo specifico esperimento che si deve effettuare.

Al posto di un Arduino si potrebbe utilizzare un Raspberry con una scheda audio USB. L'hardware verrebbe semplificato e il castello delle prossime immagini non ci sarebbe più. Ma poi per far fare alla scheda audio quello che si vuole (e non solo suonare degli MP3) ci vorrebbe molto tempo ed esperienza. Diventare esperti programmatori richiede anni se non decenni.

Le due prossime immagini mostrano la differenza senza bisogno di tante parole

Questa immagine mostra come si dovrebbe apparecchiare un Raspberry (o un Arduino) per ottenere un audio decente (tra l'altro solo in uscita). Maggiori informazioni qui: https://volumio.org/raspberry-pi-i2s-dac-sounds-so-good



Questa immagine mostra invece la alternativa con il sistema Theremino. Qui si vede un FlatPC (equivalente di uno StickPC, ad esempio un Meegopad). Questi piccoli PC normalmente vengono utilizzati senza schermo e li si controlla wireless via TeamViewer.

Naturalmente al posto del "FlatPC" si possono utilizzare anche i Tablet, i Notebook o i normali PC.

Le schede audio compatibili con Windows beneficiano di oltre venti anni di sviluppo e sono state prodotte in miliardi di esemplari, per cui hanno raggiunto un incomparabile rapporto qualità prezzo. Contengono Adc e Dac a 16 o 24 bit di ottima qualità e le migliori tecniche e disposizioni circuitali per minimizzare il rumore. Nessun "accrocchio" che si possa mettere insieme attorno a un Arduino o a un Raspberry potrebbe avere le stesse prestazioni.

Esempi di applicazioni didattiche

Un professore potrebbe progettare una dimostrazione e aver bisogno di un'onda quadra o sinusoidale, oppure di una rampa di una certa frequenza. Ci sono programmi audio che lo fanno, ma se la frequenza dovesse variare nel tempo? O se dovesse dipendere da un fenomeno fisico misurato da un input di qualche genere? In questo caso non restano che poche, pesanti e costosissime applicazioni. Applicazioni che solo per installarsi impiegano mezz'ora e che sono anche difficili da utilizzare. Impossibile trovare applicazioni piccole gratuite e anche Open Source che siano facilmente configurabili per ogni tipo di esperimento.

Esempi di esperimenti

  • Individuare la frequenza di risonanza di oggetti fisici.
  • Eccitare vibrazioni su materiali.
  • Eccitare tavole vibranti di strumenti musicali per individuare i modi di vibrazione.
  • Fare esperimenti con onde acustiche.
  • Fare la analisi della risposta di casse acustiche o di altri trasduttori.
  • Fare la analisi di spettro delle vibrazioni di motori o altri meccanismi.
  • Misurare la velocità di traslazione per mezzo dell'effetto doppler.
  • Misurare velocità di rotazione di ingranaggi a partire dal suono e dal numero di denti.
  • Comandare macchine nella propria lingua e farsi rispondere conferme vocali.

Nel sito PhysicsOpenLab si possono trovare molti altri esempi di esperimenti con le applicazioni del sistema Theremino.

La applicazioni audio del sistema Theremino

I prossimi capitoli saranno dedicati alle singole applicazioni audio. Queste applicazioni per mezzo degli Slot e della "Astrazione dell'hardware", possono comunicare tra loro e con le altre cinquanta applicazioni del sistema.

Si possono quindi comporre esperimenti che, oltre all'audio, utilizzano anche la luce, il riconoscimento vocale, la radioattività, le vibrazioni del terreno, i fenomeni elettrici atmosferici, i segnali biometrici, le telecamere, i motori brushless, gli stepper, i servocomandi e i relè, in pratica ogni genere di sensore e attuatore.

AudioGenerator

Generare sinusoidi e altre forme d'onda di qualunque frequenza avrebbe dovuto essere di base in tutti i sistemi operativi fino dai primi personal computer degli anni 80 del secolo scorso.

Incredibilmente questa funzione utilissima è stata sempre trascurata. Ancora oggi Windows10 al massimo riesce a fare qualche Beep, Ding, Tadaaa ecc... E anche i linguaggi come VbNet, Java, CSharp e CPP non fanno che qualche "beep" e nemmeno regolabile in frequenza. Per fargli emettere sinusoidi, rampe e onde quadre si deve scrivere un bel po' di software.

Comunicare con le schede audio in modo affidabile è più difficile di quel che si può pensare. Si devono utilizzare callbacks e algoritmi ben ottimizzati, nonché semafori per le sezioni critiche. E ci vuole molta esperienza specialistica in questo particolare campo, altrimenti si rischiano dead-locks e sporadici crash.

La applicazione AudioGenerator si scarica da qui:
http://www.theremino.com/downloads/multimedia#audiogenerator

SoundPlayer

Questa applicazione è nata per installazioni multimediali e artistiche. Fondamentalmente è un campionatore che può suonare file audio con velocità diverse e con regolazione continua della velocità fino a zero e anche all'indietro, senza difetti udibili nelle transizioni. I suoni sono anche filtrabili con un filtro parametrico e si possono applicare effetti di tipo riverbero, chorus e echo.

Tutti i parametri di questa applicazione possono essere comandati da tutte le altre applicazioni del sistema attraverso gli Slot, si possono quindi comporre catene di applicazioni e collegare sensori ed eventi di ogni genere.

La applicazione SoundPlayer si scarica da qui:
http://www.theremino.com/downloads/multimedia#soundplayer


AudioInput

Questa applicazione è complementare alle due precedenti, legge il segnale audio dal mixer di Windows o da un microfono, separa il segnale in bande di frequenza, ne misura il livello e invia i risultati agli Slot.

Una funzione molto apprezzata, che è stata aggiunta su richiesta, è la possibilità di contare i "Tick" sonori prodotti da un contatore Geiger. In questo modo chi ha un contatore Geiger di qualunque modello può evitare di modificarlo con un connettore aggiuntivo da cui far uscire gli impulsi. Questa possibilità permette di collegare qualunque Geiger al PC e migliorare le sue prestazioni con la applicazione Theremino Geiger. Il tutto a costo zero (senza spendere per l'acquisto di un modulo Theremino Master).

La applicazione AudioInput si scarica da qui:
http://www.theremino.com/downloads/multimedia#audioinput

AudioExamples

Questo è uno strumento di misura e di test, ma anche una applicazione didattica. Contiene tre generatori di segnali regolabili indipendentemente come forma d'onda frequenza e ampiezza. Un piccolo oscilloscopio con un ottimo trigger automatico e semplici regolazioni. Un analizzatore di spettro molto flessibile e un secondo analizzatore di spettro con il numero di bande regolabile.

AudioExamples può essere utilizzato didatticamente, per studiare gli algoritmi che generano le forme d'onda e le analizzano. L'analizzatore di spettro è basato su un algoritmo FHT (Fast Hartley Transform) che è il metodo più veloce per calcolare la trasformata discreta di Fourier. Sono disponibili molte finestre di campionamento e sia la visualizzazione lineare che quella logaritmica.

La applicazione AudioExamples si scarica da qui:
http://www.theremino.com/downloads/multimedia#audioexamples

Theremino DAA

Il DAA è uno strumento di misura e collaudo per apparecchiature audio. Comprende un generatore di segnali, un analizzatore di spettro e un oscilloscopio. Sono anche disponibili alcuni segnali ottimizzati per la analisi di spettro e la equalizzazione di impianti.

Con i metodi FastSweep e Pulse si possono equalizzare le casse acustiche anche senza disporre di una camera anecoica. Per ottenere questo si campiona per un tempo appena sufficiente e si chiude la finestra di campionamento prima che arrivino gli echi prodotti dall'ambiente.

La applicazione Theremino DAA si scarica da qui:
http://www.theremino.com/downloads/uncategorized#daa

SignalDecoder

Questa applicazione decodifica i segnali radio ricevuti da Theremino SDR. I segnali morse vengono convertiti in testo, mentre i segnali codificati (ad esempio gli apri-cancello a 433 MHz) vengono comparati con una maschera per eliminare le interferenze e infine convertiti in numeri e inviati agli Slot. Si possono quindi controllare altre applicazioni del sistema per mezzo di segnali radio codificati.

La applicazione SignalDecoder si scarica da qui:
http://www.theremino.com/downloads/automation#signaldecoder

DopplerMeter

Questa applicazione misura la velocità di movimento di oggetti (persone, droni, aeromodelli, automobili, pioggia, grandine) per mezzo di economici sensori a microonde o ultrasuoni.

La applicazione DopplerMeter si scarica da qui:
http://www.theremino.com/downloads/automation#doppler


Voice IN-OUT

Questa applicazione permette di parlare al PC, fargli eseguire comandi e farsi rispondere a voce. Il tutto in 26 lingue e configurabile facilmente senza scrivere una sola riga di codice.

Importante notare che non è necessario essere collegati a Internet per cui la risposta è quasi istantanea nonché indipendente dai capricci della rete e di Google (cui attualmente tutte le applicazioni simili si appoggiano). Il riconoscimento è "Speaker independent" per cui vengono riconosciuti tutti i componenti della famiglia e non si richiedono noiose sessioni di apprendimento.

L'utente stesso può facilmente costruire menu e sotto menu con comandi e risposte nella sua lingua. Una struttura a più livelli permette di minimizzare il numero di parole per ogni livello e quindi rendere più affidabile il riconoscimento.

Si tratta di una applicazione piccola e poco appariscente ma che meriterebbe un intero articolo tutto per lei.

- - - - - - -

Su richiesta abbiamo ampliato questa sezione con istruzioni per pilotare relè e altri dispositivi esterni

Molti esperimenti possono essere effettuati anche senza hardware, si possono vedere i segnali inviati agli Slot con lo SlotViewer e si possono comandare tutte le altre applicazioni del sistema che possono emettere suoni, avviare video, gestire automazioni ecc.. Tutto questo senza spendere niente. Si consiglia quindi prima di acquistare dell'hardware di fare esperimenti con il solo software.

In seguito, per attuare fisicamente azioni esterne al PC, è per forza necessario dell'Hardware.

Prima di tutto ci vuole un modulo Master e si deve imparare a configurarlo con la applicazione HAL e capire gli Slot con lo SlotViewer:

http://www.theremino.com/hardware/devices
http://www.theremino.com/downloads/foundations#hal
http://www.theremino.com/downloads/foundations#slotviewer
-
http://www.thereminoshop.com/product/master-v5-kit
http://www.thereminoshop.com/product/theremino-master-v-4-pcb
http://www.thereminoshop.com/product/theremino-master-v5-assembled-and-tested

E poi ci vogliono cavetti di collegamento e adattatori (Relè, OPtoRelè, OptoMos, OPtoTriac, Transistors, Mosfets, Servocomandi...):

http://www.theremino.com/hardware/outputs/actuators#solidstaterelay
http://www.theremino.com/hardware/outputs/actuators#simplereledriver
http://www.theremino.com/hardware/outputs/actuators#optorele
http://www.theremino.com/hardware/outputs/actuators#optotriac
http://www.theremino.com/hardware/outputs/actuators#driveronoff
http://www.theremino.com/hardware/outputs/actuators#interruptor
http://www.theremino.com/hardware/outputs/actuators#releswitcherv2
http://www.theremino.com/hardware/outputs/motors#servo
http://www.theremino.com/hardware/outputs/actuators#motors
http://www.theremino.com/technical/connection-cables
-
http://www.thereminoshop.com/product/theremino-optorele
http://www.thereminoshop.com/product/theremino-optotriac-v1
http://www.thereminoshop.com/product/actuators-mg958

L'adattatore va scelto con cura, se possibile si devono preferire le versioni foto-accoppiate o i relè meccanici. Si deve comunque fare attenzione a mantenere un buon isolamento, evitare loop di masse e evitare accoppiamenti capacitivi tra lunghi fili percorsi da potenza e altri percorsi da segnale. Altrimenti si potrebbero generare disturbi che potrebbero anche disturbare la comunicazione USB fino a interromperla. Il modulo Master non si rompe mai ma non tentate la sorte più del dovuto, con questi adattatori si possono maneggiare potenze e tensioni pericolose, quindi fate attenzione.

- - - - - - -

La applicazione Theremino Voice si scarica da qui:
http://www.theremino.com/downloads/biometry#voice

- - - - - - -

MidiPlayer

MidiPlayer può essere usato come base, mentre si suona il Theremin o per inviare dati MIDI agli slot, o ad altre applicazioni.

Il nuovo MidiPlayer con il SyncMode permette di generare suoni in risposta a segnali di input dagli Slot.

In questo video e in questo secondo video si vedono due esempi di utilizzo del SyncMode.

La applicazione MidiPlayer si scarica da qui:
http://www.theremino.com/downloads/multimedia#syncmode


Theremin Synth

Con questo software e con un hardware minimo, si possono costruire ottimi Theremin. Un modulo Master e due CapSensor, sono sufficienti. Ma è possibile iniziare con solo un Master e un CapSensor per spendere meno.

Le antenne possono essere semplici pezzi di filo rigido o di rame adesivo incollato su un foglio di plastica. Costruendo la meccanica da soli è possibile ottenere un buon Theremin spendendo anche meno di 20 Euro. Altri moduli, tasti capacitivi e sensori possono essere aggiunti in seguito, per far crescere il proprio strumento, senza limiti.

La applicazione Theremin si scarica da qui:
http://www.theremino.com/downloads/multimedia#synth

Utilizzare una scheda audio come generatore di segnali e oscilloscopio

Per misure nella gamma audio si ottengono migliori risultati utilizzando una scheda audio al posto di un generatore di segnali e uno oscilloscopio. I principali vantaggi sono i seguenti:

  • Qualità come generatore di segnali - I segnali generati, come vedremo in seguito, hanno ottime caratteristiche di distorsione e rapporto segnale rumore. Sicuramente superiori a molti generatori di segnali non digitali.
  • Qualità del campionamento - Il campionamento viene effettuato con Adc a 16 bit (o anche 24 bit con alcune schede), mentre tutti gli oscilloscopi, anche i più costosi, campionano a 8, 10 o al massimo 12 bit.
  • Risparmio di denaro - Le schede audio sono sempre presenti nei PC. Invece un generatore di segnali e un oscilloscopio costerebbero come minimo qualche centinaio di Euro.


Numero di bit dell'Adc

Anche i migliori oscilloscopi non arrivano che a 12 bit mentre tutte le schede audio ne hanno 16 e alcune anche 24.

Qui si può leggere una discussione sui bit degli oscilloscopi Tektronix, LeCroy e Agilent

E qui si può leggere un articolo di LeCroy sulla qualità del loro campionamento a 12 bit.

Campionare a 8..12 bit va bene per un oscilloscopio ma non per le analisi di spettro e le misure di rumore e distorsione nella gamma delle frequenze audio. Si dovrebbe quindi acquistare un buon analizzatore di spettro audio che costerebbe non meno di 200 Euro.

Un analizzatore audio sarebbe migliore di una scheda audio, soprattutto per la precisione della taratura, ma con un po' di lavoro è possibile tarare bene anche i propri partitori e le proprie sonde e ottenere gli stessi risultati. Viene in nostro aiuto il fatto che per gran parte delle analisi audio il valore assoluto non serve e basta avere valori in decibel relativi.

Rapporto segnale rumore

Per le analisi in banda audio è bene avere una grande dinamica tra la saturazione in alto e il rumore più distorsioni in basso. Con un oscilloscopio normale (8 bit) si avrebbero solo 48 dB, che sono veramente pochi. Mentre con le schede audio, anche le più economiche, si arriva oltre i 90 dB.

Questa immagine eseguita con la applicazione Theremino DAA e una scheda USB da 3 Euro mostra che il rapporto tra segnale e spurie è quasi 90 dB, mentre il rapporto segnale rumore è anche più alto. Siamo quindi molto vicini al massimo teorico per un Adc da 16 bit che sarebbe 96 dB. Da notare che qui oltre al rapporto segnale rumore sono presenti anche i prodotti di distorsione del generatore (che è nella stessa scheda audio economica). Abbiamo quindi verificato che anche il generatore (il Dac che è nella scheda) ha una distorsione molto bassa e quindi un basso contenuto di armoniche.

Schede audio interne ed esterne

Anche le schede audio peggiori e più economiche (3 Euro per una scheda USB) hanno una banda passante da circa da 15 Hz a 20 KHz entro un decibel, 16 bit di campionamento e una dinamica di quasi 100 dB. Alcune schede audio arrivano fino a 100 KHz e 24 bit, con una dinamica di quasi 120 dB.

In questa immagine effettuata con la applicazione Theremino DAA e una scheda audio USB economica, si vede che la banda passante è praticamente piatta (entro un decibel) da 18 Hz a 20 KHz.

I costi vanno da zero (già presente sulla motherbard del PC), a pochi Euro (anche solo 3 Euro per una piccola scheda USB), a cento e più Euro per le schede con nomi famosi. Non fatevi tentare dalle schede costose, per quel che ci serve hanno più o meno le stesse caratteristiche di quelle da 3 Euro.

L'unico motivo che potrebbe far preferire una scheda particolare sarebbe di trovarne una facilmente modificabile per arrivare fino alla continua e che sia anche stereo. E dovrebbe possibilmente anche costare poco. Se qualcuno la trova per piacere ci scriva a engineering@theremino.com

Collegare segnali di uscita

In genere le schede audio hanno almeno due canali di uscita con impedenza piuttosto bassa. Possono pilotare cuffie da 16 o 32 ohm e anche piccoli altoparlanti. Per cui le si possono utilizzare facilmente come generatore di segnali. Il segnale di uscita normalmente arriva fino a due volt picco picco ma alcune schede possono arrivare anche più in alto, fino a una decina di volt e oltre prima di saturare.

Le uscite sono robuste, non patiscono se le si mette in corto e non ne ho mai vista una rompersi. Ma naturalmente si deve evitare di fare pazzie tipo collegarle alla rete elettrica.

Segnali di ingresso e sonde

Le schede audio che sono sulle Mother-Board dei PC grandi hanno quasi sempre un ingresso stereo AUX-IN, oppure LINE-IN. Questi sono gli ingressi migliori, sia perchè sono stereo ma anche perché hanno una impedenza abbastanza alta (10K, 47K o 100K) senza bisogno di modificare gli ingressi della scheda. Se invece si dispone solo di ingressi MIC (come in alcuni Notebook e Tablet) e non li si modifica allora ci si dovrà adattare ad avere una impedenza di ingresso molto bassa (normalmente 2.2K). Questo costringerà a fare partitori con alto rapporto di divisione ma non è grave come potrebbe sembrare, perché gli ingressi MIC hanno un alto guadagno.

Per conoscere l'impedenza di ingresso si invia il segnale di uscita all'ingresso. Poi si aggiunge in serie un resistore e lo si cambia fino a che il segnale misurato si dimezza. Infine conoscendo l'impedenza di ingresso diventa facile progettare semplici partitori da utilizzare come sonde da oscilloscopio artigianali.

Date le basse frequenze in gioco la capacità del cavo schermato non influisce e non c'è bisogno di compensazioni. Le uniche variabili sono il rapporto di divisione del partitore e la impedenza di ingresso che andrà a caricare il circuito in esame. Io solitamente utilizzo 10K come resistore del partitore verso massa e un resistore da 100K, 1 mega o 10 mega in serie al segnale, oppure l'ingresso diretto ma con un resistore da 10K in serie per sicurezza.

Non è necessario progettare partitori precisi perché poi tutto cambia a seconda di come si regolano i cursori del mixer di Windows. E comunque in audio si fanno sempre analisi relative. Chi volesse valori di taratura precisi può ottenerli ma dovrà studiare i partitori su misura per la propria scheda audio. Si consiglia in questo caso di utilizzare una scheda USB esterna e di modificarla come spiegato nel prossimo capitolo.

Volendo utilizzare sonde da oscilloscopio è necessario avere una impedenza di ingresso di un mega ohm con circa 18 pF in parallelo. Questo è il valore che si attendono le sonde da oscilloscopio per funzionare bene. Non è necessario che siano 18 o 20 pF esatti perché le sonde hanno un trimmer che solitamente può compensare da meno di 10 pF a più di 50 pF.

Per ottenere questo valore di impedenza si rimuovono i resistori che portano alimentazione al microfono o i resistori da 47 K che sono sugli ingressi LINE-IN o AUX-IN in modo da ottenere una altissima impedenza di ingresso (e si controlla che sia veramente alta come spiegato in precedenza). Poi si salda un resistore da un mega ohm verso massa con in parallelo un condensatore da 18 pF.

Schede audio USB modificabili e sacrificabili

Su eBay o Amazon si possono trovare piccole schede USB per pochi Euro. Per quel che ci serve la loro qualità è praticamente la stessa delle schede più costose ma hanno molti vantaggi:

  • Non ci si preoccupa gran che se poi non si potrà più utilizzarle come schede audio. Quindi sono "sacrificabili" e le si può modificare come si preferisce.
  • Hanno un circuito semplice e ci vuol poco a seguire il percorso del segnale.
  • Alcune possono anche arrivare a leggere la continua con un piccola modifica.
  • Non vengono influenzate dalle regolazoni dei controlli di volume della scheda principale del PC. Hanno le loro regolazioni e regolando i loro cursori al minimo o al massimo si possono avere due riferimenti sicuri e segnali sempre uguali (da Windows7 in poi il cursore di registrazione al minimo non vuol più dire "spento" ma "ingresso con sensibilità tipo Line-IN" e questo è un comodo e ripetibile rifermento).

Ecco lo schema di uno dei modelli più comuni:

Queste schede non hanno l'ingresso stereo, ma per molte applicazioni vanno bene. Ad esempio quando si equalizzano impianti di diffusione o si verifica la funzione di trasferimento di un circuito elettronico, lo si fa sempre un canale per volta.

La bassa impedenza di 2.2 K dell'ingresso microfonico è facilmente modificabile, basta rimuovere il resistore R13 (eventualmente si può romperlo con le tronchesine). Questo resistore va assolutamente eliminato (o in qualche modo scollegato dall'ingresso) perché porta la corrente di alimentazione per i microfoni electret e disturberebbe il circuito sotto misura. Una volta eliminato il resistore la impedenza diventa altissima, praticamente un ingresso CMOS aperto, per cui si dovrà per forza aggiungere un partitore o una sonda da oscilloscopio caricata con un mega ohm più 18 pF verso massa (come spiegato nel capitolo precedente).

Alcuni modelli, ma non tutti, possono anche leggere la continua, per ottenere questo si mette in corto il condensatore C11.

Nella progettazione del partitore si tenga conto che il segnale di ingresso massimo è di circa 2 volt picco picco, se si tiene il cursore di registrazione al minimo e di circa 20 mV picco picco, se lo si tiene al massimo (valori indicativi che possono cambiare a seconda del modello di scheda audio e del driver utilizzato).

Fare anche attenzione a disabilitare il controllo di guadagno automatico AGC e alla regolazione dell'eventuale controllo di pre-amplificazione (se esiste).

Copyrights

Tutto il software e l'hardware del sistema Theremino sono Freeware e OpenSource nel significato più ampio dei termini.

Non ci sono copyrights ne brevetti, potete quindi utilizzare ogni parte del sistema nei vostri progetti, modificarla e anche trasformarla in prodotti commerciali a vostro nome.

Tutto è inedito ed è stato costruito collettivamente dai collaboratori del sistema. Potete quindi copiare ogni immagine, software, schema o progetto senza pericolo di infrangere alcun Copyright.

Il sistema Theremino non chiede mai di registrarsi, non accetta pubblicità, non invia spam e non vende hardware. Noi spieghiamo solo "come si fa".

Tutte le applicazioni del sistema funzionano anche senza hardware, si possono quindi effettuare molti esperimenti senza spendere niente.

10

Commenti e note

Inserisci un commento

di ,

Per wruggeri: OK scusami, avevo dato una occhiata ai tuoi articoli e pensavo scrivessi praticamente solo firmware. Quindi ti ho scritto cose abbastanza inutili... Che posso dire... Provo a scriverti due parole: Nei primi tempi, molti anni fa utilizzavo i soliti esempi che si trovano qua e la su Internet. Poi quando il sistema Theremino ha iniziato a essere utilizzato seriamente ho dovuto cambiare marcia. Alcune applicazioni (ad esempio SoundPlayer) sono state utilizzate in situazioni dove un crash sarebbe stato veramente un problema (ad esempio installazioni multimediali in musei in città lontane dove andare a fare manutenzione sarebbe stato costoso). Per cui nei primi anni del sistema Theremino (circa intorno al 2012-2013) ho passato molti mesi a stressare le classi AudioIn e AudioOut scoprendo che c'erano mille modi di mandarle in crash. Lanciavo alcune applicazioni contemporaneamente e dopo vari tentativi ottenevo un crash. Poi esploravo il problema e lo sistemavo. Ma avevo solo eliminato i problemi più evidenti... Dopo mesi sono arrivato a inseguire gli ultimi bachi veramente elusivi. Ero arrivato addirittura a lanciare 16 o 32 applicazioni contemporaneamente tutte guidate da Theremino Script e tutte che aprivano e chiudevano la scheda audio in momenti casuali e suonavano in vari modi. In quella situazione qualche volta ottenevo ancora dei crash (magari dopo ore di stress) e infine niente più crash ma solo rarissimi dead-locks e quelli sono stati i più difficili da capire e sistemare. Mi sono fermato quando non è stato più possibile ottenere malfunzionamenti su nessuna macchina (32 o 64 bit) nemmeno dopo giorni di stress. Quindi posso assicurare che le classi che pubblichiamo ora sono notevolmente più stabili di tutti gli esempi che si trovano in Internet.

Rispondi

di ,

Io ho chiesto proprio perchè programmazione ad eventi, thread, deadlocks e quant'altro sono cose che conosco già (ci ho pure fatto dei corsi universitari sopra), ma avere una visione "pratica" da parte di chi ci lavora è sempre bello. Grazie per il consiglio, comunque: ho già Visual Studio da anni (il Politecnico ha un accordo con la Microsoft per fornire gratis il software agli studenti), non mi resta che scaricare i sorgenti e scavare un po' :)

Rispondi

di ,

Per Paolino: Ho corretto la frase sul Raspberry, se trovi altri errori scrivimi e grazie per l'osservazione.

Rispondi

di ,

Per Paolino: Hai perfettamente ragione, con un Raspberry (non RPI3 ma qualunque versione) e una scheda audio USB la pila non ci sarebbe (correggo subito la sezione). Ma non si potrebbero utilizzare le nostre applicazioni e tutto il know-how che abbiamo pubblicato in open source. Si dovrebbe scrivere ad hoc la comunicazione con la scheda audio e, conoscendo il settore, non mi fiderei molto della stabilità di quel che si trova in internet per farlo. E comunque non si potrebbe utilizzare la modularità del nostro sistema e la flessibilità data dalle oltre cinquanta applicazioni che abbiamo pubblicato.

Rispondi

di ,

Per wruggeri: Se vorrai approfondire la nostra implementazione dovresti prima di tutto installare un ambiente Visual Studio e poi potresti farmi domande mirate. Ho passato anni per ottenere la totale affidabilità nella comunicazione con le schede audio. Dopo innumerevoli applicazioni e decenni di esperimenti iniziati con Windows95 e anche prima con i computer Acorn, ho acquisito sufficiente esperienza per trasformare le classi "grezze" che si trovano in internet in meccanismi semplici che non crashano mai. Ma i particolari sono impossibili da spiegare in due parole. Magari se vorrai specializzarti in questo campo potremmo sentirci per telefono o Skype e potrei aiutarti ad approfondire i particolari. Per intanto ti consiglio di scaricare la applicazione "AudioGenerator" che è la più semplice da capire, installare VisualStudio2008 come spiegato nel nostro sito e esplorare la classe "AudioOut" cercando tutti i punti dove viene usate la parola "SyncLock" (che è il metodo che preferisco per "semaforizzare" le sezioni critiche"). Poi potresti anche leggere all'inizio del file "WaveNative" le mie note intitolate "WINMM STABILITY SECRETS" che sono importanti per la stabilità quando si comunica con le schede audio in ambiente Windows.

Rispondi

di ,

Per wruggeri: Mi piacerebbe tanto poter scrivere in poche parole questi concetti ma purtroppo credo che sia impossibile. Le "due paroline dello sviluppatore" sono proprio quelle che ho già scritto e che tu hai quotato. Per approfondire dovresti familiarizzarti con la programmazione a eventi e Threads, nonché con i Semafori, le Sezioni critiche e i DeadLocks. Questi sono comunque concetti generici che puoi facilmente studiare su Wikipedia o che puoi trovare in decine di articoli in Internet. Molti hanno spiegato questi concetti in modo esteso. Nemmeno pubblicando un intero articolo potrei fare di meglio.

Rispondi

di ,

Mi riprometto di leggere attentamente l'articolo, ma ho una curiosità: con una RPI3 dotata di un microfono USB, la pila che mostri nella prima immagine non ci sarebbe più. O mi sbaglio? Si potrebbe avare audio IN e OUT senza troppe difficoltà.

Rispondi

di ,

Per EcoTan: Ho aggiunto una sezione sui relè e altri dispositivi di uscita. Se segui i link troverai gli schemi e tutto il necessario. Potresti costruire tutto in "fai da te" spendendo pochissimo, oppure acquistare moduli completi e collaudati. Privilegia sempre le versioni con totale isolamento galvanico (foto-accoppiate o con relè meccanici) e fai molta attenzione. Se utilizzi anche la tensione di rete fai ancora più attenzione e cura al massimo gli isolamenti. --- Lo abbiamo scritto spesso ma ricordo per chi non lo sapesse ancora, che tutte le applicazioni del sistema Theremino hanno sempre bisogno del PC e che deve essere un PC con Windows. Per queste applicazioni un po' domotiche è consigliabile uno StickPC economico con Windows-10, ad esempio un Meegopad senza schermo, che si controlla via TeamViewer e può stare sempre acceso perché consuma solo 5 watt. Oppure un Tablet con Windows-10, che fungerebbe anche da pannello touch screen.

Rispondi

di ,

Non mi dispiacerebbe provare l'applicazione Voice. Qual'è il sistema più svelto per ottenere delle uscite su relè, anche a costo di realizzare qualcosa su millepunti?

Rispondi

di ,

Articolo molto interessante :) L'unica cosa, da informatico, che un po' mi dispiace è l'assenza di spiegazioni approfondite sulle soluzioni software che avete adottato: scrivere per esempio "Comunicare con le schede audio in modo affidabile è più difficile di quel che si può pensare. Si devono utilizzare callbacks e algoritmi ben ottimizzati, nonché semafori per le sezioni critiche. E ci vuole molta esperienza specialistica in questo particolare campo, altrimenti si rischiano dead-locks e sporadici crash." per il generatore di forme d'onda può andar bene come informazione generica, ma un informatico si chiede come abbiate gestito la cosa e troverebbe molto gradevole che lo sviluppatore lo spiegasse (certo, l'informatico in questione può sempre leggere il codice, che a quanto ho capito è pubblicamente disponibile... ma due paroline dallo sviluppatore sarebbero comunque interessanti da sentire).

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.