Hallo Leute,
ich bin grade dabei mit DirectSound einen Synthesizer zu programmieren. Habs jetzt soweit geschafft, dass auf Tastendruck ein Ton ertönt
und zwar hab ich mich an den Quellcode von "3-D Spieleprogrammierung mit DirectX9 und C++" auf Seite 445ff gehalten. Nur etwas modifiziert um ihn an meine Ansprüche anzupassen. Hab also nen SoundBuffer erstellt mit der Länge von ner Sekunde und schreibe den dann mit Elongationswerten voll, die der gedrückten Taste entsprechen. Wenn eine Taste gedrückt wird, wird dann auch der Buffer mit Play(...LOOPING..) abgespielt (falls er nicht schon gespielt wird).
Bin da aktuell aber auf folgendes Problem gestoßen:
Wenn ich eine Taste gedrückt halte und zwar länger als die Länge des Soundbuffers (aktuell 1 sec) dann ertönt im Abstand von ca. 1sec immer so ein Knack-Geräusch. (Welches auch am Start der Widergabe erklingt *Grummel*). Der Abstand zwischen den Knackgeräuschen ändert sich mit übrigens mit der Soundbuffer-Länge.
Nun könnte ich den Soundbuffer länger machen, aber dann braucht der Rechner zu lange um selbigen voll zu schreiben und somit dauerts zu lange, ehe der Ton nach einem Tastendruck erklingt.
Andere Möglichkeit wäre vielleicht Streaming, aber das hab ich noch nicht wirklich hingekriegt.
Hat da jemand ne Idee, wie man das Knacken beseitigt oder was das überhaupt sein könnte? Wäre dann nen großen Schritt weiter.