In questo workshop esploriamo le potenzialità musicali della scheda Arduino e di alcuni suoi shield, come il Wave Shield ed il Music Shield. Potete trovare il video qui: http://youtu.be/p1weY_R2r64
3. Stefano Panichi e Giulio Fieramosca
Tone
● Il sistema più
semplice per
generare suoni
con Arduino;
● Consiste nella
generazione di
un'onda quadra a
frequenza
variabile;
#define BUZZER_PIN 3
#define PITCH_PIN A0
unsigned int value = 0;
unsigned int value_play = 0;
void setup() {
}
void loop() {
value = map(analogRead(PITCH_PIN),
0, 1024, 330, 880);
if (value > value_play) {
value_play++;
}
else if (value < value_play) {
value_play--;
}
tone(BUZZER_PIN, value_play, 20);
}
4. Stefano Panichi e Giulio Fieramosca
Sinusoidino
● Shield che permette
di generare onde più
complesse mediante
l'uso di un DAC a
rete resistiva esterna;
● Poco flessibile,
impegna le risorse
della CPU (timer) e 8
uscite;
5. Stefano Panichi e Giulio Fieramosca
Sinusoidino – Schema
Scala di resistenze
Filtro
Filtro Offset
Isolamento (Buffers)
6. Stefano Panichi e Giulio Fieramosca
Theremino!
● Usiamo sinusoidino per realizzare un
semplice Theremin: un sensore di
distanza varia la frequenza;
8. Stefano Panichi e Giulio Fieramosca
Wave Shield
● Shield che esegue
tracce musicali dalla
scheda SD;
● L'uscita è soltanto
mono, è limitato al
formato audio wav e
non é possibile
riprodurne più di uno
contemporaneamente;
9. Stefano Panichi e Giulio Fieramosca
Audio Board VS1053
● Scheda che
consente di
– riprodurre dati ogg,
mp3, aac, wma, flac;
– registrare audio ogg;
– riprodurre
informazione MIDI;
– Leggere i files da una
sd card;
10. Stefano Panichi e Giulio Fieramosca
Evoluzione di Theremino
● Con due fotoresistenze controlliamo volume
e frequenza in uscita.
void loop() {
toneValue = map(analogRead(PITCH_PIN), 0, 1023, 0, 127);
volValue = map(analogRead(VOL_PIN), 0, 1023, 30, 127);
if (toneValue > tonePlay)
toneOld = tonePlay++;
else if (toneValue < tonePlay)
toneOld = tonePlay--;
if (volValue > volPlay)
volOld = volPlay++;
else if (volValue < volPlay)
volOld = volPlay--;
midiNoteOff(0, toneOld, volOld);
midiNoteOn(0, tonePlay, volPlay);
delay(10);
}
11. Stefano Panichi e Giulio Fieramosca
Stefano Panichi
Giulio Fieramosca
it.linkedin.com/in/stefanopanichi/
@StefanoPanichi
s.panichi@yahoo.it
google.com/+StefanoPanichi
it.linkedin.com/in/giuliofieramosca
facebook.com/giulio.fieramosca
giuliofieramosca@gmail.com
google.com/+GiulioFieramosca
Grazie per l'attenzione
12. Stefano Panichi e Giulio Fieramosca
Presentazione realizzata con software open source
(LibreOffice Impress, Gimp, Arduino)
Quest'opera è distribuita con Licenza CC-BY-SA
e realizzata da Stefano Panichi e Giulio Fieramosca