ARPEGGIATOR

Voici un arpeggiator. Il fonctionne de la façon suivante :

  • 3 boutons dont chacun crée une suite de notes. Ici le premier fait : SOL-DO-MI. Le deuxième : SOL-SI-MI. Le troisième : SOL-LA-DO.
  • 1 potentiomètre qui gère la rapidité des arpèges.

En appuyant sur les 3 boutons successivement on obtient une mélodie dont on peut régler le « tempo » en tournant le potentiomètre.

#include "pitches.h"


//potentiometre
int val;
int analogPin = A0;

//BOUTTON
const int buttonPin1 = 2;
int buttonState = 0;

const int buttonPin2 = 4;
int buttonState2 = 0;

const int buttonPin3 = 7;
int buttonState3 = 0;

//haut parleur
int speaker = 9;
int speaker2 = 10;


//NOTES
int nbNotes = 3;
int notes [] = {NOTE_G3, NOTE_C4, NOTE_E4};
int notes2 [] = {NOTE_G3, NOTE_B3, NOTE_E4};
//BASS
int notes3 [] = {NOTE_G3, NOTE_A3, NOTE_C4};


void setup() {

  Serial.begin(9600);

  //bouton1
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);

  mute();

  //potentiometre
  pinMode ( analogPin, INPUT);
  Serial.begin(9600);
}

void loop() {


  //BUTTON 1
  buttonState = digitalRead(buttonPin1);
  if ( buttonState == HIGH) {
    triggered();
  }

  //BUTTON 2
  buttonState2 = digitalRead(buttonPin2);
  if ( buttonState2 == HIGH) {
    triggered2();
  }

  //BUTTON 3
  buttonState3 = digitalRead(buttonPin3);
  if ( buttonState3 == HIGH) {
    triggered3();
  }


}

void mute() {
  noTone(speaker);
}

void triggered() {

  //valeurs potentiometre
  val = analogRead(analogPin);
  int blink1 = map(val, 0, 1023, 0, 500);
  //////

  for (int i = 0; i < nbNotes; i++) {
    tone(speaker, notes[i], 200);
    delay(blink1);
    
  }
  mute();
}

void triggered2() {

  //valeurs potentiometre
  val = analogRead(analogPin);
  int blink1 = map(val, 0, 1023, 0, 500);
  //////

  for (int i = 0; i < nbNotes; i++) {
    tone(speaker, notes2[i], 200);
    delay(blink1);
  }
  mute();
}

void triggered3() {

  //valeurs potentiometre
  val = analogRead(analogPin);
  int blink1 = map(val, 0, 1023, 0, 500);
  //////

  for (int i = 0; i < nbNotes ; i++) {
    tone(speaker, notes3[i], 500);
    delay(blink1);
  }
  mute();

}