Problème sur routines de WinMM.dll, gestion de Midi
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDerniè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 :
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 ...
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