[wxWidgets] les sons midi...

les sons midi... [wxWidgets] - C++ - Programmation

Marsh Posté le 09-05-2006 à 17:25:35    

Bonjour,  
j'aurai besoin d'aide concernant un projet d'étude qui est le suivant : il faut que je réalise un piano virtuel, plus précisemment je veux jouer des notes en MIDI quand j'appuie sur certaines touches, à la manière d'un piano. Je veux utiliser wxWidgets car j'en ai besoin pour le reste de mon application (qui est presque finie) et je souhaiterai savoir si quelqu'un savait si wxWidgets était capable de gérer les sons midi et si oui comment il fallait s'y prendre ?

Reply

Marsh Posté le 09-05-2006 à 17:25:35   

Reply

Marsh Posté le 09-05-2006 à 18:09:53    

je pense qu'en utilisant wxMediaCtrl tu dois pouvoir y arriver

 

Reply

Marsh Posté le 09-05-2006 à 18:36:10    

Euh en fait cette fonction permet de lire des fichiers du disque dur, enfin certain format de fichiers !
 
Je ne veux pas lire un fichier sur le disque dur mais utiliser ma carte son pour sortir les sons midis que je veux (je sais que c'est possible avec les API windows mais je ne sais pas si ca l'est avec wxWidgets ?!)


Message édité par Kineas le 09-05-2006 à 18:37:02
Reply

Marsh Posté le 09-05-2006 à 19:44:16    

ok
rien ne t'empeche d'utiliser les API windows avec wxWidgets en tout cas, ou d'utiliser toute autre librairie c++ avec wxwidgets.
Je n'ai pas l'impression que wxwidgets le fasse, mais c'est une impression   ;)  

Reply

Marsh Posté le 09-05-2006 à 20:07:17    

Je viens d'essayer les API windows mais j'ai l'erreur suivante avec DevC++ :   [Linker error] undefined reference to `midiOutGetNumDevs@0'  
Ca dit quelque chose a quelqu'un ?

Reply

Marsh Posté le 11-05-2006 à 10:33:56    

Bon vu que je n'ai plus de réponses je vais être un peu plus précis !
Voilà le code que j'essaie d'éxécuter avec DevC++ :  

Code :
  1. int main (int narg, char** arg)
  2. {
  3. ...
  4.     octave  = 4; //l'octave centrale d'un piano a priori...
  5.     duree   = 3; //la note sera tenue pendant 3 je sais pas quelle unité de temps
  6.     instrument = 1 ; //l'instrument 1 correspond au piano
  7.     instrum  = instrument << 8;
  8.     valnote = 12/*12 pour do*/ + 12*octave;
  9.     printf(
  10.     "\n note = %s = %d  \toctave = %d\tduree = %d\tinstrument = %d\n\n",
  11.         "do",12, octave, duree, instrument);
  12.     //on définit l'instrument
  13.     message = instrum | P_program_change | canal ;  // change l'instrument
  14.     midiOutShortMsg( hMidiOut, message ) ;
  15.     //on définit la note a jouer: valeur et volume
  16.  valnote = valnote << 8;
  17.  message = volume | valnote | P_note_on | canal ;
  18.  midiOutShortMsg( hMidiOut, message );
  19.     //durée pendant laquelle la note est on c'est a dire jouée
  20.     Sleep(duree*10000.0/tempo);
  21.     //on met la note à off: elle n'est plus jouée
  22.  message = volume | valnote | P_note_off | canal ;
  23.  midiOutShortMsg( hMidiOut, message ) ;
  24.     system("pause" );
  25. midiOutClose( hMidiOut ) ;
  26. return 0;
  27. }


et voilà les erreurs retournées :  

Code :
  1. [Linker error] undefined reference to `midiOutGetNumDevs@0'
  2.   [Linker error] undefined reference to `midiOutGetDevCapsA@12'
  3.   [Linker error] undefined reference to `midiOutOpen@20'
  4.   [Linker error] undefined reference to `midiOutShortMsg@8'
  5.   [Linker error] undefined reference to `midiOutShortMsg@8'
  6.   [Linker error] undefined reference to `midiOutShortMsg@8'
  7.   [Linker error] undefined reference to `midiOutClose@4'
  8. 96 D:\midi.cpp ld returned 1 exit status


 
Quelqu'un a-t-il une idée sur les librairies qu'il faut inclure dans les paramètres de mon projet ?

Reply

Marsh Posté le 11-05-2006 à 17:20:32    

j'ai une question peut etre un peu debile, merci de ne pas en tenir compte dans ce cas:
 
as tu fais

Code :
  1. #include <windows.h>

Reply

Marsh Posté le 13-05-2006 à 14:43:07    

Euh oui bien sure^^
 
Un autre module  de mon apllication me pose es problèmes similaires lorsque j'essaye d'utiliser un glcanvas :
 

Code :

 


Toujours personne pour venir à mon aide ?
 

 

 

Reply

Marsh Posté le 13-05-2006 à 20:12:25    

Salut,
C'est une erreur du linker, as tu lier la librairie winmm.lib (et le include c'est Mmsystem.h)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed