Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

как изменить звук   Найти похожие ветки 

 
Fantom   (2004-08-06 03:52) [0]

Я пишу audio-player и сталкнулся стакой проблемои мне нужно зделать так чтоюы в программе можно было измянять громкость


 
Александр1   (2004-08-07 18:54) [1]

А звук ты знаешь как проигрывать?


 
Fantom   (2004-08-08 02:09) [2]

Александр1  
Да знаю


 
Константинов ©   (2004-08-08 02:38) [3]

из FAQ взятого на сайте АП

Да всё пpосто. Даже, я бы сказал, тyпо. :-)

INT GetMasterVolumeControlID()
{
 // get dwLineID
 MIXERLINE mxl;
 mxl.cbStruct = sizeof(MIXERLINE);
 mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
 if (::mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl,
   MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
   != MMSYSERR_NOERROR)
   return 34;
 // get dwControlID
 MIXERCONTROL mxc;
 MIXERLINECONTROLS mxlc;
 mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
 mxlc.dwLineID = mxl.dwLineID;
 mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
 mxlc.cControls = 1;
 mxlc.cbmxctrl = sizeof(MIXERCONTROL);
 mxlc.pamxctrl = &mxc;
 if (::mixerGetLineControls((HMIXEROBJ)ghmx, &mxlc,
   MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
   != MMSYSERR_NOERROR)
   return 34;
 return mxc.dwControlID;
}

BOOL SetMasterVolume(DWORD dwVolume)
{
  MIXERCONTROLDETAILS mxcd;
  MIXERCONTROLDETAILS_UNSIGNED mxcd_u;
  mxcd.cbStruct = sizeof(mxcd);
  mxcd.dwControlID = MasterVolumeControlID;
  mxcd.cChannels = 1;
  mxcd.cMultipleItems = 0;
  mxcd.cbDetails = 4;
  mxcd.paDetails = &mxcd_u;
  mmr = mixerGetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
  if (MMSYSERR_NOERROR != mmr) return FALSE;
  mxcd_u.dwValue = dwVolume;
  mmr = mixerSetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
  if (MMSYSERR_NOERROR != mmr) return FALSE;
  return TRUE;
}

Переписывать на Delphi, думаю, ни к чему. Надо лишь не забыть добавить uses MMSystem; Громкость отдельных каналов очень просто устанавливается через auxSetVolume и аналогичные.


 
Александр1   (2004-08-08 18:56) [4]

Ну тоже мне программист. Собрался писать свой audio-player и не знает как его наделить функцией второй по значимости после собственно проигрывания музыки. audio-player-ов написано выше крыши. Зачем писать свой, если ты всё равно не сможешь переплюнуть Microsoft и других.
Знаешь я когда-то тоже пытался написать свой audio-player, но потом понял, что этим плером в принципе никто пользоваться даже не будит, т.к. он будет хуже других.
Я считаю, что велосипед изобретать второй раз не следует. Нужно писать те программы которые ещё не написаны и которых нет на дисках.
К стати а как ты создать эквалайзеры? Я помню в своё время так их не смог описать.
Ну ладно ты не обижайся чё писать это дело каждого. Если тебя не затруднит как напишешь скинь на почту свой audio-player. Я в долгу не останусь, помогу чем смогу.

А громкость меняется так:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
uses MMSystem;

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

procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWaveOutCaps;
begin
 if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
      MMSYSERR_NOERROR then begin
   if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
     WaveOutSetVolume(WAVE_MAPPER, AVolume);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Beep;

end;

procedure TForm1.Button2Click(Sender: TObject);
var LeftVolume: Word;
   RightVolume: Word;
begin
 LeftVolume := StrToInt(Edit1.Text);
 RightVolume := StrToInt(Edit2.Text);
 SetWaveVolume(MakeLong(LeftVolume, RightVolume));

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Caption := IntToStr(GetWaveVolume);

end;

end.

Если хочешь могу прислать исходный код, только укажи мыло.


 
Александр1   (2004-08-10 06:03) [5]

Fantom - Ну ты хоть напеши работает громкость звука?


 
Mihey_temporary ©   (2004-08-10 13:12) [6]

2 Александр1:

Я тоже писал плеер, но не как отдельный, а в составе игры. Очень нужная вещь.


 
Fantom   (2004-08-12 02:42) [7]

Александр1  
спасибо за код он работает
но у меня снова проблема как можно узнать время и сколько уже прошло


 
antonn ©   (2004-08-12 05:24) [8]

Now-функция возвращает текущее время-дату.



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1099036668
a123
2004-10-29 11:57
2004.11.14
Шрифт в программе


6-1094485928
Gera
2004-09-06 19:52
2004.11.14
Indy tcpClient и tcpServer


14-1098561157
snif
2004-10-23 23:52
2004.11.14
Удаленный рабочий стол


3-1097580456
Павел
2004-10-12 15:27
2004.11.14
как использовать транзакцию


6-1094221548
Wahnsinng
2004-09-03 18:25
2004.11.14
создание сайта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский