![]() |
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Ja, Ja, Ja, Nein, Ja.
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Das Nein bedeutet also, dass du in der MediaPlayer bei Filename eine existierende Midi-Datei ausgewählt hast, z.B. "C:\WINDOWS\Media\town.mid", danach das Programm gestartet und dann auf Play gedrückt hast (oder programmtechnisch gemacht) ... und dann hörst du nichts.
Also ich habe gerade mal eine kleine Testanwendung gemacht, da klappts auf Anhieb. |
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Hmm... In meiner Testanwendung klappt es auch auf Anhieb... :gruebel:
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Jetzt funzt es. Frag mich nicht warum. Danke noch mal.
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Kann ich die MIDI wirklich nicht direkt aus der Ressource abspielen?
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
das geht leider nicht.... obwohl... du könntest schauen, ob die Mediaplayerkomponente ein LoadFromStream hat.... falls ja, dann kannst du den Inhalt der Ressource in nen Memorystream schreiben und abspielen (hab leider kein Delphi hier um das zu prüfen)
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Wenn ich mich recht erinnere, kann man mittels Bass.dll auch direkt aus Resourcenabspielen, bin mir aber nicht sicher.
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Also die TMediaPlayer-Komponente arbeitet über das MCI-Interface und braucht daher IMHO eine Datei. Was ist das Problem dabei? Einfach in's temporäre Verzeichnis entpacken und beim Beenden der Anwendung wieder löschen (du kannst ja immer denselben Dateinamen benutzen).
|
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
Auch ich experimentiere mit dem Resourcenkram rum.
WAV klappt einwandfrei über den playsound MP3 als WAV getarnt ebenso nun wollte ich ein .midi ebenfalls einbinden und habe mit dazu, wie hier in der DP beschrieben die bassdll installiert und versuche die zu nutzen. Da bekomme ich nur eine Fehlermeldung(Resource EURO wurde nicht gefunden). Kann mir mal jemand den korrekten Aufruf mitteilen? BassdllPlayer1.LoadFromResourceName('EURO' ,RC_MUSIC) meine .rc hier anbei: MUSIK Wave "a.wav" -klappt SPUEL Wave "b.wav" -klappt HYMNE Wave "c.wav" -klappt EURO MIDI "4.mid" -klappt nicht Danke und Gruss EL |
Re: MIDI-Dateien als Ressourcen einbinden & abspielen
So - habs jetzt rausgefunden und möchte €uch diese recht einfache Variante nicht vorenthalten.
irgendwo im projekt global definieren:
Delphi-Quellcode:
const filename :string = '~tmp.mid';
dann eine Funktion, die das abspielen startet:
Delphi-Quellcode:
und hier die Funktion für das Beenden
function startmidi(_resourcename : string) : boolean
var _sstream: TCustomMemoryStream; begin try _sstream := TResourceStream.Create(hInstance, _resourcename, 'MIDIFILE'); _sstream.SavetoFile(filename); finally _sstream.Free; end; MCISendString(PChar('play '+ filename), nil, 0, 0); result := true; end;
Delphi-Quellcode:
Nachtrag: Die .RC - Datei (heisst bei mir: mucke.rc)
function endmidi : boolean
begin MCISendString(PChar('stop ' + Filename), nil, 0, 0); MCISendString('close sound', nil, 0, 0); if fileexists(filename) then deletefile(filename); result := true; end;
Delphi-Quellcode:
Gruss
EURO midifile "4.mid"
EL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz