Position Trackbar wave c++ [Résolu]

Messages postés
18
Date d'inscription
mardi 29 avril 2008
Dernière intervention
17 janvier 2009
- - Dernière réponse : csauvane
Messages postés
18
Date d'inscription
mardi 29 avril 2008
Dernière intervention
17 janvier 2009
- 13 janv. 2009 à 14:24
Bonjour,
Je suis en train de coder une application qui traite les son .wav.
J'ai un petit probleme avec la representation de la barre de progression du son.
En effet, je voudrais representer une "trackbar" qui suis le son pendant qu'il s'execute.
J'utilise le code suivant:

// position du curseur (tous les 200ms) sur une echelle de 2000 unitÈs
// int length=MP1->Length;
MMTIME wavePosition;
wavePosition.wType = TIME_MS;
waveOutGetPosition(&projectWaveHandle, &wavePosition, sizeof(MMTIME));

// DataSize is total size in bits
// so we need position in bytes
// pos is position in ms
int pos = wavePosition.u.ms;

Memo1->Lines->Add("pos: "+String(wavePosition.u.ms)+" DataSize: "+String(DataSize));       
       
Je m'attends a avoir une valeur de pos qui evolue, mais je me retrouve avec une constante. (Je l'affiche toutes les 200ms).

Quelqu'un sait-il d'ou provient le probleme? et eventuellement comment le resoudre?

Merci,

Colin Sauvanet,

Développeur occasionnel
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
18
Date d'inscription
mardi 29 avril 2008
Dernière intervention
17 janvier 2009
3
Merci
J'utilisais mal la fonction waveOutGetPosition, retirer le passage par référence :

waveOutGetPosition(projectWaveHandle, &wavePosition, sizeof(MMTIME));

et non pas

waveOutGetPosition(&projectWaveHandle, &wavePosition, sizeof(MMTIME));

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de csauvane
Messages postés
54
Date d'inscription
mardi 25 mars 2008
Dernière intervention
15 août 2015
0
Merci
GetPosition()
{
   
    
    MMTIME mmt;
    mmt.wType = TIME_MS;
    waveOutGetPosition(m_hWaveOut, &mmt, sizeof(MMTIME));
    if(mmt.wType==TIME_MS)
        return mmt.u.ms;
    else if(mmt.wType==TIME_BYTES)
    {
        double d;
        d = (double)mmt.u.cb/(double)m_wfx.nAvgBytesPerSec;
        return (DWORD)(d*1000);
    }
    
    return 0;
}
Commenter la réponse de nanonavich
Messages postés
18
Date d'inscription
mardi 29 avril 2008
Dernière intervention
17 janvier 2009
0
Merci
Non, ça ne fonctionne pas. L'erreur doit venir de la structure de donnée qui ne doit pas être correcte ? (pourtant la fonction waveOutWrite arrive à lire correctement le fichier)
Commenter la réponse de csauvane
Messages postés
18
Date d'inscription
mardi 29 avril 2008
Dernière intervention
17 janvier 2009
0
Merci
Après une petit journée de recherche, je pense que c'est surtout parce que l'on ne maîtrise pas assez la structure des wave. Quelqu'un sait-il comment lire correctement les données brutes qu'il y a dans le tableau de caractères DataChunk ? (on comprend la structure, mais comment récupérer les bits du tableau de caractères ?)

Si j'ai besoin d'être plus clair, dites le moi...

Colib
Commenter la réponse de csauvane

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.