نمایش نتایج 1 تا 6 از 6

نام تاپیک: تنظیم ولوم های صدا?

  1. #1

    تنظیم ولوم های صدا?

    برای اینکه تمام ولوم ها را تنظیم بکنیم چه باید کرد

    این کد کار نمی کند چرا؟ :cry:

    var
    i,count:integer;
    begin
    count:=auxGetNumDevs;
    for i:=0 to count do
    auxSetVolume(i,$ffffffff);
    end;

    و چگونه می توان یک ولوم را از حالت mute خارج کرد?


    با تشکر

  2. #2
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    procedure GetVOLUME(var volL, volR: Word);
    var
    hWO: HWAVEOUT;
    waveF: TWAVEFORMATEX;
    vol: DWORD;
    begin
    volL:= 0;
    volR:= 0;
    // init TWAVEFORMATEX
    FillChar(waveF, SizeOf(waveF), 0);
    // open WaveMapper = std output of playSOUND
    waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
    // get VOLUME
    waveOutGetVOLUME(hWO, @vol);
    volL:= vol and $FFFF;
    volR:= vol shr 16;
    waveOutClose(hWO);
    end;


    procedure SetVOLUME(const volL, volR: Word);
    var
    hWO: HWAVEOUT;
    waveF: TWAVEFORMATEX;
    vol: DWORD;
    begin
    // init TWAVEFORMATEX
    FillChar(waveF, SizeOf(waveF), 0);
    // open WaveMapper = std output of playSOUND
    waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
    vol:= volL + volR shl 16;
    // set VOLUME
    waveOutSetVOLUME(hWO, vol);
    waveOutClose(hWO);
    end;

  3. #3
    باتشکر از آقای کرامتی
    من که از این توابع چیزی نفهمیدم :roll:
    و آنها هم جواب نمی دهند حداقل روی کامپیوتر من! :cry:
    ولی اگر بخواهیم ولوم Wave را عوض کنیم
    به راحتی می توان
    waveOutSetVOLUME(0, vol);

    و برای بدست آوردن مقدار آن
     waveOutGetVOLUME(0, @vol); 

    //********************
    ولی من دنبال این هستم که چگونه دیگر ولوم ها را عوض کنیم مثلاُ
    Master Out
    midi
    ....
    و یا کلاُ چگونه همه ولوم ها را باهم عوض کنیم
    و چگونه یک ولوم را از حالت Mute خارج کنیم؟
    :cry: :cry: :cry:

  4. #4

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    تو Win32 Programmer's Reference بگرد دنبال Audio Mixer Reference.

  6. #6
    دقیقا همانطوری که کامبیز گفت بدنیال Audio Mixer Reference باید بگردی.

    بزرگترین منبع برای اینجور چیزا MSDN هست
    http://msdn.microsoft.com/library/de...etlineinfo.asp

    اینجا رو هم ببین !
    http://www.swissdelphicenter.ch/torr...de.php?id=1204

    اینم کدش با یکم تحقیق میتونی کامل ترش کنی ،


    Uses MMSystem
    function GetControl(Mixer: HMIXER; ComponentType, CtrlType: Longint; var MXC: TMixerControl): Boolean;
    var
    MXL: TMixerLine;
    MXLC: TMixerLineControls;
    begin
    Result := False;
    FillChar(MXL, SizeOf(TMixerLine), 0);
    mxl.cbStruct := SizeOf(TMixerLine);
    mxl.dwComponentType := ComponentType;
    if mixerGetLineInfo(Mixer, @MXL, MIXER_GETLINEINFOF_COMPONENTTYPE) = MMSYSERR_NOERROR then
    begin
    with MXLC do
    begin
    cbStruct := SizeOf(TMixerLineControls);
    dwLineID := mxl.dwLineID;
    dwControlType := CtrlType;
    cControls := 1;
    cbmxctrl := SizeOf(TMixerLine);
    pamxctrl := @MXC;
    pamxctrl^.cbStruct := SizeOf(TMixerControl);
    end;
    Result := mixerGetLineControls(Mixer, @MXLC, MIXER_GETLINECONTROLSF_ONEBYTYPE) = MMSYSERR_NOERROR;
    end;
    end;

    function SetControlVolume(Mixer: HMIXER; MXC: TMixerControl; Volume: Longint): Boolean;
    var
    MXCD: TMixerControlDetails;
    vol: TMixerControlDetails_Unsigned;
    begin
    FillChar(MXCD, SizeOf(MXCD), 0);
    with MXCD do
    begin
    cbStruct := SizeOf(TMixerControlDetails);
    dwControlID := mxc.dwControlID;
    cbDetails := SizeOf(TMixerControlDetails_Unsigned);
    paDetails := @vol;
    cMultipleItems := 0;
    cChannels := 1;
    end;
    vol.dwValue := Volume;
    Result := mixerSetControlDetails(Mixer, @MXCD, MIXER_SETCONTROLDETAILSF_VALUE) = MMSYSERR_NOERROR;
    end;

    //An example how to mute and unmute some control:

    function MuteControl(ComponentType: Longint): Boolean;
    var
    MixerHandle: HMIXER;
    VolCtrl: TMixerControl;
    MCD: TMixerControlDetails;
    Details: array [0..30] of Integer;
    begin
    mixerOpen(@MixerHandle, 0, 0, 0, 0);
    FillChar(VolCtrl, SizeOf(VolCtrl), 0);
    if GetControlVolume(MixerHandle, ComponentType,
    cbDetails := SizeOf(Integer);
    paDetails := @Details;
    {by control MIXERCONTROL_CONTROLTYPE_MUTE has Details[0] value 0 - unmuted or 1 - muted
    by control MIXERCONTROL_CONTROLTYPE_VOLUME has Details[0] value of left speaker and Details[1]
    of right speaker}
    end;
    mixerGetControlDetails(MixerHandle, @MCD, MIXER_GETCONTROLDETAILSF_VALUE);

    SetControlVolume(MixerHandle, VolCtrl, Integer(not Boolean(Details[0])));
    end;
    mixerClose(MixerHandle);
    end;

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •