En ajoutant un champ dans ta structure param ;)
Version imprimable
En ajoutant un champ dans ta structure param ;)
Hum, hum, je vois pas trop comment recuper ces informations a partir de mon main.
mais soit, comment aller alors chercher ces informations ( vector de freq et int de freq) quand je suis dans mon main... je ne sais pas faire "param.frequence" ou "param->frequence" dans mon main...:roll::roll:Code:
2
3
4
5
6
7
8
9
10
Un paramètre passé à l'appel de la fonction portaudio ;)
voila , me voici face a un nouveau probleme. dans le code suivant , je fait un echantillonage, mais apparement je suis limiter a param.time>100, car au sinon, ca plante. le probleme c'est que j'aimerai avoir un echatillonage en dessous de 100 milli-secondes, genre 10 ms... Comment faire?
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
10 ms, c'est moins que la latence de ta carte son, donc normal que ça plante...
Et donc j'aimerais savoir comment est-ce que je pourrais diminuer alors au minimum ce temp d'attente pour quand meme avoir des donnée?
Soit tu les traites en temps réel, soit tu les traites après.
Dans le premier cas, tu as des données à chaque fois, mais tu dois les traiter rapidement, dans le second, tu prends une plage large de valeurs et tu les traites aussi longtemps que tu veux.
on a reussi a passer au dessu de cela, en fesant les calcul dans la fonction callback.
MAis nou sommes confrontés a un autre probleme: le filtre.
donc on obtiens un tableau de n echantillons, et il faut le filtrer.
voici une partie du code:
je suppose que notre tableau est donc x et que le tableau filtré c'est y, mais j'en suis pas certain( surtout que un tab!=float). et j'ai aussi les tab des coef A[] et B[]. Mais bon j'ai besoin d'un tit cp de main pour lever mes inconues..Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Oui, x et y sont les tableaux glissants en entrée et en sortie, et A et B sont les tableaux des coefficients, on voit la formule dans le commentaire que tu donnes d'ailleurs ;)
donc je vais rentrer avec mon tableau float x[80] ainsi que mes deux tableau float ACoef[5] et Bcoef[5]. Alors j'aobtiens aussi que int NPoints =80 et que
int DenOrder=5,int NumOrder=5.
B =
0.010209480791203 0.040837923164813 0.061256884747219
0.040837923164813 0.010209480791203
A =
1.000000000000000 -1.968427786938519 1.735860709208887
-0.724470829507363 0.120389599896245
Voila, dans le code precedent je ne sais pas trop si je doit initialiser y. Deplus, je ne vois pas ce qu'est ZI. Ensuite, apres passage dans le filtre, est ce que mon tableau x sera modifier? et je suppose que y sera mon tableau x filtré, est ce que je me trompe?Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Et aussi est ce que le code si dessus pourrais fonctionner correctement?
Nous avaons aussi un autre probleme, le programme ne tourne pas sur d'autre machine:
-win 98SE : dll manquant( msvcr80d.dll,msvcp80.dll,msvcp80d.dll) dont les 2 premier sont rajoutables, mais pas le dernier.
-win xp:"cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstallez l'application pr résoudre ce problème": p-e il faut utiliser :Microsoft Visual C++ 2005 Redistributable Package (x86) ?
et de préférence, ces variables devraient être allouées dynamiquement (c'est comme ça que c'est fait en réalité dans tous les outils de ce type).Code:
2
3
4
Pour ZI, c'est le vecteur des variables internes (c'est un filtre à état qui a besoin à chaque appel de savoir ce qui s'était passé avant, la fonction se charge de le mettre à jour à chaque fois), donc au départ, que des 0.
donc mon tableau x filtré sera le tableau y? et est-ce que le tableau x sera modifié?
Nous avons aussi un autre probleme, le programme ne tourne pas sur d'autre machine:
-win 98SE : dll manquant( msvcr80d.dll,msvcp80.dll,msvcp80d.dll) dont les 2 premier sont rajoutables, mais pas le dernier.
-win xp:"cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstallez l'application pr résoudre ce problème": p-e il faut utiliser :Microsoft Visual C++ 2005 Redistributable Package (x86) ?
j'ai aussi une question, est ce que je px la faire par mp?
Mieux vaut répondre ici pour les prochains qui pourraient avoir le même souci ;)
Le tableau X n'est pas modifié, ce n'est même pas envisageable car il est nécessaire au filtrage, c'est y qui donnera le résultat.
Il n'est pas normal d'avoir la version debug à fournir, il y a une erreur quelque part.
Pour l'autre bug, il s'agit vraisemblablement d'une erreur de manifeste -> il doit être intégré lors de l'édition des liens à l'application/bibliothèque.
Voila, on a mit le filtre, mais on a encore des soucis... le vecteur y est en 10^10 pour les 5 premieres valeurs, et apres on a des1;#inf et IND...
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
La fonction calcul ne devrait pas initialiser les valeurs, et surtout pas celles-ci :
Ce sont les valeurs passées du filtre, sans initialisation, elles valent n'importe quoi, d'où les erreurs rencontrées.Code:float *ZI= new float[80]
Il FAUT intiialiser à 0 ces valeurs et les conserver entre deux appels à la fonction calcul.
donc tout mon tru est bon et je doit rajouter:
car si c'est ca, ca ne va toujours pas :sCode:
2
3
4
:? ? toujours pas de reponses...
Ben non, ton truc n'est pas bon, j'ai dit que les allocations ne doivent pas être dans ta fonction.
oki,on a resolu le probleme, mais on devra refiltrer dans l'autre sens le tableau (equivalent a filtfilt() en matlab), donc on va perdre les info des ZI.
On a encore quelques problemes...
on aimerais savoir si il existe une fonction qui lit au fichier .wav ( comme celle qui existe en matlab: wavread) afin de retourner une tableau avec les valeurs. On sait le faire en matlab, mais pas en c/c++... On trouve des truc en c sur le net, mais c'est pas trop ca...
merci