Solved

How to play MIDI files

Posted on 1998-10-25
6
649 Views
Last Modified: 2010-04-06
I want to know how I can play a MIDI file in a Delphi 2.0 program using the Win32 MCI library. I know how to do it in Visual C++, but not in Delphi. Please include some code samples that clearly illustrate how to load and play a MIDI file, as well as send a notification to the form to restart the MIDI when it is done.
0
Comment
Question by:mmarvi
  • 4
6 Comments
 
LVL 17

Expert Comment

by:inthe
ID: 1344287

use the TMediaPlayer component
select file and set autoopen to true
and to loop it do the following on the notify event:

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
 with MediaPlayer1 do
  if NotifyValue = nvSuccessful then begin
   Notify := True;
  Play;
 end;
end;
0
 

Author Comment

by:mmarvi
ID: 1344288
dear inthe:

I don't like your answer because I asked for information on how to use the Win32 MCI library to load and play a MIDI file. Please post an answer to that question and I'll be glad to give you points.
0
 
LVL 17

Expert Comment

by:inthe
ID: 1344289
Hello mmarvi
sorry
i can give you code for mci library playsound procedure
but it is for loading and playing wav files not midi
Im still looking for midi but everything i find is for wav :-(
im not sure how to do playsound procedure for midi files it may be the same but maybe not
0
Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
LVL 17

Expert Comment

by:inthe
ID: 1344290
hello again  
this page may be of more help to you

http://www.compguy.com/cwtip05.htm
0
 
LVL 17

Expert Comment

by:inthe
ID: 1344291
system.ini will hold the midi sequencer
on my system it's sequencer=mciseq.drv
so something like this is what your after i think

open sequencer!yoursong.mid alias anthem
play anthem
pause anthem
resume anthem
stop anthem
seek anthem to start
play anthem
stop anthem
close anthem
0
 

Accepted Solution

by:
tothpaul earned 60 total points
ID: 1344292
try this !
-------------
unit sound;

interface

uses
 windows,mmsystem;

procedure StartSound(hwnd:THandle; FileName:string);
procedure Replay;
procedure StopSound;

implementation

const
 playing:boolean=false;
Var
 DevId:word;
 mciPlay:TMCI_PLAY_PARMS;

procedure StartSound(hwnd:THandle;FileName:string);
 var
  mciOpen:TMCI_OPEN_PARMS;
 begin
  if playing then StopSound;
  with mciOpen do begin
   dwCallBack:=0;
   lpstrDeviceType:=nil;
   lpstrElementName:=PChar(FileName);
   lpstrAlias:=nil;
  end;
  if mciSendCommand(0, mci_Open, mci_open_element, Longint(@mciOpen))=0 then begin
   DevId:=mciOpen.wDeviceId;
   mciPlay.dwCallBack:=HWnd;
   mciPlay.dwFrom    :=0;
   Playing:=(mciSendCommand( DevID, mci_Play, mci_notify or mci_from, Longint(@mciPlay))=0);
   if not playing then StopSound;
  end;
 end;

procedure Replay;
 begin
  if Playing then
   mciSendCommand( DevID, mci_Play, mci_notify or mci_from, Longint(@mciPlay));
 end;

procedure StopSound;
 begin
  mciSendCommand( DevID, mci_Close, 0, 0);
  playing:=false;
 end;

end.

0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question