Pianola

Lo schema iniziale

Lo schema iniziale per la costruzione di una pianola virtuale era quello illustrato in figura e prevedeva la presenza di un trasmettitore e due ricevitori.

Schema iniziale pianola virtuale

L'utente avrebbe spostato lungo la finta tastiera T una sorgente S, in grado di emettere suoni (o ultrasuoni) che sarebbero stati ricevuti dai due microfoni M1 e M2 e inviati alla scheda DSP. Confrontando la fase dei segnali letti da M1 e M2, il DSP avrebbe determinato la posizione della sorgente S lungo T e prodotto una nota della frequenza desiderata.

Ci è subito apparso chiaro che il suono emesso dalla sorgente S doveva essere a frequenza non udibile, oppure di intensità sufficientemente bassa da non essere rilevabile, per non compromettere l'ascolto della nota generata dal DSP.

Abbiamo inizialmente pensato di servirci degli infrasuoni, o comunque di frequenze abbastanza basse da essere difficilmente udibili. Abbiamo scelto un tono a 30 Hz, pensando di stimare la differenza di cammino tra le onde sonore ricevute dal microfono M1 e quelle ricevute dal microfono M2 sulla base della differenza di fase tra i due segnali.
Un simile procedimento, essendo la lunghezza d'onda di un segnale sonoro a 30 Hz pari a più di 10 m, consente di stimare senza alcuna ambiguità differenze di percorso sino a quella lunghezza: ciò è più che sufficiente per una tastiera delle usuali dimensioni.
Perciò anzitutto abbiamo realizzato uno script Matlab per simulare l'elaborazione.

Elaborazione_pianola.m.

In questo script vengono eseguite le seguenti operazioni:

  • si acquisiscono i dati stereo tramite il microfono del computer: i canali destro e sinistro vengono caricati in due diverse colonne di una matrice di campioni
  • si effettua un iniziale filtraggio passabasso e una decimazione
  • si effettua un filtraggio selettivo per isolare il segnale a 30 Hz
  • per calcolare lo sfasamento phi2-phi1, si moltiplicano i due campioni provenienti dai due microfoni: per le formule di Werner, A1*sin(2*pi*30*t+phi1)*A2*sin(2*pi*30*t+phi2)= 0.5*A1*A2*(cos(phi2-phi1) - cos(4*pi*30*t+phi1+phi2))
  • a questo punto sono presenti due componenti, una a frequenza nulla, l'altra a 60 Hz; per conservare solo la componente continua, 0.5*A1*A2*cos(phi2-phi1), eliminiamo i 60 Hz con un filtro notch e poi con un passa basso eliminiamo eventuale rumore a frequenze più elevate
  • per ottenere il solo coseno dividiamo per 0.5*A1*A2: per farlo dobbiamo stimare le ampiezze dei due segnali, elevandoli al quadrato e isolando la continua con il medesimo filtraggio applicato al prodotto
  • l'arcocoseno porge phi2-phi1, che è appunto la differenza di fase
  • il ritardo temporale può essere ottenuto come (sfasamento)/(2*π*frequenza), nel nostro caso la frequenza è 30 Hz
  • la differenza di cammino è pari al ritardo temporale per la velocità del suono; nello script la velocità del suono è considerata costante, ma si sarebbe potuta aggiungere una calibrazione iniziale per tenere conto della sua dipendenza da diversi fattori, quali ad esempio la temperatura e l'umidità dell'aria
  • la distanza dell'emettitore S dall'inizio della tastiera si può calcolare a partire dalla differenza di cammino sulla base di semplici calcoli trigonometrici.

Se si forniscono in ingresso coppie di sinusoidi generate con Matlab e arbitrariamente sfasate, lo script funziona perfettamente e lo sfasamento è stimato con grandissima precisione. I problemi sorgono però quando ci si accinge a realizzare il sistema fisicamente: per emettere un segnale a 30 Hz con una potenza sufficiente a consentire di rilevarlo e di eseguire l'elaborazione, è necessaria una cassa di notevoli dimensioni, che non può certo essere approssimata come una sorgente puntiforme... La tastiera risultante sarebbe stata di lunghezza eccessiva.

Ci siamo perciò visti costretti a cambiare strategia. Le possibilità alternative erano due: utilizzare una frequenza udibile (di qualche kHz) oppure gli ultrasuoni. La prima strada era già percorsa da un altro gruppo di lavoro. Secondo alcuni consigli che avevamo ricevuto, servirsi di capsule a ultrasuoni era la cosa migliore da farsi - e soprattutto sarebbe stato semplice (sic).

Così abbiamo scelto di imboccare la seconda strada...