IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

changer la frequence d'un CMusicSegment???


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut changer la frequence d'un CMusicSegment???
    Bonjour, dans mon programme j'utilise les CMusicSegment pour jouer des sons en 3D , j'ai repris l'exemple du sdk (PLAY3DSOUND) le probleme c'est que ca ne semble pas possible de changer la frequence pour que le son soit plus aigu comme dans un autre exemple du sdk (AdjustSound) puisque dans ce dernier il utilise un IDirectSoundBuffer.
    Bref comment faire? est-ce qu'on peut faire de la 3D avec des IDirectSoundBuffer ou est-ce que je peut modifier la frequence avec mes CMusicSegment ?

    Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Salut.

    Tu as l'exemple d'un SDK (audiofx.cpp) qui mélange l'utilisation des CMusicSegment et des LPDIRECTSOUNDBUFFER8. Ca devrait t'aider.

    Dispo ici->http://msdn.microsoft.com/library/de...iofxsample.asp

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Euuuu.... j'ai bien trouvé l'exemple dans le sdk , mais je ne vois ne trouve pas comment modifier la frequence (hauteur) du son. Ok pour rajouter du flanger, chorus etc... mais sinon, je vois pas...

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par supergrey
    Euuuu.... j'ai bien trouvé l'exemple dans le sdk , mais je ne vois ne trouve pas comment modifier la frequence (hauteur) du son. Ok pour rajouter du flanger, chorus etc... mais sinon, je vois pas...

    Il faut accéder directement au tampon de DirectSoundBuffer avec Lock et Unlock
    Voir le SDK de Direct Sound.
    Après c'est à toi de donner les bonnes valeurs de hauteur.
    Par contre il me semble que la hauteur d'un son c'est l'amplitude pas la fréquence , non
    La fréquence c'est en abscisse.
    ( cf softs comme SoundForge )

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par supergrey
    Euuuu.... j'ai bien trouvé l'exemple dans le sdk , mais je ne vois ne trouve pas comment modifier la frequence (hauteur) du son. Ok pour rajouter du flanger, chorus etc... mais sinon, je vois pas...
    Euuuu.... t'as pas bien regardé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    LPDIRECTSOUNDBUFFER8  m_lpDSB8;
    IDirectMusicAudioPath8*   m_pAudioPath;
     
    .....
     
     
    if(FAILED(hr = pAudioPath->GetObjectInPath(DMUS_PCHANNEL_ALL,
                    DMUS_PATH_BUFFER, 0, GUID_NULL, 0, IID_IDirectSoundBuffer8, 
                    (LPVOID*) &m_lpDSB8)))
      return hr;
     
    m_pAudioPath = pAudioPath;
     
    m_lpDSB8->SetFrequency(lFrequency);

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Définitivement non. Ce code n'est pas dans l'exemple audiofx, pas dans celui que j'ai du moins. Et je n'arrive pas a utiliser ce que tu me montre dans mon code ca fait une erreur quand ca arrive sur le GetObjectInPath

    Tu as un exemple ou il utilise cette methode?

  7. #7
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Salut.

    Il semble que le fichier audiofx.cpp que j'utilise est issu du "Microsoft DirectX 9.0 SDK Update (Summer 2004)". Le lien du sample ici:

    http://msdn.microsoft.com/library/de...iccsamples.asp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class CSoundFXManager
    {
     ....
     
     
        LPDIRECTSOUNDBUFFER8        m_lpDSB8;
        IDirectMusicAudioPath8 *    m_pAudioPath;
     
     ...
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    HRESULT CSoundFXManager::Initialize( IDirectMusicAudioPath8* pAudioPath, 
                                         BOOL bLoadDefaultParamValues )
    {
        ...
     
        if( FAILED( hr = pAudioPath->GetObjectInPath( DMUS_PCHANNEL_ALL,
                    DMUS_PATH_BUFFER, 0, GUID_NULL, 0, IID_IDirectSoundBuffer8, 
                    (LPVOID*) &m_lpDSB8 )))
            return hr;
     
        m_pAudioPath = pAudioPath;
     
        ...
    }
    Une fois que tu as initialisé m_lpDSB8, tu peux appeller la méthode SetFrequency, qui n'est pas utilisée dans ce code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_lpDSB8->SetFrequency(lFrequency);
    A toi d'adapter ce code à tes besoins.

Discussions similaires

  1. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31
  2. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46
  3. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo