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

 C Discussion :

simulation de piano


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 1
    Par défaut simulation de piano
    bonjour à tous je suis nouveau en langage c , et j 'ai deja et un projet qui est celui de simuler un piano en c j' utilise comme compilateur dev-c++ alors j ai juste besoin d'un petit coup de pouce j'ai fait le sous programme avec switch alors si quelqu'un pouvait m' aider a comprendre ou j'ai fausser le compilateur me montre que je n'ai que deux erreurs avant compilation alors merci de m 'aider a m'améliorer !!!!
    au faite je ne demande pas à effectuer mon programme avec les fichiers midi mais juste avec la bibliotèque dos.h comme dans le document !!
    pardonnez moi mais je ne peu pas montrer le programme dans la zone texte mais je ne peu l'envoyée que par pièce jointe pardonner pour le désagrément!!!!

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #include<conio.h>
    #include<stdio.h>
    #include<dos.h>
     void sonore ( char son);
       {
          switch (son){ 
                 case 'a' : sound(8000);
                           delay(1000);
                           no sound();
                           break;
                 case 'z' : sound(9000);
                           delay(1000);
                           no sound();
                           break;
     
                 case 'e' : sound(7000);
                           delay(1000);
                           no sound();
                           break;
                 case 'r' : sound(4000);
                           delay(1000);
                           no sound();
                           break;
                 case 't' :  sound(1500);
                           delay(1000);
                           no sound();
                           break;
                 case 'y': sound(5000);
                           delay(1000);
                           no sound();
                           break;
                 case 'u':  sound(3000);
                           delay(1000);
                           no sound();
                           break;
                 case 'i':  sound(8500);
                           delay(1000);
                           no sound();
                           break;
     
     
                           } 
      }
     
    main()
      {
          char son;
          printf(" tapez sur les lettres suivantes:/n");
          printf(" a,z,e,r,t,y,u,i");
          sonore(son);
          getch();
      }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour,

    C'est bien d'avoir posté un extrait de ton code. Il faudrait aussi que tu mettes les messages d'erreur de ton compilateur, avec les numéros de lignes. Mais, en tout état de cause, ceci :

    Citation Envoyé par strikermike Voir le message
    ... ne fonctionnera sûrement pas. Tu ne peux pas mettre d'espace dans un nom de fonction. Le C, comme la majorité des langages, utilise les blancs pour séparer les différentes instructions. Si tu tiens à séparer les deux, utilise l'underscore "_" à la place.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par strikermike Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include<conio.h>
    #include<stdio.h>
    #include<dos.h>
     void sonore ( char son);
       {
          switch (son){ 
                 case 'a' : sound(8000);
                           delay(1000);
                           no sound();
                           break;
    Pas de ';' après une défintion de fonction.

    Je ne sais pas où tu a trouvé ce code, mais c'est de C non portable (Turbo C) des années 90...

    Voilà une adaptation pour Windows :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    #include<conio2.h>
    #include<stdio.h>
    #include<windows.h>
     
    void sonore (int son)
    {
       switch (son)
       {
       case 'a':
          Beep (8000, 1000);
          break;
       case 'z':
          Beep (9000, 1000);
          break;
     
       case 'e':
          Beep (7000, 1000);
          break;
       case 'r':
          Beep (4000, 1000);
          break;
       case 't':
          Beep (1500, 1000);
          break;
       case 'y':
          Beep (5000, 1000);
          break;
       case 'u':
          Beep (3000, 1000);
          break;
       case 'i':
          Beep (8500, 1000);
          break;
       }
    }
     
    int main (void)
    {
       int son;
       printf (" tapez sur les lettres suivantes:/n");
       printf (" a,z,e,r,t,y,u,i ou q pour quitter");
     
       do
       {
          son = getch ();
          sonore (son);
       }
       while (son != 'q');
       return 0;
    }
    Mais évidemment, à part casser mes oreilles de musicien (pourquoi des fréquences si élevées), cette chose ne fait rien d'intéressant.

    As-tu des notions de théorie de la musique ? Sais-tu ce qu'est une note ? Quel est le rapport de fréquence entre les notes ?

    Je rappelle que le LA du violon (corde à vide) est à 440 Hz, ce qui est déjà assez haut... Il n'y a pas de notes 'musicales' au-dessus de 2000 Hz.

  4. #4
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Citation Envoyé par Emmanuel Delahaye Voir le message
    Je rappelle que le LA du violon (corde à vide) est à 440 Hz, ce qui est déjà assez haut... Il n'y a pas de notes au-dessus de 1500 Hz.
    Je ne serais pas aussi catégorique.
    http://fr.wikipedia.org/wiki/Tessiture

    A+

    Pfeuh

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pfeuh Voir le message
    Je ne serais pas aussi catégorique.
    http://fr.wikipedia.org/wiki/Tessiture
    Oui, c'est techniquement possible, mais musicalement sans intérêt.

    OK pour 2000 Hz (3ème octave de la flute) Au-dessus, ce serait la troisième octave du picolo... Âmes sensibles, s'abstenir... C'est les ultra-aigus du violon, techniquement, c'est épostouflant, mais musicalement.... bof...

    La tessiture musicale courante est entre 30 et 2000 Hz environ. Au-dessus il y a bien sûr les harmoniques qui donnent le timbre (-> 20 KHz pour un jeune enfant, A 52 ans, je n'entend plus au-dessus de 13 kHz...)

Discussions similaires

  1. Simulation corde de piano sous MATLAB
    Par Headwyn dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 30/11/2013, 00h14
  2. Probleme Voyageur de Commerce - Recuit Simulé
    Par dinver dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/06/2009, 22h26
  3. simuler l'execution d'un message
    Par gaut dans le forum C
    Réponses: 14
    Dernier message: 24/07/2003, 23h01
  4. Simuler un coup de molette sur un memo...
    Par dynobremo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/02/2003, 11h31
  5. Simulation de transmission de paquet entre différent réseaux
    Par MelloW dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 19h51

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