volume du micro

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

volume du micro

Message par scaraber »

Salut
je cherche le moyen d'acceder directement au volume du micro qui se config normalement via le panneau de configuration.
y a -til un moyen ?si oui comment ?
a+
scaraber
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Code : Tout sélectionner

; Code : KarLKoX

#MMSYSERR_NOERROR       = 0
#MIXER_SHORT_NAME_CHARS = 16
#MIXER_LONG_NAME_CHARS  = 64
Structure MIXERCONTROL
  cbStruct.l
  dwControlID.l
  dwControlType.l
  fdwControl.l
  cMultipleItems.l
  szShortName.s[#MIXER_SHORT_NAME_CHARS]
  szName.s[#MIXER_LONG_NAME_CHARS]
  lMinimum.l
  lMaximum.l
  reserved.l[10]
EndStructure

; retourne -1 si erreur
; 0 à 65535 en cas de succes
Procedure.l MIXER_getVolume(Type.l)
Protected dwVolume.l, result.l, hMixer
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED

  RtlZeroMemory_(ml,SizeOf(MIXERLINE))
  RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
  RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
  RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
  
  dwVolume = -1
  result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
  If result = #MMSYSERR_NOERROR
    ml\cbStruct        = SizeOf(MIXERLINE)
    ml\dwComponentType = Type
    result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
    If result = #MMSYSERR_NOERROR
      mlc\cbStruct      = SizeOf(MIXERLINECONTROLS)
      mlc\dwLineID      = ml\dwLineID
      mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
      mlc\cControls     = 1
      mlc\pamxctrl      = @mc
      mlc\cbmxctrl      = SizeOf(MIXERCONTROL)
      result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
      If result = #MMSYSERR_NOERROR
        mcd\cbStruct    = SizeOf(MIXERCONTROLDETAILS)
        mcd\dwControlID = mc\dwControlID
        mcd\paDetails   = @mcdu
        mcd\cbDetails   = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
        mcd\cChannels   = 1
        result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
        If result = #MMSYSERR_NOERROR
          dwVolume = mcdu\dwValue
        EndIf        
      EndIf
    EndIf
  EndIf
  
  ProcedureReturn dwVolume  
EndProcedure

; newvolume va de 0 = 65535
; retourne #true ou #false
Procedure MIXER_setVolume(Type.l, newvolume.l)
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED

  RtlZeroMemory_(ml,SizeOf(MIXERLINE))
  RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
  RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
  RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
  
  result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
  If result = #MMSYSERR_NOERROR
    ml\cbStruct        = SizeOf(MIXERLINE)
    ml\dwComponentType = Type
    result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
    If result = #MMSYSERR_NOERROR
      mlc\cbStruct      = SizeOf(MIXERLINECONTROLS)
      mlc\dwLineID      = ml\dwLineID
      mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
      mlc\cControls     = 1
      mlc\pamxctrl      = @mc
      mlc\cbmxctrl      = SizeOf(MIXERCONTROL)
      result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
      If result = #MMSYSERR_NOERROR
        mcdu\dwValue    = newvolume
        mcd\cbStruct    = SizeOf(MIXERCONTROLDETAILS)
        mcd\dwControlID = mc\dwControlID
        mcd\paDetails   = @mcdu
        mcd\cbDetails   = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
        mcd\cChannels   = 1
        result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
        If result = #MMSYSERR_NOERROR
          ProcedureReturn #True
        Else
          ProcedureReturn #False
        EndIf
      EndIf
    EndIf
  EndIf
EndProcedure

Debug "Volume du micro   : " + Str(MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE))
Dernière modification par KarLKoX le mar. 09/mai/2006 20:34, modifié 1 fois.
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

#good
Image
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

heu c pour quelle version ?
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Ca devrait fonctionner, en théorie, sur toutes les versions de PB.
"Qui baise trop bouffe un poil." P. Desproges
Répondre