Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Kay

Frischling

  • »Kay« ist der Autor dieses Themas
  • Private Nachricht senden

1

26.01.2006, 16:11

Knacken beim Loopen von Sounds

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.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

26.01.2006, 17:57

Das Knacken entsteht, weil die Schwingung am Ende des Soundpuffers an einer anderen Stelle (Phase) ist als am Anfang.

Kay

Frischling

  • »Kay« ist der Autor dieses Themas
  • Private Nachricht senden

3

26.01.2006, 20:11

Das hab ich mir schon gedacht. Hab mal versucht ne Frequenz zu nehmen, die nach 1sec genau da aufhören müsste, wo sie auch angefangen hat (z.B. 1000Hz). Hat leider nicht geholfen.

Bin jetzt am überlegen, wie man das Problem am besten löst. Am geschicktesten wäre ja, sich die Zeit zu merken (fTime im Buch), zu der der Sound aufhört und bevor er fertig ist mit abspielen, zu diesem Zeitpunkt am Anfang des Buffers wieder einsteigen und neu beschreiben. Ob nun per Streaming, oder wie auch immer sei dahin gestellt.

Werd mal dran arbeiten. Für weitere Vorschläge bin ich aber offen.

Werbeanzeige