Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Demande info sur l'implementation des oscillateurs numeriques (perf catastrophique)

  • 5 réponses
  • 2 participants
  • 460 vues
  • 2 followers
1 Demande info sur l'implementation des oscillateurs numeriques (perf catastrophique)
Salut,

Bon j'explique mon probleme....Je bose sur analyseur resynthetiseur additif...
La partie analyse fonctionne bien et dans des temps correcte...

Par contre la resynthese c'est une horreur (en perf)... :8O:


Voila je possede une liste de partiels avec leur date de naissance et de mort, chaque partiel bouge en frequence est en amplitude....Les informations concernant la mise a jour des frequence et de l' amplitude sont donné a une frequence F1....largement superieure a la frequence d'echantillonnage Fe...

Pour generer un partiel, a present je fesais ca...

J'interpolle la liste des frequence echantillonnés à F1 vers la frequence Fe...(type reechantillonnage classique )....je fais la meme chose pour les amplitudes.....et puis je generer le partiel....x=A_interpolle*cos(2pi*f_interpolle*n/Fe+phase_init)

Et bien en terme de performances sonore ca va, mais les calculs sont horriblement long :!:

-J'ai entendu parler de certaines techniques comme la mise a jour des informations frequnetielle et de l'amplitude de l'oscillateur tous les 100 echantillons (borne max) :?:
-J'ai egalement entendu parler de reechantillonnage par spline :?:


Je remercie d'avance toute personne qui pourra me filer un coup de main ou des idée (et les autres aussi :8) ) ...
2
Il faut faut utiliser un algo iteratif.

s[0]= a cos(phi_0)
s[1] = a cos(phi_0+delta_phi)
C = 2cos(delta_phi)
s[n+1] = C.s[n]-s[n-1]

delta_phi = 2 pi f / Fe

de cette maniere tu ne caclule que 2 cosinus par partiel
et tu fait une addition et une multiplication par echantillon et par partiel
3
Merci :clin: :bravo:
Ca donne quoi lorsque f varie dans le temps :?: La formule est elle encore applicable (ou bien customisable) :?:
4
Si tu veut faire varier f dans le temps. ça ne pose pas de probleme. il suffit de recalculer delta_phi.

pour avoir les meilleures performances possible il faut toujours essayer de limter les cos et /.

tu calcule une fois pour toute 2 pi/F et a chaque fois que tu change la frequence de ton partiel tu rajoute une multiplication mais aussi un cosinus. Il ya peut etre un moyen de s'en passer.(si ta frequence est piloté par une autre oscillateur par exemple)

Si la variation de frequence est modifié par l'utilisateur ce n'es pas la peine a mon avis de mettre a jour delta phi pour chaque echantillon. Si elle evolue selon une fonction bien precise regarde si tu ne peux pas mathematiquement la simplfier ou l'aprocher avec de la synthese AM ou FM.
5
Merci :clin:

Citation : tu calcule une fois pour toute 2 pi/F et a chaque fois que tu change la frequence de ton partiel



Le truc c'est que la frequence de reception des amplitudes et des frequences est tres tres rapide (periode 100 echantillons)

Citation : si ta frequence est piloté par une autre oscillateur par exemple



Les frequences n'evolues pas de facon periodique, donc c'est un peu mort.


Je vais essayer d'implementer ce que tu m'as dit :clin:
6
Je crois que j'ai ecris une betise. si on fai varier la frequence en fonction du temps il faut recaluler le terme s[n-1].