Sound erzeugen

Diskutiere Sound erzeugen im Developer Network Forum im Bereich Hardware & Software Forum; Hi, ich kannte mal einen Programm wo man durch einen einfachen DOS-Befehl ein Geräusch durch den PC erzeugen konnte . Wenn ich mich nicht irre ...
  • Sound erzeugen Beitrag #1
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Hi,

ich kannte mal einen Programm wo man durch einen einfachen DOS-Befehl ein Geräusch durch den PC erzeugen konnte . Wenn ich mich nicht irre , war das ein .bat befehl den ich dann in ein C++ Programm verwendet hab ( system(""); ) .

Jetzt bräucht ich mal den Befehl wieder für mein Projekt . Weiss ihn jemand ? Und google findet garnichts , hab 10 min dran gesucht und es kommt einfach nichts . Igal ob "Cmd list" oder "sound erzeugen" , "geräusch erzeugen" , kam nur falsches herraus .

Gruss
 
  • Sound erzeugen Beitrag #2
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Code:
    beep(int frequenz, int millis);
 
  • Sound erzeugen Beitrag #3
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Hi,

also mein Projekt handelt sich um folgendes :

Im Spiel wird man gekickt , wenn man im Zuschauermodus ( engl.: Spectator ) eine bestimmte Zeit zu lang drin bleibt ( als Zuschauer ) . Das Programm fragt ab , wie lang man max. drinbleiben kann als Spec . Danach zieht es davon 20 Sekunden ab , und wenn die Zeit ( -20 Sek.) erreicht wird, erzeugt ein Piepton damit man gewarnt wird. So kann der Spieler schnell ins Spiel gehen , bevor der gekickt wird .

Mein jetztiger Code ( manche Fragen stehen als Kommentare drine )
Code:
#include <iostream>
#include <windows.h>
using namespace std;

void abfrage()
{
    int sek;  // Eingebende Speczeit
    int time;  // Zeit die abgerechnet wird
    int schl = Sleep(2000);  // schl = Sleep 20 sek.

    cout <<"Ab wieviel Sekunden wird man als Zuschauer gekickt?"<<endl;  // Abfrage
    cin >>sek;   // Abfrage gespeichert
    time = Sleep(<<sek<<) " - " schl;   // Die Endzeit beträgt die Zeit, die vom Spieler eingetragen wurde,  und diese dann Minus 20 sekunden
    time;  // Hier soll es am Schluss Angewendet werden , allerdrings weiss ich nicht genau wie man das jetzt benutzt
    beep(int frequenz, int millis);   /* Ertönt sound , allerdings weiss ich nicht wie das funktioniert
                                      vllt :
                                      frequenz(yes/1)  ?
                                      millis(yes/1)  ? */
}

int main()
{
   SetConsoleTitle("Spectator Warner");
   system("color 0f");
   abfrage();

   return 0;
}
Dabei soll das Programm per Tastendruck aktivert werden , die Reihenfolge gilt :

1.Abfrage der Zeit
2.Programm rechnet davon 20 sek. ab und...
3....wartet drauf das der Spieler die Taste F10 drückt
4.Danach wirt der Zähler/Pausestand gestartet
5.Wenn Zeit zuende ist kommt Piepton
6.Schleife wiederholt den ganzen Vorgang

Wäre nett wenn mir jemand helfen könnte :ger:
 
  • Sound erzeugen Beitrag #4
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
was mir dazu einfällt:
1.multithreading anschauen
2.?was heißt frequenz(yes/1)???
beep(int, int) ist die signatur der funktion. 2 int werte werden erwartet. einer die tonhöhe (=frequenz), der andere die dauer in millisekunden (=1/1000 sekunde)
bsp.: beep(250, 200); ==> 1/5 sekunde lang ein ziemlich hoher ton.

lg,
patrick
 
  • Sound erzeugen Beitrag #5
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
ja und das hast du nicht geschrieben ^^ das einzige was ich gesehen hab ist das du die varieblen deklariert hast mit int ...

Manchmal werden die mit Zahlen oder wörtern benutzt , woher soll ich das auch wissen -.-

mein problem besteht hier
Code:
    time = Sleep(<<sek<<) " - " schl; 
    time;
