SlideShare a Scribd company logo
Stefano Panichi e Giulio Fieramosca
Arduino e Musica
Giulio 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 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);
}
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
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
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

More Related Content

PPTX
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
PDF
Workshop su Arduino
PDF
Come rendere Arduino professionale
PDF
Programmare raspberry pi - Cowo42 - Osimo (AN)
PDF
Workshop Arduino by Fiore Basile
PDF
Workshop arduino e sensori
PPTX
Arduino ICT2016 [IT]
PDF
Lezione 3 arduino - corso 20 ore
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Workshop su Arduino
Come rendere Arduino professionale
Programmare raspberry pi - Cowo42 - Osimo (AN)
Workshop Arduino by Fiore Basile
Workshop arduino e sensori
Arduino ICT2016 [IT]
Lezione 3 arduino - corso 20 ore

What's hot (20)

PPT
OPDE Drives
ODP
Anatomia di un'istruzione in Arduino Pt.1
ODP
Anatomia di un'istruzione in Arduino Pt.2
PDF
Arduino&Raspberry
PPT
Presentazione
KEY
Introduzione ad Arduino
DOC
Arduino & raspberry pi - Un connubio stimolante
PDF
Lezione 1 arduino - corso 20 ore
PDF
Progettare con Arduino come un Ingegnere
PDF
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
PDF
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
PDF
Microcontrollori
PDF
Open Hardware: Arduino, un prodotto italiano
PDF
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
PPTX
Workshop arduino
PDF
Arduino ai raggi x rendiamolo professionale
PDF
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
PDF
Android-Arduino interaction via Bluetooth
PDF
Electronics LAB [with Arduino] | DAY 2
PDF
Arduino ai raggi x
OPDE Drives
Anatomia di un'istruzione in Arduino Pt.1
Anatomia di un'istruzione in Arduino Pt.2
Arduino&Raspberry
Presentazione
Introduzione ad Arduino
Arduino & raspberry pi - Un connubio stimolante
Lezione 1 arduino - corso 20 ore
Progettare con Arduino come un Ingegnere
Arduino PLC : Modulo 1 programación Arduino Rev. 2.0
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Microcontrollori
Open Hardware: Arduino, un prodotto italiano
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Workshop arduino
Arduino ai raggi x rendiamolo professionale
Product catalogs 03: electronic instrumentation - weight indicators & weight ...
Android-Arduino interaction via Bluetooth
Electronics LAB [with Arduino] | DAY 2
Arduino ai raggi x
Ad

Fare Musica con Arduino

  • 1. Stefano Panichi e Giulio Fieramosca Arduino e Musica Giulio Fieramosca Stefano Panichi
  • 2. Stefano Panichi e Giulio Fieramosca Tone
  • 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;
  • 7. 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...........
  • 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