Arduino Nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya nya

nyan-c10.jpg

La musique du Nyan Cat sur un arduino?

Je l'ai fait et je n'en suis vraiment pas fier; encore moins au point d'en écrire un billet sur ce blog.

Bon OK, c'est vraiment pour vous faire plaisir.

le montage: un buzzer entre la pin 11 et le GND (parceque ça correspond à l'écartement des pates du buzzer).

P1030097.JPG

le microphone que vous voyez sur la photographie a enregistré ça:

Lecteur audio intégré

La partition de NyanNyanNyanNyanNyan en C pour l'arduino c'est ceci:

/*
*By Gnieark https://blog-du-grouik.tinad.fr/ (le code, pas la musique)
*Faites ce que vous voulez du code, par contre pour la musique, 
*Voyez avec son auteur, je n'ai aucun droit là dessus,
*Mais c'est vous qui allez la charger sur la puce de votre arduino.
*Pas moi
*
*Un peu de culture au passage:
*Quand on passe d'un octave à celui au dessus, on double la fréquence de l'onde sonore.
*A=La, B=Si etc....
*/
int speakerPin = 11;
char names[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g'};
int tones[] = { 110, 123, 131, 147, 165, 175, 196 };
int tonesDiese[] = {117,0,139,156,0,185,208};
int tempo = 120;//double croche

void playNote(char note, int octave, int duration, boolean diese=false) {
  // play the tone corresponding to the note name
    int i=0;
    while((names[i]!=note) && (i<7)){
     i++; 
    }
    if (diese) {
      tone(speakerPin,tonesDiese[i] * octave, duration * tempo);
    }else{
      tone(speakerPin,(tones[i] * octave), duration * tempo);
    }
    delay(duration * tempo);
    noTone(speakerPin);
}

void setup() {
  pinMode(speakerPin, OUTPUT);
  
  //intro
    playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  delay(tempo);
  playNote('b',4,1,false);
  playNote('e',3,1,false);
  playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  playNote('b',4,1,false);
  playNote('d',4,1,true);
  playNote('e',4,1,false);
  playNote('d',4,1,true);
  playNote('a',4,1,true);
  playNote('b',4,1,false);
  delay(tempo);
 
  playNote('f',3,1,true); 
 delay(tempo);
   playNote('d',3,1,true);
  playNote('e',3,1,false);
  delay(tempo);
    playNote('f',3,1,true);
   delay(tempo);
    playNote('b',4,1,false);
    playNote('c',4,1,true);
   playNote('a',4,1,true);
   playNote('b',4,1,false);
   playNote('c',4,1,true);
   playNote('e',4,1,false);
   playNote('f',4,1,true);
   playNote('e',4,1,false);
   playNote('c',4,1,true);
}
void loop() {
  playNote('f',3,1,true);
  delay(tempo);
  playNote('g',3,1,true);
  delay(tempo);
  playNote('d',3,1,true);
  playNote('d',3,1,true);
  delay(tempo);
  playNote('b',3,1,true);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('c',3,1,true);
  delay(tempo);

  
  playNote('d',3,1,false);
  delay(tempo);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('g',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  
  playNote('d',3,1,true);
  delay(tempo);
  playNote('f',3,1,true);
  delay(tempo);
  playNote('g',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  
  playNote('d',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('c',3,1,true);
  delay(tempo);
  
  playNote('f',3,1,true);
  delay(tempo);
  playNote('g',3,1,true);
  delay(tempo);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  delay(tempo);
  playNote('c',3,1,true);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('c',3,1,true);
  delay(tempo);
  
  
  playNote('d',3,1,false);
  delay(tempo);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('g',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false); 
 
 
  playNote('d',3,1,true);
  delay(tempo);
  playNote('f',3,1,true);
  delay(tempo);
  playNote('g',3,1,true);
  playNote('d',3,1,true);
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('d',3,1,false);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  
  
  playNote('d',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true); 
  playNote('f',3,1,true);
  playNote('c',3,1,true);
  playNote('d',3,1,false);
  playNote('c',3,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('e',3,1,false);
  playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
   playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true); 
  playNote('e',3,1,false);
  playNote('d',3,1,true);  
  playNote('c',3,1,true); 
  playNote('b',3,1,false);
  playNote('e',2,1,false);
  playNote('d',2,1,true); 
  playNote('e',2,1,false);
  playNote('f',2,1,true);

  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true);
  playNote('g',2,1,true);
  playNote('f',2,1,true);
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  playNote('a',3,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('e',3,1,false);
  playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('a',3,1,true);
  delay(tempo);
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('e',3,1,false);
  playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true); 
  playNote('e',3,1,false);
  playNote('d',3,1,true); 
  playNote('c',3,1,true); 
  playNote('b',3,1,false);
  playNote('e',2,1,false);
  playNote('d',2,1,true);
  playNote('e',2,1,false);
  playNote('f',2,1,true);
  
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('b',3,1,false);
  playNote('c',3,1,true);
  playNote('d',3,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('f',2,1,true);
 
  playNote('b',3,1,false);
  delay(tempo);
  playNote('b',3,1,false);
  playNote('a',3,1,true);
  playNote('b',3,1,false);
  playNote('f',2,1,true); 
  playNote('g',2,1,true);
  playNote('b',3,1,false);
  playNote('e',3,1,false);
  playNote('d',3,1,true);
  playNote('e',3,1,false);
  playNote('f',3,1,true);
  playNote('b',3,1,false);
  delay(tempo);
  playNote('c',3,1,true);
  delay(tempo);
}

Commentaires

1. Le jeudi, novembre 24 2011, 21:14 par zigazou

Prochaine étape : la synthèse vocale par phonème sur Arduino ;-)

2. Le jeudi, novembre 24 2011, 23:22 par gnieark

héhé vi j'hésite entre la synthèse vocale ou coder un équivalent de google earth sur la puce de l'arduino ;)

3. Le vendredi, novembre 25 2011, 07:31 par zigazou

Je pense que tu surestimes les ressources nécessaires pour faire de la synthèse vocale par phonème. Ça se faisait déjà au tout début des années 80 et je doute qu’on eut eu les mêmes capacités qu’un Arduino à l’époque ;-)

4. Le lundi, décembre 5 2011, 08:17 par Brendan

Je veux dire, site de qualité. Je l'ai trouvé sur google. 08))

Page top