Problème sur routines de WinMM.dll, gestion de Midi

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 13 août 2008 à 19:29
 Utilisateur anonyme - 14 août 2008 à 14:06
Bonsoir,
je voudrais pouvoir jouer un son midi sans media player.
J'ai trouvé sur MSDN quelques infos interessantes dans la DLL WinMM.dll ...
mais je ne comprends pas trop, voila un extrait d'une routine :

=====================================================================



Windows Multimedia


midiOutOpen

<!--Content type: PSDK_3. Transform: psdk2mtps.xslt.-->
MidiOutProc.



dwCallbackInstance


User instance data passed to the callback. This parameter is not used with window callbacks or threads.



dwFlags


Callback flag for opening the device. It can be the following values.





Value,
Meaning,

----

CALLBACK_EVENT,
The dwCallback parameter is an event handle. This callback mechanism is for output only.,

----

CALLBACK_FUNCTION,
The dwCallback parameter is a callback function address.,

----

CALLBACK_NULL,
There is no callback mechanism. This value is the default setting.,

----

CALLBACK_THREAD,
The dwCallback parameter is a thread identifier.,

----

CALLBACK_WINDOW,
The dwCallback parameter is a window handle.




Return Values


Returns MMSYSERR_NOERROR if successful or an error otherwise. Possible error values include the following.





Value,
Description,

----

MIDIERR_NODEVICE,
No MIDI port was found. This error occurs only when the mapper is opened.,

----

MMSYSERR_ALLOCATED,
The specified resource is already allocated.,

----

MMSYSERR_BADDEVICEID,
The specified device identifier is out of range.,

----

MMSYSERR_INVALPARAM,
The specified pointer or structure is invalid.,

----

MMSYSERR_NOMEM,
The system is unable to allocate or lock memory.




Remarks


To determine the number of MIDI output devices present in the system, use the midiOutGetNumDevs function. The device identifier specified by wDeviceID varies from zero to one less than the number of devices present. MIDI_MAPPER can also be used as the device identifier.


If a window or thread is chosen to receive callback information, the following messages are sent to the window procedure or thread to indicate the progress of MIDI output: MM_MOM_OPEN, MM_MOM_CLOSE, and MM_MOM_DONE.


If a function is chosen to receive callback information, the following messages are sent to the function to indicate the progress of MIDI output: MOM_OPEN, MOM_CLOSE, and MOM_DONE.



Requirements



  Windows NT/2000/XP: Included in Windows NT 3.1 and later.
  Windows 95/98/Me: Included in Windows 95 and later.
  Header: Declared in Mmsystem.h; include Windows.h.
  Library: Use Winmm.lib.

=======================================================================

J'ai déjà fait en sorte que mes musiques midi (sous forme de ressources attachées à l'executable) soient extraites sous forme de fichier.
Mais j'ai peur qu'il ne faille créer un "stream" avec le midi dedans pour appeller certaines fonctions, comme MidiStreamOpen, MidiStreamRestart, MidiStreamClose ...

Quelqu'un aurait-il une solution ?

Je rechigne à utiliser la librairie Bass.dll car elle est assez volumineuse (pour trainer derrière l'executable c'est pas top), elle n'est pas de moi (celle de windows non plus me direz-vous mais c'est pas pareil), et elle est payante si on commercialise une application avec cette dll dedans ...

Cordialement, Bacterius !

3 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
13 août 2008 à 19:30
Foutue TextBox ... tout mon texte est déchiré ...

Cordialement, Bacterius !
0
Utilisateur anonyme
13 août 2008 à 19:58
Salut,

Le probleme est bien plus complexe : Pour utiliser un Midi il faut une SoundFont (En général ta carte son en a une par défaut) qu'il va falloir gérer : Et la aie aie aie
0
Utilisateur anonyme
14 août 2008 à 14:06
Mais il exite l'OSCD (D pour delphi ) pour gérer cela (Le FTP semble de nouveau fonctionné enfin ). Mais ca reste quand meme chaud
0
Rejoignez-nous