C++ Builder

La Isla Bonita



Audio Controls
Audio Controls


Description

This example shows how to control the volume and balance of a multimedia file.

AudioControls.cpp

//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop

#include "AudioControls.h"

//----------------------------------------------
// MAXIMUM VOLUME - MIDDLE BALANCE
// 0xffffffff
// MIDDLE VOLUME - MIDDLE BALANCE
// 0x7fff7fff
//----------------------------------------------

#pragma resource "*.dfm"
TForm1 *Form1;

//In a final version these two variables should be declared 
//in a class
//use to store the old volume setting
DWORD OldVolume;
//use to store the new volume setting
DWORD NewVolume;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
    TrackBar_Volume->Max = 10; 
    TrackBar_Volume->Position = 10;   //Set the Volume position to Maximum

    TrackBar_Balance->Max = 10;
    TrackBar_Balance->Position = 5;   //Set the Balance position to the middle

    // Set Volume level to maximum
    NewVolume = 0xffffffff;   
    waveOutSetVolume(0, NewVolume );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if( OpenDialog1->Execute() )
    {
        MediaPlayer1->FileName=OpenDialog1->FileName;

        try
        {
            MediaPlayer1->Open();
        }
        catch (...)
        {
            Application->MessageBox("Open File Exception :",
                                     mtWarning,
                                     MB_ICONWARNING | MB_OK);
        }
    }
}
//------------------------------------------------------------------

void __fastcall TForm1::MediaPlayer1Click( TObject *Sender, TMPBtnType Button,
                                           bool &DoDefault )
{
    if( Button == btPlay )
    {
        Timer1->Enabled = true;
    }
    else
    { 
        if ( Button == btStop )
        {
          Timer1->Enabled = false;
        }
    }
        
    DoDefault = true;
}
//------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    ProgressBar1->Position = (TProgressRange)( MediaPlayer1->Position * 100 /
                                               MediaPlayer1->Length );
    if( ProgressBar1->Position == 100 )
    {
      Timer1->Enabled = false;
    }
}
//------------------------------------------------------------------

void __fastcall TForm1::TrackBar_VolumeChange(TObject *Sender)
{
    int value = ( (float)TrackBar_Volume->Position /
                  (float)TrackBar_Volume->Max ) * (float)0xFFFF;

    waveOutSetVolume( 0, MAKELONG(value, value) );
}
//------------------------------------------------------------------

void __fastcall TForm1::TrackBar_BalanceChange(TObject *Sender)
{
    int middle_value = ( (float)TrackBar_Volume->Position /
                         (float)TrackBar_Volume->Max ) * (float)0xFFFF;

    int value = ( (float)TrackBar_Balance->Position /
                  (float)TrackBar_Balance->Max ) * (float)0xFFFF;


    if ( TrackBar_Balance->Position < 5 )
    {
    //Left channel: change low order word
        waveOutSetVolume( 0, MAKELONG( middle_value, value ) );
    }

    if ( TrackBar_Balance->Position > 5 )
    {
    //Right channel: change high order word
        waveOutSetVolume( 0, MAKELONG( TrackBar_Balance->Max - value,
                                       middle_value ) );
    }
}
//-------------------------------------------------------------------

void __fastcall TForm1::MiddleVolumeClick(TObject *Sender)
{
  TrackBar_Volume->Position = TrackBar_Volume->Max/2;

  int value = ( (float)TrackBar_Volume->Position /
                  (float)TrackBar_Volume->Max ) * (float)0xFFFF;

  waveOutSetVolume( 0, MAKELONG(value, value) );
}
//-------------------------------------------------------------------

void __fastcall TForm1::MaxVolumeClick(TObject *Sender)
{
  TrackBar_Volume->Position = TrackBar_Volume->Max;

  int value = ( (float)TrackBar_Volume->Position /
                (float)TrackBar_Volume->Max ) * (float)0xFFFF;

  waveOutSetVolume( 0, MAKELONG(value, value) );
}
//---------------------------------------------------------------------------

AudioControls.h

#ifndef AudioControlsH
#define AudioControlsH
//---------------------------------------------------------------------------
#include <vcl\Classes.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Controls.hpp>
#include <vcl\ExtCtrls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\ComCtrls.hpp>
#include <vcl\MPlayer.hpp>
#include <vcl\Dialogs.hpp>

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
  private:	// User declarations

  __published:	// IDE-managed Components
      TButton *Button1;
      TMediaPlayer *MediaPlayer1;
      TOpenDialog *OpenDialog1;
      TProgressBar *ProgressBar1;
      TTimer *Timer1;
	  TTrackBar *TrackBar_Volume;
	  TTrackBar *TrackBar_Balance;
	  TLabel *Volume;
	  TLabel *Label1;
	  TButton *MiddleVolume;
	  TButton *MaxVolume;
      void __fastcall Button1Click(TObject *Sender);
      void __fastcall MediaPlayer1Click(TObject *Sender, TMPBtnType Button,
      bool &DoDefault);
      void __fastcall Timer1Timer(TObject *Sender);
	  void __fastcall TrackBar_VolumeChange(TObject *Sender);
	  void __fastcall TrackBar_BalanceChange(TObject *Sender);
	  void __fastcall MiddleVolumeClick(TObject *Sender);
	  void __fastcall MaxVolumeClick(TObject *Sender);

  public:		// User declarations
      __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Homepage

Copyright © 1997-2002 Rodolfo A. Frino. All rights reserved.