Si cela peut aider, on n'est pas obligé d'avoir des formules mathématiques.
On peut imaginer un système de boucles d'approximations par exemple.
|
Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: adrtc, alcine et 12 invités
Filtrage soustractif à délai avec le DSPIY
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
thierryvalk a écrit:Si cela peut aider, on n'est pas obligé d'avoir des formules mathématiques.
On peut imaginer un système de boucles d'approximations par exemple.
en fait il y a des gens qui se sont deja posé la question
(http://dsp.stackexchange.com/questions/ ... th-filters)
le probleme c'est de passer du s-domain au z-domain
l'avantage d'avoir les 3 filtres factorisés en 1/(1+a(S/w)+b(S/w)^2) ca permet de calculer les biquads avec les formules standard à partir d'un LP 2ieme ordre. il suffit de remtre de l'ordre dans le coefs. demain il fera jour.
- maxidcx
- Membre HCFR Contributeur
- Messages: 3105
- Inscription Forum: 25 Avr 2007 10:50
Avec LSPcad,il y a moyen de faire une grosse bidouille,il a une fonction d'optimisation par itération.
je regarderai,
ensuite il faut juste rentrer les 3 Q et 3 Kf dans 3 biquads.
je regarderai,
ensuite il faut juste rentrer les 3 Q et 3 Kf dans 3 biquads.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
Donc grosse bidouille qui aboutit:
le Bessel 6 (Jimbee) donne 3 biquads avec les coeffs suivants.
1er biquad:
Fc1=0.98 x Fc
Q1=0.938
2ème biquad
Fc2=1.139 x Fc
Q2=0.524
3ème biquad
Fc3=1.608 x FC
Q3=0.695
le truc testé,(Fc(-6dB)=920 Hz
le Bessel 6 (Jimbee) donne 3 biquads avec les coeffs suivants.
1er biquad:
Fc1=0.98 x Fc
Q1=0.938
2ème biquad
Fc2=1.139 x Fc
Q2=0.524
3ème biquad
Fc3=1.608 x FC
Q3=0.695
le truc testé,(Fc(-6dB)=920 Hz
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
Bonjour,
Sinon, une version très simple à programmer, trois Butt2 en série type
Butt2 à Fc 1kHz + Butt2 à 1,3 kHz + Butt2 à 1,6 kHz
Croisement à -5,4 dB, mais passe haut un peu plus franc, delai = 539µs
crd
Sinon, une version très simple à programmer, trois Butt2 en série type
Butt2 à Fc 1kHz + Butt2 à 1,3 kHz + Butt2 à 1,6 kHz
Croisement à -5,4 dB, mais passe haut un peu plus franc, delai = 539µs
crd
- jimbee
- Messages: 205
- Inscription Forum: 21 Oct 2012 17:20
Bien, les solutions arrivent.
Je vais implanter le triple Butt2 avec les coefficients en fréquence. C’est en effet très simple.
Thierry, si tu me décris la mise en œuvre, je pourrais tenter de l’implanter aussi.
Niveau soft dans le DSPiy, l’utilisateur ne peut pas créer lui-même une combinaison de filtres, il a seulement une liste préétablie. Mais rien ne m’empêche de rallonger cette liste.
Ce qui serait bien aussi c’est de trouver un type de filtre avec un délai pas trop long pour application en dessous de 100Hz.
Je vais implanter le triple Butt2 avec les coefficients en fréquence. C’est en effet très simple.
Thierry, si tu me décris la mise en œuvre, je pourrais tenter de l’implanter aussi.
Niveau soft dans le DSPiy, l’utilisateur ne peut pas créer lui-même une combinaison de filtres, il a seulement une liste préétablie. Mais rien ne m’empêche de rallonger cette liste.
Ce qui serait bien aussi c’est de trouver un type de filtre avec un délai pas trop long pour application en dessous de 100Hz.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
tu n'as pas une classe de calcul biquad avec Q et F ?
(c'est à dire sorti des librairies classiques Butt,LR,Bessel).
je vais regarder si j'en trouve une.
tu avais postè ce bout de code.
quelle est la librairie utilisée ?
il apparait bien le coeff fréquence et Q non ?
(c'est à dire sorti des librairies classiques Butt,LR,Bessel).
je vais regarder si j'en trouve une.
tu avais postè ce bout de code.
quelle est la librairie utilisée ?
il apparait bien le coeff fréquence et Q non ?
private void LPbessel36(string sparam, int biq, double crfrequence, double crgain)
{
if (type_appli != 5)
{
calcul_bessel_lowpass2(crfrequence / 0.6235, crgain / 2, 0.5103);
saveBiquad(sparam, biq, a0, a1, a2, b0, b1, b2);
calcul_bessel_lowpass2(crfrequence / 0.5919, crgain / 2, 0.6111);
saveBiquad(sparam, biq + 1, a0, a1, a2, b0, b1, b2);
calcul_bessel_lowpass2(crfrequence / 0.5250, crgain / 2, 1.0233);
saveBiquad(sparam, biq + 2, a0, a1, a2, b0, b1, b2);
}
else//soustractif
{
calcul_bessel_lowpass2(crfrequence *1.53, crgain / 3, 0.57735026918962576450914878050196);
saveBiquad(sparam, biq, a0, a1, a2, b0, b1, b2);
calcul_bessel_lowpass2(crfrequence * 1.53, crgain / 3, 0.57735026918962576450914878050196);
saveBiquad(sparam, biq + 1, a0, a1, a2, b0, b1, b2);
calcul_bessel_lowpass2(crfrequence * 1.53, crgain / 3, 0.57735026918962576450914878050196);
saveBiquad(sparam, biq + 2, a0, a1, a2, b0, b1, b2);
}
}
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
Oups, oui, je pensais que c’était plus compliqué.
Aucun soucis, je mets ça en route dès ce soir.
Aucun soucis, je mets ça en route dès ce soir.
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
et le délai est donné par
T=0.64 x Fc(certainement à fignoler en pratique) T=0.542/Fc
le passe haut passe progressivement de 12dB/oct à 18dB/oct.
est ce que c'est intéressant ?
les solutions butt et LR sont aussi plaisantes.
T=0.64 x Fc(certainement à fignoler en pratique) T=0.542/Fc
le passe haut passe progressivement de 12dB/oct à 18dB/oct.
est ce que c'est intéressant ?
les solutions butt et LR sont aussi plaisantes.
Dernière édition par thierry38efd le 07 Fév 2014 15:30, édité 1 fois.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
thierry38efd a écrit:et le délai est donné par
T=0.64 x Fc (certainement à fignoler en pratique)
En pratique, je suis plutôt autour de 0.5 : 6ms à 80Hz, et 0.52ms à 1000Hz
- Philby
- Messages: 9819
- Inscription Forum: 12 Mar 2001 2:00
- Localisation: 33
et oui !
je me suis embrouillé
T=0.542/Fc (pour le bessel6 Jimbee)
0.52 c'est pour le triple bessel 2 ? je ne me rappelle plus.
je me suis embrouillé
T=0.542/Fc (pour le bessel6 Jimbee)
0.52 c'est pour le triple bessel 2 ? je ne me rappelle plus.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
Pour les délais, de toute manière on doit toujours donc affiner à la main.
Donc pas besoin de les calculer.
Mais intéressants pour voir la fréquence la basse possible selon les possibilités du DSPiy.
Si je résume :
Le LR4, il existe.
On a 2 Bessel6, le classique Bessel18 avec comme coef de F : 1/0.6235 + 1/0.5919 + 1/0.5250 et Q : 0.5103 + 0.6111 + 1.0233
On a le 3 Bessel2 simples.
Je vais rajouter le Bessel6 modifié avec comme coef de F : 0.98 + 1.139 + 1.608 et Q : 0.938 + 0.524 + 0.695
On a parlé d’un LR4 + Butt2.
Je vais rajouter du Butt6 avec comme coef de F : 1 + 1.3 + 1.6
Donc pas besoin de les calculer.
Mais intéressants pour voir la fréquence la basse possible selon les possibilités du DSPiy.
Si je résume :
Le LR4, il existe.
On a 2 Bessel6, le classique Bessel18 avec comme coef de F : 1/0.6235 + 1/0.5919 + 1/0.5250 et Q : 0.5103 + 0.6111 + 1.0233
On a le 3 Bessel2 simples.
Je vais rajouter le Bessel6 modifié avec comme coef de F : 0.98 + 1.139 + 1.608 et Q : 0.938 + 0.524 + 0.695
On a parlé d’un LR4 + Butt2.
Je vais rajouter du Butt6 avec comme coef de F : 1 + 1.3 + 1.6
- thierryvalk
- Messages: 5617
- Inscription Forum: 08 Mai 2012 9:39
- Localisation: Belgique
thierryvalk a écrit:Pour les délais, de toute manière on doit toujours donc affiner à la main.
Donc pas besoin de les calculer.
Mais intéressants pour voir la fréquence la basse possible selon les possibilités du DSPiy.
Si je résume :
Le LR4, il existe.
On a 2 Bessel6, le classique Bessel18 avec comme coef de F : 1/0.6235 + 1/0.5919 + 1/0.5250 et Q : 0.5103 + 0.6111 + 1.0233
On a le 3 Bessel2 simples.
Je vais rajouter le Bessel6 modifié avec comme coef de F : 0.98 + 1.139 + 1.608 et Q : 0.938 + 0.524 + 0.695
On a parlé d’un LR4 + Butt2.
Je vais rajouter du Butt6 avec comme coef de F : 1 + 1.3 + 1.6
Je teste quand tu veux! Je suis chaud là!
Ce que tu as appelé le Bessel 3x2 et que j'ai utilisé (cf config 1ère page du fil), c'est le 3 Bessel2 simples?
Dernière édition par Philby le 07 Fév 2014 15:28, édité 1 fois.
- Philby
- Messages: 9819
- Inscription Forum: 12 Mar 2001 2:00
- Localisation: 33
Coup d'œil à feuille excel pour le Bess6 modifié ( A1 = 4,4542 ) :
Pour un croisement des voies à 1kHz, prendre Fc ≈ 1315 Hz
Le retard est calculé par A1/ oméga = 4,4542 / ( 2 . π . 1315 ) = 0,5391 ms
Les moins gourmands en délai, avec un crédit max de 6ms:
Le Butt3 LV = croisement des voies à 63 Hz, et vers 74 Hz avec le LR4LV
Pour un croisement des voies à 1kHz, prendre Fc ≈ 1315 Hz
Le retard est calculé par A1/ oméga = 4,4542 / ( 2 . π . 1315 ) = 0,5391 ms
Les moins gourmands en délai, avec un crédit max de 6ms:
Le Butt3 LV = croisement des voies à 63 Hz, et vers 74 Hz avec le LR4LV
Dernière édition par jimbee le 07 Fév 2014 16:01, édité 1 fois.
- jimbee
- Messages: 205
- Inscription Forum: 21 Oct 2012 17:20
@maxidcx
tu as raison,ta factorisation est juste et recolle à LSPcad
c'est tout à fait valide.
tu as raison,ta factorisation est juste et recolle à LSPcad
c'est tout à fait valide.
maxidcx a écrit:on lui rentre le polynome concocté par jimbee :
1 + 4.4572 x + 9.92 x^2 + 12.358 x^3 + 9.622 x^4 + 4.495 x^5 + x^6
il sort ca:
(x2+0.8643749436553161143x+0.36942744293759222517)
(x2+2.5200827068178867889x+1.8617163001244585151)
(x2+1.1105423495267970968x+1.4539763581950476698)
on normalise et on formate pour LT Spice
(1+2,339769*s/w+2,706891*(s/w)**2) * (1+1,353634*s/w+0,537139*(s/w)**2) * (1+0,763797*s/w+0,687769*(s/w)**2)
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
|
Retourner vers Filtrage actif, Equalisation et Processeurs
|