Im using the vrMP3 plugin but i altered the code to grab the length of the song. See below 
If vrToPlay <> "" Then 
   If HalBrain.CheckTableExistence("vrMp3") = False Then
   	    GetResponse = "I dont have that song on file. "
   Else
     vrNameToPlay = HalBrain.QABrain(vrToPlay, "vrMp3", 0)
     If vrNameToPlay <> "" Then
   	    GetResponse = "Here you go! "
		'HalCommands = HalCommands & "<MICOFF>"
		Set objWSHShell = CreateObject("WScript.Shell")
    		objWSHShell.Run(""""& vrNameToPlay &"""")
			pos = InStrRev(vrNameToPlay, "\") +1
			file = Mid(vrNameToPlay, pos)
			Const LENGTH = 27
			Dim oShell  : Set oShell  = CreateObject("Shell.Application")
			Dim oFolder : Set oFolder = oShell.Namespace("C:\Users\vyaco\Desktop\Hal\music")
			Dim oFile : Set oFile = oFolder.ParseName(file) 
			Dim strLength : strLength = oFolder.GetDetailsOf(oFile, LENGTH)
			param1 = "music"
			param2 = strLength
			objWSHShell.Run hal_commands & param1 & " " & param2
     End If
   End If
   HalBrain.ReadOnlyMode = True
End If
The last line runs the python script and sends params.
objWSHShell.Run hal_commands & param1 & " " & param2
This is my python snippet for toggling Hal's mic
##PLAY A SONG
if command == "music":
	command2 = sys.argv[2]
	##Mbox('debug', command + " " + command2, 1)
	subprocess.Popen([r'C:\Program Files (x86)\Zabaware\Ultra Hal 7\UltraHal7.exe', '<SHOWHAL><MICOFF>'])
	t = command2
	h,m,s = re.split(':',t)
	print int(datetime.timedelta(hours=int(h),minutes=int(m),seconds=int(s)).total_seconds())
	duration = int(datetime.timedelta(hours=int(h),minutes=int(m),seconds=int(s)).total_seconds())
	##print command2
	voice = open(voice_modulator,"w")
	voice.writelines("turnoff")
	voice.close()
	##Mbox('duration', str(duration), 0)
	time.sleep(duration)
	voice = open(voice_modulator,"w")
	voice.writelines("turnon")
	voice.close()
	subprocess.Popen([r'C:\Program Files (x86)\Zabaware\Ultra Hal 7\UltraHal7.exe', '<SHOWHAL><MICON>'])
So i need to be able to control Hal's mic via python