Damit es schnell wird, sollte in den häufoger durchlaufennen Schleifen keine Berechnung mehr mit double sein. Für seltene Fälle wie die Anzeige der die Umrechnung einer Eingabe ist double noch OK, aber halt nicht für jede Signalperiode oder gar jeden Punkt der Kurve. Vor allem die Sinusfunktion muss man vermeiden. Ich hab jetzt keine genauen Werte, aber so mit rund 100 µs muss man schon für die Sinus Funktion rechnen. Die Werte der Sinusfunktion kann man z.B. in einer Tabelle ablegen.

Ein Tip wäre es sich mal mit dem DDS- verfahren zu beschäftigen.