Entwickler-Ecke

Multimedia / Grafik - MIDI-Töne erzeugen


Florian H - Mo 03.11.03 21:29
Titel: MIDI-Töne erzeugen
Hallo,

wie kann ich denn mit meinem Programm einen Ton als MIDI erzeugen?
Also dass das an die Soundkarte gesendet wird...

ich habe da folgenden Code gefunden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  devHandle: HMIDIIN; 
  midiRes: MMRESULT; 
  theMsg : cardinal; 
begin 
   { Callbacks not necessary for output } 
  devHandle := midiOutOpen( @devHandle, 1, 0, 0, CALLBACK_NULL ); 

  theMsg := DWORD(MidiMessage) Or 
            (DWORD(MidiData1) shl 8) Or 
            (DWORD(MidiData2) shl 16); 

  midiRes := midiOutShortMsg( devHandle, theMsg ); 

  midiInClose(devHandle); 
end;


Jetzt weiß ich aber nicht genau, was ich bei MidiMessage und MidiData 1+2 einsetzen soll/kann/darf/muss.
Weiß das einer (Google hat mir nicht geholfen...) oder funzt der Code überhaupt vom Prinzip her?

Man muss übrigens die mmSystem eingebunden haben...

Viele Grüße
Florian[/delphi]


G-man - Di 04.11.03 17:24

benutz doch ne Kompo für Midi: http://www.swissdelphicenter.ch/torry/multimedia.php


Florian H - Di 04.11.03 17:29

hm, da gibts allerdings nur was zum abspielen einer kompletten MIDI-Datei oder zum Device rausfinden...aber nix für einen einzelnen ton... :?
ich such aber mal nach ner kompo...


mimi - Di 04.11.03 18:26

bei toryy gib es MidiGen(TonGen ?) oder so änlich. das kann einzelne midi töne erzeugen


Florian H - Di 04.11.03 18:44

Yeah, danke!
Habe es vorhin gefunden, habe aber bis vor ein paar Minuten gebraucht, um rauszufinden, wie es funktioniert und hab mein Programm das ich haben wollte jetzt grade fertiggestellt *freu*


mimi - Di 04.11.03 19:06

was wolltes du denn damit schreiben?


Florian H - Di 04.11.03 19:24

so ein virtuelles Keyboard, also dass man die Tastatur benutzen kann statt eines MIDI-Keyboards, weil mein Gameport-Anschluss kaputt ist :wink:

Da gibts zwar schon eines (oder mehrere) aber die sind entweder Shareware oder sie müssen selbst immer im Vordergrund sein, also den Focus haben, damit die Tastendrücke erkannt werden.
Meines kann jetzt minimiert werden und ich kann gemütlich an anderen Programmen was machen und gleichzeitig spielen.