def GetDeviceLines(deviceId=0): deviceId = GetDeviceId(deviceId) mixercaps = MIXERCAPS() mixerline = MIXERLINE() hmixer = HMIXER() # Obtain the hmixer struct rc = mixerOpen(byref(hmixer), deviceId, 0, 0, 0) if rc != MMSYSERR_NOERROR: raise SoundMixerException() if mixerGetDevCaps(deviceId, byref(mixercaps), sizeof(MIXERCAPS)): raise SoundMixerException() for destinationNum in range(mixercaps.cDestinations): mixerline.cbStruct = sizeof(MIXERLINE) mixerline.dwDestination = destinationNum if mixerGetLineInfo(hmixer, byref(mixerline), MIXER_GETLINEINFOF_DESTINATION): continue print "Destination:", destinationNum, mixerline.szName for name in GetControls(hmixer, mixerline): print " Control:", name for sourceNum in range(mixerline.cConnections): mixerline.cbStruct = sizeof(MIXERLINE) mixerline.dwDestination = destinationNum mixerline.dwSource = sourceNum if mixerGetLineInfo(hmixer, byref(mixerline), MIXER_GETLINEINFOF_SOURCE): continue print " Source:", sourceNum, mixerline.szName for name in GetControls(hmixer, mixerline): print " Control:", name
def GetMixerDevices(useList=False): """ Returns a list of all mixer device names available on the system. """ mixcaps = MIXERCAPS() result = [] # get the number of Mixer devices in this computer result.append("Primary Sound Driver") for i in range(mixerGetNumDevs()): # get info about the device if mixerGetDevCaps(i, byref(mixcaps), sizeof(MIXERCAPS)): continue # store the name of the device result.append(mixcaps.szPname) return result if useList else dict((i - 1, result[i]) for i in range(len(result)))