звук

  • Автор темы Ljolikkk
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Ljolikkk

Я вобще новичёк в програмировании B) . Я ещё только учусь. Вот решил написать свою програмку для воспроизведения mp3. Вроде написал, но я незнаю как зделать регулировку звука(прямо в этой программе а не где-то в другом месте). Подскажите пожалуйста код.
 
C

Chernobyl

создаёте например (TrackBar)

Код:
uses MMSystem;

function GetVolume: DWord;
var
Woc: TWAVEOUTCAPS;
Volume : DWord;
begin
Result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;

procedure SetVolume(Value: DWord);
var
Woc: TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, value);
end;

//Получить громкость
{var
vol:longint;
begin
vol:=GetVolume;
TrackBar1.Position:=(vol shr 16);}
//Установить громкость
{var
vol:longint;
begin
Vol:=(TrackBar1.Position shl 16)+TrackBar1.Position;
SetVolume(vol);}
 
M

M@T$

Переделал эти функции под свои нужды.......


вот что получилось....:::

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function GetVolume: DWord;
var
Woc: TWAVEOUTCAPS;
Volume : DWord;
begin
Result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;



procedure TForm1.FormCreate(Sender: TObject);
var
vol: longint;

begin
vol:=GetVolume;
Label1.Caption:=IntToStr(vol shr 16);
end;

end.




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, MMSystem;

type
TForm1 = class(TForm)
Panel1: TPanel;
ListBox1: TListBox;
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
cap: TWaveInCaps;
begin
for i := 0 to waveInGetNumDevs do
begin
waveInGetDevCaps(i, Addr(cap), SizeOf(cap));
ListBox1.Items.Add(cap.szPname )
end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var
vol : longint;

begin
waveOutGetVolume( ListBox1.ItemIndex, @Vol);
Label1.Caption:=IntToStr(vol shr 16);
end;

end.




И тот и тот работают только когда я залажу сюда:

Мастер проверки аудиоустройств=>Проверка динамиков
 
M

M@T$

Больше ниначто не реагируют(нинакакие другие изменения)


Подскажите как сделать чтобы программа определяла уровень громкости сигнала, который подаётся на вход аудикарты
 
C

Chernobyl

Не с аудио картой не ко мне!
А этот код я исползовал для своего проигрывателя(*.mp3,*.wav,*.mid,*.ogg).
Когда Winamp заглююююююююючил.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!