Главная страница
    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.034 c
14-1098451206
VID
2004-10-22 17:20
2004.11.14
Генеральный поиск квартиры :)


14-1098455538
Кириешки
2004-10-22 18:32
2004.11.14
НОРТОН АНТИВИРУС завалил комп. Помогите пожалуйста!


3-1097849034
SSGuest
2004-10-15 18:03
2004.11.14
Как в DBGrid е такую штуковину сделать...


14-1098448011
Qwest
2004-10-22 16:26
2004.11.14
Задачи.


14-1098465723
Кириешки
2004-10-22 21:22
2004.11.14
From SPYWARE to WARNING.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский