begin process at 2012 05 29 22:13:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Multimédia

 > 

Problème de sons instantanné avec le son windows (hWaveOut)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de sons instantanné avec le son windows (hWaveOut)

dimanche 16 mai 2010 à 17:16:40 | Problème de sons instantanné avec le son windows (hWaveOut)

vincent303

Bonjour,

Voila mon soucis : je veux écouter un ensemble de son mis à la suite par des buffers. Seul soucis c'est que entre chaque son j'ai un petit bruit (comme la fermeture et l'ouverture du canal sonore).

Voila code version ultra simplifié :

//Tout d'abord je créée le lien avec la carte son (j'ouvre un canal)

HWAVEOUT hWaveOut;
WAVEFORMATEX wfex;
WAVEHDR whdr1;

//propriété du signal

wfex.wFormatTag = WAVE_FORMAT_PCM;
wfex.nChannels = 1; /* Mono. 2 = Stereo */
wfex.wBitsPerSample = CHAR_BIT; /* Nombre de bits par echantillon */
wfex.nSamplesPerSec =FE;
wfex.nBlockAlign = (wfex.nChannels * wfex.wBitsPerSample) / CHAR_BIT;
wfex.nAvgBytesPerSec = wfex.nSamplesPerSec*wfex.nBlockAlign;
wfex.cbSize = 0;

waveOutOpen(&hWaveOut, WAVE_MAPPER, &wfex,(DWORD) Done, 0, CALLBACK_EVENT);

//puis apré j'ai une fonction que je fait appel tous les 50 millisecondes qui crée un //signal stocké dans char* buffer :

void vocodeur::sonSimple(int num)
{
this->creerSignal(num); //fonction qui stock le signal dans buffer


whdr1.lpData =buffer;
whdr1.dwBufferLength = L;
whdr1.dwFlags=0;
whdr1.dwLoops = 0;

waveOutPrepareHeader(hWaveOut, &whdr1, sizeof(whdr1));
waveOutWrite(hWaveOut, &whdr1, sizeof(whdr1));
// if (WaitForSingleObject(Done,INFINITE) != WAIT_OBJECT_0)
// {}

waveOutUnprepareHeader(hWaveOut, &whdr1, sizeof(whdr1));


}
dimanche 16 mai 2010 à 19:08:39 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vecchio56

Administrateur CodeS-SourceS
Sans doute que le signal que tu mets dans ton buffer n'est pas assez long, ou bien tu n'appelles pas ta méthode sonSimple assez souvent.

Normalement il faut utiliser le message MM_WOM_DONE pour savoir quand envoyer de nouvelles données, non?


_____________________________________
Un éditeur de ressources gratuit pour Windows
dimanche 16 mai 2010 à 19:52:01 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vincent303

Ba j'ai essayé de mettre une signal beaucoup plus grand avec une temporisation trés petite(20ms) donc forcément le temps a énormément augmenté mais j'ai quand même entre 2 son des bruits.

Et pour le NM_WOM_DONE je sais pas actuellement je me préoccupe pas quand envoyé les donnés(d'ailleurs en augmentant le signal, je remplie le canal sonore plus rapidement que la vitesse de lecture se qui ai bien la preuve que le signal est assez grand).L'essentiel est de pouvoir écouté le son "fluidement".
dimanche 16 mai 2010 à 20:45:39 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vecchio56

Administrateur CodeS-SourceS

C'est un bruit bizarre ou bien un blanc que tu as?
Si tu as un bruit bizarre, c'est peut être que ton signal n'est pas bien continu.
Par exemple si tu envoies une sinusoïde, es-tu certain de bien reprendre la sinusoïde là ou elle était rendue?

_____________________________________
Un éditeur de ressources gratuit pour Windows
dimanche 16 mai 2010 à 21:21:51 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vincent303

Ba c'est vraiment un bruit d'ouverture du canal sonore. c'est a dire que même si je fais appel qu'une seul fois à la fonction simpleSon avec un grand buffer,j'ai le bruit au début et a la fin du signal sonore.
lundi 17 mai 2010 à 11:02:30 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vincent303

Enfaite c vrai que le son a la fin d'un buffer n'est pas le même que celui qui arrive a l'entré du buffer d'après. C'est sa qui peu posé problème et avoir un bruit?
Et c'est pas une sinusoïde que je gère mais un signal sonore créée par vocodeur LPC (artificielle).
lundi 17 mai 2010 à 15:43:21 | Re : Problème de sons instantanné avec le son windows (hWaveOut)

vincent303

Juste j'ai fait une petite expérience.

Mon son (buffer) je l'ai remplie que de la même valeur (0.5).
Mon premier son continue est belle est bien continue je n'est pas d'interson entre chaque buffer sa marche nickel. Mais des que j'arrête le son et décide de le relancé, à ce moment la j'ai entre chaque buffer un son d'ouverture et fermeture.


Cette discussion est classée dans : char, signal, wfex, whdr1, hwaveout


Répondre à ce message

Sujets en rapport avec ce message

Probleme GTK [ par Jo ] Salut,Quelqu'un pourrait me dire ou est l'erreur ?char * fichier; char *z;gchar *temp;temp = gtk_entry_get_text(GTK_ENTRY(Data));fd1= fopen((char *)te débutant butant... [ par grboss ] Avec Dev C++, des programmes bidons ne fonctionnent pas, car ils utilisent la fonction getch(); par exemple.avec turbo c++, ca passe, mais, il y a une ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d int to char ! [ par nullspace ] Voila mon problème !J'ai une résultat sous forme de variable INT, et je veux que ce résultat soit affecté à une variable de type CHAR.Genre, si j'ai 6 soustraire 2 heures [ par Olivier ] Salut,qqn pourrait me donner une fonction qui permettrait de soustraire 2 heures ?char * SubHour(char *,char *);Remarques :02:24:12-02:24:12=24:00:000 pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ] portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia manipulation desformules logiques : URGENT [ par The_Legacy ] Bonjour, je suis en train de développer un petit programme qui permet d'évaluer des expression logiques telles que ((a et b) ou (c et (non d))).A part Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci Conversion int -> char * [ par Xentor ] Bonjour tout le monde, et merci de lire mon message parce que je suis un vrai débutant !Je voudrais savoir comment convertir un entier en tableau de c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales