Fare Musica con Arduino
-
Upload
stefano-panichi -
Category
Devices & Hardware
-
view
379 -
download
3
description
Transcript of Fare Musica con Arduino
Stefano Panichi e Giulio Fieramosca
Arduino e MusicaGiulio Fieramosca
Stefano Panichi
Stefano Panichi e Giulio Fieramosca
Tone
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 A0unsigned 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);}
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;
Stefano Panichi e Giulio Fieramosca
Sinusoidino – Schema
Scala di resistenze
Filtro
Filtro Offset
Isolamento (Buffers)
Stefano Panichi e Giulio Fieramosca
Theremino!
● Usiamo sinusoidino per realizzare un semplice Theremin: un sensore di distanza varia la frequenza;
Stefano Panichi e Giulio Fieramosca
Sinusoidino
void setup() {
cli();
TCCR1A = 0;
OCR1A = 159;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
sei();
}
ISR(TIMER1_COMPA_vect) {
if (offset >= CAMPIONI) {
offset = 0;
}
offset +=incrementoPlay;
PORTD =pgm_read_byte_near(sine20000 + offset);
}
const byte sine20000[] PROGMEM = {127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128...........
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;
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;
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);}
Stefano Panichi e Giulio Fieramosca
Stefano Panichi
Giulio Fieramosca
it.linkedin.com/in/stefanopanichi/
@StefanoPanichi
google.com/+StefanoPanichi
it.linkedin.com/in/giuliofieramosca
facebook.com/giulio.fieramosca
google.com/+GiulioFieramosca
Grazie per l'attenzione
Stefano Panichi e Giulio Fieramosca
Presentazione realizzata con software open source(LibreOffice Impress, Gimp, Arduino)
Quest'opera è distribuita con Licenza CC-BY-SAe realizzata da Stefano Panichi e Giulio Fieramosca