Thema: Delphi Sinuston im Wav-Format

Einzelnen Beitrag anzeigen

blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Sinuston im Wav-Format

  Alt 31. Okt 2010, 18:08
Hallo!

Ich möchte einen Sinuston mit variabler Frequenz erzeugen. Dazu benutze ich einen Memory-Stream, schreibe einen Wav-Header und die Audiodaten rein und spiele sie dann mit sndPlaySound(MemStream.Memory, SND_MEMORY or SND_ASYNC or SND_LOOP); ab.
Ich benutze immer genau eine Sinuskurve im Intervall von 0 bis 2*Pi. Diese Kurve wird von n Punkten repräsentiert. Um jetzt die Frequenz zu ändern, verändere ich einfach die Samle Rate. Eine Kurve aus 10 Punkten mit einer Sample rate von 10 hat 1Hz und mit der Sample rate 1000 hat sie 100Hz.

Eigentlich funktioniert das recht gut, mein Problem ist aber, dass es "Sprünge" im gehörten Ton gibt. Das heißt zb bei einer Frequenz von 10.000 - 13.000Hz hört sich der Ton exakt gleich an. Von 13.000 auf 13.001Hz ändert sich der gehörte Ton plötzlich enorm.
Bei niedrigeren Frequenzen ist der Effekt noch nicht so deutlich. Aber ab ca. 10.000 Hz gibt es immer längere Frequenzbereiche mit demselben Ton und dementsprechend sehr großen Sprüngen dazwischen. Wo genau dieses Sprünge sind, ist anscheinend davon abhängig aus wie vielen Punkten eine Sinuskurve besteht.

Leider komme ich hier nicht weiter... Vielleicht liegt das Problem daran, dass man die Sample rate nicht beliebig wählen kann. Ich weiß aber nicht wie ich die Sprünge verhindern soll.

Könnt ihr mir weiterhelfen???

Grüße
blablab

P.S. Bitte fragt mich nicht nach dem Sinn dieses Programms
  Mit Zitat antworten Zitat