Thymio Partition

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
IMAG0063.jpg
IMAG0064.jpg
IMAG0067.jpg
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
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License