Commit af8593cebbc2e1190f21edcd4ef4695dad2797fa
1 parent
14b969fb
readme
Showing
7 changed files
with
64 additions
and
14 deletions
Show diff stats
... | ... | @@ -0,0 +1,48 @@ |
1 | +#include <iostream> | |
2 | +#include "wavdata.h" | |
3 | +#include "fft.h" | |
4 | +#include <math.h> | |
5 | + | |
6 | +#define FREQ 22400 | |
7 | +#define AMPLITUDE 10 | |
8 | +#define FREQDO 261 | |
9 | +#define FREQLA 440 | |
10 | +#define SIZE FREQ*5 | |
11 | + | |
12 | + | |
13 | +int main(int argc, char **argv) | |
14 | +{ | |
15 | + float pi=3.141592; | |
16 | + WavData w; | |
17 | + char *data = new char[SIZE]; | |
18 | + char *data2 = new char[SIZE*2]; | |
19 | + int i,j=0; | |
20 | + | |
21 | + //Creation de la données | |
22 | + for(i=0;i<SIZE;i++){ | |
23 | + float wla=2.0*3.14*FREQLA; | |
24 | + float t=(float)i/FREQ; | |
25 | + data[i]=AMPLITUDE*(1+sin(wla*t)); | |
26 | + } | |
27 | + | |
28 | + for(i=0;i<SIZE;i++){ | |
29 | + data2[j]=data[i]; | |
30 | + data2[j+1]=data[i]; | |
31 | + j=j+2; | |
32 | + } | |
33 | + | |
34 | + //setup du format audio de sortie | |
35 | + w.setAudioFormat(1); | |
36 | + w.setNbrChanel(1); | |
37 | + w.setFrequency(FREQ); | |
38 | + w.setBytePerBloc(4); | |
39 | + w.setBytePerSec(FREQ); | |
40 | + w.setBitsPerSample(8); | |
41 | + w.clearData(); | |
42 | + | |
43 | + //implémentation des données de sortie | |
44 | + w.setDatasize(SIZE*2); | |
45 | + w.setData(data2); | |
46 | + w.save("laetire.WAV"); | |
47 | + | |
48 | +} | |
0 | 49 | \ No newline at end of file | ... | ... |
18.4 KB
No preview for this file type
pur/test
No preview for this file type
readme.md
... | ... | @@ -25,12 +25,17 @@ C’est à dire que nous chargions le son cow afin de récupérer ses paramètre |
25 | 25 | Nous avons commencé à construire notre signal sinusoïdale à l’aide de la fonction sinus dans math.h et de notre fréquence. |
26 | 26 | Pur.cpp permet de créer deux fichiers audio différents purs. Le premier fichier est la note La et le deuxieme la note DO. |
27 | 27 | |
28 | +J'utilise VLC et la visualisation de l'audio avec l'osciloscope afin d'afficher le signal. | |
29 | + | |
30 | +```C++ | |
31 | +for(i=0;i<SIZE;i++){ | |
32 | + data2[j]=data[i]; | |
33 | + data2[j+1]=data[i]; | |
34 | + j=j+2; | |
35 | + } | |
36 | +``` | |
37 | +A l'aide de cette fonction, nous étirons notre signal par deux. Ce qui à pour effet de diviser par deux la fréquence de notre signal, donc notre devient plus grave. | |
28 | 38 | |
29 | -On a fait un test avec la valeur 128 et pas de son en sortie du fichier | |
30 | - | |
39 | +Dans cette première partie, j'ai pu rencontrer différents problèmes sur l'utilisation de la blibliotéque et sur la création de signaux. | |
31 | 40 | |
32 | -Multiplier par 2 le temps | |
33 | -Diviser | |
34 | -1 echantillion devient 2 | |
35 | -Dans l’espace frequentielle | |
36 | -FFT Deux dimensions, double le temps FFTinverse | |
41 | +Dans le code précédent, je me suis rendu compte que les valeurs devaient être positive, c'est pourquoi dans notre création de notre sinus, un "+1" s'y trouve afin d'assurer d'avoir des valeurs >0. | |
37 | 42 | \ No newline at end of file | ... | ... |
strech/lastrech.cpp
... | ... | @@ -41,12 +41,10 @@ int main(int argc, char **argv) |
41 | 41 | //Modification dans le domaine fréquentiel |
42 | 42 | printf("===modif freq\n"); |
43 | 43 | for(i=0;i<SIZE;i++){ |
44 | - int x=i; | |
45 | - | |
46 | - test3[2*x][0]=test2[x][0]; | |
47 | - test3[2*x+1][0]=test2[x][0]; | |
48 | - test3[2*x][1]=0; | |
49 | - test3[2*x+1][1]=0; | |
44 | + test3[2*i][0]=test2[i][0]; | |
45 | + test3[2*i+1][0]=test2[i][0]; | |
46 | + test3[2*i][1]=0; | |
47 | + test3[2*i+1][1]=0; | |
50 | 48 | } |
51 | 49 | |
52 | 50 | //FFT inverse | ... | ... |
strech/timestrechcow.cpp