IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Nouvelle bibliothèque "Musique"


Sujet :

Arduino

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte oisif et versatile
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Autodidacte oisif et versatile
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Par défaut Nouvelle bibliothèque "Musique"
    Bonjour
    Je suis nouveau sur Arduino (et en C) et un de mes premiers projets est de développer des jouets pour bébé. Pour cela j'ai besoin de jouer des musiques de comptines.
    J'ai des dizaines de morceaux composés chacun de dizaines de notes. Plutôt que de taper laborieusement mes fréquences et mes durées avec "Tone" dans des tableaux de chiffres, j'ai développé un petit programme qui permet d'entrer une partition "au kilomètre" et de la faire jouer, en entrant une simple chaine : "LA31MI42SO22DO53" qui veut dire La de la gamme 3 (440hz) pendant 1 temps, ensuite Mi de la gamme 4 pendant 2 temps etc.

    Je souhaite transformer ce programme en un objet de bibliothèque pour l'utiliser dans mes différentes applications. Je bloque à la déclaration de mon tableau de notes "char *note[]" qui donne des erreurs de compilation: où et comment faut-il le faire? dans le .h? dans le .cpp? avec [] ou pas? avec une * ? avec un dimensionnement? Tout marche dans mon petit programme ci-dessous, mais impossible d'en faire un include.
    Après plusieurs tentatives infructueuses et plusieurs jours de lectures sur les classes, les objets les includes, pointeurs et autres je me tourne vers vous pour des conseils.

    J'ai mis en gras ce qui pose souci (pour info j'ai réussi à faire mon objet en transformant le tableau note[] en string ("DODDREMBMIFAFD...") et j'en extrais 2 à 2 les caractères avec substring mais il y a peut-être plus simple, plus économe, plus rapide et plus élégant? j'ai mis ces fichiers en PJ si vous voulez les utiliser, ils fonctionnent bien, et c'est CADEAU!)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    const char *note[] = {"DO","DD","RE","MB","MI","FA","FD","SO","SD","LA","SB","SI","SL"};
    const int tempo=300, brocheBIP=10;
    const String partition = "SI21MI31MB31SI21MI31FD31SO32";
    const int longueur = partition.length();
    int frequence;
    byte duree, gamme;
    String noteLue;
    
    void setup() {
      pinMode(brocheBIP,OUTPUT);
    }
    
    void loop() {
      for (int i=1 ; i < longueur;  i+=4) {
        noteLue = partition.substring(i-1,i+1) ;
        byte j=1;
        while (j < 14) {
          if (noteLue == note[j-1]) {
            gamme = partition.substring(i+1,i+2).toInt() ;
            duree = partition.substring(i+2,i+3).toInt() ;  
            frequence=int(440*pow(2,(gamme+j/12-15/4)));
            if (j==13) {
              noTone(brocheBIP);
              } else {
              tone(brocheBIP, frequence,(60000/tempo)*duree);
              } 
            delay((60000/tempo)*duree);
            noTone(brocheBIP);
          }
        j++;
        }
      }
    }
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo