Sound Demo 3
Aus ProgrammingWiki
Archivierte Version vom 2010-01-22T08:03:01+00:00. Aktuelle Version
Mit diesem Beispiel kann man mathematische Funktionen hörbar machen. Bei der Tonerzeugung wird nicht zwischen negativen und positiven Ausschlägen unterschieden. Ist y = 0 entsteht kein Ton. Schlägt y im negativen oder positiven Bereich aus, entsteht ein hoher Ton. Verändern Sie die Funktion zum Beispiel mit Math.sin(x).
<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
<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.