Go Down

Topic: strawarsse (Read 869 times) previous topic - next topic

pomme-poire

Feb 19, 2019, 03:40 pm Last Edit: Feb 19, 2019, 04:59 pm by pomme-poire
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 !  :) 


Ha oui....la balise :)
Code: [Select]




                    /******* 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
}

kamill


pomme-poire

merci , ça fait plaisir.

hbachetti

#3
Feb 20, 2019, 12:08 pm Last Edit: Feb 20, 2019, 12:08 pm by hbachetti
 :smiley-mr-green:  :smiley-mr-green:  :smiley-mr-green:

Tu devrais faire écouter ça à ta fille :
Code: [Select]


#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  :smiley-evil:
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

pomme-poire

#4
Feb 20, 2019, 03:02 pm Last Edit: Feb 20, 2019, 04:00 pm by pomme-poire
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




Artouste

Bonjour,

Ma fille m'a dit "pas cap de faire strawarsse "
:smiley-mr-green:

C'est pas chtarwar plutôt ?

hbachetti

Quote
L'idée étant : comment flinguer un relais en se marrent !
Voilà.

Quote from: 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   :smiley-lol:
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

lesept

:smiley-mr-green:
C'est pas chtarwar plutôt ?
Waooh ! Ça fait épée laser en même temps !!!
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

pomme-poire

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


hbachetti

Non, il faut bien sûr un relais mécanique.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

pomme-poire

#10
Feb 21, 2019, 10:55 am Last Edit: Feb 21, 2019, 11:17 am by pomme-poire
Non, il faut bien sûr un relais mécanique.
MDR j'en ai eu un  !!!!! franchement, j'y croyais pas.

Code: [Select]



#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);
}

hbachetti

 :smiley-grin:
Tu as essayé la marseillaise ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

pomme-poire

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.

hbachetti

Quote
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  :smiley-confuse:
Mes oreilles souffrent quand même.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up