Sinusgenerator mit Soundausgabe

Hallo!

Ich versuche unter Visual C++ 6.0 eine Art Sinusgenerator zu programmieren. Ich möchte eine Frequenz eingeben, die dann als Dauerton ausgegeben wird. Leider habe ich ich keine Ahnung wie ich das der Soundkarte klar mache. Unter DirecX finde ich nur Möglichkeiten Sounds zu laden und abzuspielen, aber wie generiere ich Sounds zur Laufzeit? Dazu finde ich nichts…
Vielleicht kann ja jemand helfen?

Vielen Dank

Ralf

Ich hab von Directsound nicht so die Ahnung, aber Sinus-Töne zu generieren ist leicht.
Mach dir nen Puffer :

#include

const int pufSize = 2048; //Grösse des Puffers in Einheiten
short puf16[pufSize]; //Puffer für 16-Bit-Töne
char puf8[pufSize]; //Puffer für 8-Bit-Töne

Grösse muss du wohl in bestimmten Grenzen wählen, damit du es in DirectSound oder sonstwo ausgeben kannst. Musste mal die Doko lesen:wink:

Dann erzeugst du Sinus-Töne :

double amplitude = 1.0f;
//„Wie weit die Welle hoch und runtergeht“
//Bereich ist also 0.0f -> 1.0f
//wobei 0.0f = Kein Ton
// und 1.0f = Volle Lautstärke

double frequenz = 500.0f;
//Wie hoch der Ton ist
//Vorsicht! Dieser Wert orientiert sich an der Abspielrate
//d.h. wenn der Sound für 44,1kHz Abspielrate erzeugt wird,
//dann aber mit 32kHz abgespielt wird, hört er sich natürlich ganz
//anders an…

double abspielrate = 44100;
//Das ist die Abspielrate
//Kann man sicher bei der Programmierung beeinflussen
//Mögliche werte sind : 11000, 22000, 32000, 44100, 48000

//Die Sinuskurve muss sich jetzt „frequenz“-Male in einem Bereich von
//„Abspielrate“-Einheiten (im puffer) wiederholen, damit sie sich am
//Ende dann richtig anhört

double interval = (abspielrate / frequenz);
//Wie lang ist eine Schwingung in Einheiten?

for (int i = 0; i