Sound Demo 3
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
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.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;} fillTones(); playTones("E C D"); // spielt eine Tonfolge ab.