kjcdude Posted March 24, 2008 Share Posted March 24, 2008 I've been looking for something like this for a while, glad i found it. I'm using: _SoundSetMasterVolume("100") _SoundSetMicrophoneVolume("100") _SoundSetMasterWaveVolume("100") masterwave and master volume work like they should, but microphonevolume does now work like it should. Ive tested it on a few xp machines and have been unable to get it working correctly. Link to comment Share on other sites More sharing options...
Lakes Posted May 12, 2008 Share Posted May 12, 2008 Yo Volly, you know I've been looking all over for a way of generating a sound... I've found lots of information for how to acomplish this using some functions in winmm.dll, but my lack of knowledge didn't even let me get started. Do you think it's possible?The closest to this is to use your sound card MIDI sounds, heres the link http://www.autoitscript.com/forum/index.ph...072&hl=midi 2015 - Still no flying cars, instead blankets with sleeves. Link to comment Share on other sites More sharing options...
J_Y_C Posted August 11, 2008 Share Posted August 11, 2008 I am using this UDF, and I noticed that there were some notes about missing functions. I did several, but I don't know the process for submitting something to a UDF? The functionality I added to Audio.au3 is: _unMuteAllInputs() _muteAllInputs() _unMuteAllOutputs() _muteAllOutputs() getInputMixerHandle() getOutputMixerHandle() _getAllInputChannelNames() _getAllOutputChannelNames _muteInputChannel($channelName) _muteOutputChannel($channelName) _unMuteInputChannel($channelName) _unMuteOutputChannel($channelName) In a nutshell, it adds the ability to get the names of all the input or output mixer channel names, and to mute or unmute them each. Volly, if this is something you would be interested in, let me know. I don't mind posting it, but I can't say it has all the proper UDF comments on it, and if there is a method to adding these kinds of things I want to make sure I follow it. Link to comment Share on other sites More sharing options...
Bert Posted August 11, 2008 Author Share Posted August 11, 2008 PM me the code, and I will add it in. The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
Bert Posted August 11, 2008 Author Share Posted August 11, 2008 Updates have been added to the first post. I've added asbeer450's code in a different download to allow for a choice on what controls one wants to use. I'm reviewing J_Y_C's code to see if we can add it. So far, his code looks real good! The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
Bert Posted August 25, 2008 Author Share Posted August 25, 2008 (edited) I reviewed the code, and he is using access to to master volume GUI to access stuff. You can do this, but I do not recommend that approach to control sound. In Audio.au3, _Ismute does this also, but I left it in. : asbeer450's method to control sound may address this issue in a better way. Try both and see what works for you! As of this point, there will be no update for Vista. Vista controls sound using a different method. I do not have access to a Vista PC. Edited August 25, 2008 by Volly The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
GEOSoft Posted August 25, 2008 Share Posted August 25, 2008 As of this point, there will be no update for Vista. Vista controls sound using a different method. I do not have access to a Vista PC.No matter. I won't support Vista anyway. My thinking = if it works on Vista then well and good, if not then "sorry to hear that". George Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.*** The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number. Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else. "Old age and treachery will always overcome youth and skill!" Link to comment Share on other sites More sharing options...
Nahuel Posted August 25, 2008 Share Posted August 25, 2008 The closest to this is to use your sound card MIDI sounds, heres the link http://www.autoitscript.com/forum/index.ph...072&hl=midiExcellent. Thank you. Link to comment Share on other sites More sharing options...
wraithdu Posted August 27, 2008 Share Posted August 27, 2008 There is a pseudo Vista workaround for these functions. If you set the compiled script to Windows XP compatibility mode, then the master volume functions will control Vista's master volume. The master wave volume controls still do nothing (as far as I can remember) since they do not exist at all in Vista anymore. Link to comment Share on other sites More sharing options...
BugFix Posted October 15, 2008 Share Posted October 15, 2008 (edited) Hi Volly, by using Xenobiologist's _isMute(), i've made function _ToggleMuteMaster(). I hope it's useful. expandcollapse popupFunc _ToggleMuteMaster($opt = 1000) Local $retVal = 0, $ex = False If Not WinExists('[CLASS:Volume Control]') Then Run('sndvol32', '', @SW_HIDE) $ex = True EndIf If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1 $retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked') If @error Then Return -2 If $retVal Then ControlCommand('[CLASS:Volume Control]', '', $opt, 'UnCheck') If @error Then Return -2 Else ControlCommand('[CLASS:Volume Control]', '', $opt, 'Check') If @error Then Return -2 EndIf If $ex = True Then WinClose('[CLASS:Volume Control]') Return EndFunc ;==>_ToggleMuteMasteroÝ÷ Ù±!?Û:¸)äÝý±·µêö~éܱú+ë^jwnky«¢+ÙÕ¹}5ÕÑY½° ÀÌØí½ÁÐôÄÀÀÀ¤(1½°ÀÌØíÉÑY°ôÀ°ÀÌØíàô±Í(%9½Ð]¥¹á¥ÍÑÌ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì¤Q¡¸(IÕ¸ Ìäí͹ٽ°ÌÈÌäì°ÌäìÌäì°M]}!%¤(ÀÌØíàôQÉÕ(¹%(%]¥¹]¥Ð Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°È¤ôÀQ¡¸IÑÕɸ´Ä(ÀÌØíÉÑY°ô ½¹Ñɽ± ½µµ¹ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°ÀÌØí½ÁаÌäí¥Í ¡Ìäì¤(%ÉɽÈQ¡¸IÑÕɸ´È(%%9½ÐÀÌØíÉÑY°Q¡¸($% ½¹Ñɽ± ½µµ¹ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°ÀÌØí½ÁаÌäí ¡¬Ìäì¤($%%ÉɽÈQ¡¸IÑÕɸ´È(%¹%(%ÀÌØíàôQÉÕQ¡¸]¥¹ ±½Í Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì¤(IÑÕɸ)¹Õ¹ìôôÐí}5ÕÑY½°()Õ¹}U¹5ÕÑY½° ÀÌØí½ÁÐôÄÀÀÀ¤(1½°ÀÌØíÉÑY°ôÀ°ÀÌØíàô±Í(%9½Ð]¥¹á¥ÍÑÌ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì¤Q¡¸(IÕ¸ Ìäí͹ٽ°ÌÈÌäì°ÌäìÌäì°M]}!%¤(ÀÌØíàôQÉÕ(¹%(%]¥¹]¥Ð Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°È¤ôÀQ¡¸IÑÕɸ´Ä(ÀÌØíÉÑY°ô ½¹Ñɽ± ½µµ¹ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°ÀÌØí½ÁаÌäí¥Í ¡Ìäì¤(%ÉɽÈQ¡¸IÑÕɸ´È(%%ÀÌØíÉÑY°Q¡¸($% ½¹Ñɽ± ½µµ¹ Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì°ÌäìÌäì°ÀÌØí½ÁаÌäíU¹ ¡¬Ìäì¤($%%ÉɽÈQ¡¸IÑÕɸ´È(%¹%(%ÀÌØíàôQÉÕQ¡¸]¥¹ ±½Í Ìäím 1MLéY½±Õµ ½¹Ñɽ±tÌäì¤(IÑÕɸ)¹Õ¹ìôôÐí}U¹5ÕÑY½ Edited October 15, 2008 by BugFix Best Regards BugFix Link to comment Share on other sites More sharing options...
raazy Posted March 23, 2009 Share Posted March 23, 2009 Hi Volly,thank you for great sound code for AutoIt.I've made it MustDeclareVars compliant and also added SoundGetMasterWaveVolume function.expandcollapse popup#cs Audio.au3 Designed by Gary Frost, RazerM, Xenobiologist, and a little help from Volly Version info: 1.0.0.2 History: 1.0.0.1 - Ismute function added - thanks Xenobiologist 1.0.0.2 - SoundGetMasterWaveVolume added - Opt("MustDeclareVars", 1) compliant ------------------------------------------- Items to add: 1. Mute for master volume. 2. Mute for input Microphone 3. Mute for Wave 4. Balance on Master, Wave, Microphone ------------------------------------------- The following code is a proposed replacement for sound.au3. Current functions work as expected following testing on XP pc. No test have been performed on other operating systems. ------------------------------------------- Functions: _SoundOpen ( $hFile [, $sAlias ] ) - Opens a sound file for use with other _Sound functions. _SoundClose($sSnd_id) - Closes a sound previously opened with _SoundOpen. _SoundPlay ( $sSnd_id [, $fWait ] ) - Play a sound file. _SoundStop ( $sSnd_id ) - Stop a playing sound. _SoundPause($sSnd_id) - Pause a playing sound. _SoundResume ( $sSnd_id ) - Resume a paused sound. _SoundLength ( $sSnd_id [, $iMode ] ) - Returns the length of the soundfile. _SoundSeek ( $sSnd_id, $iHour, $iMin, $iSec ) - Seeks the sound to the specified position _SoundStatus ( $sSnd_id ) - Returns the status of the sound _SoundPos ( $sSnd_id [, $iMode ] ) - Returns the current position of the sound. _SoundSetMasterVolume($iVolume) - Sets the Master Volume. Does not control an application's volume _SoundGetMasterVolume - Gets the Master Volume level _SoundSetMicrophoneVolume - Sets the Microphone input volume _SoundGetMicrophoneVolume - Gets the Microphone volume level _SoundGetPhoneVolume - Gets the Phone volume on the modem _SoundSetVolumeCD - Sets the Volume level on the CDRom _SoundSetMasterWaveVolume - Sets the Master Wave Volume level _SoundGetMasterWaveVolume - Gets the Master Wave Volume level _Ismute - Checks for mute sound #ce #region Const $MMSYSERR_NOERROR = 0 Const $WAVERR_BASE = 32 Const $WAVERR_BADFORMAT = ($WAVERR_BASE + 0) Const $MAXPNAMELEN = 32 Const $MIXERLINE_COMPONENTTYPE_DST_FIRST = 0 Const $MIXER_GETLINEINFOF_COMPONENTTYPE = 3 Const $MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 0) Const $MIXERLINE_COMPONENTTYPE_DST_DIGITAL = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 1) Const $MIXERLINE_COMPONENTTYPE_DST_LINE = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 2) Const $MIXERLINE_COMPONENTTYPE_DST_MONITOR = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 3) Const $MIXERLINE_COMPONENTTYPE_DST_SPEAKERS= ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 4) Const $MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 5) Const $MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 6) Const $MIXERLINE_COMPONENTTYPE_DST_WAVEIN = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 7) Const $MIXERLINE_COMPONENTTYPE_DST_VOICEIN = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 8) Const $MIXERLINE_COMPONENTTYPE_DST_LAST = ($MIXERLINE_COMPONENTTYPE_DST_FIRST + 8) Const $MIXERLINE_COMPONENTTYPE_SRC_FIRST = 0x1000 Const $MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0) Const $MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1) Const $MIXERLINE_COMPONENTTYPE_SRC_LINE = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2) Const $MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE= ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3) Const $MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4) Const $MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5) Const $MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6) Const $MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7) Const $MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8) Const $MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9) Const $MIXERLINE_COMPONENTTYPE_SRC_ANALOG = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) Const $MIXERLINE_COMPONENTTYPE_SRC_LAST = ($MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) Const $MIXER_GETLINEINFOF_SOURCE = 1 Const $MIXER_GETLINEINFOF_DESTINATION = 0 Const $MIXER_GETLINEINFOF_LINEID = 2 Const $MIXERCONTROL_CT_SC_LIST_SINGLE = 0x00000000 Const $MIXERCONTROL_CT_CLASS_LIST = 0x70000000 Const $MIXERCONTROL_CT_SC_LIST_MULTIPLE = 0x01000000 Const $MIXERCONTROL_CT_UNITS_BOOLEAN = 0x00010000 Const $MIXERCONTROL_CT_CLASS_MASK = 0xF0000000 Const $MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = BitOR($MIXERCONTROL_CT_CLASS_LIST, $MIXERCONTROL_CT_SC_LIST_MULTIPLE, $MIXERCONTROL_CT_UNITS_BOOLEAN) Const $MIXERCONTROL_CONTROLTYPE_MIXER = ($MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1) Const $MIXERCONTROL_CONTROLTYPE_SINGLESELECT = BitOR($MIXERCONTROL_CT_CLASS_LIST, $MIXERCONTROL_CT_SC_LIST_SINGLE, $MIXERCONTROL_CT_UNITS_BOOLEAN) Const $MIXERCONTROL_CONTROLTYPE_MUX = ($MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1) Const $MIXER_GETCONTROLDETAILSF_VALUE = 0 Const $MIXER_SETCONTROLDETAILSF_VALUE = 0 Const $MIXERCONTROL_CONTROLF_UNIFORM = 1 Const $MIXERCONTROL_CONTROLF_MULTIPLE = 2 Const $MIXERCONTROL_CT_SC_METER_POLLED = 0 Const $MIXERCONTROL_CT_CLASS_METER = 0x10000000 Const $MIXERCONTROL_CT_UNITS_SIGNED = 0x20000 Const $MIXERCONTROL_CT_UNITS_UNSIGNED = 0x30000 Const $MIXERCONTROL_CT_CLASS_FADER = 0x50000000 Const $MIXERCONTROL_CT_CLASS_NUMBER = 0x30000000 Const $MIXERCONTROL_CONTROLTYPE_FADER = BitOR($MIXERCONTROL_CT_CLASS_FADER, $MIXERCONTROL_CT_UNITS_UNSIGNED) Const $MIXERCONTROL_CONTROLTYPE_VOLUME= ($MIXERCONTROL_CONTROLTYPE_FADER + 1) Const $MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = BitOR($MIXERCONTROL_CT_CLASS_METER, $MIXERCONTROL_CT_SC_METER_POLLED, $MIXERCONTROL_CT_UNITS_UNSIGNED) Const $MIXERCONTROL_CONTROLTYPE_UNSIGNED = BitOR($MIXERCONTROL_CT_CLASS_NUMBER, $MIXERCONTROL_CT_UNITS_UNSIGNED) Const $MIXERCONTROL_CONTROLTYPE_SIGNED = BitOR($MIXERCONTROL_CT_CLASS_NUMBER, $MIXERCONTROL_CT_UNITS_SIGNED) Const $MIXER_OBJECTF_WAVEIN = 0x20000000 Const $MIXER_SHORT_NAME_CHARS = 16 Const $MIXER_LONG_NAME_CHARS = 64 Const $MIXER_GETLINECONTROLSF_ALL = 0 Const $MIXER_GETLINECONTROLSF_ONEBYID = 1 Const $MIXER_GETLINECONTROLSF_ONEBYTYPE = 2 Const $MIXER_OBJECTF_HANDLE = 0x80000000 Const $MIXER_OBJECTF_MIXER = 0 Const $MIXER_OBJECTF_HMIXER = BitOR($MIXER_OBJECTF_HANDLE, $MIXER_OBJECTF_MIXER) Const $MIXER_GETCONTROLDETAILSF_LISTTEXT = 1 Const $CALLBACK_NULL = 0 Const $WAVE_MAPPED = 4 Const $wMid = 1 Const $wPid = 2 Const $vDriverVersion = 3 Const $szPname = 4 Const $dwFormats = 5 Const $wChannels = 6 Const $wReserved1 = 7 Const $AWICAPS_SIZEOF = $wReserved1 + 1 ;mixer Const $fdwSupport = 5 Const $cDestinations = 6 Const $AMXCAPS_SIZEOF = $cDestinations + 2 ;leave room for num cells ;line struct Const $cbStruct = 1 Const $dwDestination = 2 Const $dwSource = 3 Const $dwLineID = 4 Const $fdwLine = 5 Const $dwUser = 6 Const $dwComponentType = 7 Const $cChannels = 8 Const $cConnections = 9 Const $cControls = 10 Const $szShortName = 11 Const $szName = 12 Const $dwType = 13 Const $dwDeviceID = 14 Const $wMMid = 15 Const $wMPid = 16 Const $vMDriverVersion = 17 Const $szMPname = 18 $AMXLINE_SIZEOF = $szMPname + 2 Const $cbCStruct = 1 Const $dwCLineID = 2 Const $dwControlID = 3 Const $dwControlType = 4 Const $cCControls = 5 Const $cbmxctrl = 6 Const $pamxctrl = 7 Const $MXXTRLS_SIZEOF = $pamxctrl + 2 Const $lst_destname = 1 Const $lst_dwComponentType = 2 Const $lst_ctrid = 3 Const $MIX_HMXOBJ = 1 Const $MIX_DEVNAME = 2 Const $MIX_CAPCDEST = 3 Const $MIX_RECNAME = 4 Const $MIX_CCONNECTIONS = 5 Const $MIX_INCCONTROLS = 6 Const $MIX_DWLINEID = 7 Const $MIX_INCHANNELS = 8 Const $MIX_INMULTIITEMS = 9 Const $MIX_INCTRLID = 10 Const $MIX_OUTCHANNELS = 11 Const $MIX_OUTMULTIEMS = 12 Const $MIX_OUTCTRLID = 13 Const $MIX_LAST = $MIX_OUTCTRLID + 1 Const $AMIX_SIZEOF = $MIX_LAST + 1 Dim $mxline[$AMXLINE_SIZEOF] Dim $mixers[1][$AMIX_SIZEOF] Dim $mxInList[2][4] $mixernames = "" $FormSelectInput = 0 $TV_SelectInput = 0 $CMB_DevName = 0 $CKB_EnableLinefocus = 0 $defaultmixer = 0 $lastlinesrc = -1 $curmixer = $defaultmixer ;=============================================================================== #endregion ;=============================================================================== ; ; Function Name: _SoundOpen ; Description:: Opens a sound file for use with other _Sound functions ; Parameter(s): $hFile - The sound file, $sAlias[optianal] - a name such as sound1, ; if you do not specify one it is randomly generated ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): string(the sound id) - Success, 0 - Failure ; @extended <> 0 - open failed, @error = 2 - File doesn't exist, ; @error = 3 - alias contains whitespace ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundOpen($hFile, $sAlias = "") ;Declare variables Local $sSnd_id, $iCurrentPos, $iRet, $asAlias ;check for file If Not FileExists($hFile) Then Return SetError(2, 0, 0) ;search for whitespace by character $asAlias = StringSplit($sAlias, "") For $iCurrentPos = 1 To $asAlias[0] If StringIsSpace($asAlias[$iCurrentPos]) Then Return SetError(3, 0, 0) Next ;create random alias if one is not supplied If $sAlias = "" Then $sSnd_id = RandomStr(10) Else $sSnd_id = $sAlias EndIf ;open file $iRet = mciSendString("open " & FileGetShortName($hFile) & " alias " & FileGetShortName($sSnd_id)) Return SetError(0, $iRet, $sSnd_id) EndFunc ;==>_SoundOpen ;=============================================================================== ; ; Function Name: _SoundClose ; Description:: Closes a sound ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundClose($sSnd_id) If mciSendString("close " & FileGetShortName($sSnd_id)) = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundClose ;=============================================================================== ; ; Function Name: _SoundPlay ; Description:: Plays a sound from the current position (beginning is the default) ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file ; $fWait - If set to 1 the script will wait for the sound to finish before continuing ; - If set to 0 the script will continue while the sound is playing ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 - Failure ; @error = 2 - $fWait is invalid, @error = 1 - play failed ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundPlay($sSnd_id, $fWait = 0) ;Declare variables Local $iRet ;validate $fWait If $fWait <> 0 And $fWait <> 1 Then Return SetError(2, 0, 0) ;if sound has finished, seek to start If _SoundPos($sSnd_id, 2) = _SoundLength($sSnd_id, 2) Then mciSendString("seek " & FileGetShortName($sSnd_id) & " to start") ;If $fWait = 1 then pass wait to mci If $fWait = 1 Then $iRet = mciSendString("play " & FileGetShortName($sSnd_id) & " wait") Else $iRet = mciSendString("play " & FileGetShortName($sSnd_id)) EndIf ;return If $iRet = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundPlay ;=============================================================================== ; ; Function Name: _SoundStop ; Description:: Stops the sound ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure, ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundStop($sSnd_id) ;Declare variables Local $iRet, $iRet2 ;seek to start $iRet = mciSendString("seek " & FileGetShortName($sSnd_id) & " to start") ;stop $iRet2 = mciSendString("stop " & FileGetShortName($sSnd_id)) ;return If $iRet = 0 And $iRet2 = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundStop ;=============================================================================== ; ; Function Name: _SoundPause ; Description:: Pauses the sound ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure, ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundPause($sSnd_id) ;Declare variables Local $iRet ;pause sound $iRet = mciSendString("pause " & FileGetShortName($sSnd_id)) ;return If $iRet = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundPause ;=============================================================================== ; ; Function Name: _SoundResume ; Description:: Resumes the sound after being paused ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure, ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundResume($sSnd_id) ;Declare variables Local $iRet ;resume sound $iRet = mciSendString("resume " & FileGetShortName($sSnd_id)) ;return If $iRet = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundResume ;=============================================================================== ; ; Function Name: _SoundLength ; Description:: Returns the length of the sound in the format hh:mm:ss ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file, ; $iMode = 1 - hh:mm:ss, $iMode = 2 - milliseconds ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): Length of the sound - Success, 0 and @error = 1 - $iMode is invalid ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundLength($sSnd_id, $iMode = 1) ;Declare variables Local $iSnd_len_ms, $iSnd_len_min, $iSnd_len_hour, $iSnd_len_sec, $sSnd_len_format ;validate $iMode If $iMode <> 1 And $iMode <> 2 Then Return SetError(1, 0, 0) ;tell mci to use time in milliseconds mciSendString("set " & FileGetShortName($sSnd_id) & " time format miliseconds") ;recieve length of sound $iSnd_len_ms = mciSendString("status " & FileGetShortName($sSnd_id) & " length") ;assign modified data to variables $iSnd_len_min = Int($iSnd_len_ms / 60000) $iSnd_len_hour = Int($iSnd_len_min / 60) $iSnd_len_sec = Int(Int($iSnd_len_ms / 1000) - ($iSnd_len_min * 60)) ;assign formatted data to $sSnd_len_format $sSnd_len_format = StringFormat("%02i:%02i:%02i", $iSnd_len_hour, $iSnd_len_min, $iSnd_len_sec) ;return correct variable If $iMode = 1 Then Return $sSnd_len_format If $iMode = 2 Then Return $iSnd_len_ms EndFunc ;==>_SoundLength ;=============================================================================== ; ; Function Name: _SoundSeek ; Description:: Seeks the sound to a specified time ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen (must NOT be a file), $iHour, $iMin, $iSec ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure, ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundSeek($sSnd_id, $iHour, $iMin, $iSec) ;Declare variables Local $iMs = 0 Local $iRet ;prepare mci to recieve time in milliseconds mciSendString("set " & FileGetShortName($sSnd_id) & " time format miliseconds") ;modify the $iHour, $iMin and $iSec parameters to be in milliseconds ;and add to $iMs $iMs += $iSec * 1000 $iMs += $iMin * 60 * 1000 $iMs += $iHour * 60 * 60 * 1000 ; seek sound to time ($iMs) $iRet = mciSendString("seek " & FileGetShortName($sSnd_id) & " to " & $iMs) ;return If $iRet = 0 Then Return 1 Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_SoundSeek ;=============================================================================== ; ; Function Name: _SoundStatus ; Description:: All devices can return the "not ready", "paused", "playing", and "stopped" values. ; Some devices can return the additional "open", "parked", "recording", and "seeking" values.(MSDN) ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): Sound Status ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundStatus($sSnd_id) ;return status Return mciSendString("status " & FileGetShortName($sSnd_id) & " mode") EndFunc ;==>_SoundStatus ;=============================================================================== ; ; Function Name: _SoundPos ; Description:: Returns the current position of the song ; Parameter(s): $sSnd_id - Sound ID returned by _SoundOpen or sound file, ; $iMode = 1 - hh:mm:ss, $iMode = 2 - milliseconds ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): Current Position - Success, @error = 1 - $iMode is invalid ; Author(s): RazerM ; ;=============================================================================== ; Func _SoundPos($sSnd_id, $iMode = 1) ;Declare variables Local $iSnd_pos_ms, $iSnd_pos_min, $iSnd_pos_hour, $iSnd_pos_sec, $sSnd_pos_format ;validate $iMode If $iMode <> 1 And $iMode <> 2 Then Return SetError(1, 0, 0) ;tell mci to use time in milliseconds mciSendString("set " & FileGetShortName($sSnd_id) & " time format miliseconds") ;receive position of sound $iSnd_pos_ms = mciSendString("status " & FileGetShortName($sSnd_id) & " position") ;modify data and assign to variables $iSnd_pos_min = Int($iSnd_pos_ms / 60000) $iSnd_pos_hour = Int($iSnd_pos_min / 60) $iSnd_pos_sec = Int(Int($iSnd_pos_ms / 1000) - ($iSnd_pos_min * 60)) ;assign formatted data to $sSnd_pos_format $sSnd_pos_format = StringFormat("%02i:%02i:%02i", $iSnd_pos_hour, $iSnd_pos_min, $iSnd_pos_sec) ;return correct variable If $iMode = 1 Then Return $sSnd_pos_format If $iMode = 2 Then Return $iSnd_pos_ms EndFunc ;==>_SoundPos ;=============================================================================== ; ; Function Name: _SoundSetMasterVolume ; Description:: Sets the Master Volume. Does not control an application's volume ; Parameter(s): $$iVolume - % to set ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 - Failure ; Author(s): Volly ; Example: _SoundSetMasterVolume(100) ; ;=============================================================================== ; func _SoundSetMasterVolume($iVolume) _SetMixerVolume($MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, $iVolume) If @error Then SetExtended(0) Return(@extended) else SetExtended(1) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundGetMasterVolume ; Description:: Gets the Master Volume level ; Parameter(s): none ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundGetMasterVolume() ; ;=============================================================================== ; func _SoundGetMasterWaveVolume() Local $percent $percent = _GetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT) If @error Then SetExtended(-1) Return(@extended) else SetExtended($percent) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundGetMasterVolume ; Description:: Gets the Master Volume level ; Parameter(s): none ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundGetMasterVolume() ; ;=============================================================================== ; func _SoundGetMasterVolume() Local $percent $percent = _GetMixerVolume($MIXERLINE_COMPONENTTYPE_DST_SPEAKERS) If @error Then SetExtended(-1) Return(@extended) else SetExtended($percent) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundSetMicrophoneVolume ; Description:: Sets the Microphone input volume ; Parameter(s): $iVolume - % to set ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 - Success, 0 and @error = 1 - Failure ; Author(s): Volly ; Example: _SoundSetMicrophoneVolume(50) ; ;=============================================================================== ; func _SoundSetMicrophoneVolume($iVolume) _SetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, $iVolume) If @error Then Exit else SetExtended(1) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundGetMicrophoneVolume ; Description:: Gets the Microphone volume level ; Parameter(s): none ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundGetMicrophoneVolume() ; ;=============================================================================== ; func _SoundGetMicrophoneVolume() $percent = _GetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) If @error Then SetExtended(-1) Return(@extended) else SetExtended($percent) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundGetPhoneVolume ; Description:: Gets the Phone volume on the modem ; Parameter(s): none ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundGetPhoneVolume() ; Notes: Some modems may not report volume levels. You will need to test. ; ;=============================================================================== ; func _SoundGetPhoneVolume() $percent = _GetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE) If @error Then SetExtended(-10) Return(@extended) else SetExtended($percent) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundSetVolumeCD ; Description:: Sets the Volume level on the CDRom ; Parameter(s): $iVolume - % to set ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundSetVolumeCD(45) ; ;=============================================================================== func _SoundSetVolumeCD($iVolume) _SetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC, $iVolume) If @error Then Exit else SetExtended(1) Return(@extended) endif EndFunc ;=============================================================================== ; ; Function Name: _SoundSetMasterWaveVolume ; Description:: Sets the Master Wave Volume level. ; Parameter(s): $iVolume - % to set ; Requirement(s): AutoIt 3.2 ++ ; Return Value(s): 1 to 100 - Success, -1 - Failure ; Author(s): Volly ; Example: _SoundSetMasterWaveVolume(60) ; ;=============================================================================== func _SoundSetMasterWaveVolume($iVolume) _SetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT, $iVolume) If @error Then Exit else SetExtended(1) Return(@extended) endif EndFunc ;=============================================================================== ; ; Internal Functions ; ;=============================================================================== Func mciSendString($string) Local $iRet $iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "int", 65534, "hwnd", 0) If Not @error Then Return $iRet[2] EndFunc ;==>mciSendString Func RandomStr($len) Local $string For $iCurrentPos = 1 To $len $string &= Chr(Random(97, 122, 1)) Next Return $string EndFunc ;==>RandomStr Func _SetMixerVolume($MixerDevice, $percent) ;default mixer is always 0 (so far) which is last audio device installed or prefered deviced selected by user SetExtended(10) $curmixer = 0 Const $MM_MIXM_CONTROL_CHANGE = 0x3D1 Const $CALLBACK_WINDOW = 0x10000 OpenAllMixers($mixers) If @error Then Exit $hmxobj = MixerOpen($curmixer, 0, $MM_MIXM_CONTROL_CHANGE, BitOR($CALLBACK_WINDOW, $MIXER_OBJECTF_MIXER)) GetMXWaveoutID($mixers, $curmixer, $MixerDevice) _SetVolume($mixers, $curmixer, $percent) MixerClose($hmxobj) CloseAllMixers($mixers) SetExtended(1) Return(@extended) EndFunc ;==>_SetMixerVolume Func _GetMixerVolume($MixerDevice) Local $savevolume ;default mixer is always 0 (so far) which is last audio device installed or prefered deviced selected by user $curmixer = 0 Const $MM_MIXM_CONTROL_CHANGE = 0x3D1 Const $CALLBACK_WINDOW = 0x10000 OpenAllMixers($mixers) If @error Then Exit $hmxobj = MixerOpen($curmixer, 0, $MM_MIXM_CONTROL_CHANGE, BitOR($CALLBACK_WINDOW, $MIXER_OBJECTF_MIXER)) GetMXWaveoutID($mixers, $curmixer, $MixerDevice) $savevolume = GetSetOutVolume($mixers, $curmixer, 0, 0) $savevolume = BitAND($savevolume / 0xFFFF * 100, 0xffff) MixerClose($hmxobj) CloseAllMixers($mixers) Return $savevolume EndFunc ;==>_GetMixerVolume Func _SetVolume(ByRef $mixers, ByRef $curmixer, ByRef $percent) Local $x $x = Mod($percent * 0xffff, 100) $percent = BitAND($percent * 0xffff / 100, 0xffff) $percent = $percent + $x GetSetOutVolume($mixers, $curmixer, $percent) ;this will also trigger callback routine EndFunc ;==>_SetVolume Func GetSetOutVolume($mixers, $index, $vol = 0, $doset = 1) Local $i, $x, $arraysize, $channels, $mtiems Local $ret Local $mitems, $mxcd Const $MIXERCONTROLDETAILS_UNSIGNED_SIZEOF = 4 Local $mixercontroldetails = DllStructCreate( _ "dword;" & _ ;DWORD cbStruct "dword;" & _ ;DWORD dwControlID "dword;" & _ ;DWORD cChannels; "dword;" & _ ;HWND hwndOwner DWORD cMultipleItems; "dword;" & _ ;DWORD cbDetails; "dword") ;LPVOID paDetails; If @error Then Return False $mitems = $mixers[$index][$MIX_OUTMULTIEMS] $channels = $mixers[$index][$MIX_OUTCHANNELS] $arraysize = $channels If $mitems Then $arraysize = $channels * $mitems Local $plistbool = DllStructCreate("dword[" & $arraysize + 1 & "]") ;give me one mroe than needed If @error Then Return False $hmxobj = $mixers[$index][$MIX_HMXOBJ] $mxcd = $mixercontroldetails DllStructSetData($mxcd, $cbStruct, DllStructGetSize($mxcd)) DllStructSetData($mxcd, 2, $mixers[$index][$MIX_OUTCTRLID]) DllStructSetData($mxcd, 3, $mixers[$index][$MIX_OUTCHANNELS]) DllStructSetData($mxcd, 4, $mixers[$index][$MIX_OUTMULTIEMS]) DllStructSetData($mxcd, 5, $MIXERCONTROLDETAILS_UNSIGNED_SIZEOF) ;cbDetails to sizeof one unsigned struct DllStructSetData($mxcd, 6, DllStructGetPtr($plistbool)) ;paDetails set ptr $ret = DllCall("winmm.dll", "long", "mixerGetControlDetails", "hwnd", $hmxobj, "ptr", DllStructGetPtr($mxcd), "long", BitOR($MIXER_OBJECTF_HMIXER, $MIXER_GETCONTROLDETAILSF_VALUE)) If @error Then Return False If $ret[0] = $MMSYSERR_NOERROR Then $x = DllStructGetData($plistbool, 1, 1) ;just return right channel For $i = 1 To $arraysize DllStructSetData($plistbool, 1, $vol, $i) ;set left right to same value Next ;i If $doset Then $ret = DllCall("winmm.dll", "long", "mixerSetControlDetails", "hwnd", $hmxobj, "ptr", DllStructGetPtr($mxcd), "long", BitOR($MIXER_OBJECTF_HMIXER, $MIXER_SETCONTROLDETAILSF_VALUE)) Return $x EndIf Return False EndFunc ;==>GetSetOutVolume Func GetMXWaveoutID(ByRef $mixers, $index, $linetype) Local $mitems, $chans, $hmxobj, $x, $ret, $lineid Local $ret ;local structures are nuked on exit...so i have read..LOL Local $mixercontrol = DllStructCreate( _ "dword;" & _ ; DWORD cbStruct; "dword;" & _ ; DWORD dwControlID; "dword;" & _ ; DWORD dwControlType; "dword;" & _ ; DWORD fdwControl; "dword;" & _ ; DWORD cMultipleItems; "char[16];" & _ ;szShortName[MIXER_SHORT_NAME_CHARS]; "char[64];" & _ ;szName[MIXER_LONG_NAME_CHARS]; "dword;" & _ ;lMinimum "dword;" & _ ;lMaximum "dword[4];" & _ ;dwReserved[4]; "dword;" & _ ;cSteps "dword[5]") ; DWORD dwReserved[6]; If @error Then Return False Local $mixerlinecontrols = DllStructCreate( _ "dword;" & _ ; cbStruct; "dword;" & _ ; DWORD dwLineID; "dword;" & _ ; DWORD dwControlID DWORD dwControlType; "dword;" & _ ; DWORD cControls; "dword;" & _ ; DWORD cbmxctrl; "ptr") ; LPMIXERCONTROL pamxctrl; If @error Then Return False $hmxobj = $mixers[$index][$MIX_HMXOBJ] zeroline($mxline) $mxline[$dwLineID] = BitOR($index, 0xFFFF0000) $mxline[$dwComponentType] = $linetype MixerGetLineInfo($hmxobj, $mxline, $MIXER_GETLINEINFOF_COMPONENTTYPE) $lineid = $mxline[$dwLineID] DllStructSetData($mixerlinecontrols, $cbStruct, DllStructGetSize($mixerlinecontrols)) DllStructSetData($mixerlinecontrols, 2, $lineid) DllStructSetData($mixerlinecontrols, 3, $MIXERCONTROL_CONTROLTYPE_VOLUME) DllStructSetData($mixerlinecontrols, 4, 1) DllStructSetData($mixerlinecontrols, 5, DllStructGetSize($mixercontrol)) DllStructSetData($mixerlinecontrols, 6, DllStructGetPtr($mixercontrol)) $ret = DllCall("winmm.dll", "long", "mixerGetLineControls", "hwnd", $hmxobj, "ptr", DllStructGetPtr($mixerlinecontrols), "long", BitOR($MIXER_OBJECTF_HMIXER, $MIXER_GETLINECONTROLSF_ONEBYTYPE)) If $ret[0] <> $MMSYSERR_NOERROR Then Return False $chans = $mxline[$cChannels] $x = DllStructGetData($mixercontrol, 4) ;fwControl If BitAND($x, $MIXERCONTROL_CONTROLF_UNIFORM) Then $chans = 1 $mitems = 0 If BitAND($x, $MIXERCONTROL_CONTROLF_MULTIPLE) Then $mitems = DllStructGetData($mixercontrol, 5) $x = DllStructGetData($mixercontrol, 3) ;fwControl If BitAND($x, $MIXERCONTROL_CT_CLASS_FADER) Then $mixers[$index][$MIX_OUTCHANNELS] = $chans $mixers[$index][$MIX_OUTMULTIEMS] = $mitems $mixers[$index][$MIX_OUTCTRLID] = DllStructGetData($mixercontrol, 2) Return True EndIf Return False EndFunc ;==>GetMXWaveoutID Func zeroline(ByRef $line) Local $i For $i = 0 To UBound($line) - 1 $line[$i] = 0 Next ;i EndFunc ;==>zeroline Func MixerGetLineInfo($hmxobj, ByRef $line, $flag) Local $mixerline = DllStructCreate ("dword;dword;dword;dword;dword;dword;dword;dword;dword;dword;char[16];char[64];dword;dword;short;short;dword;char[32]") Local $ret If @error Then SetError(1) Return False EndIf Local $i For $i = 1 To UBound($line) - 1 DllStructSetData($mixerline, $i, $line[$i]) Next ;i DllStructSetData($mixerline, $cbStruct, DllStructGetSize($mixerline)) $ret = DllCall("winmm.dll", "long", "mixerGetLineInfo", "hwnd", $hmxobj, "ptr", DllStructGetPtr($mixerline), "int", $flag) If @error Then SetError(1) Return False EndIf For $i = 1 To $szMPname $line[$i] = DllStructGetData($mixerline, $i) Next ;i If $ret[0] = $MMSYSERR_NOERROR Then Return True SetError(1) Return False EndFunc ;==>MixerGetLineInfo ;On Exit: MIX_HMXOBJ set to return value from mixeropn...check for @error Func OpenAllMixers(ByRef $mixers) Local $i, $mxnumdevs, $hmxobj $mxnumdevs = mixerGetNumDevs() If $mxnumdevs Then ReDim $mixers[$mxnumdevs + 1][$AMIX_SIZEOF] For $i = 0 To $mxnumdevs - 1 $hmxobj = MixerOpen($i, 0, 0, $MIXER_OBJECTF_MIXER) If @error Then SetError(1) Return False EndIf $mixers[$i][$MIX_HMXOBJ] = $hmxobj Next ;i EndIf $mixers[0][0] = $mxnumdevs EndFunc ;==>OpenAllMixers ;On ENtry: mixer id and flag(s) , if no id passed then the preffered id is used (0) ditto for flag ;on exit: mixer handle Func MixerOpen($uMxid = 0, $hwnd = 0, $instance = 0, $fdwOpen = 0) Local $x, $h_struct,$ret $h_struct = DllStructCreate("udword") ;since a local will be deleted on exit of function If @error Then SetError(1) Return False EndIf $ret = DllCall("winmm.dll", "long", "mixerOpen", "ptr", DllStructGetPtr($h_struct), "int", $uMxid, "int", $hwnd, "int", $instance, "int", $fdwOpen) If Not @error Then If $ret[0] <> $MMSYSERR_NOERROR Then Return -1 $x = DllStructGetData($h_struct, 1) Return $x EndIf SetError(1) Return False EndFunc ;==>MixerOpen Func CloseAllMixers($mixers) Local $i, $cnt $cnt = $mixers[0][0] For $i = 0 To $cnt - 1 MixerClose($mixers[$i][$MIX_HMXOBJ]) Next ;i EndFunc ;==>CloseAllMixers ;On Entry: mixer handle Func MixerClose($hmxobj) Local $ret $ret = DllCall("winmm.dll", "long", "mixerClose", "long", $hmxobj) If Not @error Then Return True Return False EndFunc ;==>MixerClose Func mixerGetNumDevs() Local $ret $ret = DllCall("winmm.dll", "long", "mixerGetNumDevs") If Not @error Then Return $ret[0] SetError(1) Return False EndFunc ;==>mixerGetNumDevs ;~ $re = _isMute(1000) ;~ If @error Then ConsoleWrite(@error & @CRLF) ;~ ConsoleWrite($re & @CRLF) ;=============================================================================== ; ; Function Name: _isMute ; Description:: Check for mute sound ; Parameter(s): ControlID ; Voulme = 1000 ; Wave = 2000 ; SW-Synthesizer = 3000 ; CD-Player = 4000 ; Mikrofon = 5000 ; Line-In = 6000 ; Requirement(s): --- ; Return Value(s): 0 = not muted, 1 = muted, -1 = timeout, -2 = ControlID not found ; Author(s): Thorsten Meger (Xenobiologist) ; ;=============================================================================== Func _isMute($opt = 1000) Local $retVal = 0, $ex = False If Not WinExists('[CLASS:Volume Control]') Then Run('sndvol32', '', @SW_HIDE) $ex = True EndIf If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1 $retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked') If @error Then Return -2 If $ex = True Then WinClose('[CLASS:Volume Control]') Return $retVal EndFunc ;==>_isMute Link to comment Share on other sites More sharing options...
LoWang Posted April 24, 2009 Share Posted April 24, 2009 (edited) Can it possibly change the "microphone boost" option? BugFix could you please try it? Edited April 24, 2009 by LoWang Link to comment Share on other sites More sharing options...
Bert Posted April 24, 2009 Author Share Posted April 24, 2009 Could you do it and show us how you did it? The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
LoWang Posted April 24, 2009 Share Posted April 24, 2009 (edited) OK so here it is, but I am a newbie Func _switchonmicboost() Local $retVal = 0, $ex = False If Not WinExists('[CLASS:Volume Control]') Then Run('sndvol32', '', @SW_HIDE) $ex = True EndIf If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1 controlclick('[CLASS:Volume Control]',"","Button9") winwait("Advanced Controls for Microphone","") controlcommand("Advanced Controls for Microphone","","Button3","Check") winclose("Advanced Controls for Microphone","") winclose('[CLASS:Volume Control]', '') endfunc Also the second window (with mic boost checkbox) is visible and I don't know if it can be made invisible... Edited April 27, 2009 by LoWang Link to comment Share on other sites More sharing options...
Bert Posted July 27, 2009 Author Share Posted July 27, 2009 Your code has it using the windows GUI that controls the sound. I rather stay away from that and use API when possible. The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
kjcdude Posted October 22, 2009 Share Posted October 22, 2009 After upgrading to 3.3.1.3 the script crashes for me when running "_SoundSetMasterVolume("100")" No errors are outputted, the scripts just crashes. Link to comment Share on other sites More sharing options...
Bert Posted October 23, 2009 Author Share Posted October 23, 2009 hmmm. I will have to test to see what the issue is. The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
picaxe Posted October 25, 2009 Share Posted October 25, 2009 After upgrading to 3.3.1.3 the script crashes for me when running "_SoundSetMasterVolume("100")" No errors are outputted, the scripts just crashes. Changing DllStructCreate in MixerOpen fixed it for me. Func MixerOpen($uMxid = 0, $hwnd = 0, $instance = 0, $fdwOpen = 0) Local $x, $h_struct $h_struct = DllStructCreate("dword") ; fix for 3.3.1.3 beta If @error Then SetError(1) Return False EndIf $ret = DllCall("winmm.dll", "long", "mixerOpen", "ptr", DllStructGetPtr($h_struct), "int", $uMxid, "int", $hwnd, "int", $instance, "int", $fdwOpen) If Not @error Then If $ret[0] <> $MMSYSERR_NOERROR Then Return -1 $x = DllStructGetData($h_struct, 1) Return $x EndIf SetError(1) Return False EndFunc ;==>MixerOpen Link to comment Share on other sites More sharing options...
Hofi Posted December 24, 2009 Share Posted December 24, 2009 Hi, im from Germany, please can anyone help me how to control and read the volume (the green bar in the windows mixer) from an specific application (not master volume) in win vista / win7? i hope you understand me, any help to this would be great, thanks Link to comment Share on other sites More sharing options...
Lakes Posted August 23, 2010 Share Posted August 23, 2010 (edited) Edit: see my post in Playing with Mixer Device Edited August 26, 2010 by Lakes 2015 - Still no flying cars, instead blankets with sleeves. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now