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 :

Notes de musique en C++


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Notes de musique en C++
    bonjour a tous,

    Je me lance dans un projet dans lequel j'aurais besoin de generer
    des notes de musique (de do à si sur différentes gammes) en C++.
    J'aimerais savoir s'il existe des librairies pour ca, si il faut que je fasse moi
    meme les fonctions et si c'est le cas, comment qu'on fait?????

    Merci d'avance...

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2005
    Messages : 9 810
    Points : 20 967
    Points
    20 967
    Par défaut
    Générer, c'est à dire ?
    Pour un ton pur, c'est une sinusoïde, je ne vois pas où pourrait être le problème

  3. #3
    Candidat au Club
    Inscrit en
    mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    pour faire simple, j'aimerais par exemple une fonction qui sorte un LA sur l'audio du PC. mais je sais pas comment on fait ca et meme si c'est possible en C++.
    Les plusieurs pistes que j'ai, c'est soit de creer le son en sortant une sinusoide avec la bonne fréquence ou alors de faire jouer un .MP3 ou .midi contenant la note voulue. Mais dans les deux cas, je sais pas du tout comment faire...

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2005
    Messages : 9 810
    Points : 20 967
    Points
    20 967
    Par défaut
    En C++ pur, ce n'est pas possible, il faudra prendre une bibliothèque externe pour ça

  5. #5
    Candidat au Club
    Inscrit en
    mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    arf, mauvaise nouvelle!
    tu aurais une idée pour la bibliothèque a utiliser?
    Externe? tu entends par la "dans un autre langage" ou c'est autre chose
    (désolé pour les questions de néophytes mais j'ai du mal avec le vocable info ^^)

    En tout cas, merci beaucoup, je vais reorienté mes recherches...

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2005
    Messages : 9 810
    Points : 20 967
    Points
    20 967
    Par défaut
    On peut passer par les bibliothèques systèmes ou des bibliothèques externes comme FMOD par exemple, OpenAL, ...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    salut,

    Il y a la fonction Playsound qui permet de jour un son WAVE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <windows.h>
     
     
    int main (void){
     
        sndPlaySoundA("son.wav",SND_SYNC);
     
        return 0;
     
    }
    "son.wav" est le fichier WAVE. Dans ce cas il est dans le même répertoire que l'exe. Sinon on met le chemin complet.

    Avec SND_SYNC le prog attend la fin du son pour continuer.
    Avec SND_ASYNC il continue pendant que le son est joué.

    Il faut ajouter "libwinm.a" au projet.


    @+

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 332
    Points : 41 390
    Points
    41 390
    Par défaut
    Citation Envoyé par gugus
    "son.wav" est le fichier WAVE. Dans ce cas il est dans le même répertoire que l'exe. Sinon on met le chemin complet.
    Inexact. Il est seulement cherché dans le répertoire courant.
    Qui, quand on exécute le programme depuis l'explorateur, est celui de l'exe. Quand on exécute le programme depuis Visual, le répertoire courant a tendance à être celui du projet...
    Quand on exécute depuis Dev-C++, c'est les deux, puisque l'exécutable est créé par défaut dans le répertoire du projet...
    Et quand on exécute depuis un invite de commandes, le dossier courant, ben... Ça peut être n'importe où.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    merci de cette précision, ne travaillant que sous Dev je ne l'avais jamais remarqué.


    @+

  10. #10
    Candidat au Club
    Inscrit en
    mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Bah elle me semble bien cette petite fonction... surtout si je peux faire continuer le programme pendant le jeu du son wave.
    Merci beaucoup, je vais essayer tout ca.

    A+

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Sinon il y a SDL, il y a 4 ou 5 tutos dessus sur le site (rubrique "jeux vidéos").

  12. #12
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    4 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : août 2004
    Messages : 4 261
    Points : 6 676
    Points
    6 676
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Miles
    En C++ pur, ce n'est pas possible, il faudra prendre une bibliothèque externe pour ça
    Je m'insurge: c'est tout à fait possible (j'avais programmé un synthétiseur en c++ sous linux quand j'étais à la fac, mais je n'ai malheureusement pas conservé les sources).

    Comme je l'ai expliqué dans un aute topic, sous linux, il suffit d'ouvrir l'audio device avec un fopen et de lui envoyer les buffers qui vont bien. Sous windows, je ne sais pas comment faire, mais je sais que c'est possible de procéder à peu prés de la même façon.

    Cela dit, il sera certainement toujours plus facile d'utiliser une bibliothèque.

    Ensuite, pour sortir un note, tu as plusieurs possibilités:
    - génèrer une sinusoïde que l'on envoie (d'une façon ou d'une autre) à la carte son.
    - enregistrer (d'une façon une d'une autre, avec un instrument ou autre) un LA en wav (ou autre) et lire le fichier.
    - utiliser le synthétiseur midi du matériel (carte son, carte mère) ou de l'OS.
    Tester c'est douter, corriger c'est abdiquer.

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : juillet 2005
    Messages : 9 810
    Points : 20 967
    Points
    20 967
    Par défaut
    D'une manière détournée, tu as utilisée une bibliothèque externe au C++, c'était ça ce que j'entendais par ma phrase

  14. #14
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par druid
    bonjour a tous,

    Je me lance dans un projet dans lequel j'aurais besoin de generer
    des notes de musique (de do à si sur différentes gammes) en C++.
    ..
    Tout dépend de l'OS ; sous Windows je conseillerais Direct Music ou bien Direct Sound pour les sons bruts..
    sndPlaySoundA citée précedemment est assez limitée.
    On ne peut pas créer un WAV de toute pièces sinon tu as aussi les commandes MCI relativement simples à utiliser

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Vous avez dit musique?
    Ah enfin, quelqu'un qui veut transformer cette puissante boîte qui est l'ordinateur en instrument de musique!

    Je suis aussi néophyte que toi druid , mais je me permets de te donner quelques pistes car j'ai cherché pas mal sur ce sujet.

    Si tu veux programmer ton PC pour qu'il génère des sons, il existe le logiciel CSound:
    Le principe et simple, tu codes un fichier « .orc (orchestre) » qui contient les définitions de tes sons (timbre,intensité,durée, etc...) et un fichier « .sco (Score=Partition) » où tu peux créer des partitions de musique.
    La « compilation » de tes codes génère un fichier wave.
    Csound a beaucoup de capacités, mais il est tellement difficile à apprendre que je me demande parfois s'il n'est pas plus intéressant d'apprendre directement le C/C++ (j'exagère ici peut-être! )
    Le site de CSound : http://www.csounds.com/

    Si tu veux travailler sur des fichiers MIDI, je viens de trouver un excellent site qui traite ce sujet (en anglais), c'est ici: http://www.borg.com/~jglatt/.
    T'y trouves des cours, des logiciels libres qui transforment un fichier MIDI en texte et vice versa.
    Il propose aussi un langage de programmation :REXX, destiné (selon l'auteur du site) aux programmeurs non professionnels et qui sert à développer des systèmes MIDI.

    Voilà, j'espère que mes pistes te conviennent.

  16. #16
    Candidat au Club
    Inscrit en
    mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Ourfalli, merci pour ces pistes mais je doute qu'elles conviennent vu que mon projet est de declencher des sons avec des evenements donc je dois vraiment passer par le C++. Pour l'OS que j'utilise, c'est windows (pas taper!!!).

    Bon je commence a avoir une liste quasi exhaustive de toutes les manieres de faire un son en C++. Merci a tous, je vais tenter de faire le tri parmi toutes ces solutions.

    A+

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut C++ obligatoire.
    Druid,
    OK, moi aussi je préfère travailler avec le C++, par curiosité scientifique. Vu ma toute toute petite expérience je pense que le plus simple c'est de générer des fichiers .mp3 qui contiennent les sons de la gamme en son pur (sinusoïdal), c'est facilement faisable avec WaveMaker téléchargeable ici: http://www.01net.com/windows/Multime...hes/22785.html
    Et puis la programmation se réduit à ouvrir ces fichiers selon les événements.
    Mais je ne sais pas ce que ça donne en terme de vitesse d'exécution.
    Voilà, un petite contribution modeste d'un amateur.
    J'espère ne pas avoir dit trop de bétises.
    Bonne journée à toutes et à tous.

  18. #18
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Ourfalli
    Druid,
    (sinusoïdal), c'est facilement faisable avec WaveMaker téléchargeable ici: http://www.01net.com/windows/Multime...hes/22785.html
    Oui mais c'est un logiciel tout fait dont on n'a pas les sources.
    J'ai déjà maintes fois répondu à cette question: sur www.codeproject.com il ya le code source d'un générateur de sons section Sound

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Audacity? C'est open source je pense.
    Sinon, pour en revenir à la lecture de son, je dis et je redis SDL. C'est simple, c'est portable, pourquoi se casser la tete?

  20. #20
    Membre régulier
    Inscrit en
    avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : avril 2004
    Messages : 190
    Points : 88
    Points
    88
    Par défaut
    C'est marrant moi aussi j'ai le meme probleme que druid!
    J'ai un projet ou je dois reproduire une version de "In C" de Terry Riley sur un cluster Beowolf. Pour cela je dois reproduire les differentes partitions!

    Mais je me demande laquelle de ces 2 methode et la plus rapide ( niveau temps d'execution): generer un wav (ou autre) que je jouerai apres, ou generer et jouer directement le son (je sais pas comment d'ailleur) ??

    J'aimerais bien que ca soit le 1er cas!
    Parce qu'en fait pour mon projet le plus important c'est pas la gneration du son par ordinateur mais plustot la synchronisation des sons.
    En plus j'ai trouve des ptits programme tres sympa qui permettent d'ecrire les partition puis de generer des MIDI de ces partitions!

Discussions similaires

  1. Generer note de musique
    Par dridk dans le forum API graphiques
    Réponses: 1
    Dernier message: 12/06/2009, 02h49
  2. Réponses: 15
    Dernier message: 12/01/2008, 22h26
  3. Clé de sol ou note de musique
    Par firiel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/11/2007, 11h09
  4. Fichier Midi : récupérer les notes de musique
    Par zardi dans le forum Multimédia
    Réponses: 2
    Dernier message: 20/12/2005, 02h38
  5. Note de musique
    Par DelphiCool dans le forum Composants VCL
    Réponses: 52
    Dernier message: 30/06/2003, 15h54

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