kann man das einfach so benutzten ?


Und was ist 1.multithreading anschauen ?
 
  • Sound erzeugen Beitrag #6
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Code:
#include <windows.h>

int main()
{
 beep(250,200);
 return 0;
}

Hab das jetzt mal nur mit sound versucht . Fehlermeldung :
error C3861: "beep": Bezeichner wurde nicht gefunden
 
  • Sound erzeugen Beitrag #7
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
erm... ich habe nirgends variablen deklariert :rolleyes:
das ist ein ganz normaler funktionskopf, wie man ihn immer schreibt... und frequenz und millis ist eigentlich ja wohl selbsterklärend... aber egal.

und zu deiner 2. frage: ich versteh eigentlich nicht was du mit dem code machen willst...

? was ist multithreading anschauen? --> "multithreading" :google:
das is dafür da, dass dein programm auf tastendrücke "hört" obwohl es z.b. gerade piept. oder was anderes macht. damit man gleichzeitig sound abspielen kann, während sich spielfiguren bewegen, auf deine tastatureingabe gehört wird und ... etc etc etc...
 
  • Sound erzeugen Beitrag #8
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
toll... edit zeit vorbei... *grml*

naja... @mokey: sry, mein fehler. in c++ ist es Beep großgeschrieben. in c geht's mit beep kleingeschrieben.
 
  • Sound erzeugen Beitrag #9
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
.cpp datei
Code:
#include <iostream>
#include <windows.h>
using namespace std;


int main()
{
    SetConsoleTitle("Spectator Warner")
    system("color 0f");

    int sek;
    int time;
    int schl = Sleep(2000);

    while(1)
    {
    cout <<"Ab wieviel Sekunden wird man als Zuschauer gekickt?"<<endl;
    cin >>sek;
    time = Sleep(<<sek) " - " schl;
    time;
    Beep(250,200);
    }
   return 0;
}

Fehlermeldung
Code:
Kompilieren...
SpecWarner.cpp
.\SpecWarner.cpp(9) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'system'
.\SpecWarner.cpp(13) : error C2440: 'Initialisierung': 'void' kann nicht in 'int' konvertiert werden
        Ausdruck vom Typ void kann nicht in andere Typen konvertiert werden
.\SpecWarner.cpp(19) : error C2143: Syntaxfehler: Es fehlt ')' vor '<<'
.\SpecWarner.cpp(19) : error C2660: 'Sleep': Funktion akzeptiert keine 0 Argumente
.\SpecWarner.cpp(19) : error C2059: Syntaxfehler: ')'
.\SpecWarner.cpp(19) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Zeichenfolge'
.\SpecWarner.cpp(19) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'schl'

Könnt mal jemand posten wie man Variablen in der Sleep Funktion einsetzen kann ? Danke -.-
 
  • Sound erzeugen Beitrag #10
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

weder "beep" noch "Beep" gehören zu irgendeiner Standardbibliothek. Die Erzeugung von Sounds ist immer (!) plattform- und/oder bibliothekenabhängig. Alternativ bleibt nur noch die Möglichkeit, einen Bell-Character mittels printf() oder cout auszugeben:

printf("%c\n",7)

Nic
 
  • Sound erzeugen Beitrag #11
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Hallo,

weder "beep" noch "Beep" gehören zu irgendeiner Standardbibliothek. Die Erzeugung von Sounds ist immer (!) plattform- und/oder bibliothekenabhängig. Alternativ bleibt nur noch die Möglichkeit, einen Bell-Character mittels printf() oder cout auszugeben:

printf("%c\n",7)

Nic

Bei mir gingen sie aber nachdem ich das b gross geschrieben hab . Ausserdem ist das nicht das jetztige problem ;)
 
  • Sound erzeugen Beitrag #12
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Code:
int x = 2000;
Sleep(x);

so wie man variablen immer an funktionen übergibt.
 
  • Sound erzeugen Beitrag #13
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
ah dank dir , jetzt hab ich nur ncoh ein kompilierungsfehler :
error C2440: 'Initialisierung': 'void' kann nicht in 'int' konvertiert werden

