cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012
-
8 août 2003 à 17:35
lovmaths
Messages postés4Date d'inscriptionvendredi 31 octobre 2008StatutMembreDernière intervention 8 novembre 2013
-
15 févr. 2009 à 21:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
lovmaths
Messages postés4Date d'inscriptionvendredi 31 octobre 2008StatutMembreDernière intervention 8 novembre 2013 15 févr. 2009 à 21:03
hum... Et si un pur débutant de chez débutant souhaitait juste enregistrer le son entrant dans un genre de bloc note ?
Bon, je sais, ça ressemblerait presque à du sur mesure, mais... (et je m'explique peut-être mal, aussi, mais c'est juste pour le retoucher, j'ai envie de m'amuser à créer des programmes qui modifient les sons)
je crois que c'est beaucoup demander, quand même, du sur-mesure, mais bon... ?
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 21 mai 2007 à 08:27
salut TTNICOLAS,
C'est normal que le temps soit plus long, sachant que BUFFER_SIZE ne varie pas. C'est comme sur une route dont la longueur ne varie pas et la vitesse des voitures change, le temps pour faire toute la route varie en fonction de la vitesse des voitures.
ttnicolas
Messages postés2Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention20 mai 2007 20 mai 2007 à 20:31
Salut gabuzomeuh. Bravo pour ta source, j'aimerai savoir pourquoi lorsque je dimminue la frequence d'echantillonage, le delai entre la lecture et la restitution est plus long ?. Sinon j'ai traduit ta source pour Borland Builder et je suis en train de la modifier pour transferer le son via ethernet, pour l'instant ca marche pendant seulement 5 secondes.
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 13 mars 2007 à 16:21
J'ai ajouté un SetThreadPriority pour chaque procédure In et Out mais ca ne change rien, quand la fenêtre est réduite ou restaurée, il y a une courte interruption du processus. Quelqu'un a une piste ?
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 8 mars 2007 à 22:47
Quand la fenêtre est réduite ou restaurée, il y a une courte interruption du processus.
Doit-on utiliser un thread ou un SetPriorityClass ou un EnterCriticalSection ?
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 14 janv. 2005 à 07:29
essayez et laissez vos commentaires ou améliorations SVP
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 15 déc. 2004 à 00:55
y a personne qui connait un moteur audio simple ?
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 28 mai 2004 à 17:38
>fkmtc
c'est pas faux, j'ai corrigé le pb mais l'erreur ne venait pas de là
fkmtc
Messages postés1Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention28 mai 2004 28 mai 2004 à 15:25
peut être as-tu oublié [i] ici :
result = waveOutWrite(HWaveOut,&who,sizeof(WAVEHDR));
if (result!= MMSYSERR_NOERROR)
{
waveOutGetErrorText(result, ErrMsg, MAX_ERRMSGSIZE);
MessageBox(NULL,ErrMsg,"erreur start_out waveoutwrite",MB_OK);
return 1;
}
au niveau du &who ... il faudrait mettre &who[i] ...
++
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 10 août 2003 à 04:17
oki je vais essayer de voir tout ca
@+
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 9 août 2003 à 18:38
J'ai trouvé d'où vient le probleme mais il n'est pas encore résolu.
En effet, il semblerait que la routine waveouproc soit bien appelée à chaque passage mais l'index pointant le header de sortie (who) n'évolue pas.
A+
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 8 août 2003 à 19:00
oki, je vais essayer de voir comment je améliorer le problème, car c'est un truc qui m'interesse bcp (je fais de l'analyse spectrale sur DSP pour les lignes téléphonique)
@+
je te tiens au courant
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 8 août 2003 à 18:46
On entre un signal sur l'entree ligne de la carte son et il ressort directement par l'intermediaire d'un buffer, c'est le principe d'un systeme "temps reel".
Le but de ce programme est de resoudre dans un premier temps la vitesse d'execution de la fonction waveoutproc qui est moins rapide que la fonction waveinproc.
Le grésillement provient de ce decalage.
Lorsque ce probleme sera resolu:
1°) plus de gresillement
2°) je complete le code avec la partie calcul et affichage du spectre.
A+
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 8 août 2003 à 18:37
j'ai bien supprimer le code en attendant, juste une question ca ne plante plus, mais par contre rien ne se passe à l'écran et je n'atends rien à part un grisillement, est-ce normal ?
merci
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 8 août 2003 à 18:31
Le but de la fonction convertir_nombre_long_ascii est de convertir un nombre de 32 bit en un chaine de caractere representant ce nombre.
Elle ne sert pas a grand chose dans le code, on peut la supprimer ou essayer de l'ecrire d'une autre facon.
Je m'en sers comme temoin de passage dans les fonctions waveinproc et waveoutproc.
Cela m'a permis de me rendre compte du decalage dans le temps entre les 2 fonctions waveinproc et waveoutproc.
Le probleme que j'essaie de resoudre est le decalage qu'il y a entre les fonctions waveinproc et waveoutproc.
A+
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 8 août 2003 à 18:22
merci, mais ca plante toujours sur la ligne : dst[0]=0x30+((0x0f0000000 & valeur)>>28);
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 8 août 2003 à 18:18
Le mieux est de remplacer la boucle
for (i=0; i<8; i++)
{
dst[i]=0x30+((((0x0f0000000)>>(i*4))&valeur)>>(28-i*4));
if (dst[i]>0x39) dst[i]=0x37+((((0x0f0000000)>>(i*4))&valeur)>>(28-i*4));
}
par:
dst[0]=0x30+((0x0f0000000 & valeur)>>28);
dst[1]=0x30+((0x00f000000 & valeur)>>24);
dst[2]=0x30+((0x000f00000 & valeur)>>20);
dst[3]=0x30+((0x0000f0000 & valeur)>>16);
dst[4]=0x30+((0x00000f000 & valeur)>>12);
dst[5]=0x30+((0x000000f00 & valeur)>>8);
dst[6]=0x30+((0x0000000f0 & valeur)>>4);
dst[7]=0x30+((0x00000000f & valeur));
if (dst[0]>0x39) dst[0]=0x37+((0x0f0000000 & valeur)>>28);
if (dst[1]>0x39) dst[1]=0x37+((0x00f000000 & valeur)>>24) ;
if (dst[2]>0x39) dst[2]=0x37+((0x000f00000 & valeur)>>20) ;
if (dst[3]>0x39) dst[3]=0x37+((0x0000f0000 & valeur)>>16);
if (dst[4]>0x39) dst[4]=0x37+((0x00000f000 & valeur)>>12) ;
if (dst[5]>0x39) dst[5]=0x37+((0x000000f00 & valeur)>>8) ;
if (dst[6]>0x39) dst[6]=0x37+((0x0000000f0 & valeur)>>4) ;
if (dst[7]>0x39) dst[7]=0x37+((0x00000000f & valeur)) ;
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 8 août 2003 à 18:02
c'est sur cette ligne : dst[i]=0x30+((((0x0f0000000)>>(i*4))&valeur)>>(28-i*4));
@+
gabuzomeuh
Messages postés53Date d'inscriptionjeudi 31 juillet 2003StatutMembreDernière intervention28 mars 2007 8 août 2003 à 17:53
Non je ne vois pas d'explication je n'ai jamais eu ce message d'erreur le mieux est de le faire tourner en pas a pas pour voir quelle fonction genere l'erreur
A+
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 8 août 2003 à 17:35
Salut,
Ton programme semble super bien, mais j'ai quelques petit problème. Lorsque je l'execute je clique sur start et là j'ai un msg de windows m'informant que l'insttruction 0x0040108E emploie l'adresse 0x0042301c et que la mémoire ne peut être "written".
Des explications ?
15 févr. 2009 à 21:03
Bon, je sais, ça ressemblerait presque à du sur mesure, mais... (et je m'explique peut-être mal, aussi, mais c'est juste pour le retoucher, j'ai envie de m'amuser à créer des programmes qui modifient les sons)
je crois que c'est beaucoup demander, quand même, du sur-mesure, mais bon... ?
21 mai 2007 à 08:27
C'est normal que le temps soit plus long, sachant que BUFFER_SIZE ne varie pas. C'est comme sur une route dont la longueur ne varie pas et la vitesse des voitures change, le temps pour faire toute la route varie en fonction de la vitesse des voitures.
20 mai 2007 à 20:31
13 mars 2007 à 16:21
8 mars 2007 à 22:47
Doit-on utiliser un thread ou un SetPriorityClass ou un EnterCriticalSection ?
14 janv. 2005 à 07:29
15 déc. 2004 à 00:55
28 mai 2004 à 17:38
c'est pas faux, j'ai corrigé le pb mais l'erreur ne venait pas de là
28 mai 2004 à 15:25
result = waveOutWrite(HWaveOut,&who,sizeof(WAVEHDR));
if (result!= MMSYSERR_NOERROR)
{
waveOutGetErrorText(result, ErrMsg, MAX_ERRMSGSIZE);
MessageBox(NULL,ErrMsg,"erreur start_out waveoutwrite",MB_OK);
return 1;
}
au niveau du &who ... il faudrait mettre &who[i] ...
++
10 août 2003 à 04:17
@+
9 août 2003 à 18:38
En effet, il semblerait que la routine waveouproc soit bien appelée à chaque passage mais l'index pointant le header de sortie (who) n'évolue pas.
A+
8 août 2003 à 19:00
@+
je te tiens au courant
8 août 2003 à 18:46
Le but de ce programme est de resoudre dans un premier temps la vitesse d'execution de la fonction waveoutproc qui est moins rapide que la fonction waveinproc.
Le grésillement provient de ce decalage.
Lorsque ce probleme sera resolu:
1°) plus de gresillement
2°) je complete le code avec la partie calcul et affichage du spectre.
A+
8 août 2003 à 18:37
merci
8 août 2003 à 18:31
Elle ne sert pas a grand chose dans le code, on peut la supprimer ou essayer de l'ecrire d'une autre facon.
Je m'en sers comme temoin de passage dans les fonctions waveinproc et waveoutproc.
Cela m'a permis de me rendre compte du decalage dans le temps entre les 2 fonctions waveinproc et waveoutproc.
Le probleme que j'essaie de resoudre est le decalage qu'il y a entre les fonctions waveinproc et waveoutproc.
A+
8 août 2003 à 18:22
8 août 2003 à 18:18
for (i=0; i<8; i++)
{
dst[i]=0x30+((((0x0f0000000)>>(i*4))&valeur)>>(28-i*4));
if (dst[i]>0x39) dst[i]=0x37+((((0x0f0000000)>>(i*4))&valeur)>>(28-i*4));
}
par:
dst[0]=0x30+((0x0f0000000 & valeur)>>28);
dst[1]=0x30+((0x00f000000 & valeur)>>24);
dst[2]=0x30+((0x000f00000 & valeur)>>20);
dst[3]=0x30+((0x0000f0000 & valeur)>>16);
dst[4]=0x30+((0x00000f000 & valeur)>>12);
dst[5]=0x30+((0x000000f00 & valeur)>>8);
dst[6]=0x30+((0x0000000f0 & valeur)>>4);
dst[7]=0x30+((0x00000000f & valeur));
if (dst[0]>0x39) dst[0]=0x37+((0x0f0000000 & valeur)>>28);
if (dst[1]>0x39) dst[1]=0x37+((0x00f000000 & valeur)>>24) ;
if (dst[2]>0x39) dst[2]=0x37+((0x000f00000 & valeur)>>20) ;
if (dst[3]>0x39) dst[3]=0x37+((0x0000f0000 & valeur)>>16);
if (dst[4]>0x39) dst[4]=0x37+((0x00000f000 & valeur)>>12) ;
if (dst[5]>0x39) dst[5]=0x37+((0x000000f00 & valeur)>>8) ;
if (dst[6]>0x39) dst[6]=0x37+((0x0000000f0 & valeur)>>4) ;
if (dst[7]>0x39) dst[7]=0x37+((0x00000000f & valeur)) ;
8 août 2003 à 18:02
@+
8 août 2003 à 17:53
A+
8 août 2003 à 17:35
Ton programme semble super bien, mais j'ai quelques petit problème. Lorsque je l'execute je clique sur start et là j'ai un msg de windows m'informant que l'insttruction 0x0040108E emploie l'adresse 0x0042301c et que la mémoire ne peut être "written".
Des explications ?
@+