Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi midi klingt nach MCI_PAUSE anders... (https://www.delphipraxis.net/68859-midi-klingt-nach-mci_pause-anders.html)

Mazel 6. Mai 2006 22:04


midi klingt nach MCI_PAUSE anders...
 
Hallo,

mir ist aufgefallen, das in meinem eigenen Player alle *.midi Dateien nach einer Pause MCI_PAUSE anders klingen. Um eine MIDI zu öffnen und abzuspielen nutze ich folgenden Code:
Delphi-Quellcode:
var
  dwFlags: LongInt;
  DeviceID: Word;
  PlayParms: TMCI_PLAY_PARMS;

procedure TForm1.MIDIObject;
var
  MCIError: Integer;
  OpenParms: TMCI_OPEN_PARMS;
  SetParms: TMCI_SET_PARMS;

begin
  with OpenParms do
   begin
    dwCallback:=Handle;                 // TForm1.Handle
    lpstrDeviceType:=PChar('Sequencer');
    lpstrElementName:=PChar(FileName);
   end;
  dwFlags:=MCI_OPEN_ELEMENT or MCI_OPEN_TYPE;
  MCIError:=MCISendCommand(0, MCI_OPEN, dwFlags, Longint(@OpenParms));
  If MCIError = 0 then DeviceID:=OpenParms.wDeviceID;
  If DeviceID <> 0 then
   begin
    dwFlags:=MCI_SET_TIME_FORMAT;
    SetParms.dwCallback:=Handle;                // TForm1.Handle
    SetParms.dwTimeFormat:=MCI_FORMAT_MILLISECONDS;
    MCISendCommand(DeviceID, MCI_SET, dwFlags, Longint(@SetParms));
   end;
  PlayParms.dwCallback:=MCI_NOTIFY;
  MCIError:=MCISendCommand(DeviceID, MCI_PLAY, MCI_NOTIFY, LongInt(@PlayParms));
end;
Und eine Pause realisiere ich mit:
Delphi-Quellcode:
  MCISendCommand(DeviceID, MCI_PAUSE, MCI_NOTIFY, LongInt(@PlayParms));
Weiter mit:
Delphi-Quellcode:
  MCISendCommand(DeviceID, MCI_PLAY, MCI_NOTIFY, LongInt(@PlayParms));
Außerdem funktioniert das abfangen der MM_MCINOTIFY Message nicht:
Delphi-Quellcode:
procedure TForm1.MMMCINotify(var Msg: TMessage);
begin
  If Msg.Msg = MM_MCINOTIFY then MCISendCommand(DeviceID, MCI_CLOSE, 0, 0);
end;
Kann mir hier jemand helfen?

Gruß
Mazel

Mazel 7. Mai 2006 16:29

Re: midi klingt nach MCI_PAUSE anders...
 
Keiner eine Idee?

ferby 22. Nov 2006 18:28

Re: midi klingt nach MCI_PAUSE anders...
 
Hallo,

Bei mir ist es genauso,
wenn ich eine Pause mache und dann weiter spiele, dann klingt auch alles anders.
Wenn ich das Program schließe und wieder öffne dann gehts wieder normal.

Keine Ahnung warum das so ist.

Dank der Hilfe von Moyyer habe ich das Notify Ereigniss endlich hinbekommen,
hier meine fertige Version:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Forms, MMSystem, StdCtrls, Classes, Controls, Dialogs, Messages;

type
  TForm1 = class(TForm)
    Play: TButton;
    Stop: TButton;
    procedure PlayClick(Sender: TObject);
    procedure StopClick(Sender: TObject);
    procedure MMNotify(var Message: TMessage); message MM_MCINOTIFY;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StopClick(Sender: TObject);
begin
  MCISendString(PChar('Stop ' + 'mysound'), nil, 0, 0);
end;

procedure TForm1.PlayClick(Sender: TObject);
begin
  mciSendString(PChar('open "1.MID" alias mysound'), nil, 0, 0);
  mciSendString('play mysound notify', nil, 0, Form1.Handle);
end;

procedure TForm1.MMNotify(var Message: TMessage);
begin
  showmessage('Lied Fertig');
end;

end.

Mazel 22. Nov 2006 20:34

Re: midi klingt nach MCI_PAUSE anders...
 
hi,

ich habe jetzt leider nicht die Zeit zu testen, soll es so funktionieren, also dass es dann nicht anders klingt?

Gruß
Mazel

ferby 22. Nov 2006 21:43

Re: midi klingt nach MCI_PAUSE anders...
 
Hallo,

nein, auch hier klingt es anders, aber MM_MCINOTIFY Message funktioniert,
weil du geschrieben hast:

Zitat:

Außerdem funktioniert das abfangen der MM_MCINOTIFY Message nicht:
Mein Quellcode macht glaub ich genau das selbe wie deiner, (oder?)
aber er ist kürzer, und halt MM_MCINOTIFY funktioniert.

Ich wollte dir nur den Quellcode den ich benütze zeigen.

Warum das nach der Pause anders klingt weiß ich auch nicht......
Wenn das Lied neu gestartet wird, dann klingt es wieder normal

Mazel 23. Nov 2006 13:49

Re: midi klingt nach MCI_PAUSE anders...
 
Hi,

stimmt, das Notify hat nicht funktioniert, es ist lange her als ich das alles ausprobiert habe. Ich habe verschiedene Variationen probiert aber irgendwie hab ich das nicht hinbekommen. Danke dir.

Trotzdem bleibt das Problem mit den anderen Ton nach der Pause.

Gruß
Mazel


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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