Bonjour
et tous mes meilleurs vœux.
Avant toute chose, je ne suis pas matheux...
Ceci étant dit, j'ai récemment trouvé cette page web d'où j'en ai tiré ce code,
(j'ai laissé les commentaires pour montrer par où je suis passé, et les décalages d'alignements sont le fait de l'éditeur du forum)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
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
36
37
38
39
40 /* pour compil linux : gcc montest.c -lm -o montest */ #include <stdio.h> #include <math.h> int main() { int x; int RunningSampleIndex; int SamplingFrequency; float Frequency; float WavePeriod; float angle; float Volume; float SampleValue; float tSine; Frequency=500.0; Volume=0.5; WavePeriod=1/Frequency; // 0.002 RunningSampleIndex=0; for(x=0; x<44100; x+=1) { // fprintf (stdout, "RunningSampleIndex : %3llu \n", RunningSampleIndex); angle=2.0f*M_PI*(RunningSampleIndex / WavePeriod); // fprintf (stdout, "angle : %f \n", angle); // SampleValue=sinf(angle) * Volume; // fprintf (stdout, "SpVal : %f \n", SampleValue); tSine += 2.0f*M_PI/WavePeriod; // pourquoi ...Pi32*1.0f/WavePeriod ? // fprintf (stdout, "tSine : %f \n", tSine); SampleValue = sinf(tSine) * Volume; fprintf (stdout, "SpVal : %10.6f \n", SampleValue); RunningSampleIndex+=1; // fprintf (stdout, "\n"); } return(0); }
Est-ce que quelqu'un peut me dire si mon interprétation est correcte ?
Car je trouve qu'il n'y a pas beaucoup de valeurs quand on regarde une demi-période comme par exemple les dernières lignes de la fin de l'exécution du prog :
Si je passe le volume à 0.99, ça donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ... SpVal : -0.232851 SpVal : 0.102324 SpVal : 0.390616 SpVal : 0.499933 // tout en haut SpVal : 0.380189 SpVal : 0.086248 SpVal : -0.247211 SpVal : -0.467401 SpVal : -0.473435 // tout en bas SpVal : -0.262548 SpVal : 0.068635
Les écarts de volume sont plus élevés, mais je trouve qu'il n'y a pas beaucoup de samples d'une période à l'autre : normal ? Pas normal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SpVal : -0.461045 SpVal : 0.202601 SpVal : 0.773419 SpVal : 0.989867 // tout en haut SpVal : 0.752774 SpVal : 0.170770 SpVal : -0.489478 SpVal : -0.925454 SpVal : -0.937401 // tout en bas SpVal : -0.519845 SpVal : 0.135896
Une ligne que je n'ai pas bien su traduire, dans l'article : tSine += 2.0f*Pi32*1.0f/(float)WavePeriod;. D'abord je n'ai pas trouvé Pi32 (et en cherchant avec ggl je me suis retrouvé soit sur du Pic soit avec des images chaudes, pas que je les rejette mais ce n'était pas le sujet) alors je l'ai remplacé par M_PI, et je n'ai pas compris ensuite à quoi servait *1.0f alors je l'ai viré.
Bien ? Pas bien ?
Gramd merci par avance,
Partager