Présentation du projet:
Ebauche d'application multimédia expérimentale avec des pixels et du bruit
Description:
Pour le moment ce sont des bricolages à travers lesquels j'essaye de reproduire des vieux bruits de techno.
Utilité:
Ce projet ne sert strictement à rien.
Plus tard il servira peut-être à faire une drum machine vintage si j'ai le courage de finir mais pour l'instant je me concentre sur les calculs d'ondes.
Technologie:
J'aurais du faire ça avec SDL mais je ne sais plus pour quelle mauvaise raison j'ai fait ça avec xaudio, il faudra faire un portage sur sdl plus tard pour linux, enfin, si j'arrive à finir la version windows.
Avancement
Interface graphique = pour l'instant y'a rien, juste un test d'affichage moche qui reproduit approximativement l'écran d'un thomson mo5
Machine à son = pour le moment y'en a pas, juste toute une bouillie de calculs de tests faits n'importe comment
Avancement des tests:
J'ai tenté de tester une onde sawtooth mais le bruit était horriblement agressif, je ne sais pas si c'est dù à une erreur d'amplitude qui aurait produit un effet de saturation, ou si c'est parce que la cassure brutale devrait être remplacée par une pente raide
J'ai pour l'instant réussi à jouer trois notes de basse prout avec une onde triangle (celle qui faisait la basse de la gameboy) vous pouvez écouter mon oeuvre ici:
http://vocaroo.com/i/s0KgHe447Hrc
Ca rend pas grand chose enregistré au micro, chez moi ça fait vibrer les meubles.
Voilà et je vous mets la partie du code qui calcule ça.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 float * buf = s_audio; double min=-.5, max=.5; long p; // BASER CA SUR LE TEMPO PLUS TARD LA ON FAIT UNE TRIPLE CROCHE PAR SAMPLE long tick = s_audiopos / 2048 / 2; bool sound = (bool)s_riff[ tick & 127 ] ; if ( sound ) s_triFrequency = s_notes[ s_riff[ tick & 127 ] - 1 ] / 2; for ( p=0; p<4096; p+=2 ) { /* TRIANGLE WAVE */ if ( sound ) s_triVol=.9; else s_triVol *= .9999; if ( s_triVol < 0.01 ) s_triVol = 0; if ( s_triVol ) { // vibration s_triSlope = s_triFrequency * s_triVol * 2.0 / 44100.0; min = -s_triVol; max = s_triVol; s_triValue += s_triSide * s_triSlope; if ( s_triSide==1.0 && s_triValue >= max ) { s_triValue = max; s_triSide = -1.0; } if ( s_triSide==-1.0 && s_triValue <= min ) { s_triValue = min; s_triSide = 1.0; } } else { // finish vibration if ( s_triValue > 0 ) s_triSide = -1.0; else s_triSide = 1.0; s_triValue += s_triSide * s_triSlope; if ( s_triSide==1.0 && s_triValue >= 0 ) { s_triValue = 0; } if ( s_triSide==-1.0 && s_triValue <= 0 ) { s_triValue = 0; } } // pas de gestion stereo pour le moment // je ne sais pas encore comment faire // car les changements brutaux de volume produisent une cassure d'onde buf[p ] = s_triValue ; buf[p+1] = s_triValue ; s_audiopos += 1; } /* SAWTOOTH WAVE */ /* cest beaucoup plus simple en fait cest juste pase sur un modulo */ /*for ( p=0; p<4096; p+=2 ) { // calculs ici if ( sound ) { if ( s_vol < .5 ) s_vol += .0001; } else { s_vol *= .9995; } if ( s_vol ) { // vibration s_slope = s_frequency * s_vol * 2.0 / 44100.0; min = -s_vol; max = s_vol; s_value += s_slope; if ( s_value > max ) { s_value = min; } } // pas de gestion stereo pour le moment // je ne sais pas encore comment faire // car les changements brutaux de volume produisent une cassure d'onde buf[p ] = s_value ; buf[p+1] = s_value ; s_audiopos += 1; }*/
Planning prévisionnel
Je cherche d'abord à tester bêtement les calculs d'ondes dans un coin, une fois que j'aurais trois types d'ondes qui me conviennent, je structurerai ça proprement avec un tempo, trois pistes, tout ça.
Là j'ai envie de tester une onde sinus.
J'ai vraiment la flemme de me remettre sur ce projet parce que c'est pas très amusant de se casser la tête avec plein de calculs tout ça pour faire des bruits moches horribles, j'ai besoin de votre aide pour trouver le courage de continuer.
Les spécialistes des ondes sonores sont aussi invités à signaler si ils trouvent des erreurs de calcul.
Partager