Die Idee mit dem Thread für's Timing ist net schlecht, wobei das an sich auch der Timer aus der MMSystem.pas ähnlich gut aufgelöst erledigen könnte.
Aber pro Spur einen eigenen Thread zu erzeugen wäre nicht mehr so elegant. Laut
OH ist eine praktikable Thread-Anzahl pro Prozess auf einer SingleCPU 16. Threads erzeugen bei einer gewissen Häufigkeit nicht zu vernachlässigen Overhead den man bei dieser Art der Anwendung nicht so gut gebrauchen kann
So ziemlich alle Sequenzer die nicht mit MIDI-Daten arbeiten, sondern mit Synthesizern und/oder Wave-Samples verwenden einen Buffer von mehreren Millisekunden Länge, in den kontinuierlich das Mixdown rein gerendert wird, und vom Player-Subsystem sukzessive ausgelesen. Je größer der Puffer, desto sicherer ein durchgehender Klang, aber auch längere Reaktionszeiten auf z.B. Buttonclicks wie Play oder Stop.
Aber das ist die übliche Praxis.
Grundsätzlich gälte es schon mal logisch zwischen Taktung, Tonerzeugern (Waves/Synth.), Mixersystem, ggf. FX-System (auch ggf. Spurbezogen oder Mastereffekte), und die Player-Schicht zu trennen. Dann ist es leichter einzelne Subsysteme zu bearbeiten, ohne dass sich Änderungen durch den gesamten Code ziehen (Stichwort: Strenge
OOP).
gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel