strawarsse

Bonjour,

Ma fille m'a dit "pas cap de faire strawarsse "

Je vous montre comment j'ai fait, la critique est bien venue, je dispose des DVD originaux d'une musique qui ressemble ainsi que des partitions, bien entendu, INTERDICTION FORMELLE D'UTILISER CE CODE si vous ne disposez pas des droits nécessaires.

Je décline toutes responsabilités de toutes natures, je ne suis pas modérateur, INTERDIT DE PUBLIER CE SCRIPT SANS AVOIR RETIRE LA PARTITION , bon, là, je suis protégé avec tout ça ! :slight_smile:

Ha oui....la balise :slight_smile:

                    /******* boite à musique *******/
               

//vertion française que j'aime
#define DO 65 
#define DOd 69
#define RE 74
#define REd 78
#define MI 83
#define FA 87
#define FAd 93
#define SOL 98
#define SOLd 104
#define LA 110
#define LAd 117
#define SI 123

// vertion que j'aime pas 
#define C 65
#define Cd 69
#define D 74
#define Dd 78
#define E 83
#define f 87 /* désolé, pas possible un F, chépa pk */
#define fd 93 
#define G 98
#define Gd 104
#define A 110
#define Ad 117
#define B 123

/*____________________________________________________________________________________________________________________*/                    
                    //à partir de la, c'est la partition 
                    
          /*à definir le nombre de notes */
    int nombredenotes=191; 
          /* à definir tempo (le métronome en fait)*/
    int tempo=120;           
    char melodie[191][4]=
{
 //fa# a la clef

 /*1*/ RE,1,1,1,// 1
       RE,1,1,1,
       RE,1,1,1,
       SOL,7,1,1,
       RE,7,2,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,7,2,1,
/*10*/ RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       LA,2,1,0,
       SOL,8,2,0,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       DO,2,2,0,
       LA,8,1,0,
/*20*/ RE,1,1,1,//2
       RE,1,1,1,
       RE,1,1,1,
       SOL,7,1,1,
       RE,7,2,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,7,2,1,
       RE,2,2,0,
/*30*/ DO,2,2,0,
       SI,2,1,0,
       LA,2,1,0,     
       SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       DO,2,2,0,
       LA,7,1,1,    
       RE,1,1,1,//3
/*40*/ RE,1,1,1,
       RE,1,1,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,2,1,0,
       SOL,2,1,0,
       LA,2,1,0,
       SI,2,1,0,
       LA,2,1,0,
/*50*/ MI,1,1,0,
       FAd,2,1,0,
       RE,2,1,1,
       RE,1,1,0,
       MI,2,1,1,    
       MI,1,1,0,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,2,1,0, 
/*60*/ RE,2,2,1,   
       LA,1,1,0,
       LA,7,1,1,
       RE,1,1,1,//4
       RE,1,1,1,
       RE,1,1,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,2,1,0,
/*70*/ SOL,2,1,0,
       LA,2,1,0,
       SI,2,1,0,
       LA,2,1,0,
       MI,1,1,0,
       FAd,2,1,0,
       RE,1,2,1,
       RE,1,2,1,
       SOL,2,2,0,
       FA,1,2,0,
/*80*/ REd,2,2,0,
       RE,1,2,0,
       DO,2,2,0,
       LAd,1,1,0,
       LA,2,1,0,
       SOL,1,1,0,
       RE,7,2,1,//5     
       RE,1,1,1,
       RE,1,1,1,
       RE,1,1,1,
/*90*/ SOL,7,1,1,
       RE,7,2,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       LA,2,1,0,
/*100*/SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       DO,2,2,0,
       LA,7,1,1,
       RE,1,1,1,//6
       RE,1,1,1,
       RE,1,1,1,
       SOL,7,1,1,
/*110*/RE,7,2,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       LA,2,1,0,
       SOL,7,2,1,
/*120*/RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       DO,2,2,0,
       LA,7,1,1,     
       RE,1,1,1,//7
       RE,1,1,1,
       RE,1,1,1,
       DO,2,2,0,
       SI,2,1,0,   
/*130*/LA,2,1,0,
       SOL,2,1,0,
       SOL,2,1,0,
       LA,2,1,0,
       SI,2,1,0,
       LA,2,1,0,
       MI,1,1,0,
       FAd,2,1,0,
       RE,2,1,1,
       RE,1,1,0,
/*140*/MI,2,1,1,    
       MI,1,1,0,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,2,1,0, 
       RE,2,2,1,   
       LA,1,1,0,
       LA,8,1,0,
       RE,1,1,1,//8
/*150*/RE,1,1,1,
       RE,1,1,1,
       DO,2,2,0,
       SI,2,1,0,   
       LA,2,1,0,
       SOL,2,1,0,
       SOL,2,1,0,
       LA,2,1,0,
       SI,2,1,0,
       LA,2,1,0,
/*160*/MI,1,1,0,
       FAd,2,1,0,
       RE,1,2,1,
       RE,1,2,1,
       SOL,2,2,0,
       FA,1,2,0,
       REd,2,2,0,
       RE,1,2,0,
       DO,2,2,0,
       LAd,1,1,0,
/*170*/LA,2,1,0,
       SOL,1,1,0,
       RE,7,2,1,  
       RE,1,1,1,//9
       RE,1,1,1,
       RE,1,1,1,
       SOL,7,1,1,
       RE,7,2,1,
       DO,2,2,0,
       SI,2,1,0,   
/*180*/LA,2,1,0,
       SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
       LA,2,1,0,
       SOL,7,2,1,
       RE,2,2,0,
       DO,2,2,0,
       SI,2,1,0,
/*190*/DO,2,2,0,
/*191*/LA,7,1,20
         
};//fin de la partition
/*___________________________________________________________________________________________*/


int HP=12; /* HP = haut parleur  j'ai 
            choisi la 12 mais fais comme bon te semble*/
            
void setup()
{
  pinMode(HP,OUTPUT); // on défini la pineHP comme une sortie
  digitalWrite(HP,LOW);// on la met en bas 
}

void loop() 

{ 
  for (int p=0;p<nombredenotes;p++) /*incrémente pour faire défiler la partition n*/
    {
      int note=melodie[p][0]; //corespond a la valeur de la note DO ,RE,MI ou C, D, E au choix vous irrez pas vous plaindre !mais pas f minuscule
      int temps=melodie[p][1];//corespond a la durée de la note (si 1 ti la la la si 2, tii laa laa laa)
      int octave=melodie[p][2];//correspond a l'octave 
      int silence=melodie[p][3];//et enfin correspond au silence (si 0 : tilalalalalatitila.... si 1 : ti la la la...;si 2: ti  la  la  la)
      
      int frequence=(note*pow(2,octave)*1.5); /*calcul de la frequence le 1.5 permet d'accorder comme on veux , de désaccorder je devrais dire 
                                              pour LA -- > octave 2--> frequence = 110 * 4 = 440 (fréquence standar du LA); octave 3 --> frequence = 110*8 = 880*/ 
      int duree=tempo*temps; //calcul de la duree de la note 
      int pause=silence*tempo; //calcul des silences
      
      tone(HP,frequence);//joue la note DO ou RE ou C ou encore D selon ta partition
      delay(duree);//durée de la note 
      noTone(HP);// RAZ HP
      
      delay(pause);//duré du silence 
    }
  delay(100); // à définir 
}

merci , ça fait plaisir.

:grin: :grin: :grin:

Tu devrais faire écouter ça à ta fille :

#define RELAY_OUT               4
// diviseur = 1 pour un HP, 15 pour un relais
#define DIVISEUR                15
#define TEMPO                   ALLEGRO

// Liste des notes
#define SIL                     0
#define DON                     65
#define DOD                     69
#define REN                     74
#define RED                     78
#define MIN                     83
#define FAN                     87
#define FAD                     93
#define SON                     98
#define SOD                     104
#define LAN                     110
#define LAD                     117
#define SIB                     117
#define SIN                     123
#define FIN                     255

// liste des rythmes
#define QUINTUPLECROCHE         1
#define QUADRUPLECROCHE         2
#define TRIPLECROCHE            4
#define DOUBLECROCHE            8
#define CROCHE                  16
#define CROCHEPOINTEE           24
#define NOIRE                   32
#define NOIREPOINTEE            48
#define BLANCHE                 64
#define BLANCHEPOINTEE          96
#define RONDE                   128

// liste des rythmiques de silences
#define TRENTEDEUXIEMEDESOUPIR  1
#define SEIZIEMEDESOUPIR        2
#define HUITIEMEDESOUPIR        4
#define QUARDESOUPIR            8
#define DEMISOUPIR              16
#define SOUPIR                  32
#define DEMIPAUSE               64
#define PAUSE                   128

// Tempo
#define LENTO                   60
#define ANDANTE                 80
#define MODERATO                100
#define ALLEGRO                 120
#define PRESTO                  150
#define PRESTISSIMO             200


void setup() {
  pinMode(RELAY_OUT, OUTPUT);
  Serial.begin(115200);
}

void buzz(int freq, int length) 
{
  unsigned long t = millis();
  while (millis() < t + length) {
    digitalWrite(RELAY_OUT, HIGH);
    delay(1000/freq/2);
    digitalWrite(RELAY_OUT, LOW);
    delay(1000/freq/2);
  }
}

struct note
{
  uint8_t base;
  uint8_t tempo;
  uint8_t octave;
};

const struct note marseillaise[] = {
  {REN, DOUBLECROCHE, 3}, {REN, CROCHEPOINTEE, 3}, {REN, DOUBLECROCHE, 3}, {SON, NOIRE, 3}, {SON, NOIRE, 3},
  {LAN, NOIRE, 3},  {LAN, NOIRE, 3}, {REN, NOIREPOINTEE, 4}, {SIN, CROCHE, 3}, {SON, CROCHEPOINTEE, 3},
  {SON, DOUBLECROCHE, 3}, {SIN, CROCHEPOINTEE, 3}, {SON, DOUBLECROCHE, 3},

  {MIN, NOIRE, 3}, {DON, BLANCHE, 4}, {LAN, CROCHEPOINTEE, 3}, {FAD, DOUBLECROCHE, 3}, {SON, BLANCHE, 3}, {SIL, SOUPIR, 3},
  {SON, CROCHEPOINTEE, 3}, {LAN, DOUBLECROCHE, 3}, {SIN, NOIRE, 3}, {SIN, NOIRE, 3},   {SIN, NOIRE, 3},
  {DON, CROCHEPOINTEE, 4}, {SIN, DOUBLECROCHE, 3},

  {SIN, NOIRE, 3}, {LAN, NOIRE, 3}, {SIL, SOUPIR, 3}, {LAN, CROCHEPOINTEE, 3}, {SIN, DOUBLECROCHE, 3}, {DON, NOIRE, 4},
  {DON, NOIRE, 4}, {DON, NOIRE, 4}, {REN, CROCHEPOINTEE, 4}, {DON, DOUBLECROCHE, 4}, {SIN, BLANCHE, 3}, {SIL, SOUPIR, 3},
  {REN, CROCHEPOINTEE, 4}, {REN, DOUBLECROCHE, 4},

  {REN, NOIRE, 4}, {SIN, CROCHEPOINTEE, 3}, {SON, DOUBLECROCHE, 3}, {REN, NOIRE, 4}, {SIN, CROCHEPOINTEE, 3},
  {SON, DOUBLECROCHE, 3}, {REN, BLANCHE, 3}, {SIL, DEMISOUPIR, 3}, {REN, DOUBLECROCHE, 3},
  {REN, CROCHEPOINTEE, 3}, {FAD, DOUBLECROCHE, 3}, {LAN, BLANCHE, 3}, {DON, NOIRE, 4}, {LAN, CROCHEPOINTEE, 3},
  {FAD, DOUBLECROCHE, 3},

  {LAN, NOIRE, 3}, {SON, NOIRE, 3}, {FAN, BLANCHE, 3}, {MIN, NOIRE, 3}, {SON, CROCHEPOINTEE, 3}, {SON, DOUBLECROCHE, 3},
  {SON, NOIRE, 3}, {FAD, CROCHEPOINTEE, 3}, {SON, DOUBLECROCHE, 3}, {LAN, BLANCHEPOINTEE, 3}, {SIL, DEMISOUPIR, 3}, {LAN, CROCHE, 3},
  {SIB, NOIREPOINTEE, 3}, {SIB, CROCHE, 3}, {SIB, CROCHE, 3}, {SIB, CROCHE, 3}, {DON, CROCHE, 4}, {REN, CROCHE, 4},

  {LAN, BLANCHEPOINTEE, 3}, {SIB, CROCHE, 3}, {LAN, CROCHE, 3}, {SON, NOIREPOINTEE, 3}, {SON, CROCHE, 3}, {SON, CROCHE, 3},
  {SIB, CROCHE, 3}, {LAN, CROCHE, 3}, {SON, CROCHE, 3}, {SON, NOIRE, 3}, {FAD, CROCHE, 3}, {SIL, DEMIPAUSE, 3},
  {REN, DOUBLECROCHE, 4},

  {REN, BLANCHE+CROCHEPOINTEE, 4}, {REN, DOUBLECROCHE, 4}, {SIN, CROCHEPOINTEE, 3},
  {SON, DOUBLECROCHE, 3}, {LAN, BLANCHEPOINTEE, 3}, {SIL, DEMISOUPIR, 4}, {REN, DOUBLECROCHE, 4},
  {REN, BLANCHE+CROCHEPOINTEE, 4}, {REN, DOUBLECROCHE, 4}, {SIN, CROCHEPOINTEE, 3}, {SON, DOUBLECROCHE, 3}, {LAN, BLANCHEPOINTEE, 3},
  {REN, NOIRE, 3}, {SON, BLANCHEPOINTEE, 3}, {LAN, NOIRE, 3},

  {SIN, RONDE, 3}, {DON, BLANCHE, 4}, {REN, NOIRE, 4}, {MIN, NOIRE, 4}, {LAN, BLANCHEPOINTEE, 3}, {MIN, NOIRE, 4}, {REN, BLANCHE, 4},
  {REN, CROCHEPOINTEE, 4}, {SIN, DOUBLECROCHE, 3}, {DON, CROCHEPOINTEE, 4}, {LAN, DOUBLECROCHE, 3}, {SON, RONDE, 3},

  FIN
};

int getFrequency(int frequency, int octave) {
  return frequency * pow(2, octave);
}

void loop()
{
  float ftempo = 0;
  ftempo = (1000.0 * 60.0) / float(TEMPO);

  for (int n = 0; marseillaise[n].base != FIN; n++) { // boucle de lecture du tableau
    char note = marseillaise[n].base; // on récupère la fréquence de base dans le tableau
    char octave = marseillaise[n].octave; // on récupère l'octave
    int frequence;
    if (note != SIL) {
      frequence = getFrequency(note, octave) / DIVISEUR; //on calcule la bonne fréquence
    }
    //    Serial.println(frequence);
    float duree = ftempo * marseillaise[n].tempo / 32; // on multiplie la duree de base par la valeur de duree du tableau
    //    Serial.println(duree);
    if (note != SIL) {
      tone (RELAY_OUT, frequence); //on joue la note
    }
    delay(duree);
    if (note != SIL) {
      noTone(RELAY_OUT);//on arrete la note
    }
    delay(10);// petite attente pour avoir l'impression d'attaquer la note
  }
  delay(2000);
}

Connecte simplement un relais commandé par un transistor sur la pin 4.

Bonne écoute :smiling_imp:

mdr,
L'idée étant : comment flinguer un relais en se marrent !

cette méthode est plus élégante comme passage d'une partition à un fpga.
Très long à écrire sous cette forme et c'est pour ça que j'avais plutôt choisi une écriture en chiffres.

une micro modif 2ieme ligne : DIVISEUR 1 ou 2 pour écouter avec mon hp

Sait tu que la partition originale avait été achetée par S.gainsbourg et que sur cette partition Rouget avait écrit " etc " signe que ça le gonflait d'écrire cette chanson.....
Serge avait écrit "aux armes etc" suite à sa surprise d'avoir lu cela.

Pour que ma fille écoute , faut que j'attende 3 semaines (5eme année médecine, oqp à 100%)
Mais je te promet de le faire quand je verrai le bout de son nez.

Merci à toi.
Beaucoup

pomme-poire:
Bonjour,

Ma fille m'a dit "pas cap de faire strawarsse "

:grin:

C'est pas chtarwar plutôt ?

L'idée étant : comment flinguer un relais en se marrent !

Voilà.

pomme-poire:
une micro modif 2ieme ligne : DIVISEUR 1 ou 2 pour écouter avec mon hp

Oui c'est ça : 1 pour un HP

Mais c'est plus mélodieux avec un relais :grinning:

Artouste:
:grin:
C'est pas chtarwar plutôt ?

Waooh ! Ça fait épée laser en même temps !!!

j'ai monté un relais statique , c'est bizarre j'entends rien ?
La force n'est plus avec moi.

en 1985 (ou 84, je sais plus trop), j'avais fait une sonnette qui jouait 3 secondes d'une musique au hasard parmi 10 qui étaient dans l'uvprom.
J'ai vendu ma maison avec la sonnette.
Donc maintenant que j'ai tout mon temps, faut que je me construise une sonnette polyphonique pour ma nouvelle maison. (qui à déjà 10 ans. Le temps passe vite)
Avec les pwm peut être.

Bye bye

Non, il faut bien sûr un relais mécanique.

hbachetti:
Non, il faut bien sûr un relais mécanique.

MDR j'en ai eu un !!!!! franchement, j'y croyais pas.

#define DO 65 
#define DOd 69
#define RE 74
#define REd 78
#define MI 83
#define FA 87
#define FAd 93
#define SOL 98
#define SOLd 104
#define LA 110
#define LAd 117
#define SI 123


#define C 65
#define Cd 69
#define D 74
#define Dd 78
#define E 83
#define f 87 
#define fd 93 
#define G 98
#define Gd 104
#define A 110
#define Ad 117
#define B 123

 int nombredenotes=39; 
          
    int tempo=200; 
         
       int melodie[39][4]=
{
     
 /*1*/MI,2,2,0,
 /*2*/SI,1,1,0,
      DO,1,2,0,
      RE,2,2,0,
      DO,1,2,0,
      SI,1,1,0,
      LA,2,1,0, 
      LA,1,1,0,
      DO,1,2,0, 
/*10*/MI,2,2,0, 
      RE,1,2,0,
      DO,1,2,0,
      SI,2,1,0,
      SI,1,1,0,
      DO,1,2,0,
      RE,2,2,0,
      MI,2,2,0,
      DO,2,2,0,
      LA,2,1,0,
/*20*/LA,4,1,0,
      LA,2,1,0,
      RE,1,2,0,
      FA,1,2,0,
      LA,2,2,0,
      SOL,1,2,0, 
      FA,1,2,0,
      MI,3,2,0,
      DO,1,2,0,
      MI,2,2,0,
/*30*/RE,1,2,0,
      DO,1,2,0,
      SI,2,1,0,
      SI,1,1,0,
      DO,1,2,0,
      RE,2,2,0,
      MI,2,2,0,
      DO,2,2,0,
      LA,2,1,0, 
/*39*/LA,3,1,20,
     
};


int HP=12;
void setup()
{
  pinMode(HP,OUTPUT);
  digitalWrite(HP,LOW);
}

void loop() 

{ 
  for (int p=0;p<nombredenotes;p++) 
    {
      int note=melodie[p][0];
      int temps=melodie[p][1];
      int octave=melodie[p][2];
      int silence=melodie[p][3];
      
      int frequence=(note*pow(2,octave)*1.5);  
      int duree=tempo*temps;
      int pause=silence*tempo; 
      
      tone(HP,frequence);
      delay(duree);
      noTone(HP);
      delay(pause);
    }
  delay(10000);
}

:grin:
Tu as essayé la marseillaise ?

oui oui bien sur. nickel ! si je bossait encore, je n'aurais pas manqué de monter ça sur un relais d'une machine histoire de me rouler par terre .V enant de toi, je m'attendais à du bien fait. J'ai survolé ton travail ici, et j'aime bien.
J'aime aussi no windows.
J’essaie de rester discret car je m'exprime très mal et ça énerve tout le monde. Je suis incapable de faire quelque chose sans faire une connerie pour me marrer.

Je suis incapable de faire quelque chose sans faire une connerie pour me marrer.

Cela m'arrive.
Faire jouer la marseillaise à un relais ça me fait marrer, mais pas longtemps :confused:
Mes oreilles souffrent quand même.