Bonjour tout le monde
Voici un code dont j'entends bien que l'utilité peu sembler étrange lol, mais je ne parviens pas à comprendre le résultat obtenu...
J'aurais besoin de quelqu'un de suffisamment calé en théorie sonore pour m'aider à comprendre cette bizarrerie...
Voici une petite explication des calculs effectué dans le code ci-dessous...
Posons - une fréquence d'échantillonnage de 44100 Hz
- une onde sonore de 100 Hz (le calcul est plus simple avec cette fréquence...)
- un bufferSize de 1024 samples
Alors le nombre de samples pour que cette onde effectue une oscillation complète est de 44100 / 100 = 441 (ligne 24).
(Mon onde oscillera donc de 1024 / 441 = +/- 2.32 fois le temps d'un buffer).
Déjà, ai-je bon jusque ici?
Afin de "transposer" chacune des oscillations de mon onde dans un cercle, je map mes samples de 1 à 441 entre 1 et 360 (ligne 25).
J'effectue ensuite un cosinus pour chacun de ces samples afin de trouver ma position en x et je prends l'amplitude de chacun de ces samples pour ma position en y (ligne 26 et 27).
Pourquoi diable n'obtiens-je un rond parfait uniquement qu'à la fréquence de 516.797 hz et de ses multiples???
En théorie, je devrais obtenir ce résultat peu importe la fréquence de mon onde (du moment qu'il s'agit d'une sinusoide), non?
import ddf.minim.*; import ddf.minim.ugens.*; Minim minim; AudioOutput out; Oscil wave; float nbSamples, angle, x0, y0, z0, x1, y1, z1; float freq = 516.797; void setup(){ size(600, 400, P3D); stroke(255); ortho(); minim = new Minim(this); out = minim.getLineOut(Minim.MONO, 1024); wave = new Oscil(freq, 1, Waves.SINE); wave.patch(out); } void draw(){ background(0); translate(width/2, height/2, 0); for(int i = 0; i < out.bufferSize(); i++){ nbSamples = 44100 / freq; angle = (i * 360 / nbSamples) % 360; x1 = 100 * cos(radians(angle)); y1 = 100 * out.left.get(i); line(x0, y0, x1, y1); x0 = x1; y0 = y1; } }
NB: Il faut modifier la fréquence freq de mon code pour comprendre les résultats saugrenus dont je parlais.
Assez étrangement, j'ai fait une petite recherche sur le net au sujet de cette fréquence de 516.797 hz et voici ce que j'ai trouvé: http://www.lim.di.unimi.it/IEEE/CILANO/C3214.HTM
Cette fréquence précise aurait donc un rôle dans notre perception tonale!
En vous remerciant de l'intérêt porté à mon problème!
Au plaisir de vous lire!
Dernière modification par AcousticQuantum (2018-01-16 22:49:23)
Hors ligne
Bonsoir,
Pour apporter un élément de réponse :
516.797 = 12 * (44100 / 1024)
De ce fait, il y a un nombre entier de sinusoïdes dans le tampon. C'est pour cela que le cercle est stable.
Il faut que tu définisses ce que tu souhaites faire pour que notre aide soit utile.
Bon courage.
Hors ligne