![]() |
Re: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen la
Musst schauen, ob es zutrifft, das 1. funktioniert vlt. nicht, aber ist dennoch anschaulich:
![]() ![]() Such mal im Forum nach Ressource und kümmer dich mal um die Bass.dll, denn wer den MediaPlayer nicht installiert hat, wird nichts hören. |
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
also mit einer .wav geht das so...
Delphi-Quellcode:
unit Unit1;
interface uses MMSystem; implementation {$R MyResFile.res} procedure TForm1.FormCreate(Sender: TObject); begin PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE or SND_LOOP); end; end. und wie geht es mit einer midi oder mp3? :?: |
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
Das steht doch auf der ersten Seite.
|
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
ich meine ohne media player. aus einem res file wie geht das?
|
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
Darauf kenne ich keine generelle Antwort. Soll es mit BASS, FMOD oder ähnlichen Libs sein?
|
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
uses MMSystem...
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var FN : String; begin FN:='D:\Info.mid'; // oder *.mp3 MCISendString(PChar('play ' + FN), nil, 0, 0); end; |
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
Und asynchron aus einer Ressource?
|
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
@DeddyH:
Willst Du mich beschäftigen oder was? {$R SOUNDS.RES} Geht aber nur mit WAV-Files:
Delphi-Quellcode:
PlaySound(PChar('ONE'),0,SND_ASYNC or SND_RESOURCE);
PlaySound(PChar('TWO'),0,SND_ASYNC or SND_RESOURCE); |
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
aus einer ressource.
die hier wird aber nicht richtig übergeben. die form bleibt weg und der debugger läuft. sound wird immerhin abgespielt...
Delphi-Quellcode:
ja will dich beschäftigen :) ne muss noch irgendwo was nicht ganz stimmen....uses MMSystem; implementation {$R Midi.res} procedure Midi(const aResName: String); const Len: Cardinal = MAX_PATH; tmpFile: String = '~tmpFile01'; // Name der temporären Datei var Stream: TCustomMemoryStream; BufLen, BufPos, tmpPath: String; begin // Temp- Verzeichnis ermitteln SetLength(tmpPath, Len); GetTempPath(Len, PChar(tmpPath)); tmpPath := StrPas(PChar(tmpPath)) + tmpFile; mciSendString('stop mySound', nil, 0, 0); mciSendString('close mySound', nil, 0, 0); if FileExists(tmpPath) then // temporäre Datei löschen (falls noch vorhanden) DeleteFile(tmpPath); if FindResource(hInstance, PChar(aResName), 'MIDIFILE') <> 0 then begin // Ist die Ressource verfügbar try Stream := TResourceStream.Create(hInstance, aResName, 'MIDIFILE'); // Stream erstellen Stream.SaveToFile(tmpPath); // temporäre Datei speichern finally Stream.Free; end; end else begin MessageBeep(MB_ICONEXCLAMATION); MessageDlg('Die Ressource kann nicht gefunden werden.', mtError, [mbOk], 0); Exit; end; mciSendString(PChar('open sequencer!' + tmpPath + ' alias mySound'), nil, 0, 0); mciSendString('play mySound' , nil, 0, 0); SetLength(BufLen, Len); SetLength(BufPos, Len); mciSendString('status mySound length', PChar(BufLen), Len, 0); // Länge der Mididatei ermitteln repeat mciSendString('status mySound position', PChar(BufPos), Len, 0); // aktuelle Position ermitteln ... Application.ProcessMessages; if Application.Terminated then break; until StrToInt(BufPos) >= StrToInt(BufLen); // ... bis Dateiende erreicht ist mciSendString('stop mySound', nil, 0, 0); mciSendString('close mySound', nil, 0, 0); if FileExists(tmpPath) then // temporäre Datei löschen DeleteFile(tmpPath); end; procedure TForm1.FormCreate(Sender: TObject); begin Midi('awt'); end; |
AW: MIDI-Hintergrundmusik in Delphi-Anwendungen abspielen lassen
kann den code mal jemand bei sich probieren.
bei mir kommt ne warnung bei:
Delphi-Quellcode:
Stream.Free;
Variable 'Stream' ist möglicherweise nicht initialisiert worden. der sound der midi funktioniert, aber die form ist nicht mehr sichtbar/ansprechbar. :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 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