Mehere Frequenzen gleichzeitig erzeugen
-
Hallo,
ich versuche gereade über DirectSound verschiedene Frequenzen gleichzeitig auszugeben. Jedoch komme ich nicht weiter, da es keine Funktion gibt, die PlayFrequency( ... ) heißt, oder ähnliches bewirkt (zumindest habe ich nichts derartiges gefunden).Hoffentlich könnt ihr mir helfen.
Mit freundlichen Grüßen
Rhombicosidodecahderon
-
Mit Inverser Fouriertransformation kannst du die Frequenzen mischen und dann einfach als *.wav ausgeben. So aehnlich hab ich in meinen 4ks auch angefangen. f'`8k
Gruß, TGGC (\-/ has leading)
-
Danke für die [strike]ausführliche[/strike] Antwort.
Leider habe ich jetzt nicht den einen Weg mit der "Inverser Fouriertransformation", sondern einen anderen Weg genommen.
-
np, gern geschehen. f'`8k
Gruß, TGGC (\-/ has leading)
-
TGGC schrieb:
Mit Inverser Fouriertransformation kannst du die Frequenzen mischen...
man könnte die frequenzen auch einfach addieren...

-
Das ist ja wohl Unsinn. Ein Ton mit 440 Hz und ein Ton mit 220 Hz gibt keinen Ton mit 660 Hz. f'`8k
Gruß, TGGC (\-/ has leading)
-
Ich glaube er meinte, dass man 2 Signale unterschiedlicher Frequenz einfach addieren kann

-
Und ich beschrieb, wie man von Frequenzen erstmal zu einem Signal kommt. f'`8k
Gruß, TGGC (\-/ has leading)
-
Ja, einen der Wege.
-
inverse dft macht IMHO nur dann sinn wenn man viele viele frequenzen "addieren" (überlagern) möchte, die ein relativ kleines gemeinsames vielfaches haben, idealerweise die samplefrequenz. für ein paar einfache sinustöne ist das denke ich etwas krass.
-
Wenn du so freundlich wärst, kurz zu beschreiben wie du das gelöst hast, wäre das klasse!
Ich bin gerade dabei ein Programm zu schreiben, das Datenblöcke über Funk versendet. Dazu muss ich zwischen 0,8ms und 10ms lang einen bestimmten Ton über die Soundkarte ausgeben, bzw. teilweise mehrere Tonfrequenzen zugleich, um das Protokoll einzuhalten.
Ich verwende DirectSound leider das erste Mal und da das Thema hier gerade aktuell zu sein scheint frage ich hier mal. Verweise zu anderen Seiten, die ich nicht per Google gefunden habe, sind gern genommen. Es geht also eigentlich "nur" um die Erzeugung eines Sinustons bzw mehrerer sehr kurzer Sinustöne zugleich und halt am Besten noch in Echtzeit und ohne Umweg über eine Wave-File.Für jegliche Vorschläge dankbar
Grüßt der Seppl
-
TactX schrieb:
Ich glaube er meinte, dass man 2 Signale unterschiedlicher Frequenz einfach addieren kann


seppelon schrieb:
Wenn du so freundlich wärst, kurz zu beschreiben wie du das gelöst hast, wäre das klasse!
- Audacity benutzen
- Menu > Generieren > Ton... > Wellenform: Sinus, Frequenz: 1000 Hz (theoretisch egal), Amplitude: 1,00, Länge: 5 Sekunden > Ton erzeugen
- Samplerate einstellen: 8000Hz (optional - ich benutze es, da es dann nur noch weniger groß ist), Kanal: Mono und Sampleformat: 16bit
- Menu > Datei > Exportieren als WAV ... > Datei erstellen
- In das jeweilige Projekt einbinden
- etwa hier bin ich (d.h. ich weiß nciht ob das Folgende klappt /klappen wird)
- mehrere SecondBuffer erstellen - jeweils mit der BufferDescription "ControlFrequency = true" und die Wav datei per Stream einbinden
- Die Frequenz Umrechnen
Ton: 1000Hz, Samplerate: 8000Hz, gewünscht: x neue Frequenz: x / 1000 * 8000dann die Frequenz einstellen
- Abspielen "m_buffer.Play(0, BufferPlayFlags.Looping);
- und nach der gewünsten Zeit m_buffer.Stop();
Ich glaube aber nicht, dass man genau 0,8 ms den Thread o. das Programm anhalten kann
seppelon schrieb:
am Besten noch in Echtzeit und ohne Umweg über eine Wave-File.
Für jegliche Vorschläge dankbar Grüßt der Seppl
Entweder mit Wav so oder in das MFC FAQ schauen