Midi Dateien in Programm einbinden



  • hi,

    ich suche eine lösungsmethode wie ich kleine midisongs in mein Programm einbinden kann.. kennt man ja mehr oder weniger von Keygeneratoren.

    danke für eure hilfe



  • Hallo,

    sndPlaySoundA("MeineMid.mid", SND_ASYNC); // sollte da reichen :: ansonsten mit der TMediaPlayer-Komponente
    

    LG, Micha



  • hi danke, werd da smal nachher ausprobieren

    abe rnocham ne frage:

    wird das mit in die exe datei eingebunden pder muss ich die midi mit anhängen wenn ich das weitergebe?

    PS:

    Die Funktion in die OnCreate Form packen?



  • hmm klappt leider iergdnwie nicht so ganz 😞

    muss ich vllt nocha uf was bestimmtes achten? bin leider anfänger :<



  • Crisis10 schrieb:

    hmm klappt leider iergdnwie nicht so ganz 😞

    ...

    Tja, mein Programm hier klappt auch nicht so ganz, kannst du mir sagen, wo das dran liegt ? 😃

    Sorry, aber das ist keine Fehlerbeschreibung. Was genau klappt nicht? Zeig doch mal etwas Quellcode, dann können wir dir sicherlich weiterhelfen.



  • hi sry.. a,lso hab fiolegenden code:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    UINT SND_ASYNC;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    sndPlaySoundA("song.mid", SND_ASYNC);
    }
    //---------------------------------------------------------------------------
    

    und im header ist:

    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
    	void __fastcall FormCreate(TObject *Sender);
    private:	// User declarations
    
    public:		// User declarations
    	__fastcall TForm1(TComponent* Owner);
    	BOOL sndPlaySoundA(LPCSTR lpszSound,UINT fuSound);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    Die midi datei song.mid ist im Quelltextverzeichnis

    [cpp]



  • Bei Borland ist aber das Quelltextverzeichnis nicht das Verzeichnis in das die exe reinkommt. Die exe ist entweder in Debug_Build oder in Release_Build. Da muss auch deine Datei hin.

    greetz KN4CK3R



  • ok habs ins release verzeichnis gepackt .. nur leider kommt beim komplilieren eine fehlermeldung

    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes 'TForm1::sndPlaySoundA(const char *, unsigned int)' referenziert von C:\Programm\RELEASE\UNIT1.OBJ



  • Nimm die Deklaration von sndPlaySoundA aus deiner Klasse. Das ist eine WinAPI-Funktion. Die musst du weder deklarieren noch definieren, nur verwenden.
    Hier eine Erklärung dazu
    http://msdn.microsoft.com/en-us/library/ms713269.aspx
    Da steht auch, dass man statt dessen PlaySound verwenden soll da sndPlaySound nur noch aus Kompatibilitätsgründen drin ist. Weiterhin steht da auch das du die Winmm.lib dafür brauchst.



  • hmm jow hab ich jetz ma umgeändert .. das programm starte aber es ertönt nur ein *BLOBB* stat dem midi file.. wieso denn das?

    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include <mmsystem.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    sndPlaySound("song.mid ",SND_ASYNC | SND_FILENAME);
    }
    //---------------------------------------------------------------------------
    


  • 1. Muss nicht sein, aber ev. solltest du die Midi-Datei erst bei OnFormShow abspielen.
    2. Der Pfad zur Datei ist korrekt ?
    3. Audioeigenschaften deines PC zum Abspielen von Midis korrekt?

    mgf
    Peter



  • 1. hat leider auch nchts gebracht

    2. jup der song is ja im root von der kompilierrten exe

    3. wie meinst du das? also midi dateien mit winamp Zb ist problemlos möglich



  • Hi,

    geh mal in die Suchfunktion des Forums, Stichwort : Midi-Töne abspielen
    da is was von WebFritzi.

    sndPlaySound / PlaySound dürften nur für Wave-Dateien gelten.

    mfg
    Peter



  • @Crisis10,

    du hast in den alten Thread gepostet. Allerdings ist dort der Code von WebFritzi
    drauf, ich meinte auch keinen Link.

    Probier mal den Schnipsel aus.

    mfg
    Peter


Anmelden zum Antworten