mercredi 29 avril 2009
Générer du son avec Flash 10
La suite de mes expérimentations avec flash, un petit générateur de son tout simple. Il vous faut le Flash Player 10 pour que ça fonctionne.
ATTENTION, BAISSEZ LE SON : CA FAIT MAL AUX OREILLES !
Cliquez sur les touches pour déclenchez une note, vous pouvez changer l'octave et la forme de l'onde.
Je pense que je me suis trompé dans la formule du son de forme triangulaire, c'est plutôt affreux.
En fait tous les sons sont très moche à écouter, mais c'est la base de la musique électronique.
il faut pas mal d'effets derrière pour en faire quelque chose d'audible.
Me voilà donc avec un nouveau projet annexe, créer un synthétiseur type MS-20.
des explications détaillées dans la suite du billet...
var sound:Sound = new Sound();
function sineWavGenerator(event:SampleDataEvent):void {
for ( var c:int=0; c<1234; c++ ) {
var sample:Number = Math.sin((Number(c+event.position)/Math.PI/2))*0.25;
event.data.writeFloat(sample);
event.data.writeFloat(sample);
}
}
sound.addEventListener("sampleData",sineWavGenerator);
sound.play();
Et la je me suis dit merde c'est tout ? en fait on rempli un buffer de son avec une courbe , sachant que toute courbe est une fonction mathématique,
mes cours de physique me reviennent à la gueule, un petit tour sur wikipedia simpose, particulièrement ca : waveform
On peut donc génrer plusieurs types de courbes, différents sons
en ajustant la fréquence de la courbe, on génère différentes notes. En cherchant un peu je suis tombé sur ce site : maths et musique
Les prochaines étapes :
- Deux oscillateurs, avec sélection du type de forme, de l'octave.
- De quoi mixer les deux, pour bien faire, il me faudrait un composant de potentiomètre circulaire (rotary knob) .
- Un générateur d'enveloppe ( attack /decay / sustain / release ) pour pouvoir faire des notes plus jolies, et pas un signal continu.
Commentaires