Frequenzausgabe

Drache2

Erfahrenes Mitglied
Erstma Hallo.

Habe schon viel unter Google (und auch hier) nachgeguckt wie man einzelne Frequenzen (z.B.1200 khz) in C++ üder die Lautsprecher ausgeben kann.

Bin dabei auf die Funktionen sound(unsigned short Frequenz)
und nosound()

gestoßen. Die sollen angeblich in dos.h drin sein.:rolleyes:

Nur leider sind die da nciht!:eek:

Nun frage ich, wie und mit welchem Haeder kann ich solche Frequenzen ausgeben?

Es würde mir schon reichen wenn ihr mir den passenden Haeder und die dazugehörigen Funktionen (und eventuell ihre Funktionsweise)sagt.

Nutze übrigens Codeblocks mit dem mingwin compiler
 
Zuletzt bearbeitet:
Hallo,

unter Windows kannst du "windows.h" einbinden und die Funktion "Beep(uint,uint)" nutzen:

Code:
//Beep(freq,t) 
 
#include <windows.h> 
 
... 
 
    Beep(523,250); 
    Beep(587,250); 
    Beep(659,250); 
    Beep(698,250); 
     
    Beep(784,500); 
    Beep(784,500); 
     
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
     
    Beep(784,1000); 
     
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
     
    Beep(784,1000); 
     
    Beep(698,250); 
    Beep(698,250); 
    Beep(698,250); 
    Beep(698,250); 
     
    Beep(659,500); 
    Beep(659,500); 
     
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
     
    Beep(659,500); 
    Beep(659,500); 
     
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
    Beep(880,250); 
     
    Beep(523,1000);

btw: Es heißt "MinGW", nicht "MingWin"...
:)
 
Zuletzt bearbeitet von einem Moderator:
Joa. Danke für die Antwort.

Und erstma entschuldige ich mich dafür das ich anstat MinGW MinWin geschrieben habe (klingt numal so änlich^^).

Ist zwar schön und gut (ne Tontabelle äre eventuell noch nett^^), jedoch wird der Sound über den Internen Lautsprecher und nicht von den an der Soundkarte angeschlossenen Boxen ausgegeben. Das war ja die eigentliche Frage (trotzdem danke). Die Ausgabe über PC-Lautsprecher (Boxen) soll (angeblich) mit sound(Frequenz) und nosound() möglich sein.

Nur fehlt mir die Libary (angeblich unter dos.h ,ist es aber leider nicht).

Wäre also nett wenn jemand wüsste wie man das (möglichst einfach) hinkrigt.
 
Zuletzt bearbeitet:
Das wird, unter Windows, schwer, da du die Hardware nicht direkt ansprechen darfst. Unter DOS ist das noch möglich! Unter Win musst du da schon auf "DirectSound" (Teil von "DirectX") oder eine andere lib setzen:

Eine andere Möglichkeit: mit "PlaySound(...)" (Windows:google:) einen wavesound abspielen, ob das aber einfacher ist...

plattform-indep.: http://www.openal.org/
 
Zuletzt bearbeitet von einem Moderator:
Zu Playsound:

Habe hier einen Beitrag gefunden, der zwar besagt, dass das geht, jedoch bekomme ich folgende Fehlermeldung bei der folgenden
Funktion (windows.h ist eingebunden):

PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_LOOP | SND_ASYNC);

Fehler:

undefined reference to 'PlaySoundA@12'

Nun die Frage, Was ist dieses A@12
Hatte diesen Fehler bisher noch nicht!

Und, wie krieg ich das jezt zum Laufen?

Habe auch gehört, dass man irgentetwas in den Linker schreiben muss.

Nur war die Beschreibung immer für DevC++

Wie gesagt. Ich nutze Codeblocks (Aktuellste version mit Nightly Builds) und den MinGW Compiler.
 
Zuletzt bearbeitet:
Hi.

In Headerdateien stehen nur die Deklarationen der Funktionen bzw. evtl. Variablen. Aber definiert sind die Funktionen / Variablen in Bibliotheken die man dazu noch einbinden muss.

Dazu schaut man in eine Referenz (http://msdn2.microsoft.com/en-us/library/ms712879.aspx) und sieht dann, das die Funktion PlaySound in der Winmm.lib Bibliothek definiert ist.

Die Bibliothek kann man dann in den Linker-Optionen bei den Bibliotheken hinzufügen. Normalerweise wird die Endung bei MinGW nicht angegeben.

Um die A@12 Schreibweise brauchst du dir keine Gedanken machen. Das kommt daher, weil unter Windows viele Funktionen doppelt existieren - einmal als ASCII Funktion mit dem Suffix "A" und als Wide-Character-Funktion (Unicode) mit dem Suffix "W". Normalerweise geschieht das alles hinter den Kulissen und man bekommt gar nichts davon mit.

Gruß
 
Ok. thx. Es funktioniert, nur eine Frage bleibt noch. Wie lasse ich den Sound denn wieder stoppen (also , halt ausschalten?)
 
Zuletzt bearbeitet:
Ähem, du solltest dir evtl. die Dokumentation durchlesen - speziell was die SND_LOOP Option bedeutet die du der Funktion mitgegeben hast.

Gruß
 
Ich meine es reicht einen anderen Sound wiederzugeben, ist aber lang her. Wie gesagt: steht in der Doc.
 
Ja. Okay. Es Funktioniert fabelhaft.

Nun noch die Frage, Wie lasse ich mehrer Sounds gleichzeitig laufen?:confused:
Hab gelesen(:google:), dass das damit anscheinend nicht wirklich klappt und man irgentwie DirectX oder so benutzen muss.Nur kenne ich mich mit DirectX bisher kaum aus.:eek:

Wäre nett wenn es da noch eine Lösung zu gäbe.
(Am besten mit Beispiel^^)

Und äm. Zu den Beep(). Welche Frequenz ist denn bitte das A?(Versuche eine Funktion zu schreiben, die aus einem String die Zeichen liest und entsprechende Töne ausgibt. (In QBasic wäre das Play "Soundstring". Daran orientiere ich mich dabei^^))
 
Zuletzt bearbeitet:
Zurück