Kann ich irgentwie nicht glauben , da ich kein void drinstehen hab :/
Code:
#include <iostream>
#include <windows.h>
using namespace std;


int main()
{
    SetConsoleTitle("Spectator Warner");
    system("color 0f");

    int sek;
    int time = 20000;
    int schl = Sleep(2000);

    while(1)
    {
    cout <<"Ab wieviel Sekunden wird man als Zuschauer gekickt?"<<endl;
    cin >>sek;
    sek =- time;
    time;
    Beep(250,200);
    }
   return 0;
}

ps.: Wie heisst den jetzt der Befehl für das Simulieren von einer Taste ? ;)
 
  • Sound erzeugen Beitrag #14
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Sleep ist eine funktion mit rückgabetyp void. daher kannst du das "ergebnis" auch nicht deiner variable schl vom typ int zuordnen.

wg. tastendruck: kommt drauf an wofür. (für deine anwendung, eine fremdanwendung...) bei :google: findest du dazu einen haufen themen.

lg,
patrick
 
  • Sound erzeugen Beitrag #15
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
daher kannst du das "ergebnis" auch nicht deiner variable schl vom typ int zuordnen.

Das heisst ich kann die Eingabe des Benutzers nicht speichern und dann minus 20 sek abrechnen ? :- (
 
  • Sound erzeugen Beitrag #16
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
was du brauchst ist etwas in dieser art:

Code:
(...)
int sek = 0;
cin >> sek;
Sleep(sek*1000); //weil millisekunden erwartet werden
(...)
dein code hätte geheißen "schlafe 2000 millisekunden und weise schl die rückgabe dieser funktion zu". was ja aufgrund dessen, dass die funktion ja keine rückgabe liefert, sondern nur was tut, nicht geht.
 
  • Sound erzeugen Beitrag #17
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Ok , klappt alles wunderbar . Aber ich möchte das man , nachdem man die Zeit angibbt wann man vom Spec gekickt wird , erst eine Taste drücken muss damit es aktiviert wird . Hier ein ausschnitt .
Code:
...
    cout <<"Ab wieviel Milisekunden( 1 Sekunde = 1000 Mili.) wird man als Zuschauer gekickt?"<<endl;
    cin >> sek;
   //*HIER IN DER ZEILE* Erst wenn man F10 drückt soll es weiter gehen...
    Sleep(sek-20000);
...

Und ist es möglich statt Milisekunden auch Sekunden zu nehmen ?
 
  • Sound erzeugen Beitrag #18
Scorn07

Scorn07

Bekanntes Mitglied
Dabei seit
14.01.2007
Beiträge
253
Reaktionspunkte
0
Das hat WhiskeyCola16 doch schon genau so gepostet, einfach mal 1000 rechnen.
Die Funktion selbst akzeptiert nur Millisekunden.
 
  • Sound erzeugen Beitrag #19
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Das hat WhiskeyCola16 doch schon genau so gepostet, einfach mal 1000 rechnen.
Die Funktion selbst akzeptiert nur Millisekunden.

Ach , deswegen war das *1000 da ... und mit Tastenfunktion werd ich google benutzten . Danke an alle ^_^

// Schon wieder ein paar neue Sachen gelernt ... :idee:


edit : 2 Fragen zu Visual Express Edition (c++ ) :

1.Wie kann man in den .exe'n ICONS einbinden ?
2.Ich hab gehört bzw. gelesen das man mit Vs leichter die Programme in WINAPI ( mit Fenster ect. ) machen kann ? Vllt vorlangen oder so ...
 
Zuletzt bearbeitet:
  • Sound erzeugen Beitrag #20
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
möglichkeit:

Code:
#include <iostream>
#include <conio.h>
(...)
    bool weiter = true;
    cout << "Zum aktivieren 'c' druecken!" << endl;
    while(getch() != 'c') {  //statt 'c' den richtigen ascii-char-code für f10 angeben
        //tu was, oder tu halt nix... wie man will halt...
    }
(...)
ad 1.) indem du welche erstellst und über die ressourcen oder fenstereigenschaften einbindest.
ad 2.) rechtsklick auf projekt, hinzufügen, UI, windows form
 
Thema:

Sound erzeugen

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben