Sound Demo 3

Aus ProgrammingWiki
Archivierte Version vom 2010-01-22T08:17:29+00:00. Aktuelle Version

Mit diesem Beispiel kann man Funktionen hörbar machen. In diesem Beispiel werden 3 Sinuskurven zu einem Ton zusammengefügt. Gleichzeitig wird mit gain ein Abklingen des Tones simuliert.

<eval id="4b58377106a33"> // erzeugt eine Art Glockenschlag double playFunction(double x, double freq){</eval>

     double gain = 1.0-Math.log(x+1)/1.8;
     if(gain < 0) gain = 0;
     double sinValue =
       (Math.sin(2*Math.PI*freq*x) +
        Math.sin(2*Math.PI*(freq/1.8)*x) +
        Math.sin(2*Math.PI*(freq/1.5)*x))/3.0;
     return (sinValue)*gain;

}

draw(5,0,500.0); // 5 Sekunden diese Funktion spielen und mit x=0 beginnen play(5,0,500.0); // Frequenz von 500 Herz

Ihr Browser unterstützt Canvas nicht.


In diesem Beispiel werden zunächst die Grundtöne C,D,E,F,G,A und H in einem Vector durch die Funktion fillTones() vor berechnet. Anschließend wird eine Tonfolge ausgegeben. Sie können diese Zeichenkette und die ToneFunction beliebig anpassen. <eval id="4b595bb5968ce"> double ToneFunction(double x, double freq){</eval>

     double gain = 1.0-Math.log(x+1)/0.6;
     if(gain < 0) gain = 0;
     double sinValue =
       (Math.sin(2*Math.PI*freq*x) +
        Math.sin(2*Math.PI*(freq/1.8)*x) +
        Math.sin(2*Math.PI*(freq/1.5)*x))/3.0;
     return (sinValue)*gain;

} fillTones(); playTones("E E F G G F E D C C D E E D D"); // spielt eine Tonfolge ab.