MIDI in C abspielen
-
Vor allem mit
midiOutOpen()
und anderen tollen MIDI-Funktionen: http://msdn.microsoft.com/en-us/library/dd798495(v=VS.85).aspx (Windows.h nicht vergessen).
-
Danke, versuch ich gleich!
Aber, was ist windows.h?
-
C:\Documents and Settings\User\Desktop\The Epic Game\main.c|8|error: too few arguments to function 'midiOutOpen'|
Was muss ich jetzt machen??
-
Rogon schrieb:
Aber, was ist windows.h?
Die Frage lässt über deine C-Kenntnisse vermuten... Das ist eine Header-Datei, in der diese Funktionen definiert sind. Die musst du in deinem Projekt einbinden. Bevor noch weitere Fragen zur Verwendung dieser Funktion kommen, such am besten im Internet nach Code-Beispielen dazu (du musst dann natürlich auch veruschen, die Sachen zu verstehen und nicht einfach Strg+C+V und hier posten "warum funktioniert's nicht?").
Noch etwas Wichtiges für dich: http://www.c-plusplus.net/forum/200753
-
Mittlerweile habe ich herausgefunden, was #<windows.h> ist
Aber irgendwie kann ich gar keine MIDI Datei abspielen
könnte mir jemand ein Code-Beispiel Posten, dass ich es verstehe??
Wäre Suuuper!!!
-
Rogon schrieb:
Wäre Suuuper!!!
Ich weiß.
-
[Rewind] schrieb:
Rogon schrieb:
Wäre Suuuper!!!
Ich weiß.
Mein Problem ist nur, dass ich nicht verstehe, wie ich anpacken soll!
Ich habe es mal so Probiert:HMIDIOUT music;
midiOutOpen(&music, MIDI_MAPPER, 0, 0, 0);Aber das geht auch nicht!
Was mache ich falsch??"music" ist überigens der Name meiner MIDI-Datei
-
Schau mal hier: http://www.c-plusplus.net/forum/search da kannst du unter Suchabfrage MIDI eintippen und im das Forum auf WinAPI eingrenzen.
Die Antworten kannst du dir mal ansehen und auch den Hinweisen dort folgen.
Dann kommst du zu einem Link der verweist auf auf eine msdn-Seite mit dem schönen Titel "Playing a MIDI File"Oder du suchst dir hier etwas passendes.
-
Da komme ich irgendwie auf diesen Link...
http://www.c-plusplus.net/forum/292854-full?highlight=*midi*Aber kann mir nicht jemand direkt sagen, was falsch ist???
Es ist ja nur eine einfache Konsole, ohne GUI und so...
Als #include habe ich
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <mmsystem.h>dann natürlich int.main()
Und dann habe ich als Code:
HMIDIOUT music;
midiOutOpen(&music, MIDI_MAPPER, 0, 0, 0);Wo ist der Fehler???
-
Guck dir den Rückgbabewert der Funktion an. Und was heißt denn "es geht nicht"? Und inkludiere Windows.h als Erstes.
-
Rogon schrieb:
Da komme ich irgendwie auf diesen Link...
http://www.c-plusplus.net/forum/292854-full?highlight=*midi*Ich habe nie behauptet, es wäre die erste Fundstelle.
Rogon schrieb:
Aber kann mir nicht jemand direkt sagen, was falsch ist???
Du hast in deinem Programm etwas nicht richtig gemacht.
In Zeile 42.
-
"Es geht nicht" bedeutet soviel wie
C:\Documents and Settings\User\Desktop\The Epic Game\main.c|9|undefined reference to `midiOutOpen@20'|
(Das ist jetzt die aktuellste Fehlermeldung!)Was meinst du mit "Rückgabewert der Funktion anschauen"???
-
Rogon schrieb:
Was meinst du mit "Rückgabewert der Funktion anschauen"???
Schau mal hier http://msdn.microsoft.com/en-us/library/dd798476%28v=VS.85%29.aspx unter "Return value"
-
Ok, hier ist der einfachste Weg für dich:
1. Den MIDI-Editor runterladen (Quelldateien sind dabei). http://breno.sarmen.to/brels_midi_editor.html
2a. Quellcode analysieren und selber was draus basteln oder:
2b. (einfach) die richtigen Dateien in dein Projekt einbinden und die Funktionen verwenden
Dokumentation findest du hier: http://breno.sarmen.to/midi_documentation/
http://breno.sarmen.to/midi_documentation/midiplay.html
-
@Rückwärtiger: Geht's noch? Erst jagst du den op nach
midiOutOpen( )
, behandelst ihn von beginn an von oben herab und jetzt soll er sich noch auf den "einfachen" Weg machen und sich einen MIDI-Editor ansehen!? W T F !? Sag' ihm doch einfach, daß er gegenwinmm.lib
linken soll!?@op:
Gegenwinmm.lib
linken - wie das geht sagt dir das Manual deines Linkers/Compilers/IDE.Bleistift: Playing a MIDI File
-
@Swordfish:
Danke Swordfish!
Dein Beitrag ist sehr gut!!
Der beiliegende Link sieht sehr übersichtlich aus, und ich glaube, dass ich das jetzt schaffen kann!!
Ich werde es so bald wie Möglich ausprobieren!
-
Hallo Leute!
Ich danke für eure Hilfe!
Ich habe eine andere Möglichkeit noch gefunden:
Am Anfang habe ich folgendes:
#include <windows.h>
#include <time.h>
#include <mmsystem.h>
#include <stdio.h>
#include <stdlib.h>Ich habe dann bei den Einstellungen "libwinmm.a" verlinkt und dann reicht dieser Code aus:
mciSendString("play music.mid", NULL,0,NULL);Das funktioniert auch mit .wav Dateien!
VICTORY!
Ich danke für eure Hilfe und bis zu nächsten Mal!
Rogon
-
Ach ja, hier ist noch mein fertiges Projekt:
Ladet es doch mal herunter und probiert es aus!!!Das ist der Link:
http://hotfile.com/dl/131356756/2aceb36/The_Epic_Game.exe.htmlDanke noch einmal für eure Hilfe!
Rogon