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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

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

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

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

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    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.

  8. #8
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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

  9. #9
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par Miles
    En C++ pur, ce n'est pas possible, il faudra prendre une bibliothèque externe pour ça
    Allez donc faire un petit tour du coté de la FAQ Delphi

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Si tu n'utilises pas de graphismes avec sdl, je ne vois pas en quoi elles sont incompatibles. Au pire, il serait peut-être nécessaire de spécifier à sdl que tu n'utilises pas de fenètre (j'avais vu une astuce pour ça, il suffit d'appeler setVideo avec 0 pour height et width), mais je ne pense même pas que ce soit nécessaire. Sinon si tu veux faire du graphisme en fenètre ET du graphisme sdl, il y a un tuto sur une combinaison wxWidgets+sdl quelque part sur développez.
    Citation Envoyé par waskol
    Allez donc faire un petit tour du coté de la FAQ Delphi
    Ha bas le delphi !

  11. #11
    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

  12. #12
    Nouveau 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
    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.

  13. #13
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    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+

  14. #14
    Nouveau 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
    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.

  15. #15
    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

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