Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Midi-Sequenz mmit Delphi-Mediaplayer abspielen (https://www.delphipraxis.net/107905-midi-sequenz-mmit-delphi-mediaplayer-abspielen.html)

Elko 4. Feb 2008 13:44


Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Hallo an alle,
ich habe folgendes Problem:
Der MediaPlayer ihn meinem Projekt soll eine Midi-Datei abspielen. Mit anderen Dateien (zB. *.wav) funktioniert es prima, aber bei einer *.mid Datei klappt bei mir gar nix :?
Hier einfach mal der Code, welche Datei er abspielen soll:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Mediaplayer1.FileName := 'C:\WINDOWS\Media\town.mid';
 Mediaplayer1.Open;
 Mediaplayer1.Play;
end;
Viele Grüße, Elko :thumb:

snow 4. Feb 2008 14:16

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
soweit ich weis sind mididateien nur Klangdateien. Es wird also nur angegeben

Zitat:

C-D-E-F-G-A-H-c
du benötigst also noch einen klangerzeuger. Deine Soundkarte hat einen Hardware-Synthesizer. Den kannste nutzen. (nachteil : Du kannst nur E-Piano-töne erzeugen).

so gehts:

Delphi-Quellcode:
uses MMSystem;

MCISendString(PChar('play ' + filepath), nil, 0, 0);
PS: ich weis nicht ob MCISendString noch aktuell ist. Vllt gehts auch mit shellexecute.

gruß snow

Elko 4. Feb 2008 15:55

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Also bei mir tut sich gar nix, wenn ich das so probiere :(
Gruß, Elko

snow 4. Feb 2008 16:04

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
komisch ich höre was.

schau mal was unter systemsteuerung-->Sounds-und-Audiogeräte--->Audio--->MIDI-Musikwiedergabe steht. Bei mir iss es

Delphi-Quellcode:
Microsoft GS Wavetable SW Synth
kannst auch mal bei

systemsteuerung-->Sounds-und-Audiogeräte--->Audio--->MIDI-Musikwiedergabe--->Lautstärke schaun, ob der SW-Synthesizer auf stumm steht.

gruß snow

igel457 4. Feb 2008 16:06

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Windows XP hat schon einen integrierten Synthesizer. Eventuell hast du einfach die Lautstärke von "SW-Synthesizer" auf ganz niedrig stehen, oder diesen auf Stumm geschaltet. Das kannst du über Start->Ausführen->sndvol32 überprüfen.

Elko 4. Feb 2008 17:55

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Oh mann, da war doch echt der SW-Synthesizer auf stumm geschaltet... ich frag mich nur wieso... :wall:
Dann geht es jetzt auch über den Mediaplayer abzuspielen! :thumb:
Wenn man doch den Mediaplayer hat, für was macht man sowas dann mit
Delphi-Quellcode:
MCISendString(PChar('play ' + filepath), nil, 0, 0);
? Weil man die "Features" des Mediaplayers nicht braucht, oder wieso?
Was ich ganz seltsam finde: Mit dem Windows Media-Player ging es davor auch abzuspielen (also so, dass man was gehört hat, das ist doch dann eigentlich seltsam, oder?).
Übrigens: Ja, ich habe auch Microsoft GS Wavetable SW Synth da stehen.
Viele Grüße, Elko :cheers:

snow 4. Feb 2008 19:47

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Nein ist es nicht. Der WMP(Windows Media Player) besitz anscheinend eigene SoundFonts. Der spielt die instrumente also selber über den Wave-kanal ab, und beauftragt nicht die Soundkarte damit.

Delphi-Quellcode:
MCISendString(PChar('play ' + filepath), nil, 0, 0);
ist sinnvoll, wenn man z.B nur mal eine Titelmusik oder mal eine Errormeldung mit ein paar Klängen aus dem Lautsprecher begleiten will.

gruß snow

igel457 4. Feb 2008 20:05

Re: Midi-Sequenz mmit Delphi-Mediaplayer abspielen
 
Der Windows Media Player verwendet DirectShow, welches vermutlich einen DirectMusic MIDI Output Filter besitzt. WindowsXP beauftragt übrigens auch nicht die Soundkarte, sondern besitzt (wie oben geschreiben) einen eigenen Software-Synthesizer (auf jeden Fall unter Verwendung der Standardeinstellungen).


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz