?
Solved

How to play MIDI files

Posted on 1998-10-25
6
Medium Priority
?
694 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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 180 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

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

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

Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
Suggested Courses

770 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