Accueil > > > DIRECT X : AUDIO
DIRECT X : AUDIO
Information sur la source
Description
Désolé d'avoir mis si longtemps à poster une source mais en BAC STI on a un projet BAC (cette année, c'était un I-Cybie, le robot chien) et comme ce projet coute un coeff 7 à l'écriture et 9 à l'oral (snif je passe lundi) j'avais pas envie de prendre de risque. Bon passons au vif du sujet, ce programme sert à jouer des fichiers musicaux tel que le MP3, MIDI ou WAVE (pour l'instant ceux-là). Je ne mets pas de WAV ni de MP3 volontairement (trop gros) alors vous n'avez que le midi. Il vous suffit de remplacer les lignes nécessaires. Voici le code du fichier DX_Audio.cpp
Source
- /********************************************************/
- /* Nom du Fichier : DX_AUDIO.cpp */
- /* Description : Implémentation des fonctions */
- /********************************************************/
- /* Auteur : JANISZEWSKI Jérémy alias MasterShadows */
- /* Date : 25 05 2005 */
- /********************************************************/
- /* (C) Copyright 2005 - SHADOWS Productions */
- /********************************************************/
-
- #include "DX_AUDIO.h"
-
-
- /***************************************************************************************************************/
- // Chargement d'un Fichier MP3
-
- CDirectX_Audio_MP3::CDirectX_Audio_MP3()
- {
- }
-
- CDirectX_Audio_MP3::~CDirectX_Audio_MP3()
- {}
-
- /************************************/
- /* */
- /* Efface l'allocation d'objet */
- /* */
- /************************************/
-
- void CDirectX_Audio_MP3::vEffacer(void)
- {
- vArreter_Musique();
- }
-
- /************************************/
- /* */
- /* Initialisation du graphe et */
- /* charge le fichier MP3 */
- /* */
- /************************************/
-
- bool CDirectX_Audio_MP3::bJouer_Audio_MP3(unsigned short* Musique_a_Jouer)
- {
- HRESULT hresultat;
-
- // Initialisation du composant COM
- CoInitialize(NULL);
-
- // Création du graphe
- CoCreateInstance( CLSID_FilterGraph,
- NULL,
- CLSCTX_INPROC_SERVER,
- IID_IGraphBuilder,
- (void**)&pIGraph_Builder);
-
- // Interface d'objets
- pIGraph_Builder->QueryInterface(IID_IMediaControl, (void**)&pIMedia_Control);
- pIGraph_Builder->QueryInterface(IID_IMediaEvent, (void**)&pIMedia_Event);
- pIGraph_Builder->QueryInterface(IID_IMediaSeeking, (void**)&pIMedia_Seeking);
-
- // Charge le fichier musical
- hresultat = pIGraph_Builder->RenderFile(Musique_a_Jouer, NULL);
- if(hresultat != S_OK)
- {
- return (0);
- }
-
- // Rapidité de la musique ( <1 -> Lent, 1 -> Normal, >1 -> Rapide)
- pIMedia_Seeking->SetRate(1);
-
- // Joue la musique
- pIMedia_Control->Run();
-
- // Musique d'arrière plan
- bBackGroundMusiqueActive = 1;
-
- return 1;
- }
-
- /************************************************/
- /* */
- /* Fonction qui efface la mémoire allouée */
- /* */
- /************************************************/
-
- void CDirectX_Audio_MP3::vArreter_Musique()
- {
- // Stop la musique si elle est en train d'être jouée
- pIMedia_Control->Stop();
-
- // On efface tout
- pIMedia_Control->Release();
- pIMedia_Event->Release();
- pIGraph_Builder->Release();
- }
-
- /****************************************************/
- /* */
- /* Fonction qui test le status de la musique pour */
- /* voir si elle est finie et si elle a besoin */
- /* d'être redemarré. */
- /* */
- /****************************************************/
-
- void CDirectX_Audio_MP3::vCheckStatusMusique(unsigned int Rejoue)
- {
- long Evenement_Code;
-
- pIMedia_Event->WaitForCompletion(0, &Evenement_Code);
-
- // Si la musique est finie, on la redémarre
- if((Evenement_Code == EC_COMPLETE) && (Rejoue == 1))
- {
- // On met la position à 0.
- LONGLONG lPosition_Depart = 0;
-
- // On arrête la musique
- pIMedia_Control->Stop();
-
- // Set les positions
- pIMedia_Seeking->SetPositions(&lPosition_Depart, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning);
-
- // On rejoue la musique
- pIMedia_Control->Run();
- }
- }
-
- /************************************************************************************************************/
- // Chargement d'une musique MIDI
-
- CDirectX_Audio_MIDI::CDirectX_Audio_MIDI()
- {}
-
- CDirectX_Audio_MIDI::~CDirectX_Audio_MIDI()
- {}
-
- /************************************/
- /* */
- /* Efface les objets alloués */
- /* */
- /************************************/
-
- void CDirectX_Audio_MIDI::vEffacer( void )
- {
- if( pIDMSegment ) {
- if( pIDMPerformance )
- pIDMSegment->Unload( pIDMPerformance );
- }
- SAFE_RELEASE( pIDMSegment );
-
- SAFE_RELEASE( pIDMChargeur );
- SAFE_RELEASE( pIDMPerformance );
- }
-
- /**********************************************/
- /* */
- /* Initialisation du système sonore et charge */
- /* des sons variés. */
- /* */
- /**********************************************/
-
- bool CDirectX_Audio_MIDI::bInitialisation_Sonore( HWND hWnd, WCHAR* midi_a_jouer )
- {
- HRESULT hResultat;
- IDirectMusicAudioPath8 *dmAP;
-
- // Initialisation du composant COM
- CoInitialize( NULL );
-
- // Création du chargeur
- if( FAILED( hResultat = CoCreateInstance(CLSID_DirectMusicLoader,
- NULL,
- CLSCTX_INPROC,
- IID_IDirectMusicLoader8,
- (void**) &pIDMChargeur)))
- {
- return( 0 );
- }
-
- // Creation de la performance
- if( FAILED( hResultat = CoCreateInstance(CLSID_DirectMusicPerformance,
- NULL,
- CLSCTX_INPROC,
- IID_IDirectMusicPerformance8,
- (void**) &pIDMPerformance)))
- {
- return( 0 );
- }
-
- // Initialisation audio
- if( FAILED( hResultat = pIDMPerformance->InitAudio( NULL,
- NULL,
- hWnd,
- DMUS_APATH_DYNAMIC_STEREO,
- 64,
- DMUS_AUDIOF_ALL,
- NULL)))
- {
- return( 0 );
- }
-
- // Chemin par défaut
- if( FAILED( pIDMPerformance->GetDefaultAudioPath(&dmAP)))
- {
- return(0);
- }
-
- // Volume par défaut
- if( FAILED( dmAP->SetVolume(0,0)))
- {
- return( 0 );
- }
-
- // Charge le son d'un fichier
- if ( FAILED(pIDMChargeur->LoadObjectFromFile ( CLSID_DirectMusicSegment,
- IID_IDirectMusicSegment8,
- midi_a_jouer,
- (LPVOID*) &pIDMSegment)))
- {
- return( 0 );
- }
-
- // Télécharge les données
- if ( FAILED ( pIDMSegment->Download( pIDMPerformance )))
- {
- return( 0 );
- }
-
- // Réussite
- return( 1 );
- }
-
- /********************************/
- /* */
- /* Joue le fichier sonore */
- /* */
- /********************************/
-
- void CDirectX_Audio_MIDI::vLecture_Son()
- {
- // Lit le segment sonore
- pIDMPerformance->PlaySegmentEx( pIDMSegment,
- NULL,
- NULL,
- 0, // Aucun flag pour avoir une vitesse de lecture normale
- 0,
- NULL,
- NULL,
- NULL);
- }
-
- /***********************************************************************************************************/
- // Chargement d'un son Wave
-
- // Constructeur
- CDirectX_Audio_Systeme_Sonore::CDirectX_Audio_Systeme_Sonore()
- {
- pIDMChargeur = NULL;
- pIDMPerformance = NULL;
- }
-
- // Destructeur
- CDirectX_Audio_Systeme_Sonore::~CDirectX_Audio_Systeme_Sonore()
- {
- SAFE_RELEASE(pIDMChargeur);
- SAFE_RELEASE(pIDMPerformance);
- }
-
- /********************************************/
- /* */
- /* Initialisation du moteur sonore. */
- /* */
- /********************************************/
-
- HRESULT CDirectX_Audio_Systeme_Sonore::hrInitialisation_Systeme_Sonore(void)
- {
- HRESULT hResultat;
- IDirectMusicAudioPath8* IDMAChemin;
-
- // Initialisation du composant COM
- CoInitialize(NULL);
-
- // Création du chargeur
- if(FAILED(hResultat = CoCreateInstance( CLSID_DirectMusicLoader,
- NULL,
- CLSCTX_INPROC,
- IID_IDirectMusicLoader8,
- (void**)&pIDMChargeur)))
- {
- return (DIRECT_X_ERREUR_CHARGEUR_MUSIQUE);
- }
-
- // Création de la performance
- if(FAILED(hResultat = CoCreateInstance( CLSID_DirectMusicPerformance,
- NULL,
- CLSCTX_INPROC,
- IID_IDirectMusicPerformance8,
- (void**)&pIDMPerformance)))
- {
- return(DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
- }
-
- // Initialise l'audio
- if(FAILED(hResultat = pIDMPerformance->InitAudio( NULL,
- NULL,
- hWnd,
- DMUS_APATH_DYNAMIC_STEREO,
- 64,
- DMUS_AUDIOF_ALL,
- NULL)))
- {
- return(DIRECT_X_ERREUR_INIT_AUDIO);
- }
-
- // Chemin par défaut
- if(FAILED(pIDMPerformance->GetDefaultAudioPath(&IDMAChemin)))
- {
- return(DIRECT_X_ERREUR_CHEMIN);
- }
-
- // Volume par défaut
- if(FAILED(IDMAChemin->SetVolume(0,0)))
- {
- return(DIRECT_X_ERREUR_VOLUME);
- }
-
- return S_OK;
- }
-
- /********************************************************/
- /* */
- /* Charge un son et le sauvegarde dans un objet */
- /* CDirectX_Audio_WAVE_Son. */
- /* */
- /********************************************************/
-
- HRESULT CDirectX_Audio_Systeme_Sonore::hrCharger_Son(char* szNomFichier, CDirectX_Audio_WAVE_Son* pCDAWS)
- {
- WCHAR szWideNomFichier[512];
-
- // Soyons sur que l'audio est initialisé
- if(!pIDMChargeur)
- {
- return (DIRECT_X_ERREUR_CHARGEUR_MUSIQUE);
- }
-
- if(!pIDMPerformance)
- {
- return(DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
- }
-
- // Effaçons les sons s'ils existent
- if(pCDAWS->pIDMSegment)
- {
- pCDAWS->pIDMSegment->Unload(pIDMPerformance);
- pCDAWS->pIDMSegment->Release();
- pCDAWS->pIDMSegment = NULL;
- }
-
- // Copie dans le nom de fichier
- DXUtil_ConvertGenericStringToWideCch(szWideNomFichier, szNomFichier, 512);
-
- // Charge un son à partir d'un fichier
- if(FAILED(pIDMChargeur->LoadObjectFromFile(CLSID_DirectMusicSegment,
- IID_IDirectMusicSegment8,
- szWideNomFichier,
- (LPVOID*)&pCDAWS->pIDMSegment)))
- {
- return (DIRECT_X_ERREUR_CHARGEMENT);
- }
-
- pCDAWS->pIDMPerformance = pIDMPerformance;
-
- // Télécharge les données
- if(FAILED(pCDAWS->pIDMSegment->Download(pIDMPerformance)))
- {
- return (DIRECT_X_ERREUR_TELECHARGEMENT);
- }
-
- return S_OK;
- }
-
- /********************************/
- /* */
- /* Lit le son chargé en mémoire */
- /* */
- /********************************/
-
- HRESULT CDirectX_Audio_Systeme_Sonore::hrLecture_Son(CDirectX_Audio_WAVE_Son* cdxaws)
- {
- // Soyons sur qu'un objet performance est présent
- if(!pIDMPerformance)
- {
- return (DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
- }
-
- if(!cdxaws->pIDMSegment)
- {
- return (DIRECT_X_ERREUR_PAS_SEGMENT);
- }
-
- // Jouons le segment sonore
- if(FAILED(pIDMPerformance->PlaySegmentEx(cdxaws->pIDMSegment,
- NULL,
- NULL,
- DMUS_SEGF_DEFAULT | DMUS_SEGF_SECONDARY,
- 0,
- NULL,
- NULL,
- NULL)))
- {
- return (DIRECT_X_ERREUR_ECHEC_LECTURE);
- }
-
- return S_OK;
- };
-
- /****************/
- /* */
- /* Constructeur */
- /* */
- /****************/
-
- CDirectX_Audio_WAVE_Son::CDirectX_Audio_WAVE_Son()
- {
- pIDMSegment = NULL;
- pIDMPerformance = NULL;
- }
-
- /*****************/
- /* */
- /* Destructeur */
- /* */
- /*****************/
-
- CDirectX_Audio_WAVE_Son::~CDirectX_Audio_WAVE_Son()
- {
- if(pIDMSegment)
- {
- if(pIDMPerformance)
- pIDMSegment->Unload(pIDMPerformance);
- }
- SAFE_RELEASE(pIDMSegment);
- }
/********************************************************/
/* Nom du Fichier : DX_AUDIO.cpp */
/* Description : Implémentation des fonctions */
/********************************************************/
/* Auteur : JANISZEWSKI Jérémy alias MasterShadows */
/* Date : 25 05 2005 */
/********************************************************/
/* (C) Copyright 2005 - SHADOWS Productions */
/********************************************************/
#include "DX_AUDIO.h"
/***************************************************************************************************************/
// Chargement d'un Fichier MP3
CDirectX_Audio_MP3::CDirectX_Audio_MP3()
{
}
CDirectX_Audio_MP3::~CDirectX_Audio_MP3()
{}
/************************************/
/* */
/* Efface l'allocation d'objet */
/* */
/************************************/
void CDirectX_Audio_MP3::vEffacer(void)
{
vArreter_Musique();
}
/************************************/
/* */
/* Initialisation du graphe et */
/* charge le fichier MP3 */
/* */
/************************************/
bool CDirectX_Audio_MP3::bJouer_Audio_MP3(unsigned short* Musique_a_Jouer)
{
HRESULT hresultat;
// Initialisation du composant COM
CoInitialize(NULL);
// Création du graphe
CoCreateInstance( CLSID_FilterGraph,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,
(void**)&pIGraph_Builder);
// Interface d'objets
pIGraph_Builder->QueryInterface(IID_IMediaControl, (void**)&pIMedia_Control);
pIGraph_Builder->QueryInterface(IID_IMediaEvent, (void**)&pIMedia_Event);
pIGraph_Builder->QueryInterface(IID_IMediaSeeking, (void**)&pIMedia_Seeking);
// Charge le fichier musical
hresultat = pIGraph_Builder->RenderFile(Musique_a_Jouer, NULL);
if(hresultat != S_OK)
{
return (0);
}
// Rapidité de la musique ( <1 -> Lent, 1 -> Normal, >1 -> Rapide)
pIMedia_Seeking->SetRate(1);
// Joue la musique
pIMedia_Control->Run();
// Musique d'arrière plan
bBackGroundMusiqueActive = 1;
return 1;
}
/************************************************/
/* */
/* Fonction qui efface la mémoire allouée */
/* */
/************************************************/
void CDirectX_Audio_MP3::vArreter_Musique()
{
// Stop la musique si elle est en train d'être jouée
pIMedia_Control->Stop();
// On efface tout
pIMedia_Control->Release();
pIMedia_Event->Release();
pIGraph_Builder->Release();
}
/****************************************************/
/* */
/* Fonction qui test le status de la musique pour */
/* voir si elle est finie et si elle a besoin */
/* d'être redemarré. */
/* */
/****************************************************/
void CDirectX_Audio_MP3::vCheckStatusMusique(unsigned int Rejoue)
{
long Evenement_Code;
pIMedia_Event->WaitForCompletion(0, &Evenement_Code);
// Si la musique est finie, on la redémarre
if((Evenement_Code == EC_COMPLETE) && (Rejoue == 1))
{
// On met la position à 0.
LONGLONG lPosition_Depart = 0;
// On arrête la musique
pIMedia_Control->Stop();
// Set les positions
pIMedia_Seeking->SetPositions(&lPosition_Depart, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning);
// On rejoue la musique
pIMedia_Control->Run();
}
}
/************************************************************************************************************/
// Chargement d'une musique MIDI
CDirectX_Audio_MIDI::CDirectX_Audio_MIDI()
{}
CDirectX_Audio_MIDI::~CDirectX_Audio_MIDI()
{}
/************************************/
/* */
/* Efface les objets alloués */
/* */
/************************************/
void CDirectX_Audio_MIDI::vEffacer( void )
{
if( pIDMSegment ) {
if( pIDMPerformance )
pIDMSegment->Unload( pIDMPerformance );
}
SAFE_RELEASE( pIDMSegment );
SAFE_RELEASE( pIDMChargeur );
SAFE_RELEASE( pIDMPerformance );
}
/**********************************************/
/* */
/* Initialisation du système sonore et charge */
/* des sons variés. */
/* */
/**********************************************/
bool CDirectX_Audio_MIDI::bInitialisation_Sonore( HWND hWnd, WCHAR* midi_a_jouer )
{
HRESULT hResultat;
IDirectMusicAudioPath8 *dmAP;
// Initialisation du composant COM
CoInitialize( NULL );
// Création du chargeur
if( FAILED( hResultat = CoCreateInstance(CLSID_DirectMusicLoader,
NULL,
CLSCTX_INPROC,
IID_IDirectMusicLoader8,
(void**) &pIDMChargeur)))
{
return( 0 );
}
// Creation de la performance
if( FAILED( hResultat = CoCreateInstance(CLSID_DirectMusicPerformance,
NULL,
CLSCTX_INPROC,
IID_IDirectMusicPerformance8,
(void**) &pIDMPerformance)))
{
return( 0 );
}
// Initialisation audio
if( FAILED( hResultat = pIDMPerformance->InitAudio( NULL,
NULL,
hWnd,
DMUS_APATH_DYNAMIC_STEREO,
64,
DMUS_AUDIOF_ALL,
NULL)))
{
return( 0 );
}
// Chemin par défaut
if( FAILED( pIDMPerformance->GetDefaultAudioPath(&dmAP)))
{
return(0);
}
// Volume par défaut
if( FAILED( dmAP->SetVolume(0,0)))
{
return( 0 );
}
// Charge le son d'un fichier
if ( FAILED(pIDMChargeur->LoadObjectFromFile ( CLSID_DirectMusicSegment,
IID_IDirectMusicSegment8,
midi_a_jouer,
(LPVOID*) &pIDMSegment)))
{
return( 0 );
}
// Télécharge les données
if ( FAILED ( pIDMSegment->Download( pIDMPerformance )))
{
return( 0 );
}
// Réussite
return( 1 );
}
/********************************/
/* */
/* Joue le fichier sonore */
/* */
/********************************/
void CDirectX_Audio_MIDI::vLecture_Son()
{
// Lit le segment sonore
pIDMPerformance->PlaySegmentEx( pIDMSegment,
NULL,
NULL,
0, // Aucun flag pour avoir une vitesse de lecture normale
0,
NULL,
NULL,
NULL);
}
/***********************************************************************************************************/
// Chargement d'un son Wave
// Constructeur
CDirectX_Audio_Systeme_Sonore::CDirectX_Audio_Systeme_Sonore()
{
pIDMChargeur = NULL;
pIDMPerformance = NULL;
}
// Destructeur
CDirectX_Audio_Systeme_Sonore::~CDirectX_Audio_Systeme_Sonore()
{
SAFE_RELEASE(pIDMChargeur);
SAFE_RELEASE(pIDMPerformance);
}
/********************************************/
/* */
/* Initialisation du moteur sonore. */
/* */
/********************************************/
HRESULT CDirectX_Audio_Systeme_Sonore::hrInitialisation_Systeme_Sonore(void)
{
HRESULT hResultat;
IDirectMusicAudioPath8* IDMAChemin;
// Initialisation du composant COM
CoInitialize(NULL);
// Création du chargeur
if(FAILED(hResultat = CoCreateInstance( CLSID_DirectMusicLoader,
NULL,
CLSCTX_INPROC,
IID_IDirectMusicLoader8,
(void**)&pIDMChargeur)))
{
return (DIRECT_X_ERREUR_CHARGEUR_MUSIQUE);
}
// Création de la performance
if(FAILED(hResultat = CoCreateInstance( CLSID_DirectMusicPerformance,
NULL,
CLSCTX_INPROC,
IID_IDirectMusicPerformance8,
(void**)&pIDMPerformance)))
{
return(DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
}
// Initialise l'audio
if(FAILED(hResultat = pIDMPerformance->InitAudio( NULL,
NULL,
hWnd,
DMUS_APATH_DYNAMIC_STEREO,
64,
DMUS_AUDIOF_ALL,
NULL)))
{
return(DIRECT_X_ERREUR_INIT_AUDIO);
}
// Chemin par défaut
if(FAILED(pIDMPerformance->GetDefaultAudioPath(&IDMAChemin)))
{
return(DIRECT_X_ERREUR_CHEMIN);
}
// Volume par défaut
if(FAILED(IDMAChemin->SetVolume(0,0)))
{
return(DIRECT_X_ERREUR_VOLUME);
}
return S_OK;
}
/********************************************************/
/* */
/* Charge un son et le sauvegarde dans un objet */
/* CDirectX_Audio_WAVE_Son. */
/* */
/********************************************************/
HRESULT CDirectX_Audio_Systeme_Sonore::hrCharger_Son(char* szNomFichier, CDirectX_Audio_WAVE_Son* pCDAWS)
{
WCHAR szWideNomFichier[512];
// Soyons sur que l'audio est initialisé
if(!pIDMChargeur)
{
return (DIRECT_X_ERREUR_CHARGEUR_MUSIQUE);
}
if(!pIDMPerformance)
{
return(DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
}
// Effaçons les sons s'ils existent
if(pCDAWS->pIDMSegment)
{
pCDAWS->pIDMSegment->Unload(pIDMPerformance);
pCDAWS->pIDMSegment->Release();
pCDAWS->pIDMSegment = NULL;
}
// Copie dans le nom de fichier
DXUtil_ConvertGenericStringToWideCch(szWideNomFichier, szNomFichier, 512);
// Charge un son à partir d'un fichier
if(FAILED(pIDMChargeur->LoadObjectFromFile(CLSID_DirectMusicSegment,
IID_IDirectMusicSegment8,
szWideNomFichier,
(LPVOID*)&pCDAWS->pIDMSegment)))
{
return (DIRECT_X_ERREUR_CHARGEMENT);
}
pCDAWS->pIDMPerformance = pIDMPerformance;
// Télécharge les données
if(FAILED(pCDAWS->pIDMSegment->Download(pIDMPerformance)))
{
return (DIRECT_X_ERREUR_TELECHARGEMENT);
}
return S_OK;
}
/********************************/
/* */
/* Lit le son chargé en mémoire */
/* */
/********************************/
HRESULT CDirectX_Audio_Systeme_Sonore::hrLecture_Son(CDirectX_Audio_WAVE_Son* cdxaws)
{
// Soyons sur qu'un objet performance est présent
if(!pIDMPerformance)
{
return (DIRECT_X_ERREUR_PERFORMANCE_MUSIQUE);
}
if(!cdxaws->pIDMSegment)
{
return (DIRECT_X_ERREUR_PAS_SEGMENT);
}
// Jouons le segment sonore
if(FAILED(pIDMPerformance->PlaySegmentEx(cdxaws->pIDMSegment,
NULL,
NULL,
DMUS_SEGF_DEFAULT | DMUS_SEGF_SECONDARY,
0,
NULL,
NULL,
NULL)))
{
return (DIRECT_X_ERREUR_ECHEC_LECTURE);
}
return S_OK;
};
/****************/
/* */
/* Constructeur */
/* */
/****************/
CDirectX_Audio_WAVE_Son::CDirectX_Audio_WAVE_Son()
{
pIDMSegment = NULL;
pIDMPerformance = NULL;
}
/*****************/
/* */
/* Destructeur */
/* */
/*****************/
CDirectX_Audio_WAVE_Son::~CDirectX_Audio_WAVE_Son()
{
if(pIDMSegment)
{
if(pIDMPerformance)
pIDMSegment->Unload(pIDMPerformance);
}
SAFE_RELEASE(pIDMSegment);
}
Conclusion
Bugs connus : le WAVE ne se lit pas à tous les coups (du moins lorsque l'on compile). lorsque vous cliquez sur un bouton autre que wav et que ce fichier est lu, il devrait s'arrêter pour lire un autre fichier mais il le fait pas
Améliorations possible : lecture d'autres fichiers et un mode de répétition. (Pas vu dans la doc de directX comment on fait, si vous avez des exemples).
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Récupération des données audio sous DirectX [ par kleinjer ]
Bonjour,Je débute avec DirectX. J'ai une interface qui me permet d'ouvrir un fichier wav ou mp3 mais j'aurais besoin de recupérer les données audio af
extracteur piste audio to mp3 [ par sweetygirl ]
Bonjour tout le monde,quelle est le meilleur moyen pour convertir des pistes audio en fichier wav pui en fichier mp3. Actuellement j'utilise CDDA.exe
Gestion et programmation du MIDI ? [ par tintin72 ]
Bonjour, J'ai actuellement en projet de développer un séquenceur midi/audio sous Windows.J'aurai 3 questions en ce qui concerne la gestion e
api directmusic avec dev CPP [ par ebooserge ]
salut a tous, petit souci: je debute un peu en prog directx et j'essaie de faire un petit lecteur audio. j'utilise l'api directmusic de directX. j'ai
Séparer les 2 pistes audio d'un fichier mp3 [ par Rogue2575 ]
Bonjour, Quelqu'un saurait il séparer les deux pistes mono d'un fichier mp3 stéréo. Je ne peux pas utiliser audacity car il faudrait que cette séparat
pbl effets audio (directx 9) [ par greg_greg ]
salut Je voudrais réaliser des effets audio en C++. J'ai trouvé des exemples grace a sdk directx 9. Le fichier exe fonctionne parfaitemen
FMOD ou Directx Audio [ par seb2086 ]
Bonjour,Je voulait savoir qu'est ce qui était le mieux entre FMOD et Directx Audio pour la gestion du son.Merci.
Lire le backbuffer ? Capture d'écran ? (DirectX 9) [ par supergrey ]
Salut, j'aurai besoin de lire chaque octet du backbuffer (de ce qui va etre afficher a l'ecran) dans un programme directx 9. Comment faire? Merci
[id3lib] Comment tester la validité d'un mp3??? [ par Sunsawe ]
Bonjour à tous, Voilà comme indique le titre, je cherche à tester la validité d'un fichier mp3. Vous savez il est simple de faire
Ralala ces fichiers mp3 [ par Joky ]
Hello tous ! :) Petit exposé ce soir sur les fichiers mp3 :) En considérant qu'un fichier mp3 est découpés en frames et que chaqu
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|