Post by nnnik » 04 Apr 2018, 03:10
Wenn man eine ordentlich MCI_SendString funktion verwendet funktioniert alles um ein vielfaches besser.
So habe ich nähmlich gemerkt, dass mein Mikro keine 96000 khz samplerate und nicht mehr als 8 bit Qualität unterstützt.
Code: Select all
name := "sample"
waitsec := 5
Tooltip Recording %name%.wav
offset := -1
MCI_SendString("close all wait")
MCI_SendString("open new type waveaudio alias " . name)
MCI_SendString("set " . name . " time format ms wait")
MCI_SendString("set " . name . " bitspersample 8 wait")
MCI_SendString("set " . name . " channels 1 wait")
MCI_SendString("set " . name . " samplespersec 48000 wait")
MCI_SendString("set " . name . " alignment 1 wait")
MCI_SendString("record " . name)
Sleep waitsec*1000
MCI_SendString("stop " . name . " wait")
MCI_SendString("save " . name . " """ . name . ".wav""")
Tooltip Finished ... Playing
MCI_SendString("delete " . name)
MCI_SendString("close " . name . " wait")
MCI_SendString("open """ . name . ".wav"" type waveaudio alias " . name)
MCI_SendString("play " . name . " wait")
MCI_SendString("close " . name . " wait")
Tooltip
Return
MCI_SendString(p_lpszCommand,ByRef r_lpszReturnString="",p_hwndCallback=0) {
VarSetCapacity(r_lpszReturnString,512,0)
if error := DllCall("winmm.dll\mciSendString", "Str",p_lpszCommand, "Str",r_lpszReturnString, "UInt",A_IsUnicode ? 256 : 512 , A_PtrSize ? "Ptr":"UInt", p_hwndCallback, "Cdecl Int")
{
r_lpszErrorString := ""
VarSetCapacity(r_lpszErrorString,258,0)
DllCall( "winmm.dll\mciGetErrorString", "UInt", error, "Str", r_lpszErrorString, "UInt", A_IsUnicode ? 129 : 258 )
Throw exception( "MCI Error: " . error . "`n" . r_lpszErrorString,"", p_lpszCommand )
}
return r_lpszReturnString
}
Wenn man eine ordentlich MCI_SendString funktion verwendet funktioniert alles um ein vielfaches besser.
So habe ich nähmlich gemerkt, dass mein Mikro keine 96000 khz samplerate und nicht mehr als 8 bit Qualität unterstützt.
[code]name := "sample"
waitsec := 5
Tooltip Recording %name%.wav
offset := -1
MCI_SendString("close all wait")
MCI_SendString("open new type waveaudio alias " . name)
MCI_SendString("set " . name . " time format ms wait")
MCI_SendString("set " . name . " bitspersample 8 wait")
MCI_SendString("set " . name . " channels 1 wait")
MCI_SendString("set " . name . " samplespersec 48000 wait")
MCI_SendString("set " . name . " alignment 1 wait")
MCI_SendString("record " . name)
Sleep waitsec*1000
MCI_SendString("stop " . name . " wait")
MCI_SendString("save " . name . " """ . name . ".wav""")
Tooltip Finished ... Playing
MCI_SendString("delete " . name)
MCI_SendString("close " . name . " wait")
MCI_SendString("open """ . name . ".wav"" type waveaudio alias " . name)
MCI_SendString("play " . name . " wait")
MCI_SendString("close " . name . " wait")
Tooltip
Return
MCI_SendString(p_lpszCommand,ByRef r_lpszReturnString="",p_hwndCallback=0) {
VarSetCapacity(r_lpszReturnString,512,0)
if error := DllCall("winmm.dll\mciSendString", "Str",p_lpszCommand, "Str",r_lpszReturnString, "UInt",A_IsUnicode ? 256 : 512 , A_PtrSize ? "Ptr":"UInt", p_hwndCallback, "Cdecl Int")
{
r_lpszErrorString := ""
VarSetCapacity(r_lpszErrorString,258,0)
DllCall( "winmm.dll\mciGetErrorString", "UInt", error, "Str", r_lpszErrorString, "UInt", A_IsUnicode ? 129 : 258 )
Throw exception( "MCI Error: " . error . "`n" . r_lpszErrorString,"", p_lpszCommand )
}
return r_lpszReturnString
}[/code]