Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Closed: Wie gibt man in C/C++ Sound aus (MIDI)?

Wie kann ich dieses Programm ändern, damit immer genau solange der entsprechende Ton ausgegeben wird, wie die Taste festgehalten wird?

#include <windows.h>
#include <conio.h>

int main()
{
/* Bei diesem Programm wird die Tastatur wie ein Klavier benutzt. Das c ist auch das c, f=cis, v=d usw
Frequenzen der Tasten */
int freq[18]={415,440,466,494,523,554,587,622,659,698,
              740,784,831,880,932,988,1047,1109};
int hitfreq;
char taste[18]={'a','y','s','x','c','f','v','g','b','n',
           'j','m','k',',','l','.','-','ä'};
char hit;
int i;

loop:
   /* Schleife, bis Taste gedrückt wird. */
while( !_kbhit() );
   /* Schleife, solange Taste gedrückt wird. */
while (_kbhit() )
{
   /* Mit _getch Taste wegwerfen. */
   hit= _getch();
   if (hit==27) return 0; // Escape
   hitfreq=0;
   for (i=1; i<=18; i++)
   {
      if (taste==hit) hitfreq=freq;
   };
   if (hitfreq) Beep(hitfreq,350);
};
   goto loop;
}
« Letzte Änderung: 25.05.05, 16:05:04 von cottonwood »

Antworten zu Closed: Wie gibt man in C/C++ Sound aus (MIDI)?:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Hab mir jetzt den Quelltext mal nicht näher angeschaut, aber versuch mal folgendes:

Das Betriebssystem kennt ja unterschiedliche Ereignisse (oder Nachrichten, wie auch immer) für Taste drücken und Taste loslassen. Also lass doch den Ton ausgeben, wenn die Taste gedrückt wird, und dann soll die Tonausgabe beendet werden, wenn die selbe Taste losgelassen wird.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das will ich ja. Aber sag mir doch bitte, wie das geht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Kann dir leider nur theoretisch weiterhelfen.

Problem ist: ich habe gerade das zweifelhafte Glück, mich im Rahmen meines Studiums mit Visual C++ befassen zu dürfen. Und dort klickst du dir die Ereignisbehandlung ja bekanntlich nur zusammen - ist also mit dem, was du hier machst gar nicht vergleichbar.
Hätte auch lieber C/C++ von Grund auf gelernt, aber geht leider zeitlich im Augenblick nicht.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Eigentlich brauche ich nur zu wissen, wie man einen Ton asynchron an- und ausmacht. Also wie man Sound im Hintergrund laufen läßt. Beep kann ja auch nicht der Weisheit letzter Schluss sein.

Wer kann mir da helfen?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Inzwischen habe ich gelernt, dass man Töne über die MIDI-Schnittstelle ausgibt. Aber wie kann man die programmieren? Hat da jemand ein Beispiel?

Inzwischen habe ich gelernt, dass man Töne über die MIDI-Schnittstelle ausgibt. Aber wie kann man die programmieren? Hat da jemand ein Beispiel?

Oh mann, wie kann es denn angehen, dass man ein ganzes Forum mit Fragen zuspamt, die sich allesamt mit einer simplen Googlesuche beantworten lassen?!?!?!  ::)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Oh mann, wie kann es denn angehen, dass man ein ganzes Forum mit Fragen zuspamt, die sich allesamt mit einer simplen Googlesuche beantworten lassen?!?!?!  ::)
Danke für die Antwort. Wie spamt man denn ein halbes Forum zu mit der einfachen Frage nach einem Beispiel? Ich will mich ja gerne beschränken.

Ich habe mir das mal angesehen und habe jetzt die 2. Seite durch. Aber ein einfaches Beispiel, wie man auch nur einen Ton auf den Lautsprecher ausgibt, habe ich nicht gefunden.

Ich weiss inzwischen, wie der Datenstrom aussehen muss. Das findet man schnell. Aber zum Programmieren gehört auch noch ein Funktionsaufruf dazu. Oder meinetwegen auch noch tiefer auf der physikalischen Ebene irgend etwas, das man nachvollziehen kann. Wenn ich einen Ton ausgeben kann, dann kann ich den Rest schon selbst rausfinden.

In diesem Sinne: Vielen Dank! :-*:'(

Kann mir bitte jemand helfen. Ich suche selbstverständlich selbst auch weiter und wenn ich etwas gefunden habe, schreibe ich das hier auch rein.
Kann mir bitte jemand helfen. Ich suche selbstverständlich selbst auch weiter und wenn ich etwas gefunden habe, schreibe ich das hier auch rein.

Gefunden mit Google "midi abspielen c++"

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke. Jetzt muss ich erst mal die Umgebung schaffen, um das ganze auch linken zu können. Ich melde mich wieder, wenn es (hoffentlich) geklappt hat.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich benutze den GNU C/C++ Compiler und muss, um hier weiter zu kommen, die Bibliothek Winmm.lib einbinden. Ich gehe mal davon aus, dass es sich dabei um die Datei c:\windows\system32\winmm.dll handelt, die auch bei mir vorhanden ist.

Kann mir bitte jemand helfen, wie ich ein Programm binden kann, das diese Bibliothek benötigt. Ich bekomme das einfach nicht hin, eine Standardbibliothek einzubinden.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

So, das war nicht einfach. Der GNU C++ stellt nicht die erforderliche Umgebung bereit. Ich bin jetzt umgestiegen auf lcc-win32.

Damit kann ich das Beispiel-Programm jetzt zwar übersetzen, aber leider nicht fehlerfrei. Es kommt die Fehlermeldung

Following symbols were undefined
_mciSendStringA@16 (mciSendStringA) winmm.lib

Wie kann ich jetzt diesen Fehler noch wegbekommen?

25.5.2005:
Beim weiteren Testen (mit anderen Testprogrammen) ging mit einmal ein Fenster auf, das ich leider zu schnell geschlossen hatte. Da stand noch irgendwas von "has been added". Jetzt läßt sich plötzlich auch mein Testprogramm fehlerfrei übersetzen.

Thread geschlossen. Danke.

« Letzte Änderung: 25.05.05, 16:12:23 von cottonwood »

« chmod Befehl unter MinGW/Msysc++ Vokabel Trainer »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Wiederherstellungspunkt
Siehe Systemwiederherstellung. ...

Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...