Questions sur DirectMusic

Questions sur DirectMusic - C++ - Programmation

Marsh Posté le 21-05-2003 à 14:03:28    

Bonjour à tous!
 
J'ai fini de coder un lecteur MIDI et WAVE basique qui possède une fonction "browse" et permet de lancer ou stopper la lecture du fichier.
 
Je souhaiterais en plus ajouter des fonctions pour gérer le volume, la mise en pause et afficher le temps complet du morceau...
 
Je passe par les interfaces suivantes:

Citation :

IDirectMusicLoader8*      g_pLoader         = NULL;
IDirectMusicPerformance8* g_pPerformance    = NULL;
IDirectMusicSegment8*     g_pSegment        = NULL;


 
Avec celles-ci, je ne trouve aucune fonction gérant le volume ou une mise en pause, et je ne comprends rien aux nombreuses fonctions concernant des temps.
 
La msdn ne m'est d'aucune aide à ce sujet, et les tutoriaux que j'ai trouvés sur le net traitant de ce sujet ne passent pas par les mêmes interfaces que moi...
 
Y a-t-il un moyen de m'en sortir ou dois-je tout recommencer d'une autre façon?


Message édité par Alkor2001 le 21-05-2003 à 14:28:43

---------------
J'aime pas Apple...
Reply

Marsh Posté le 21-05-2003 à 14:03:28   

Reply

Marsh Posté le 21-05-2003 à 16:56:50    

Personne ne sait??  :??:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 21-05-2003 à 17:12:06    

Alkor2001 a écrit :

Personne ne sait??  :??:  


 
T'as downloadé le sdk ? dois bien y avoir un exemple avec un player ou on peut faire ce ke tu veux...
 
pour DirectMusic chais pas, mais pour DirectShow dans le sdk y avait bien des exemples de tout ca. (dans le SDK DX9 en tout cas)

Reply

Marsh Posté le 21-05-2003 à 17:43:14    

Reply

Marsh Posté le 21-05-2003 à 21:11:31    

Konar --> Merci j'ai déjà regardé les exemples et je n'ai rien trouvé d'intéressant pour moi...
 
VisualC++ --> Merci je regarde! De toute façon pour le volume je pensais au pire le gérer directement en touchant au volume de Windows (il doit bien y avoir une fonctione le permettant)
Mon problème était principalement lié à la pause et à l'affichage du temps...
 
 :hello:  


---------------
J'aime pas Apple...
Reply

Marsh Posté le 21-05-2003 à 21:53:12    

Alkor2001 a écrit :

Konar --> Merci j'ai déjà regardé les exemples et je n'ai rien trouvé d'intéressant pour moi...
 


 
bah putain... en 15 secondes, sans installer le sdk dx9, juste en le dezippant, on peut trouver dans Samples\C++\DirectMusic\PlayAudio un proj ki ouvre et lit un fichier, avec un Slider pour ajuster le volume, et un bouton 'stop'.
 
.

Reply

Marsh Posté le 21-05-2003 à 22:01:35    

Konar a écrit :


 
bah putain... en 15 secondes, sans installer le sdk dx9, juste en le dezippant, on peut trouver dans Samples\C++\DirectMusic\PlayAudio un proj ki ouvre et lit un fichier, avec un Slider pour ajuster le volume, et un bouton 'stop'.
 
.


 
En effet j'ai vu ça...
Mais comme je l'ai dit, je n'ai pas recherché grand chose sur le réglage du volume qui de toute façon ne me semblait pas infaisable, mais plutot sur la mise en pause, l'affichage du temps et d'autres idées (dont une barre d'avancement, mais là j'ai laissé tomber)
 
En plus je n'avais pas compris ce passage du code, n'ayant rien capté aux Audiopath (j'avais fait un test, mais je n'avais pas pensé à rajouter l'Audiopath à la fin du PlaySegment)


---------------
J'aime pas Apple...
Reply

Marsh Posté le 22-05-2003 à 21:17:34    

:bounce:  
 
J'aimerais vraiment réussir à intégrer une fonction "Pause" à l'ensemble...
Je suis sans doute passé à côté de la plaque, mais je n'ai rien trouvé permettant de mettre en pause le morceau que je lis (ni en arrêtant le segment, ni en bloquant l'audiopath)...
 
Et pourtant j'en ai trouvé des tutoriaux, et j'ai épluché toutes les interfaces de DirectMusic...
 
 :??:  :??:  :??:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 22-05-2003 à 21:59:12    

Euh faudrait quand mm lire un peu plus les docs
 
Pour la position (que ce soit recup ou les positionner)

Code :
  1. IDirectSoundBuffer8::GetCurrentPosition
  2. IDirectSoundBuffer8::SetCurrentPosition


 
Pour la pause


You can also stop it prematurely by using IDirectSoundBuffer8::Stop. When you stop a buffer prematurely, the play cursor position remains where it is. Hence the call to IDirectSoundBuffer8::SetCurrentPosition in the example, which ensures that the buffer starts from the beginning.

Reply

Marsh Posté le 22-05-2003 à 22:06:38    

VisualC++ a écrit :

Euh faudrait quand mm lire un peu plus les docs


 
C'est ce que je fais... J'apprends énormément de choses, et je passe à côté d'encore plus de trucs importants...
(avant de me lancer dans ma tentative de lecteur midi/wave je n'avais jamais touché aux MFC ou à la programmation Directx)
 
En tout cas merci pour ton aide, je vais regarder ça.


---------------
J'aime pas Apple...
Reply

Marsh Posté le 22-05-2003 à 22:06:38   

Reply

Marsh Posté le 22-05-2003 à 22:18:59    

Je suis en train de regarder, passer par cette interface implique que je recommence tout à zéro, non? Mon fichier sonore est lu par l'intermédiaire de l'interface IDirectMusicPerformance8, alors que pour utiliser IDirectSoundBuffer8 je dois utiliser sa propre fonction play ainsi que les autres...
 
Je me suis planté en choisissant dès le début de passer par DirectMusic plutot que par DirectSound?   :??:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 22-05-2003 à 22:34:15    

Euh la peut pas te dire me suis jamais interesse a DMusic, desole.

Reply

Marsh Posté le 23-05-2003 à 08:22:13    

C'est pas grave, merci quand même pour ton aide!   :hello:  
 
(je vais tester un peu DirectSound pour voir si ça rend mieux que ce que j'ai fait)


---------------
J'aime pas Apple...
Reply

Marsh Posté le 23-05-2003 à 17:07:35    

Bon pour la pause j'ai trouvé une solution temporaire quelque peu spéciale: je mets le tempo à la valeur minimale (0.01), et c'est presque en pause!!!  :pt1cable:  
 
Bon je sais c'est nul, mais je ne le sens pas de tout repasser en DirectSound, trop de boulot...


---------------
J'aime pas Apple...
Reply

Sujets relatifs:

Leave a Replay

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