1. Home
  2. Computing & Technology
  3. Delphi Programming

Programmatically Get and Set the MediaPlayer Sound Volume
Control TMediaPlayer Volume from Code

By Zarko Gajic, About.com

Media Player Volume Control

The TMediaPlayer Delphi component enables your application to control a media playing or recording device such as a CD-ROM player, video player/recorder.

Here's how to get / set the sound volume while the media is being played in the Media Player.

uses
   MMSystem;
const
   MCI_SETAUDIO = $0873;
   MCI_DGV_SETAUDIO_VOLUME = $4002;
   MCI_DGV_SETAUDIO_ITEM = $00800000;
   MCI_DGV_SETAUDIO_VALUE = $01000000;
   MCI_DGV_STATUS_VOLUME = $4019;
type
   MCI_DGV_SETAUDIO_PARMS = record
     dwCallback: DWORD;
     dwItem: DWORD;
     dwValue: DWORD;
     dwOver: DWORD;
     lpstrAlgorithm: PChar;
     lpstrQuality: PChar;
   end;
type
   MCI_STATUS_PARMS = record
     dwCallback: DWORD;
     dwReturn: DWORD;
     dwItem: DWORD;
     dwTrack: DWORD;
   end;

{Set Volume, range 0 - 1000}
procedure MPSetVolume(MP: TMediaPlayer; Volume: Integer) ;
var
   p: MCI_DGV_SETAUDIO_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
   p.dwValue := Volume;
   p.dwOver := 0;
   p.lpstrAlgorithm := nil;
   p.lpstrQuality := nil;
   mciSendCommand(MP.DeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p)) ;
end;

{Get Volume, range 0 - 1000}
function MPGetVolume(MP: TMediaPlayer): Integer;
var
   p: MCI_STATUS_PARMS;
begin
   p.dwCallback := 0;
   p.dwItem := MCI_DGV_STATUS_VOLUME;
   mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p)) ;
   Result := p.dwReturn;
end;

Usage: drop a TMediaPlayer ("MediaPlayer1") along with a TScrollBar ("ScrollBar1") on Delphi form.

In the OnCreate event for the form, setup the scroll bar and load a media file into MediaPlayer:

procedure TMediaPlayerForm.FormCreate(Sender: TObject) ;
begin
  ScrollBar1.Min := 0;
  ScrollBar1.Max := 1000;

  ScrollBar1.Position := MPGetVolume(MediaPlayer1);

  MediaPlayer1.Close;
  MediaPlayer1.FileName:='c:\favorite.mp3';
  MediaPlayer1.Open;
end;
Handle the OnChange event of the scroll bar (to set the Media player volume):
procedure TMediaPlayerForm.ScrollBar1Change(Sender: TObject) ;
begin
  MPSetVolume(MediaPlayer1, ScrollBar1.Position) ;
end;
Note: The related articles box features more TMediaPlayer tutorials and tips.

Delphi tips navigator:
» Copy RTF Text/Formatting From one TRichEdit to Another
« Programmatically Enable and Disable CD Auto-Run / Auto-Play

More Delphi Programming Quick Tips
Explore Delphi Programming
About.com Special Features

Stay connected and entertained with reviews on tips on the latest HDTVs, cellphones and more. More >

Easy ways to connect two computers for networking purposes. More >

  1. Home
  2. Computing & Technology
  3. Delphi Programming
  4. Coding Delphi Applications
  5. Delphi Tips and Tricks
  6. Delphi 2006 Tips
  7. Programmatically Get and Set the MediaPlayer Sound Volume

©2009 About.com, a part of The New York Times Company.

All rights reserved.