Per comprendere il funzionamento di questa esperienza di produzione di suoni utilizzando dei segni grafici osservate questo video di esempio:
L'idea di partenza
L'idea è di far seguire una linea su un foglio al sensore di rilevamento del terreno del Thymio con uno dei due sensori ed utilizzare l'altro per leggere la codifica di informazioni che possano essere interpretate come dei toni musicali.
Il tono corrisponde al livello di nero nel disegno. Ma attenzione, la misura viene fatta con sensori sensibili all'infrarosso per cui quello che risulta scuro a livello di infrarosso è diverso da quanto appare ai nostri occhi. Questo rende imprevedibile il risultato rispetto a quanto verrà disegnato.
L'idea è simile a quella utilizzata per dipingere con la luce utilizzando i codici a barre nell'esempio del lightpainting dove invece di suonare dei toni Thymio mostra dei colori. Si possono anche usare dei codici a barre sul terreno per rappresentare le note ma e' meno poetico che disegnare…
Il codice
Il codice utilizzato è il seguente:
var running = 0
var counter = 0
var intensityDiff
var freq
var black
var white
timer.period[0] = 50
call leds.prox.v(0,0)
onevent button.forward
if button.forward == 1 then
running = 1
call leds.temperature(0, 0)
white=0
black=1000
end
onevent button.center
if button.center == 1 then
running = 0
motor.left.target = 0
motor.right.target = 0
end
onevent prox
if running == 1 then
if prox.ground.delta[0]> white then
white=prox.ground.delta[0]
end
if prox.ground.delta[0]< black then
black=prox.ground.delta[0]
end
intensityDiff = prox.ground.delta[1]-525
if abs(intensityDiff) < 170 then
motor.left.target = 115+intensityDiff/8
motor.right.target = 115-intensityDiff/8
else
motor.left.target = intensityDiff/4
motor.right.target = -intensityDiff/4
end
if prox.ground.delta[0]< (white-50) then
call math.muldiv(freq, prox.ground.delta[0] - black, 200, white-black)
call sound.freq(freq+200, 0)
else
call sound.freq(freq+200, -1)
end
end
I due blocchi di codice per i bottoni consentono di far partire e fermare il robot rispettivamente con il tasto FRECCIA AVANTI e bottone CENTRALE.
Nel resto del codice, il sensore ground.delta [0] viene utilizzato per leggere i toni e il sensore prox.ground.delta [1] per seguire il tracciato. Per discriminare l'ampiezza del tono si calcola l'intensita' del disegno basandoci sul valore di bianco e di nero.
Questi due valori vengono aggiornati costantemente. A causa di cio' il robot dovrebbe iniziare alla ricerca di bianco e di nero.
Risultati
Queste sono alcune immagini degli spartiti realizzati dai partecipanti:
![IMAG0062.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0062.jpg)
![IMAG0063.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0063.jpg)
![IMAG0064.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0064.jpg)
![IMAG0067.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0067.jpg)
![IMAG0068.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0068.jpg)
Abbiamo notato che ci sono sempre ragazzi che preferiscono avere un bel tracciato piuttosto che del bel suono.
Notate come quello che disegnate produca dei suoni! (i finestrini, le ruote dell'auto, le portiere ecc..)
![IMAG0069.jpg](http://aseba.wdfiles.com/local--files/fr:thymio-partition/IMAG0069.jpg)