bonjour à tous !
Je suis en train de mettre en place un patch basique de synthèse additive pour faire une petite démo de puredata.
Pour l'instant tout fonctionne à merveille, si ce n'est que l'array dans lequel je cherche à afficher la forme d'onde ne cesse de "sautiller", et ce quelque soit la taille que je définisse pour le dit array.
Est-ce que des pros du milieu aurai une combine pour rendre l'affichage aussi fluide que sur un oscilloscope ?
Merci d'avance
Hors ligne
Yop,
je pense qu'il faudrait synchroniser ton metro avec la fréquence (fo) de l'oscillateur : ton metro doitt avoir une période (Tm) qui est un multiple entier (n) de la période de ton oscillateur (To). La période valant l'inverse de la fréquence (en secondes), la période de ton metro doit satisfaire l'expression Tm=x/fo. Pour fo=440hz et n=30 tu obtiens Tm=113.636363ms, qui est une valeur valide assez proche de ce que tu avais choisi.
De cette manière à chaque fois que tu sollicites ton [tabwrite~] il réécrit les mêmes valeurs aux mêmes endroits...aux imprécisions dues à la longueur de bloc logique près, j'imagine.
Je n'ai pas testé maintenant, mais de mémoire ça fonctionne.
Nau
Dernière modification par nau (2015-06-25 23:47:04)
Hors ligne
Nice, on avance ! Merci
Alors du coup, j'ai compris le système pour synchroniser avec ma période mais il reste toujours un problème : la taille du tableau ne correspond pas à un multiple de la période et ce quoi que je rentre en paramètres, d'autant plus que je trouve les paramètres du tableau un peu compliqués à appréhender. Pour l'instant j'ai essayé de ne rentrer que des multiples de 440 mais ça ne donne rien. Est-ce que tu aurais une idée ? Je n'ai rien trouvé sur internet qui corresponde ...
Merci encore
Quentin
Hors ligne
Yop,
partant de la période To de ton oscillateur (2,272727...ms si fo=440hz), et disons que tu veuilles afficher p=3 périodes complètes, cela correspond à 3x2,272727=6.818181ms de durée w de ton sample à visualiser. Partant d'une fréquence d'échantillonnage fs=44100hz ie 44100 points par seconde, une règle de trois te permets de calculer que la durée de 0.006818181s sera dessinée par 0.00681818x44100=300.6818 points.
En allant à l'essentiel le calcul est w= (p/fo)xfs
Nau
Dernière modification par nau (2015-06-27 00:00:46)
Hors ligne
ça demande encore un peu d'affinage dans mes calculs mais ça fonctionne. Merci beaucoup les gars !
Quentin
Hors ligne
Et l'objet [scope~], il ne te plaît pas ?
Hors ligne