Nelson, este es el código con el que estoy trabajando:
Código Delphi
[-]
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.StdCtrls, MMSystem,
Vcl.MPlayer, ShlObj;
type
TFrmSonidos1 = class(TForm)
BtnEjecutar: TButton;
RdoGrpFormato: TRadioGroup;
TrkBarIzq: TTrackBar;
TrkBarDer: TTrackBar;
LblControlDer: TLabel;
LblControlIzc: TLabel;
LblArchivo: TLabel;
Panel1: TPanel;
Imagen: TImage;
OpenDialog1: TOpenDialog;
MediaPlayer1: TMediaPlayer;
BtnAbrir: TButton;
btnDetener: TButton;
procedure BtnEjecutarClick(Sender: TObject);
procedure TrkBarDerChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RdoGrpFormatoClick(Sender: TObject);
procedure BtnAbrirClick(Sender: TObject);
procedure btnDetenerClick(Sender: TObject);
procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
private
Procedure Sonar;
Procedure MostrarVolumen;
public
end;
var
FrmSonidos1: TFrmSonidos1;
ArchWAV : String;
CadWAV : array[0..256] of Char;
implementation
{$R *.DFM}
Procedure TFrmSonidos1.Sonar;
Begin
StrPLCopy(CadWAV, ArchWAV, 256);
Case RdoGrpFormato.ItemIndex of
0: PlaySound(CadWAV, 0, SND_ASYNC);
1: PlaySound(CadWAV, 0, SND_SYNC);
2: PlaySound(CadWAV, 0, SND_ASYNC + SND_LOOP)
End
End;
procedure TFrmSonidos1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
begin
if Button = TMPBtnType.btStop then
BtnDetener.Click;
end;
Procedure TFrmSonidos1.MostrarVolumen;
var
Volumen: dWord;
Izq,Der: Word;
begin
WaveOutGetVolume(WAVE_MAPPER,@Volumen);
Izq := Volumen and $ffff; Der := Volumen shr $10; TrkBarIzq.Position := Izq;
TrkBarDer.Position := Der;
Caption := 'Volumen Salida WAV Izq: ' + IntToStr(Izq)
+ ' - Der: ' + IntToStr(Der)
end;
procedure TFrmSonidos1.BtnAbrirClick(Sender: TObject);
var
OpenMediaDialog : TOpenDialog;
begin
OpenMediaDialog := TOpenDialog.Create(Self);
OpenMediaDialog.Filter := 'Abrir Archivo MP3|*.MP3';
if OpenMediaDialog.Execute() then
begin
MediaPlayer1.FileName := OpenMediaDialog.FileName;
if (FileExists(OpenMediaDialog.FileName)) and
(not DirectoryExists(OpenMediaDialog.FileName)) then
begin
MediaPlayer1.Wait := true;
MediaPlayer1.Open;
MediaPlayer1.Play;
MediaPlayer1.EnabledButtons :=
[TMPBtnType.btPause, TMPBtnType.btStop, TMPBtnType.btPlay];
BtnDetener.Enabled := true;
BtnAbrir.Enabled := false;
end;
end;
OpenMediaDialog.Free;
end;
procedure TFrmSonidos1.btnDetenerClick(Sender: TObject);
begin
MediaPlayer1.Stop;
MediaPlayer1.Close;
MediaPlayer1.EnabledButtons := [];
BtnAbrir.Enabled := true;
end;
procedure TFrmSonidos1.BtnEjecutarClick(Sender: TObject);
begin
OpenDialog1.Execute;
ArchWAV := OpenDialog1.FileName;
LblArchivo.Caption := ArchWAV;
Sonar
end;
procedure TFrmSonidos1.TrkBarDerChange(Sender: TObject);
var
Volumen: dWord;
Izq,Der: Word;
begin
Izq := TrkBarIzq.Position; Der := TrkBarDer.Position; Volumen := (Der shl $10) + (Izq and $ffff);
waveOutSetVolume(WAVE_MAPPER,Volumen);
MostrarVolumen
end;
procedure TFrmSonidos1.FormCreate(Sender: TObject);
begin
MostrarVolumen;
MediaPlayer1.AutoEnable := false;
MediaPlayer1.EnabledButtons := [];
end;
procedure TFrmSonidos1.RdoGrpFormatoClick(Sender: TObject);
begin
Sonar
end;
end.
Este reproduce archivos WAV controlando el volumen de salida Izquierdo y Derecho con un par de TTrackBar.
Lo que intento hacer es poder reproducir en el mismo programa MP3 con el TMediaPlayer.
Pero no estoy familiarizado con los codecs, no se como manejarlo.