Vielleicht helfen dir die Funktionen "_BASS_EXT_Generator" und "_BASS_EXT_MakeWave" und "_BASS_EXT_SaveWave" aus der aktuellen BassUDF weiter.
E
Vielleicht helfen dir die Funktionen "_BASS_EXT_Generator" und "_BASS_EXT_MakeWave" und "_BASS_EXT_SaveWave" aus der aktuellen BassUDF weiter.
E
für RunAutoIt.exe reicht das hier:
[autoit]Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & FileOpenDialog('AutoIt Skript wählen', @ScriptDir, '(*.au3)') & '"')
[/autoit]E
Du kannst auch ein durchsichtiges Fenster darüberlegen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("Test", 320, 240)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$cEdit = GUICtrlCreateEdit("Edit", 10, 10, 300, 100)
$cInput = GUICtrlCreateInput("Input", 10, 120, 300, 20)
$cButton1 = GUICtrlCreateButton("Button 1", 10, 210, 145, 20)
GUICtrlSetOnEvent($cButton1, "_SetEditText")
$cButton2 = GUICtrlCreateButton("Button 2", 165, 210, 145, 20)
GUICtrlSetOnEvent($cButton2, "_SetInputText")
GUICtrlSetState($cButton1, $GUI_FOCUS)
[/autoit] [autoit][/autoit] [autoit]$hGuiNF1 = GUICreate("sdf", 300, 100, 10, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
WinSetTrans($hGuiNF1, "", 1)
GUISetState(@SW_DISABLE, $hGuiNF1)
GUISetState(@SW_SHOW, $hGuiNF1)
$hGuiNF2 = GUICreate("sdf", 300, 20, 10, 120, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
WinSetTrans($hGuiNF2, "", 1)
GUISetState(@SW_DISABLE, $hGuiNF2)
GUISetState(@SW_SHOW, $hGuiNF2)
GUISetState(@SW_SHOW, $hGui)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While Sleep(100)
WEnd
Func _SetEditText()
Local $sText = ""
For $i = 1 To Random(5, 20, 1)
$sText &= Chr(Random(65, 90, 1))
Next
GUICtrlSetData($cEdit, $sText)
EndFunc ;==>_SetEditText
Func _SetInputText()
Local $sText = ""
For $i = 1 To Random(5, 20, 1)
$sText &= Chr(Random(65, 90, 1))
Next
GUICtrlSetData($cInput, $sText)
EndFunc ;==>_SetInputText
Func _Exit()
Exit
EndFunc ;==>_Exit
E
Du bist leider nur an 4 Stelle!
(Und das, obwohl du auch nicht die führenden Nullen wegmachst)
#include <Array.au3>
Global $tChr = DllStructCreate("char[64];")
Global $pChr = DllStructGetPtr($tChr)
Global $hDll = DllOpen("msvcrt.dll")
Global $iLoops = 500
Global $iTestCnt = 7
Global $aTime[$iTestCnt + 1][2]
$aTime[1][1] = "Divisionsmethode"
$aTime[2][1] = "Subtraktionsmethode"
$aTime[3][1] = "Ausgedachte Methode mit Optimierung"
$aTime[4][1] = "DllCall"
$aTime[5][1] = "DllCall mit Optimierung"
$aTime[6][1] = "Buphx"
$aTime[7][1] = "BugFix"
Global $iTimer, $iInt, $bDif
Global $aRes[$iTestCnt + 1]
For $i = 1 To 31
For $j = 1 To $iLoops
$iInt = Int(2 ^ $i) + Random(0, 2 ^ ($i - 1), 1)
$iTimer = TimerInit()
$aRes[1] = _DecToBin_1($iInt)
$aTime[1][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[2] = _DecToBin_2($iInt)
$aTime[2][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[3] = _DecToBin_3($iInt)
$aTime[3][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[4] = _DecToBin_4($iInt)
$aTime[4][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[5] = _DecToBin_5($iInt)
$aTime[5][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[6] = _DecToBin_6($iInt)
$aTime[6][0] += TimerDiff($iTimer)
$iTimer = TimerInit()
$aRes[7] = _DecToBin_7($iInt)
$aTime[7][0] += TimerDiff($iTimer)
$bDif = False
For $x = 1 To $iTestCnt
For $y = $x To $iTestCnt
If $aRes[$x] <> $aRes[$y] Then
$bDif = True
ExitLoop 2
EndIf
Next
Next
If $bDif Then
ConsoleWrite("! at least one result not correct: ")
For $x = 1 To $iTestCnt
ConsoleWrite($x & ":" & $aRes[$x] & " | ")
Next
ConsoleWrite(@CRLF)
Else
ConsoleWrite("+ all results correct: " & $iInt & " = " & $aRes[1] & @CRLF)
EndIf
Next
Next
_ArraySort($aTime)
For $i = 1 To $iTestCnt
ConsoleWrite("> " & Round($aTime[$i][0]) & " " & $aTime[$i][1] & @CRLF)
Next
Func _DecToBin_1($iDec) ; Divisionsmethode
Local $sRet
While Not $iDec = 0
$iDec /= 2
If IsInt($iDec) Then
$sRet = '0' & $sRet
Else
$sRet = '1' & $sRet
$iDec -= 0.5 ; Ohne den Rest gehts weiter
EndIf
WEnd
If Not $sRet Then Return '0'
Return $sRet
EndFunc ;==>_DecToBin_1
Func _DecToBin_2($iDec) ; Subtraktionsmethode
Local $sRet
$iDec += 1
For $i = Ceiling(Log($iDec) / Log(2)) To 0 Step -1
If $iDec - 2 ^ $i > 0 Then
$sRet &= '1'
$iDec -= 2 ^ $i
Else
If $sRet Then $sRet &= '0'
EndIf
Next
If Not $sRet Then Return '0'
Return $sRet
EndFunc ;==>_DecToBin_2
Func _DecToBin_3($iD) ; Ausgedachte Methode 1
Local $sR
If $iD < 65536 Then
While $iD
$iD /= 2
Switch IsInt($iD)
Case True
$sR = '0' & $sR
Case Else
$sR = '1' & $sR
$iD -= 0.5
EndSwitch
WEnd
If Not $sR Then Return '0'
Return $sR
Else
Local $sH = Hex($iD)
Local Static $aB[16] = ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111']
For $i = 1 To StringLen($sH) Step 1
$sR &= $aB[Int('0x' & StringMid($sH, $i, 1))]
Next
Return StringRegExpReplace($sR, "^0+([^0]|0$)", "\1", 1)
EndIf
EndFunc ;==>_DecToBin_3
Func _DecToBin_4($iD)
Local $tChr = DllStructCreate("char[64];")
DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iD, "ptr", DllStructGetPtr($tChr), "int", 2)
If @error Then Return SetError(1, 0, False)
Return DllStructGetData($tChr, 1)
EndFunc ;==>_DecToBin_4
Func _DecToBin_5($iD)
DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iD, "ptr", $pChr, "int", 2)
Return DllStructGetData($tChr, 1)
EndFunc ;==>_DecToBin_5
Func _DecToBin_6($quelle)
$bin = Hex($quelle)
$aBin = StringSplit($bin, "")
Local $return = ""
For $i = 1 To 8 Step +1
Switch $aBin[$i]
Case "0"
$return &= "0000"
Case "1"
$return &= "0001"
Case "2"
$return &= "0010"
Case "3"
$return &= "0011"
Case "4"
$return &= "0100"
Case "5"
$return &= "0101"
Case "6"
$return &= "0110"
Case "7"
$return &= "0111"
Case "8"
$return &= "1000"
Case "9"
$return &= "1001"
Case "A"
$return &= "1010"
Case "B"
$return &= "1011"
Case "C"
$return &= "1100"
Case "D"
$return &= "1101"
Case "E"
$return &= "1110"
Case "F"
$return &= "1111"
EndSwitch
Next
;Return $return
Return StringRegExpReplace($return, "^0+([^0]|0$)", "\1", 1)
EndFunc ;==>_DecToBin_6
Func _DecToBin_7($Value); von BugFix
$bin = ''
Do
$bin = Mod($Value, 2) & $bin
$Value = Floor($Value / 2)
Until $Value = 0
Return $bin
EndFunc ;==>_DecToBin_7
Die Funktion von James1337 konnte ich leider nicht dazunehmen, da sie eine fixe Längenangabe verwendet...
Ergebnis:
> 458 DllCall mit Optimierung
> 624 DllCall
> 876 Ausgedachte Methode mit Optimierung
> 1103 Buphx
> 1131 Subtraktionsmethode
> 1230 Divisionsmethode
> 1334 BugFix
E
Bei ganz kleinen Zahlen zwar etwas langsamer, aber ansonsten die schnellste Funktion ist diese hier:
[autoit]Func _IntToBin($iInt)
Local $tChr = DllStructCreate("char[64];")
DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iInt, "ptr", DllStructGetPtr($tChr), "int", 2)
If @error Then Return SetError(1, 0, False)
Return DllStructGetData($tChr, 1)
EndFunc ;==>_IntToBin
Und hier auch noch gleich eine Funktion um verschiedene Systeme umzuwandeln:
[autoit]Func _TranslateBase($sNumber, $iOldBase = 10, $iNewBase = 2)
;by eukalyptus
If $iOldBase < 2 Or $iOldBase > 36 Or $iNewBase < 2 Or $iNewBase > 36 Then Return SetError(1, 1, False)
Local $iNum, $aRes, $tChr = DllStructCreate("char[64];")
[/autoit][autoit][/autoit][autoit]If $iOldBase <> 10 Then
$aRes = DllCall("msvcrt.dll", "uint64:cdecl", "_strtoui64", "str", $sNumber, "ptr", 0, "int", $iOldBase)
If @error Then Return SetError(1, 2, False)
$iNum = $aRes[0]
Else
$iNum = Int($sNumber)
EndIf
$aRes = DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iNum, "ptr", DllStructGetPtr($tChr), "int", $iNewBase)
If @error Then Return SetError(1, 3, False)
Return DllStructGetData($tChr, 1)
EndFunc ;==>_TranslateBase
Hier noch eine Methode
bei Zahlen < 65536 wird Methode 1 angewendet, da sie bei mir am schnellsten war...
Func _DecToBin_4($iD)
Local $sR
If $iD < 65536 Then
While Not $iD = 0
$iD /= 2
If IsInt($iD) Then
$sR = '0' & $sR
Else
$sR = '1' & $sR
$iD -= 0.5
EndIf
WEnd
If Not $sR Then Return '0'
Return $sR
Else
Local $aS = StringSplit(Hex($iD), "")
For $i = 1 To $aS[0]
Switch $aS[$i]
Case "0"
$sR &= "0000"
Case "1"
$sR &= "0001"
Case "2"
$sR &= "0010"
Case "3"
$sR &= "0011"
Case "4"
$sR &= "0100"
Case "5"
$sR &= "0101"
Case "6"
$sR &= "0110"
Case "7"
$sR &= "0111"
Case "8"
$sR &= "1000"
Case "9"
$sR &= "1001"
Case "A"
$sR &= "1010"
Case "B"
$sR &= "1011"
Case "C"
$sR &= "1100"
Case "D"
$sR &= "1101"
Case "E"
$sR &= "1110"
Case "F"
$sR &= "1111"
EndSwitch
Next
Return StringRegExpReplace($sR, "^0+([^0]|0$)", "\1", 1)
EndIf
EndFunc ;==>_DecToBin_4
Edit: Deine Version ist allerdings am schnellsten, wenn man die Variablenamen noch kürzt und das Array als Static deklariert
Func _DecToBin_3($iD) ; Ausgedachte Methode 1
Local $sR
If $iD < 65536 Then
While Not $iD = 0
$iD /= 2
If IsInt($iD) Then
$sR = '0' & $sR
Else
$sR = '1' & $sR
$iD -= 0.5
EndIf
WEnd
If Not $sR Then Return '0'
Return $sR
Else
Local $sH = Hex($iD)
Local Static $aB[16] = ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111']
While StringLeft($sH, 1) = '0'
$sH = StringTrimLeft($sH, 1)
WEnd
For $i = 1 To StringLen($sH) Step 1
$sR &= $aB[Int('0x' & StringMid($sH, $i, 1))]
Next
While StringLeft($sR, 1) = '0'
$sR = StringTrimLeft($sR, 1)
WEnd
If Not $sR Then Return '0'
Return $sR
EndIf
EndFunc ;==>_DecToBin_3
Wav-Datei binär laden oder als Binärstring in den Quellcode schreiben.
Dann in den Speicher laden mit DllStructSetData und abspielen
Global $bWav1 = "0x524946465414000057415645666D74201000000001000100112B0000112B000001000800646174612F1400008080808080808080808080808080808080808080808080818181808080808080807F7F7F7F7F7F7F808080808081818181818181818080807F7F7F7E7E7E7E7F7F808080818182828282828281818080807F7E7E7E7E7E7E7F7F80808080808181818282828181818080808080808080807F7F7F7D7C7C7B7B7B7C7F808082878A8D8F90908F8C8886807E7874706C6A6A6B6C71787E828A90969A9CA09F9A958F8680786E67615D5B5D60666E787F8A959CA3A8ABABA6A0998C80786B6158525152575D66717D8794A0A9AEB2B3B2ABA094867A6B5F554E4E4E4E57606C798394A0A9B2B5B8B5B2A6998C806E61554E4E4E4E535D66767F909CA6AFB8B9B8B2A99F8F807161584E4E4E4E535A66737F8A96A3ABB2B4B4B2A89F928276675F55514E51575D66717E87949CA3A9ADADA9A59B92867E71675F5B57575B616A737D828D959A9FA1A3A19C998F87807A716B676565666A70747A7F838A8F92949494928F8C86827F7A78747473747478797D7F7F818283838383868683838382828281818080807F7F7E7E7D7A79787878797A7D7F8183888C8D9090908F8D8886807E78736E6B6A6A6A6C71787E838A92969B9F9F9F9A958D8680766E67605D5B5D616670797F8A959CA3A9ABABA69F998C80746B6158525153575F66737F8A95A0A9AFB4B3B2A99F928276675F554E4E4E5158616C7D8796A0A9AFB5B9B5B2A599887A6B5F534E4E4E4E535D6A7883909CA9AFB8B9B8B2A89B8D806E61554E4E4E4E535D66737F8D9CA6ADB2B4B4B2A69B8F8074675B554E4E52575F67737F88949CA5A9ADABA9A39A8F837A70675F58585A5D646A737E838F959BA0A1A19F9B958F868078716B676565676B70767D7F868A8F92949492908F8C87827F7A78747474747478797D7F7F818283838383838686838383828282818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8883807D78736E6B6A6A6B6E73797F838C94999B9F9F9C9A948C827E746B655F5B5B5D61677079828D96A0A6ABADABA59F95888074675F585251535A606A737F8A96A1A9AFB4B4B2A89C8F8074675B534E4E4E515A64707E8A96A3ABB3B8B9B4ADA1998678675B524E4E4E4E57606C798394A0A9B3B8B9B5B2A5998C806E5F554E4E4E4E555F6A7883909BA6AEB3B4B2AEA59A8C8074675B524E4E5257606A767F8A959FA6ABAEADA8A19A8F827A6E655D58575A5D646B747F8790969B9FA1A19F9A958D867E766E6A676565676C71767D81878C8F92949492908D8A86817F7A787474747476787A7D7F7F818283838383838683838383828282818180807F7F7E7D7A7A79787878797A7E7F82868A8C8F9090908F8C8782807A76716E6B676A6B6E73797F868D94999CA0A09C99928C827A746B645F5B5B5F646A717D83909AA0A6A9ADABA59B92877E71675D555151535A606B787F8D9AA5ADAFB3B3B2A59A8C8074675B514E4E4E525A65737F8A9AA3AEB4B8B8B3ABA1928274675B4E4E4E4E4E57606C7D8796A1ADB4B8B9B4AEA599867A6B5F534E4E4E4E57606C7983949CA8AEB3B4B2ABA5998C8070645B534E4E525A616C767F8A96A0A6ABADABA8A0998C80786B645D58575A5F656C767F8790969CA0A1A19F9A948C827E746E6A676566676C71787E82888D9092949492908D8883807E7A787474747476787A7E7F80828283838383838383838383828282818180807F7E7E7D7A7978787878797A7E7F82868A8D8F9090908F8C86817F7974706C6B6A6A6B70747A7F878F959A9C9F9F9C999288807A7167615F5B5D60656B737E86909AA1A6ABADA9A59B92867A6E675B535152555A646C7983909AA3ADB3B4B2ADA5998C806E6158514E4E4E535D66737F909CA6AEB5B9B8B2AB9F92807465584E4E4E4E515A64717F8A96A3AEB5B9B9B4ADA1948278675B514E4E4E515864707D8796A1A9AEB3B4B2ABA195877A6E6158524E4E535A646E79838F9AA1A8ABADABA69F958880746B615B58585B606670797F8A90969CA0A1A09C99928A817A746E676565666A6C73797F838A8D90949494928F8C8882807E79767473737476787A7E7F818283838683838383838383828282818180807F7F7E7E7D7A7A79797979797D7F7F83878A8D8F90908F8D8A86817E7974706C6A6A6B6C71767D818890969A9C9F9F9B998F8780786E67615D5B5D60656C767F88949BA3A8ABABA8A1998F82786C615B555152575D66707A83909CA6AEB3B4B2ABA199887A6C6057514E4E4E555F6A7883909CA8AFB5B9B8B2A89B8C807061554E4E4E4E515A66737F8D9BA6AFB5B9B8B3AB9F92817467584E4E4E4E525A65717F8A96A1A9B2B4B4B2AB9F9283786B5F554E4E51535B65707D87909BA3A9ADADA9A59C94877E7167605B57585B616A717A828C949A9CA0A1A09C999088807A716B676565666A6E737A7F838A8F92949494928F8C8782807D79747473737476797D7E7F818283838686868686838383828282818180807F7F7E7E7D7A79797878797A7D7F8183878A8D8F90908F8D8886807D7874706B6A6A6B6E71787E828A90969B9F9F9F9B958F8680766E67605D5B5D606670787F8A959CA3A8ABABA8A0998C80786B6158525152575D66737E8895A0A9AFB2B3B2AB9F92837A6B5F534E4E4E4E57606C798694A0A9B3B5B8B4B2A5998C806E5F554E4E4E4E535D6A767F909CA8AFB5B9B8B2A89B8D807161584E4E4E4E535B66737F8D9AA3ADB2B4B4B2A89F908174675D55514E4E555F66737E87949CA5A9ADADA9A59B92867D70675F5B57575B646A737D838D9"
$bWav1 &= "59A9FA1A1A09B968F878078716B676565676B70747A7F868A8F92949492928F8C86817F7A78767474747478797D7F7F818283838383838383838382828282818180807F7F7E7D7A7A79787878797A7D7F8183888C8F9090908F8C8883807D78736E6B6A6A6B6C73797F838A92969B9C9F9C9A958C8680746C67615D5B5D606770797F8A969CA3A9ADABA6A0998C80746A6057525253575D66737F8A96A0A9B2B4B3B2A99F928278675B534E4E4E5158616C7D8896A1A9B2B8B9B4AEA599887A6B5D524E4E4E4E555F6A7883949FA9B2B8B9B8B2A89B8C806E61554E4E4E4E535D6A767F8F9CA6ADB2B4B4B2A69B8F8074675B534E4E51575F6A737F8A949CA6A9ADABA8A19A8F827A6E675F5A585A5D646B737E838D959B9FA0A09F9B958D868078716B676566676B70767D7F868A8F92949492908D8A86817F7A78767473747678797D7F7F818383838383868683838383828281818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8882807A76716E6B6A6A6B6E73797F838C949A9C9F9F9F9A948C827E746B645F5B5B5D61677079838D969FA6ABADABA59F95888071675F5752515358606A737F8A96A3ABB2B4B4B2A89B8F8074675B524E4E4E525A65707E8A96A3ABB3B8B9B4ADA1958678675B514E4E4E4E57606C798794A0ADB3B8B8B5B2A6998C806E5F534E4E4E4E555F6A7883909BA6AEB3B4B3AEA5998C8074675B524E4E5258606B767F8A96A0A6ABADABA8A1998C80786C645D58575A5F656C767F8790969BA0A1A19F9A948C837E766E6A676566676C71787E81878C8F92949492908C8886807F7A78747474747678797D7F808282838383838383838383838282828181807F7F7F7E7D7A7A79787878797A7E7F82868A8D8F9090908F8C8882807A76716E6B676A6B7073797F878D949A9CA09F9C99928C817A716A645F5B5B5F646A737D839096A0A6ABADABA59C92877E71675B555151535A606B767F8D9BA6ADAFB3B3B2A5998C80746758514E4E4E535A66737F8D9AA6AEB3B5B8B4AB9F928274675B514E4E4E4E5764707E8A96A3ADB4B8B8B4AEA5998678675D524E4E4E5157606C7987949CA6AEB3B3B2ABA19988806E615B534E4E535A646C797F8D96A0A6ABADABA6A0998C80766B645D58575A60666C767F8790969CA0A1A19F99928C827D746E67676566676C73797F82878D9092949292908C8883807E79767474747476797A7E7F80828383838383838383838383828282818180807F7F7E7D7A7978787878797A7E7F82878A8D909092908F8C86827F7A74706C6B6A6A6B70747A7F878F969B9FA09F9C999288807A7167615F5B5B5D646B737E87909AA1A8ADADA9A59B92867A6E645B535152555A646C7983909BA6AEB3B4B2AEA5998C806E61584E4E4E4E535D66737F909CA6AEB4B9B8B2AB9F92807464584E4E4E4E515A64707F8A96A3AEB5B9B8B4ADA1948278675B514E4E4E515764707D8895A0A9AFB3B4B2ABA195877A6E6158524E4E535A64707983909AA1A8ADADABA59F958880746B615B58585B606770797F8A92969CA0A0A09C999288817A746E676665676A6C73797F83888D90929492928F8C8883807E7A787474747476787A7E7F80818283838383838383838383838282818180807F7E7E7D7A7978767878797A7F7F83878A8F909290908D8A86817E79746E6B6A6A6A6C70767D818890969C9FA09F9B99908780786E67605B5B5B5F656C767F87929BA3A9ADADA9A19A8F82786C645B555151555B65707A83949CA8AEB3B4B2ABA199877A6B5F554E4E4E4E575F6B787F909CA8AFB5B9B8B2A89B8D807061554E4E4E4E515A66737F8D9AA6AFB5B8B8B3AB9F92817467584E4E4E4E515A64717F8A96A1ABB2B3B3B2A99F92867A6B5F55514E51555B65707D87909AA3A9ADADA9A59F9487807167615B57585B616A7179828A949A9CA0A1A09C999088807A716C676665676B6E747A7F838A8D90929292928F8C8782807E79767474747476797A7E7F80828283838383838683838383838282818180807F7E7D7A7A7978787878797D7F8183888C8F909292908D8886807E78716E6B6A676A6C71767E828A90969CA0A09F9B968F8680786E67605D5B5D60666E787F8A949CA3A9ADABA8A1998C80786B6158525152575D66717E8895A1A9AFB3B4B2AB9F92867A6B5F534E4E4E4E57606C798394A0A9B2B5B8B5B2A6998C806E5F554E4E4E4E535D6A767F909CA8B2B5B8B5B2A89B8D807164584E4E4E4E525A66737F8D96A3ADB2B4B3B2A89F928276675F57514E51575F66717E87949BA3A9ADABA8A39B92867D7167605B58585D646A737D838D959A9CA0A1A09B958F868078716B676565676B70767D7F838A8F92929292908F8C86827F7D79767474747678797D7F7F818283838383838383838383838282828180807F7F7E7D7A7A7978787878797D7F8183888C8F9092928F8D8883807D78716E6B6A6A6A6C73797F838A92969C9FA09F9A958D867E746B655F5D5B5D606670797F8A949CA5A9ADABA6A0998C8074675F57525153585F66737F8A96A0A9B2B4B3B2A89F928274675B534E4E4E5158646C7D8896A1A9B2B8B9B4AEA599887A6A5B524E4E4E4E55606B798394A0A9B3B8B9B5B2A69A8C806E61554E4E4E4E535D6A767F8F9BA6ADB2B3B3AEA59A8D8074675B534E4E5257606A747F8A959CA5A9ABABA8A1998F827A6E675F5A585A5F646C747F868F959B9FA0A09F9B958D868078706B676566676B70767D7F878C9092929292908D8A86817F7A787474747476787A7D7F80818283838383838686838383828282818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8882"
$bWav1 &= "807A76716C6A676A6B6E73797F838D949A9C9F9F9C9A948C827D746B645F5B5B5D646A717D838D96A0A6ABADABA59F94888071675F575251535A606A767F8D96A3ADB2B5B4AEA69B8F8074675B534E4E4E525A65707F8A96A3ADB3B8B9B4ABA1948678675B514E4E4E4E5761707D8794A0ADB3B8B8B4B2A599887A6B5F534E4E4E4E55606C7983909CA6AFB3B4B2AEA5998C8071675B524E515358606C787F8D96A0A6A9ADABA6A0998C80786C655D58585A5F656C767F8790969CA0A1A19F99948C837E746E6A676565676C71787E82888D9092949492908C8886807E7A787474747476787A7D7F80818283838383838383838382828282818180807F7E7E7D7A7A79787878797A7E7F82868A8C909292908F8C8882807A74706C6A676A6B70747A7F878F959A9CA0A09C999288817A7167615D5B5B5F646B737D83909AA1A8ABABA9A59B92867A70675B535151535A646C797F8F9BA6ADB3B4B3AEA5998C80716458514E4E4E535D66737F8D9BA6AFB4B8B8B3AB9F92817467584E4E4E4E4E5864707D8A96A3AEB4B8B8B4AEA5958678675B524E4E4E4E57606C7D87949CA8AFB3B4B2ABA199887D6E6158524E4E535A646C7983909AA1A6ABADABA59F958C80746B645B58575A60666E787F8A929A9CA0A1A19F99928C827D746E676565666A6C73797F82888D90929492928F8C8883807E7A767474747476787A7E7F80828383838383838683838383828282818180807F7E7E7D7A7A79787878797D7F7F83878A8D909090908D8C86817F7974706B6A676A6C70767D7F8790969B9FA0A09C99908880797067615D5B5B5F656C767F87909AA3A9ABABA9A59A8F827A6E615B535252535A646E7983909CA6AFB4B4B2ADA59988806E61574E4E4E4E535D6A767F909CA6AFB5B9B8B2A89F8F807161574E4E4E4E515A66737F8A96A5AFB5B9B8B4ADA1928276675B514E4E4E515864707D8A96A1A9AFB3B4B2ABA195867A6E6157514E51535A65707D83909BA1A8ABABA9A59C928880746A615B58585B606770797F8A949A9CA0A09F9C999288817A746C676666676A6E737A7F83878C8F90908F8E8D8A8681807F7B7877777777797B7C7F808081818282828282818181818181818180808080807F7F7D7D7D7C7C7C7D7D7F8080818384868787878685858280807E7C7979777778797B7D7F80838587898A8A8A88878482807E7B797776767778797B7E8082858789898A8A89888683807F7C7979777677777A7B7D80818385878889898887858481807D7B79787979797A7C7D7F808284858687878786858381807E7D7B7B7B7B7B7B7C7E7F808182838485858585848381807F7E7D7C7C7C7C7C7D7E7F80808182838383838382828180807F7E7E7D7D7D7E7E7F808080818182828282828281808080807F7F7F7F7F7F7F7F80808080808181818181818180808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000"
Global $bWav2 = "0x52494646E442000057415645666D742010000000010001002256000044AC00000200100064617461C0420000F9FF0700F8FF0800F7FF0900F6FF0A00F5FF0C00F3FF0E00F1FF1000EFFF1300EBFF1700E6FF1D00DEFF2700D0FF3900020003038FFBF2F1DBEF2CEA2DE4EEEB56F35CF289F4ADF518F7FEFB39048C0A5A1443193819961A6E187115EA136C0D330599040703B2FEA1FE79FE3AFBF2FCE3FFB1FCECFC090121033A05AE0702089A09700B3F0AD407C007410869074F0575023D02AC0023FC74F839F86DF832FB46007AFF1EFEB900FFFFD6FC57FC40FCF6FAAEFBFFFAF2F78DF7DCF7CEF628F6FBF553F5B8F4C8F2EEEF5CEE46EE86EF05F26BF3AAF4D3F835FCC5FB1DFDCA001602A10319057A02E5FFBA00B40056003B022E038C03690493041506F409520D190F7110B7109712AE151415281349126D0F1F0C250BEE08A3058D05DC039CFF3AFE13FEB8FDAAFF7A01B801AF03F005390653061506910573051B046601B2002C0004FED6FC6DFA55F6EAF481F537F4B4F4C2F6CFF5D6F44DF467F2B8F24BF53EF646F6B7F66BF570F4EBF3D7F173F175F27CF2CBF207F39BF2D1F3E9F536F6C8F71BFB5BFD62FFED01B2024A030F067207EC06CF068906F8044D037F01E6FFAEFF4A0047013B02A603F405F308E40A5F0DC81032149016E117CD173F16D514BA122F0F040CAD0A6C098C0721069E04DD0353045904690450057C063E071307EF05CB043804FA024F0160FF2DFD79FB21FA96F7D6F4C2F37AF222F1FDF036F112F23FF490F501F504F53CF5CDF43EF46FF303F32EF305F3CBF155F01CEF71EE6AEECFED9AEDABEE0AF0E9F0B9F2EFF4F1F6CEF98BFCF9FDC0FF2002670462065008680A730B9A0C3E0CA20A390903084E074C064705B60526078208A90A040DA70FD4129715C316A7171D18DC165A14F311540F430DB30B9609CE071D069204C4034C030203C603DA04D30453059305090564056105F503F40182006DFE88FB58F90BF7D7F4D9F2F3F003EFABED5FEDDDECCAECEBECACED39EF8DF00DF2C4F3F1F4A4F5D6F55FF521F493F36BF3C1F2A3F256F320F444F5C3F659F763F8C1F9DEFA07FCE9FD1200F90127043A05D1054D06FF069907BD0777071E07110777064006F806A6074809170B640C5B0DCC0EA10FDA0FEF100A12DF12AA133914F2139912FF10EF0E950C2E0A0E0837062D04D4020F02A401E6018302EA02CA02C5027402ED017401220195008BFF3BFEA0FCF7FA48F97BF744F503F3D7F0A1EE3DEDECEC34EDDAEDDFEEEEEFCAF0ECF118F3C4F3F2F3B1F36BF3D0F267F271F288F260F251F282F293F23CF397F4FBF5CCF70BFA15FCF5FDE3FF3A013D020D033E03610345033303AC0341047B04EB045D055905E605B2065507A608230A480BA90C8B0E2110DF118713B4142F153E15C4148613FF113610640E890C5D0A9208C106D30445030B02240116017301BF01670204033F038903D0035B038E027D010300FFFD0CFC0FFA65F8ACF652F566F47DF3B1F210F2B5F151F17BF1DDF110F2ADF280F3E7F306F429F498F3BBF258F230F2D9F1BAF1B8F168F18CF1FEF1E9F290F428F6C7F797F947FBCCFC5AFEC9FFFF0057020E03880339045C04CC03530316039B02D502DA031D05F9062409F70ADF0C110FDC107D1221144E15F91547165C16CD15D0149613D911E00FA90D830B7A09E3078F066B057F04D7034904A004B4041C05570591042B040B046F034203E80267018EFFB1FDE2FB1FFA92F823F7DEF581F415F309F21FF183F0B5F0AFF079F0F3F078F1CEF04EF00DF02BEFE6EEFAEEBCEEA7EED8EED8EEE4EE52EF31F09FF177F387F5C1F7CFF9DBFB7AFDD7FEF1FF4E01AC025003C60332044C042C049E0402053A05E0056C0681062F074A086A09A60A4C0C230E8310E01292148615E915DC156E15D514F713DD127C112110A60E110D940B840A70094F08BD07A70780075C073207BC062106C705A8055405A8049103A501B9FF28FEE5FC75FB7EFA6FF9A8F7DCF56CF4E5F269F14BF053EF6DEE00EE18EE4EEE6FEE7AEE91EEF6EDF6EC83EC28ECC7EBD5EBF0EBB1EB46ECB8EDE0EE80F0B4F2B8F45DF63FF812FAAAFB6AFDE5FE1F00D0004E01D801FF01C1016C01BD013E024503D804BC06E508640B820D350F321108133B148815A316F81637177317FD168F166B16DB15BE14A1137E1239112C106D0FDC0EB30EC40EF00EA50EC70DC80C780BEE09B508C0076606E30461034E01FCFE0CFD0FFBE7F834F7A4F5C6F35CF22FF104F02FEFC0EE62EE1CEEBAED60ED3DED94ECC6EB29EB4AEA6AE97EE99CE960E9C7E9F3E997E9E6E902EB27EC1BEEA5F091F22EF406F67FF7F1F898FAAFFBDDFCEEFD8DFE2DFF1C00E000D0010D03810473060809E90A750C7F0E4C10FB114114801612185219FC19C4197B192B199F183418971797169C15A0144113EB11E31021108E0F040F390E8D0DC70CB30BD60AF209C508C007AA06D804E102FE003DFE1CFBB1F887F6B8F4AAF3A0F21BF17CEF31EE2AED54ECBEEB81EB9BEB37EBDBEAD7EA52EA77E902E91BE829E7F0E6F2E6D2E613E7B1E754E881E9EAEA48EC1FEE53F055F269F444F6D4F7A1F9A8FB42FDD3FE6B00930188021703AF03AD0410065007E708E60AC20CDD0E1811DC12B514AF163D185A19291A6E1A3B1A101A8819D518371871176E161B15BE13C312011240116A10C80F370F600E780D880C410B1F0A2609D407800631056E037B0183FF04FD88FAA7F899F682F4BCF2CDF003EF11EE48EDBFECC7ECBDEC6AEC23EC59EB34EA81E995E8ABE73CE727E759E7FDE786E8CDE878E916EA84EA7CEBC2EC0FEE26F06CF220F40EF658F8D0F91FF"
$bWav2 &= "BC9FC33FE36FF6B005B0126028303D4041E06E207AC097E0BDA0DF80F001252145016EA17E4194C1BC71B581C301C301B771AD919CF180C1879174E161E150E1499125E1184107C0FA20E0A0E2C0D580C860B6B0AA709FB08F907BE063405BA022E00C0FDD9FA4CF875F6B5F4D0F243F1A5EFD8ED7DEC46EB31EA59E9B3E829E8F8E794E731E71EE70EE7BEE6BFE6E4E628E7E1E79CE8FEE8E9E939EB45ECA3ED8EEF5DF16EF37AF5FEF688F863FA03FCBCFD9AFFF10020026F0342041B05450638076508020A660B030D2D0F0811A51288140C167F170319FD19681A081B7D1B711B501BEF1AF1199B18211748157913DB117A10830FB20EDF0D720DDA0CCA0BC00AC90979082F07EA0526045E02B20085FE2FFC0AFADDF7DDF545F48FF2CDF040EFD5EDB9EC11EC63EBF0EAC9EA4EEAC0E982E927E9CDE87AE8FAE7A6E7C0E7E0E737E8CEE842E995E92FEAE5EABAEB4EED7DEF82F198F3C3F5D2F7E6F9E3FBB5FD84FF300168026603560456058706D207F808420AB00B260D9E0E3310D5114B13C6143C169017B7186619C919C5194B19CC189E18FF172E177016A415BC1410148013ED128912CB11FE10EF0FA30E620D4D0CFE0AB909A30853078B0571032C019BFE52FC15FADBF7F5F54DF48DF2E5F06EEF13EE41ED6EECA9EB17EB7AEAD7E9ADE979E9F3E8C6E892E80FE8DCE7F2E7FEE750E8CCE847E904EA12EB31EC8DED02EF63F0E4F18DF329F505F7D9F884FA70FC49FECEFF730124035A046D059F06F10778093A0BED0CCF0EB6108A123514BE154B17B618E719A81A1F1B251BEF1AB61A251A7019E0181518AC1646150814CD12BB11F51076101310B00F2B0F480E1E0DEF0BA80A01091A071905D1024E00D0FD6DFB1AF9D0F6BAF4A4F2CAF03EEFECEDBDECC6EBF4EA38EAB6E99FE989E94AE903E9A7E844E8AAE723E7B4E639E6BFE578E577E59FE526E6D6E6CCE742E9DEEAB1ECF5EE94F1FDF321F621F8AEF9F0FA64FCE7FD26FF51007C01AB02E1032A05AB066108190AF30BD70DA30FA711E713D6158A174B19BD1ABA1B5A1CB91C881C071C701B931A9E1999187A173416E214BA13CB122E12A81126117310750F740E600D300CFE0A9809C407C1055503A200ECFD3BFB5BF8AFF55BF352F158EFA3ED11ECA4EA70E98BE8B9E705E794E626E6B0E523E5B2E489E465E472E48EE49AE4E9E450E5D7E5AAE68FE772E86AE952EA78EB33ED08EFD5F0ADF25AF426F622F820FA0CFC12FECAFF0E016B02A6031605CF06A3086C0A840CE30E4211A813171667186C1A101C2C1DE61D211E191ECF1D091D031C2E1B521A9219B018B517B716DD1526157814E4132D135B1225118F0FFB0D710CDF0A7109EC07150629041902C2FF4CFD0DFBEBF8E8F6CAF4C0F2D3F007EF82ED26ECE0EAC2E908E931E83FE765E69EE5E0E43CE4C0E338E3FCE221E36BE3D3E3BDE408E62EE7F7E7DBE8FBE959EBFFECDBEEE6F01DF34FF55AF74EF926FBE5FC5AFEB9FF1C0190023804F705BC076909450B5E0DA00FD911FB1324160518BB19501BC91C221E6A1F3D2051203220DA1F3F1F871EC21DC11CA91B9C1A5A193F186E17CB162E1665153F140613C71174102C0FC40D140C440A2C08A7051B039D00E8FD2EFB5CF85DF533F273EF1CED09EB78E9E1E856E89BE7C4E619E6A0E548E52AE553E59EE59CE578E53DE5EDE4F3E43CE558E59DE55DE631E720E886E9F1EA83EC81EE8BF07BF2BAF427F758F996FBD4FDD7FFB701A2035605CE062A08A609190BA90C810E74103C12FA13FE15F717E219001CFE1D521F2720D1200521D52088200C203A1F451E1B1D6F1BD6197C183D17FA15E114DF13C712B6117010E00E510D010C8F0AD908D406B704290254FFA0FC1EFA94F723F5C1F223F0C2EDF7EB3DEAAEE850E717E616E590E41EE4C7E39BE348E3C3E24CE2E9E1E9E12FE24FE27CE2D4E218E394E374E434E52AE677E7A9E8F5E9BBEBBCED1DF0B0F207F52EF787F9CEFBE5FDF2FFED01AF036A052207D508BA0AC10CBE0EA1109512BB1423174B19281BD91C211E051FD81F54203F20DE1F481F601E541D601C7E1BA11A85194A180317E815F414EA139D1245110C10980EEA0C190B4F0965073205E6027900FCFD93FB23F975F6BBF34AF11FEF21ED57EBB3E92BE8DAE6C1E59DE4D3E370E3CAE2E9E13EE1D0E0C2E0E3E0E5E014E159E1A4E131E20CE3FDE32DE583E6C5E723E9B1EA53EC3DEE45F02DF223F465F672F880FAD6FC14FF3F0170037F058707DD091D0C430E82108812581461165C18261AE01B3E1D5C1E5D1FF71F2C207D206920A01FD71E301E2B1D091CE91A991963188317AF16E5154D157E146E133012B510360FD80D1E0C3C0A5708D10501037A0096FD96FAFBF75FF595F213F0BBED86EBD1E941E8DAE606E65CE5DEE49BE447E4D4E38BE30DE36CE242E21BE2DBE1FCE132E25BE22EE363E466E59FE62EE8BFE95CEB23EDF0EEDBF0CCF2A0F47EF674F831FADBFB63FDA5FE0B00D401B703C6052208410A4A0C8F0EA710D212411593178C198A1B141D2D1E3A1FDC1F1C208E2094200F205F1F611E3C1D261CE51ACA1912192918341782167D1527140313B0113310E70E840DE00B270A1D08BD056C0300014AFEBAFB22F988F60DF471F1B1EE59EC4FEA89E83DE740E643E58EE4DBE3CEE200E27BE114E1ECE005E11CE151E1B3E1E5E127E2D2E2D6E30CE56FE6D8E777E930EBB6EC41EEF5EFA5F184F3A5F576F734F922FBFCFC84FE3500420232042F063F08430A6A0CC80EF8101D137E15CE17CC19B11B341D6B1E641FDA1F13203B200720D01F7B1F7D1E871DDB1CEE1B061B901AE41918197718801742160E15991311128010B70EC70CD0"
$bWav2 &= "0A910818068303AD00EFFD5FFBC1F827F6CFF37FF134EF65EDCAEB42EA25E910E8EEE6FAE515E51FE475E3D7E227E2C0E1C0E1D5E114E27BE218E3EDE3DDE4D0E514E794E8EAE933EB6AEC90EDEFEE7DF0FEF190F363F548F716F9D9FAB4FC98FE9800A902B204D7063309AA0BF50D22105B12B3140E172C191C1BD11C271E221FD81F5E20C5201E211121DB207E20E11F391FBE1EE71DEB1C191C2D1BEF1990181F17D6158814F0124511BE0FF00DED0BEE0993072A05E4026600C7FD7DFB2EF9C4F682F429F2BEEFACEDCCEB0EEA57E8C1E665E533E4F5E2E8E123E194E03DE024E04DE0B3E03FE1B2E1F4E172E239E319E422E560E6B1E702E973EAF7EB96ED5AEF49F135F3F5F48EF62BF8D5F96AFB03FDE9FE2901B10357060D09B70B3F0EBA103313A015F517F019881BB11C971D5F1EFE1E911F00202020E81F781FEF1E401E501D841CC01BC31AC919F2180418C61696156014F6128F1115105F0E6D0C350AE1077F0535030B01F7FEE8FCBAFA6EF8E5F551F3FEF0E7EEEBEC17EB51E977E7B8E53FE4F4E2FFE14BE1AFE03EE0E9DF9BDF66DF6EDFB5DF37E0F8E0E9E110E358E49AE5CFE6FCE73EE9ACEA2AECA4ED32EFDEF06AF2E7F386F53FF72DF959FB8FFDC2FFFF015B04B6060C09680BE00D4E10AE12EE141617EE18881AEF1BE01CA11D761E2F1F731F631F3D1FF81E571E801D9F1CA91BC51AEE19001911180B17DB1564140213A2116710240FA40DCF0BBD09A80798057C03790175FF50FDF8FA7CF8D7F519F3A1F079EE49EC3EEA98E8F5E664E521E4F7E2DBE10CE16FE0E7DFBADFE7DF44E0C6E047E106E216E337E465E5A8E6D8E710E949EA36EB42ECAFEDF6EE37F0DEF147F391F42CF6FAF7EEF930FC91FEFF006903B4052008E40A9B0D3910CB12DD14C4169018D819C61A8D1BE51B151C7F1CBD1CD61C0A1D0F1DC91C7C1C311CD31B6E1BE21A2B1A41191318AD162F158C13FB11AD10440FAE0D210C5F0A6108690679046B0282009CFE6DFC2BFA02F8D9F5C5F3CDF1FAEF50EEB2EC36EBA7E912E8AEE682E563E499E340E3FEE2EBE212E31DE329E3A7E384E469E59FE62CE895E9AFEABAEBDBEC06EE71EF2CF1DDF271F4F7F5A0F724F9AAFA70FC33FEE5FFB0017A03470555078609940B930DD70F1012E613A7152A172A182319301AEE1A6E1B171C851C8C1C7E1C771C3A1CC61B411B851A9D19B918DA17CB16841551143F13F411A910B10F7F0EFD0C7C0BA9099E07D105FC03F5011F002FFEF1FBEBF9D5F78BF597F3E7F148F0E3EE96ED44EC03EBD1E9A7E8B5E7F4E684E675E649E616E625E641E650E6CBE6A6E79AE8CDE93BEB54EC32ED2CEE35EF51F09FF109F355F4A6F5E3F6FEF71EF970FA05FCAFFD72FF8601C103D605D607C609970B690D550F1A118D12081445150216971638179A170918AE1813194D1990199C1967191A19B8184618CA17F416D815AF1455130112C9105B0FF20DBE0C3E0BA7094608BA061F05B60312025100DDFE4CFD6EFB9FF9BBF7B3F5D4F324F28DF03FEFF8EDBAECBAEBB7EA99E9D9E847E8B6E770E75BE74FE78DE7DCE716E8C5E8BDE9B9EAE5EB14ED04EEEFEEDFEF93F056F13EF214F306F41CF50FF629F77CF8E1F989FB41FDF9FED300AA023B04FC05F207B109770B630D030F7F10F9111E13E91381140015A6152B167016A216BD1679162516E7157F151C15AC14E013E5120B121611E20FB40E700D270C090BDD0999085B07FE0598042D03B4013400E4FEA4FD22FC9EFA17F9A2F758F620F5E2F3D2F2E1F1A1F065EF53EE61ED93ECE4EB11EB62EA04EAD1E9CDE9FEE956EAD3EA7AEB3DEC18ED1EEE2DEF2EF0DCF057F1FDF1C6F285F340F41EF5DEF595F680F777F89EF93CFBF7FC92FE3700EB01A40369052407C908630AE90B550D9B0EB10FA510891114126312DD125313A413E513F013BB1385133213C0124812BD1135118F10B00FB60ED00DE50CF30B220B680AC9091A093F082507F005D004A40367023001EFFF9FFE32FD97FBFAF97BF821F7D2F564F4F5F291F13AF0F2EEE5EDFCEC3CECD2EB86EB3BEB16EB1FEB4DEBA2EB0AEC9FEC6AED59EE51EF21F0D0F091F159F2E1F254F3FDF39EF420F5C8F584F65BF783F8EDF940FBA8FC3AFEECFFC901AC03990579074009D30A3A0C740D870E6D0FFF0F5110B31038119F11FA115412BC1218135D136B134A132E131B13D7125C12E1113A116010730F7C0E8A0DA80CB50B9D0A7D0953080D07B80574044D0365029A01C500C1FF5CFECDFC2EFB8CF9FFF792F643F5E5F384F238F1FCEF18EF6DEED7ED6AED12EDC7EC82EC6BEC6CECA7EC3EEDF1EDA0EE5BEF23F0ECF0A1F15BF22CF3ECF392F434F5CCF558F60DF7E8F7DDF806FA51FBA8FC0FFE88FF090195023004C80534079308060A650B950CA90DA80E6F0F2110BD103411A81128128912DC12211352135C134C1336130F13F412E212A4120A1235113310EF0E9D0D620C440B4B0A500939080207AF055F042E031202FC00E8FFCCFE98FD5CFC1DFB06FA02F9E3F7B7F686F550F409F3C1F187F065EF6FEEB5ED31EDD1ECB0ECB7ECDCEC42EDF1EDB0EE7EEF4BF009F1B5F156F2EFF2A2F347F4E9F496F527F6A1F635F7DAF791F87EF9A9FAEFFB3AFDA2FE3A00D7017C0343051607C808700AF80B420D5C0E510F04108910F4103D117411BB11FA110C12201239121C12011213121912E5118511F6103A106A0F8C0EA80DBF0CEA0B240B160AD708B3076406F304D103CA02A801A10075FF01FE9DFC53FBEBF998F88DF78FF692F588F467F33BF2FAF0E0EF23EF8AEEFEED9EED2DED99EC4DEC5CEC77ECCCEC79ED2BEECEEEA4EF65F01AF10CF202F3E8F3E9F4EAF5CAF6B9F78"
$bWav2 &= "DF83CF902FACFFAADFBC4FCFEFD4EFFC7004702BB035E05F5067D08030A4C0B6C0C920D6F0E040FA90F22104D108510D41003112911641190119411861169112F11C2103510930FB80EC60DB90CA00B8D0AA109B808A10791066D051E04E102D801F100110038FF30FE09FDD9FB84FA2DF9FFF7E2F6CFF5C0F492F363F238F13EF091EF10EF9AEE4AEE10EEA0ED54ED6DED99EDD5ED48EEF3EEB6EFA8F0BCF19EF25BF320F4D4F48FF56DF651F706F8B2F852F9E7F9C3FA04FC5CFD93FECBFFFB000C0214036404D7053B07A008150A370B1E0C0C0DCD0D440EBC0E2D0F7B0FC90F17103E1039102C101E10F50FD00FC60FC70F980F3C0FA90EC90DCA0CBB0B910A4F093A0836070F06EB04DD03CE02EC013E018100D2FF2FFF38FEF6FCA8FB60FA17F9EAF7F1F603F6F7F4C7F3B2F29EF1A0F0FDEF9CEF3DEF20EF15EF0DEF1BEF41EF69EFD4EF8BF054F130F200F398F3FDF356F4C5F48BF56DF632F7F0F785F8EDF886F954FA38FB66FCB5FDDFFE12007201A302B003FC04390655079308E209EA0AC40B6F0CE60C410DA70D150E850EE70E180F300F0B0FD60ED60EE80EED0EF90E0C0FC70E460EBC0D080D360C800B890A600959084C0736064805530447037E02B101E300450095FFB0FEB9FD98FC6BFB62FA40F92BF82CF71CF60EF52EF44EF382F212F2B6F172F179F17DF144F11BF112F119F16DF11BF2E0F2A2F34BF4CCF43AF5A9F54AF623F7FAF7A3F83EF9AAF9FAF980FA4CFB26FC27FD5EFE80FF8700A201C902E6030C05290647076D086D09400A010B790BE30B530CB30C030D600DA60DC20DD50DD30DBE0DD40DF80D050EFE0DE70D9E0D250D7C0CA40BB40ACD09D608E907120732064F05560444034A028401E6007500160081FFC4FEF8FD07FD02FC2BFB6BFAA9F9EAF81DF82CF73FF658F57FF4DEF36EF33BF339F30FF3CBF2B5F2C2F2F6F26FF30CF4B9F459F5BEF501F64EF6B1F62CF7B4F736F8AAF82FF9AEF918FA81FA14FBE9FBE7FCF3FD0BFF1C001301BF015C022B0326043C0567065D071008A60820096809B3091C0A8C0AF80A4C0B8A0BB80BD50BE80B060C0C0C060C090CCA0B410BC60A3A0A930901097008CA073807BB0621067A05DF044D04C1033F03BC023402B1010801250032FF5BFE96FDCBFC0DFC5AFB7FFA74F961F876F79BF6F5F597F52FF5B8F46FF42CF4DFF3BDF3C4F3E0F333F4ACF411F55CF5BAF507F634F67FF6FEF69CF733F8B9F81AF960F9AAF904FA6EFA10FBE6FBCDFCA9FD7CFE41FFEBFF9D0077016C0261036604590502068906110788070A08AF084709D509510AA50AC50ADF0A1E0B6E0BB00BF20B1D0C1E0C040CD00B680BF00A660AB809FA0846089407D8060E064F058504B60310037E02E9016801F20057009AFFECFE47FE9FFD05FD71FCB6FBD1FAE2F9FFF822F872F7DFF649F6CCF568F5FFF49FF467F44FF450F476F4B0F4DAF408F53EF558F578F5CEF55BF6D6F639F7A4F703F83AF878F8E7F875F935FA19FBF2FBB3FC71FD3DFEFAFEC0FFA900A901A002890356040805A7054806E2067A072008CB086309D1090A0A1D0A1B0A2B0A4C0A7C0AC50AE60ACC0AA50A800A4D0A0E0AD4098D093809DD087408E70737077A06C50519058E041F04A303F6022E02530168008EFFD2FE12FE41FD6BFC7AFB8AFAB5F9F3F847F8BFF734F796F60EF698F520F5BCF47FF467F468F493F4EAF433F56BF59AF5B5F5C1F5F6F55BF6B4F6FDF640F773F7A3F700F893F84BF92CFA20FB07FCDAFCACFD72FE2BFFE4FFBD00A401830257030A04900404056C05D80567062007C4073608B40825097509E9098B0A1A0B910BEC0B180C070CD90B980B360BC10A490ACB0932099C0816087007C0062F069705FF049D0438049E03040362029301C700170060FFB3FE15FE69FDA6FCCFFB06FB42FA69F9AAF824F8AFF734F7DAF67FF614F6D2F5BCF59FF59CF5C0F5CCF5CCF5EAF501F624F67AF6D3F61CF76EF7C2F704F859F8CEF873F940FA17FBF8FBD4FC94FD60FE3FFFEEFF940068012B02CB02750306046504D1045805D4056A063A07FD078F0811098809E709410AA90A060B440B710B890B6E0B290BDC0A7C0AFB097109F4086F08EA077E07F9066106DC056505DE0467041404B00322038202CB010D016300B8FFF1FE20FE44FD4AFC52FB6DFAA9F909F97FF8FAF77EF7FBF699F662F639F631F653F67CF6AEF6E3F603F720F74DF763F770F797F7C2F7F1F72BF856F890F8EDF851F9B6F933FAC9FA7BFB4AFC16FDDDFDBBFE8EFF62003401E60185022703A703F6035704C2042A05A40523068906FB067007C00708085A089F08E8083E0979099709AA099A0967092009CA0876082008B1072B079906E5053705AC043B04F203D3039E033C03C8023902A4012601A5000C0075FFC5FEE0FDF0FC16FC47FB8FFAE7F93FF9CCF872F80CF8B9F779F73EF72AF72CF725F728F732F734F73CF75FF794F7E3F733F85EF875F8A2F8C8F8E9F830F98EF9FDF989FA22FBB3FB52FCF4FC8AFD37FEE0FE96FF6A002B01BF015A02F9027A0301048C0406057805EB054C069D06E206120752078607B107030852087D08B108BF0886084D082908F107CE07BC0788073907C6063606AE052C05BC045F04F7038403170393021A02AA012501910016008CFFDFFE3BFE93FDD6FC28FC9BFB1BFBABFA56FA05FAA4F938F9F3F8BBF87AF854F843F82AF825F838F850F867F893F8CCF8FEF830F969F9BAF9F6F92AFA7AFAC9FA1EFB98FB10FC79FCF4FC68FDCDFD31FEACFE2EFFB4FF3400A70011017F01F5017302F2027703030486040F05980509066006B406FB062B076C07B707DB07D207C207A00759071407E00698063906E705"
$bWav2 &= "960545050B05DA04AA0472043904F103A203570304039502120299012201A200170083FFDFFE2EFE74FDB4FC0BFC93FB2DFBD8FAA3FA7CFA49FA23FA03FAD2F9A5F98BF970F94BF92DF911F9EDF8CAF8B5F8ADF8BEF8F3F839F970F9B9F928FAA4FA18FB96FB14FC8CFCFCFC5BFDBDFD10FE62FEB8FE0DFF6DFFE1FF5700B9001F018601E8015702CE023A039B03FD036204C40437059D05F00544068406B006D606E806E406D606B30682064606FD05B80583054205F104B004750430040004DB03A80371032903D0026C02070296012501AE002C00A0FF0CFF79FEF4FD72FDFBFC97FC39FCE8FB9EFB52FB02FBC5FA8FFA5BFA33FAFDF9B7F977F93BF90EF9F5F8FEF820F94BF974F9ADF9EFF93CFA99FAF8FA45FB97FBF1FB3CFC87FCEBFC3BFD7AFDC4FD0DFE4AFE8FFEDFFE34FF89FFEBFF6100EB007001FC018C020C037E03F6035F04BF0433059805DF05250662068406960699067D065B063E061B06F605D005AA05830559053705290528051C050305D6049D045C040E04B0034E03E5026202CC0127018300E5FF45FFA3FE12FE99FD27FDC5FC79FC36FC01FCD6FB99FB58FB22FBEFFAC8FAA1FA6DFA35FA05FAD5F9ADF9A0F9ABF9B5F9BFF9D0F9EEF927FA77FADBFA44FBB2FB12FC65FCACFCE7FC27FD6FFDB6FDFDFD5AFEBFFE27FF98FF04007500E4005001B9013002B6024603CB034004AD040B0557059A05D805FF052006340638062E061D060706F805FC0505061406280628061406EC05B70580053C05E2048C043004C6035A03EB026E02F20183010D0191002700C5FF5CFFFDFE9EFE3BFEE2FD8DFD31FDD2FC77FC17FCCDFB8CFB4BFB0CFBD3FA8DFA3FFAF5F9C8F9C0F9DBF9F9F90BFA1BFA24FA3BFA6AFA9AFAD1FA0FFB35FB4DFB81FBC9FB05FC4BFC98FCD9FC38FDB7FD45FEDCFE65FFD1FF3E00AC001F01AF013F02A602030356039303D6032F048004D9042E056F05A405D205F5050E0615060D060D06110610060F060D06EB05B30576052A05DB049E045D041104C70376031903C6027C022E02EC01AA014501CF005400C8FF3FFFB9FE2EFEB0FD34FDBEFC66FC11FCA5FB51FB0BFBB3FA6BFA46FA2FFA1BFA12FA0CFA12FA24FA2BFA2BFA2FFA35FA3DFA53FA6DFA91FAB4FACFFA02FB46FB81FBCCFB17FC60FCB8FC2BFDA9FD32FEC6FE4BFFC4FF3E00B20028019F010D027002C702100346036E03A503EF0335046E04A904ED0422053F056E059805AB05BE05D105CB05C205B5058F055E0535050505CC0496044A04FA03AD0359030C03CF0282023302E3017E011A01C40070001700B6FF38FFBAFE45FECCFD60FD12FDBDFC6AFC24FCD5FB91FB70FB4EFB1EFBFAFAD6FAB8FAA5FA91FA7CFA74FA78FA86FA98FAA2FAB8FADAFAEFFA0AFB35FB62FB9DFBDAFB10FC57FCB8FC2AFDACFD35FEB9FE32FFA5FF0F007A00E7005301BB01090235026902A202CD0205034F039603EA0342048204BB04F10410053205590579059E05C205BD05A1057A053F050B05DF04AA047B044F041104D703AA0373034E033B030F03D8029D024602D5015E01D7004C00BAFF21FF91FE0DFE91FD2CFDD2FC6DFC15FCDFFBAFFB8CFB80FB6FFB58FB4CFB3EFB2BFB2BFB29FB19FB09FBFFFAF2FAEBFAF5FAF6FA06FB24FB49FB77FBAAFBE6FB24FC6EFCBFFC23FD85FDE3FD43FE9AFEE0FE1CFF6EFFC1FF0A006000BC000A016501C1010C026502CD0226037D03D5031D046104A204D504FF0424053305480552053B0526050805D00497046A043B041C040304D703AF03950368033A031303DF02AA0276022A02CF016E01FB0085000F0095FF1DFFB6FE54FEFBFDADFD60FD1CFDE9FCB1FC7EFC5CFC2EFCF4FBBEFB8CFB5CFB40FB22FBF7FACFFAAFFA96FA8FFA92FA92FA9DFAB6FAD8FA0CFB50FB98FBDCFB18FC59FCB1FC10FD6CFDC6FD28FE85FECFFE23FF75FFBAFFFFFF45008900D0001F017D01EC015E02CF024803B70308045804A504D604FE0422052A052A053C0543053B0528050805EA04C8049804730458042F040A04E803BD039103720348031103D60294024102DE017A011A01B9005F000900B1FF55FFF2FE8BFE1EFEB2FD57FD13FDD8FC99FC60FC25FCEAFBB6FB8EFB62FB3FFB2CFB1FFB17FB17FB1BFB2AFB3EFB57FB77FB9EFBBBFBD4FBF2FB08FC37FC84FCCDFC24FD88FDD9FD2AFE7CFEC1FE07FF58FFA6FFEFFF3B008400D4002A017401CD0132028A02DE024303A103FD034F048F04BA04D504EE0405051B051E051505FE04DE04BA0498047B0469045D044C04370424041304FC03DD03BF0397035E031D03CA026302FC0195012001A6003300D6FF88FF3DFFF4FEAEFE6CFE2EFEF6FDC7FD91FD53FD0EFDC0FC6CFC23FCEAFBB8FB7FFB3EFB03FBD5FAAAFA98FA9FFAAEFAD1FA04FB30FB67FBA9FBEBFB37FC8DFCD3FC1EFD6BFDA4FDDEFD11FE34FE61FE96FEC0FEFAFE47FF8AFFDBFF3E009D0004017A01EA015502C0021B036403A603D4030104330469049704BF04CE04CB04BE04B404A504A704B104AC04A3049304760456043A040A04D703A00354030403B2024F02EA018A012201C6007A003200DDFF86FF2AFFCAFE7CFE3FFE08FEDCFDB0FD77FD3AFDF2FCA7FC6CFC37FC00FCD0FBA1FB5EFB25FBF5FAD0FABFFAADFA9DFAA6FABAFACBFAFEFA30FB5BFB9EFBF3FB45FCA5FC09FD52FD88FDB4FDD9FD09FE41FE7CFEC1FE0CFF52FFA0FFEEFF32008400F3005F01D9015B02C10212035E039C03D2031D045F049304B204B1049F049404890488049C04AC04AF04AA049B0484046D0453043C041D04E803B2037D032803C4026302FD0198014401F800A90059000100A0FF3BFFE0FE94FE47FE02FEC5FD7FFD3AFDFCFCBFFC8DF"
$bWav2 &= "C70FC51FC23FCEBFBA3FB4DFB03FBC2FA96FA88FA8BFAA1FAC5FADEFAFFFA31FB5DFB93FBE8FB3FFC92FCE5FC1BFD3FFD72FDB2FDF5FD4AFEA8FE03FF5AFFA1FFE8FF3D009E0003017001DB013D029802E1021C0350037E03A703DC030A042C044C04610462045F045E04640470048D04A804B704B804B10495046E0454043A040A04CD0385032A03BF025B020A02C60188014701FE00A5004000DBFF80FF30FFF1FEBDFE86FE4CFE03FEB2FD63FD1EFDD7FC9CFC64FC2CFCF9FBC0FB80FB4FFB36FB30FB3AFB4EFB6EFB8BFBA6FBBCFBDDFBFEFB36FC75FCA7FCDDFC11FD2EFD38FD4CFD65FD92FDD6FD21FE6AFEB7FE07FF66FFD0FF4400BF003E01B20113026A02BA02F80223033D0351037403A003C803E603FC03F903F303F8030404210448046104650461045504460445043F0427040704D30389033703E30289023402D80175012901E900AA0060000D00AEFF55FF06FFBFFE82FE3CFEE3FD87FD35FDEEFCC6FCB3FC98FC72FC48FC16FCE3FBBFFBA1FB8BFB7DFB79FB76FB7CFB8EFBAAFBD9FB09FC3CFC7BFCC2FCF9FC25FD41FD54FD6FFD8FFDB9FDFBFD49FE8DFECFFE15FF67FFD3FF4B00BD0028018E01E201220259028402B102E102160351038903B003C303C703BA03B303BA03C603D103DB03DE03DC03D803CF03CA03CE03CE03C003A20375033C03F602AC026B023302F901C40197015F011A01CF007A002400DBFFA4FF6DFF30FFDFFE80FE1AFEC2FD79FD4BFD2FFD09FDD5FCA0FC6EFC3EFC1FFC11FC10FC16FC1CFC22FC2CFC36FC46FC5EFC7AFCA7FCDDFC03FD1CFD28FD28FD30FD49FD69FD92FDC5FDFCFD2EFE65FEA7FEF3FE3FFF9BFFFBFF5500B20012016801B7010D0251028502B902E1020003280358037D03A003C503E8030D043204500461045F045704480429040E040204E803B803880359031D03E502B302780246021602DB019A015F011F01D7009D0062002400EAFFA3FF4AFFE9FE89FE42FE0EFED6FDA3FD69FD1AFDCAFC86FC44FC14FCF9FBDEFBC0FBAEFB9EFB91FB8BFB8CFB9EFBBFFBE4FB0BFC31FC4DFC67FC8CFCACFCD0FCFBFC24FD50FD7EFDACFDE6FD35FE89FEE9FE4EFFB7FF1F007800C7001C016D01B901020246028102C002FE023203630383039603AB03C103DF03FD031E0435043D043A043E044604450439042404F303B1036C032603E802B0027A0245020902CF01990157010F01C900860041000C00D5FF81FF2CFFDBFE7CFE27FEECFDB3FD71FD27FDCEFC78FC32FCF9FBCEFBABFB8DFB77FB64FB4DFB46FB56FB6DFB8DFBBBFBE7FB15FC44FC5DFC70FC8AFCA5FCC5FCF4FC1EFD44FD6FFD9DFDD5FD22FE88FEFBFE70FFDDFF3F00A30005016501B901FD01370268028A02A502C602E402FE021F03360355038803C103EB03170440045C0472047D047E04720456042E04F803B50375033E030103BB02800249020A02CB0194015E012401ED00B0006B002200D2FF78FF14FFAAFE51FE0BFEC4FD84FD42FDFAFCA8FC63FC2AFC05FCF8FBF3FBE9FBDFFBD7FBC7FBC4FBC7FBCDFBDFFBFCFB16FC3DFC68FC8EFCB1FCCFFCE7FC0AFD37FD62FD95FDC9FDFAFD3BFE8CFEE1FE48FFBCFF1D007600D30024017401C90109023F0273029802C202F602250354038703A903C303E8030E043804660483049704A904A904A6049F0486045B042304D703890347030203BA0275023002EB01AA0163011901DB009E00650034000200C3FF7CFF28FFCDFE7FFE3BFE03FEC9FD88FD43FDFAFCB0FC6FFC3FFC14FCECFBD1FBB8FBA5FBA6FBB5FBC6FBE0FB07FC30FC5DFC86FCA0FCABFCBBFCCDFCE8FC13FD44FD6FFD96FDBDFDEBFD2CFE7DFED8FE3CFF9BFFFBFF6800CE0030019501EB01290267029702BA02E0020603210337034B0362038403B203DA03FD031B042B043A04510463046F04710455042404EE03B20375033F03FE02B90276022502D80196014F010E01DC00A4006D003E000000ADFF59FF02FFA9FE5AFE10FECDFD88FD3CFDF3FCB1FC78FC55FC41FC34FC2BFC29FC25FC1DFC12FC0EFC0FFC1CFC2EFC46FC65FC84FC96FCA1FCB1FCC3FCD5FCF7FC1BFD45FD76FDAFFDE9FD31FE89FEEAFE52FFB3FF12007300CE0026017C01C90107023E0272029F02C302E202F60206031503290347036C038A03A803C603D603E403FB03080406040304F103D703B7038C0357031D03DC02A10268022602E701AF0165011E01E700B300770042000600BFFF73FF1DFFC7FE76FE29FEE4FDACFD72FD36FD05FDDDFCBDFCA3FC85FC6FFC60FC4FFC42FC3FFC35FC25FC23FC28FC34FC4CFC6EFC88FC9FFCBCFCDBFC03FD34FD62FD8CFDBAFDF2FD30FE75FEC6FE20FF7DFFD0FF1C006200A900F30040018A01C70101022C0252027C02A002BE02E30206031E03410366037E038E039F03B203CA03E80300040E040404E503BA03830342030103C1027C023C02FD01BE01870154011B01E500B800880052002400EBFFABFF65FF11FFBCFE75FE35FEF3FDB1FD63FD0EFDC8FC90FC6AFC54FC49FC47FC4AFC4BFC5BFC79FC96FCADFCC7FCE0FCF3FC04FD0DFD04FDFEFC02FD09FD1FFD43FD69FD90FDBEFDEBFD24FE6BFEB7FE02FF4AFF95FFE5FF3A008C00DF002F017301B001DF01FE01190237024902530266028302A102C402F1021A03400364037F039C03BA03CC03D503C3039B036A0338030603DB02B4028A0259021C02D601920155011D01F000C4009B00790055002800F3FFB6FF74FF36FFFEFEC5FE8BFE4BFE04FEBCFD78FD42FD24FD0DFDF8FCE6FCD8FCCAFCC2FCBEFCBDFCBDFCC4FCCDFCD0FCD4FCD8FCDAFCE1FCF0FC07FD29FD4EFD7AFDA3FDCCFDFEFD3BFE7CFEC4FE15FF62FFA4FFE5FF1E0057009000C9"
$bWav2 &= "00FE0028014E017701A001C601EB01100235025B028202A902D60203032803440361038403A203BC03CD03CB03B9039E037E0357032803F602BF027D023802FB01C0018901580127010001E600C9009D0066002600E6FFB3FF8AFF63FF35FFFEFEB4FE61FE17FED8FDA7FD7FFD59FD33FD12FDF3FCD8FCC4FCAFFCA9FCB4FCBDFCCDFCE3FCF3FCFBFC03FD04FD05FD1AFD33FD49FD64FD82FDA4FDD1FD10FE56FEA0FEEAFE2DFF6BFFA3FFD6FF11004C007F00B200E8001601420171019B01CA01FD01270250027D02A602CB02F5021A033C03620382039903A503A3039A038B036E034D032D030603D702A702740246021F02F001C00194016D0145011901E700B20075003400EDFFA9FF64FF26FFF0FEB2FE6DFE2FFEF4FDBAFD90FD6AFD46FD2BFD0DFDE6FCC7FCBEFCB7FCB5FCB6FCB2FCB2FCB5FCB2FCB1FCB0FCB5FCC8FCDFFCF9FC23FD57FD84FDB7FDF3FD2BFE6DFEBCFEFFFE3DFF82FFC5FF030041007800AA00DD0008012F015D019001C001F3011C0242026C029802BD02E10200031E033E03570370038B039B039D039C0395037F03650346031803E802BD028A0251021C02E301AF01840154012101EB00AF0070002E00ECFFACFF78FF40FF0AFFD3FE9AFE5EFE29FEF6FDCCFDB0FD96FD7AFD5FFD42FD25FD16FD0BFDFAFCECFCE2FCDCFCD7FCD3FCD3FCD7FCD8FCDEFCEDFC09FD2DFD53FD7AFDA0FDCEFD05FE46FE90FEDFFE28FF6CFFA8FFDDFF110048007E00B100E2001001390160018501A901D101FA0129025C028D02BD02E9020C032B0349035E0370037B0375036603500330030F03F402D702B5028D025E022902F601C30197016B013B010A01DD00AF00820050001900DFFFA4FF68FF2EFFFBFEC0FE82FE45FE0BFEDAFDB4FD94FD69FD3CFD1FFD0AFDFDFCFEFC02FD01FDFDFCF7FCECFCEAFCF2FCF9FC01FD04FD0DFD20FD3AFD58FD83FDADFDD8FD0AFE45FE8AFED7FE20FF5DFF98FFCBFFFBFF330067009200B800D700F4001801420166018B01B201DD010802350263028C02AD02CA02E502FD0215032803260316030303EE02D002AD028C02690243021902EB01BC01930170014D0127010401E700C400960066003200FCFFC6FF91FF5BFF27FFEDFEAAFE65FE2AFEFAFDD6FDB8FDA1FD8DFD80FD78FD71FD6BFD62FD5CFD58FD54FD58FD63FD6EFD74FD74FD6EFD6AFD70FD7EFD93FDACFDC8FDECFD17FE48FE85FECAFE12FF55FF92FFCBFF04003C007300A300C500DD00F400070118012D014B016E019501B901DC0101022902500272029202B302D002E302F002FD02FE02EF02D502B0028602640248022602FD01D301A601730143011901F700DC00BD0099007700550032000A00DEFFB6FF91FF67FF3EFF16FFE9FEBAFE8FFE5FFE32FE13FEF7FDE0FDCEFDBAFDA8FDA0FD9DFD98FD98FD9AFD9AFD95FD8EFD90FD9FFDB2FDC6FDE4FD01FE1FFE43FE69FE8EFEBEFEF3FE27FF59FF89FFBAFFEAFF16003C0066009600C500EC000D0126013A014A0153015F0174019201B301D901FB0122024A0267027B029002A102AB02AB029B027F026102440223020702EE01D201B10187015C013A011A01F600D200B300990081006700460027000100D7FFAEFF87FF60FF38FF0DFFD8FEA8FE7CFE57FE3CFE2AFE17FE07FEFCFDEEFDE0FDDDFDE1FDE7FDEBFDEAFDE6FDDEFDD8FDD6FDDDFDE7FDF9FD0CFE21FE38FE55FE7AFEA9FEDEFE11FF44FF73FF9DFFC1FFE3FF010020003F005D0078009100A900BC00CA00DC00F600160136015D018501A701C401DA01E701F40106021B022A02350239023302280219020702F601E601CF01B801A3018701660140011801F000D000B30096007800590032000B00E4FFC4FFAEFF99FF83FF69FF4CFF26FF04FFE2FEBFFEA3FE88FE70FE5DFE47FE2FFE20FE0FFEFAFDF0FDECFDE6FDE6FDEBFDEBFDF0FDFDFD0FFE29FE3DFE4CFE5EFE71FE87FEA8FED3FEFCFE26FF4FFF6EFF8EFFAFFFCEFFF0FF130031004B00650078008C00A600BF00DE0005012D014F016F018B01A101B501C601D501E801FC010A020E020302F101DC01C001A70198018B017A016A015801430133011B010001E900DA00CA00B700A1007E0055002800FBFFD2FFB4FF98FF76FF50FF23FF02FFE6FECFFEBFFEB7FEAEFEA7FEA2FE95FE8BFE84FE76FE69FE5EFE4DFE37FE26FE0DFEFAFDF3FDF6FD05FE1EFE3CFE5EFE81FEA0FEC0FEEBFE13FF39FF5EFF79FF8EFFA7FFBCFFCAFFE0FFF8FF0C002500400055006B007E009100A900CD00F4001D013E0158016F018801A101BB01D201E501F001EE01E001D001C201B701AB01A30199018A01770160014A013801290118010801F600E100CD00B5009400740059003E002100FFFFD7FFABFF7CFF4EFF28FF08FFEDFEDDFEC9FEB3FEA3FE9AFE8EFE86FE85FE80FE75FE6BFE5BFE45FE37FE2FFE28FE27FE2CFE36FE46FE59FE6BFE82FE98FEB8FEE1FE03FF29FF50FF6EFF8AFFA8FFC4FFE0FFFFFF16002900400054006300730084009A00B800D900F9001D013C015801710186019D01B201BF01C801C801BE01AD019F0195018A018601800174016501560142012E011F0111010201F300E300CA00A9008700600036001400FAFFDEFFC1FFA6FF82FF5CFF3DFF23FF0CFFF8FEEAFED9FEC5FEB1FEA1FE90FE85FE7EFE7CFE7AFE79FE78FE75FE6FFE69FE65FE63FE68FE72FE7AFE84FE90FEA0FEB4FED0FEF2FE19FF3BFF5CFF7AFF96FFAEFFC7FFE0FFF8FF10002900410058006A007C009200A600BE00D700F3000B011D012E0144015B0171018C01A501B601C101C401BD01B101A10191017F01690153013C0124010901F200DD00C900B800A70094007F006A004F0036001D000"
$bWav2 &= "500EFFFD5FFB8FF9AFF79FF57FF3DFF25FF0FFF01FFF3FEE5FED6FECBFEC3FEC2FEC3FEC3FEBDFEB4FEA7FE98FE8DFE85FE85FE89FE8CFE91FE98FEA6FEB8FED0FEE8FE08FF2AFF4EFF6CFF8BFFA5FFBCFFD2FFE6FFF9FF0D002300320040004E005F0074008C00A400C100E000FB0012012501350142014F015A0165016C0172017501700165015D015701510147014001330122010E01F600DE00CD00BA00A5008F007D006C005B0049003700270014000300F2FFDEFFCAFFB6FFA0FF8CFF77FF61FF4BFF38FF1FFF0BFFF9FEEAFEE0FED9FED4FED1FECDFEC6FEBEFEBBFEBCFEBEFEC5FECDFED6FEE3FEF4FE06FF18FF2DFF42FF56FF6DFF82FF98FFABFFBAFFC8FFD8FFECFF04001A002F00400050005E006D007D008F00A100B400C500D300E300F10000010F011D0124012B013001310130012A0126011C010F010501FC00F100E600D800CC00BD00B200A5009300820071005E004A00360024001200FEFFEBFFD7FFC3FFB0FF9CFF88FF73FF62FF54FF45FF39FF2EFF22FF15FF0DFF06FFFEFEFCFEFAFEF6FEF0FEEAFEE6FEE7FEEAFEEDFEF5FEFCFE05FF0FFF1CFF29FF3AFF4AFF5FFF76FF8DFFA4FFB9FFC5FFCCFFD5FFDFFFEBFFF9FF050010001B0023002F003E00520069007C008B009A00A700B100BE00C600CE00D600DC00DF00E100E500E500E200DA00D400CA00C500BE00B600AC00A4009C0094008C0086007C00700063005500450037002B001D000C00FCFFEAFFD7FFC4FFB2FF9FFF8FFF85FF79FF6CFF62FF56FF4CFF45FF41FF3FFF40FF3FFF3DFF37FF32FF30FF2DFF29FF28FF28FF2BFF30FF32FF38FF3EFF4AFF56FF61FF74FF88FF9AFFA7FFB4FFBFFFCAFFD7FFE3FFEEFFFBFF04000D000F00150022002F003E004D0060007000850094009F00AC00BA00C400CB00D200D600D900D800D300CE00C800C100BA00AF00A800A0009A00930091008C008500820079006B006000550048003C00350026001B000E00FEFFEFFFE2FFD4FFC5FFB7FFA9FF9CFF8FFF81FF75FF6AFF61FF5CFF59FF51FF4EFF4DFF4CFF4CFF4EFF51FF52FF56FF5AFF5CFF60FF64FF67FF68FF6BFF6FFF75FF7FFF88FF92FF9CFFA9FFB2FFBDFFC7FFD3FFE0FFEDFFFAFF0800140020002B0034003D004B005900640073007F008A0094009F00A400AA00AF00AF00AD00AB00A800A500A300A0009C00980092008D00880083007F007A0072006B0064005B00530049003D00310027001A000C00FFFFF1FFE5FFDAFFCFFFC5FFBEFFB6FFADFFA8FFA1FF9CFF95FF90FF8AFF87FF85FF82FF7DFF76FF6FFF6AFF62FF5DFF59FF59FF5CFF60FF65FF6AFF71FF78FF7EFF87FF95FFA2FFAEFFBBFFC6FFD1FFDAFFE3FFEAFFF2FFFAFF010007000D0014001B002100290035003F004D005600600067006F00740077007A007D007E008200860087008A008B008B0088008600860083007F007A0076006F0065005C0053004A0044003F003900340030002B00230018000F000500FBFFF1FFE6FFDAFFCFFFC4FFB9FFB0FFA7FFA2FF9CFF98FF94FF93FF8DFF8AFF86FF85FF84FF84FF85FF86FF86FF87FF88FF89FF8BFF8DFF8EFF91FF96FF9CFFA4FFACFFB2FFB8FFBFFFC5FFCCFFD3FFDDFFE6FFEFFFF7FF000004000B001200180023002D00380040004D0056005F0066006E00730078007A007B007C007A00790078007900790079007800750072006E006A0067005E00570053004D00450040003B0035002F0027001E0016000C000400FAFFF2FFECFFE5FFDAFFD1FFC5FFBAFFB2FFA9FFA3FF9DFF9BFF97FF93FF91FF8EFF8CFF8CFF8CFF8DFF8EFF91FF94FF97FF9AFF9EFF9FFFA0FFA1FFA2FFA5FFA9FFADFFB1FFB6FFBBFFC2FFC6FFCBFFD1FFD9FFE1FFE9FFF1FFFBFF050010001900250030003A00420048004C004E00540055005A005D00610064006600660067006A006A006B006B00690067006600620060005C0058005100490040003B0034002F00280022001D001500100008000300FCFFF3FFE9FFDEFFD5FFCEFFC8FFC0FFBAFFB5FFB1FFAEFFABFFA8FFA6FFA6FFA2FF9EFF9CFF9BFF98FF98FF97FF97FF98FF9AFF9CFF9DFF9FFFA3FFA6FFA9FFADFFB3FFB7FFBCFFBFFFC4FFCAFFD3FFDBFFE4FFECFFF6FFFEFF03000A0010001A001F0025002C0034003B00400045004A004E005200560057005C005D005F005F0062006000610061005D005B00580054004E004A0045003F003A00370032002E00270023001C00190014000F000B000500FDFFF6FFEDFFE6FFE0FFD8FFD1FFC9FFC4FFBFFFBBFFB8FFB6FFB3FFB0FFAEFFACFFABFFAAFFA8FFA8FFA7FFA7FFA9FFAAFFABFFACFFAFFFAFFFB2FFB5FFB8FFBDFFC1FFC5FFCAFFCEFFD3FFDBFFE0FFE8FFEDFFF5FFFAFFFFFF06000D00130019001E00230028002B003000330038003C004000440047004B004E00510051005200510050004F004D004C0049004600430040003C003A003600340031002F002C00290025001E00190014000D000600FFFFF8FFF1FFECFFE6FFE1FFDDFFD8FFD5FFD2FFCFFFCEFFCCFFCCFFCAFFC7FFC7FFC2FFC1FFBFFFBEFFBCFFBDFFB9FFB7FFB8FFB9FFBAFFBEFFBEFFC1FFC4FFC7FFCBFFD0FFD4FFDBFFDFFFE4FFEAFFF0FFF6FFFDFF00000200050007000A000D0012001300170019001D002100260027002C002E003200350039003D0040004000430042004200410040003D003A00360033002F002E002C0029002700240024002100200020001C0019001400100009000300FCFFF6FFF0FFE9FFE5FFDFFFDCFFD9FFD8FFD6FFD5FFD4FFD1FFD0FFCFFFCEFFCDFFCDFFCDFFCCFFCDFFCCFFCDFFCEFFD0FFCEFFCFFFCFFFCEFFCEFFCFFFD2FFD4FFD7FFD9FFDDFFE0FFE4FF"
$bWav2 &= "E8FFEDFFF0FFF4FFF8FFFCFF0000050008000D001100140018001B001F002000230023002600280029002C00300031003400320033003300340035003400330030002E002A0028002500240021001E001B001A001A0019001700130011000D00090007000200FDFFF9FFF5FFEFFFEDFFE9FFE6FFE3FFE0FFDDFFDDFFDBFFDAFFDAFFD9FFD8FFD7FFD7FFD5FFD6FFD5FFD6FFD3FFD3FFD4FFD5FFD5FFD6FFD5FFD7FFD7FFDAFFDBFFDEFFE0FFE3FFE3FFE6FFEAFFEDFFF1FFF5FFF9FFFCFF01000400070008000B000E0011001400170017001A001A001C001D0020002100240022002400250025002600270025002500240023002300220021001F001F001F001D001C001B001800160011000E000B00090004000100FDFFF9FFF3FFF0FFEEFFECFFEBFFEAFFE9FFE8FFE8FFE8FFE7FFE6FFE4FFE3FFE0FFE0FFDEFFDBFFDAFFD8FFD8FFD8FFD8FFD9FFDBFFDCFFDEFFDEFFDFFFE1FFE3FFE5FFE8FFE9FFEAFFEAFFECFFEFFFF1FFF3FFF6FFFAFFFCFFFFFF03000400070009000A000D000F001000110011001400130015001600190019001A001C001C001C001C001D001D001C001B001A001800170015001400110011000F0010000F000F000D000C000A0009000600040002000000FCFFF9FFF6FFF4FFF3FFF1FFF0FFEFFFEDFFEEFFECFFECFFECFFEBFFEBFFEAFFE9FFE8FFE8FFE6FFE4FFE4FFE4FFE4FFE4FFE4FFE3FFE4FFE4FFE5FFE7FFE8FFEAFFECFFEDFFEEFFF0FFF3FFF4FFF6FFF7FFF8FFFAFFFBFFFDFFFFFF000003000400060008000A000C000D000E000F000E001000100011001200130014001500150015001600160015001500140014001300140013001100110011000F000F000D000C000B000B0009000A0007000600030002000000FEFFFCFFF9FFF8FFF6FFF5FFF3FFF3FFF2FFF2FFF1FFF1FFF2FFF2FFF1FFF1FFF0FFF0FFF1FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF2FFF1FFF3FFF3FFF4FFF5FFF5FFF6FFF7FFF7FFF8FFF9FFFAFFFBFFFCFFFDFFFFFF00000000000001000300030004000400040004000400040004000400050005000600050005000500050005000500050005000500050005000400040004000400030003000300030002000200020001000100000000000000000000000000FFFFFFFF000000000000000000000000"
Global $tWav1 = DllStructCreate("byte[" & BinaryLen($bWav1) & "];")
DllStructSetData($tWav1, 1, $bWav1)
Global $tWav2 = DllStructCreate("byte[" & BinaryLen($bWav2) & "];")
DllStructSetData($tWav2, 1, $bWav2)
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $hGui = GUICreate("PlayWav", 200, 50)
GUISetOnEvent(-3, "_Exit")
Global $cButton1 = GUICtrlCreateButton("Wav 1", 10, 10, 85, 30)
GUICtrlSetOnEvent($cButton1, "_Play")
Global $cButton2 = GUICtrlCreateButton("Wav 2", 105, 10, 85, 30)
GUICtrlSetOnEvent($cButton2, "_Play")
GUISetState()
While Sleep(100)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _Play()
Switch @GUI_CtrlId
Case $cButton1
_PlayFromMem($tWav1)
Case $cButton2
_PlayFromMem($tWav2)
EndSwitch
EndFunc ;==>_Play
Func _PlayFromMem($tWav)
Local $aResult = DllCall("winmm.dll", "int", "PlaySoundW", "ptr", DllStructGetPtr($tWav), "ptr", 0, "dword", BitOR(0x00000001, 0x00000004, 0x00002000))
If @error Then Return SetError(1, 1, False)
Return $aResult[0]
EndFunc ;==>_PlayFromMem
Der Sourcecode ist im Zip-Archive dabei.
Hi
du kannst die Größe der Schrift auslesen und damit die Größe des Edit berechnen:
#include <Constants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiScrollBars.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $hGui = GUICreate("Test", 320, 240)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $cEdit = GUICtrlCreateEdit("", 10, 10, 300, 18, BitOR($ES_MULTILINE, $ES_WANTRETURN))
Global $hEdit = GUICtrlGetHandle($cEdit)
Global $iFontHeight = _GetFontHeight($hEdit)
Global $iEditH = $iFontHeight * 2
_CalcEditSize()
GUISetState()
Global $hProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Global $hMod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hProc), $hMod)
OnAutoItExitRegister("_Cleanup")
While 1
Sleep(100)
WEnd
Func _GetFontHeight($hWnd)
Local $hDC = _WinAPI_GetDC($hEdit)
Local $tTEXTMETRIC = DllStructCreate($tagTEXTMETRIC)
DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $hDC, "ptr", DllStructGetPtr($tTEXTMETRIC))
_WinAPI_ReleaseDC($hEdit, $hDC)
Return DllStructGetData($tTEXTMETRIC, "tmAscent")
EndFunc ;==>_GetFontHeight
Func _CalcEditSize()
Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
$iEditH = $iCnt * $iFontHeight
GUICtrlSetPos($cEdit, 10, 10, 300, $iEditH + $iFontHeight)
EndFunc ;==>_CalcEditSize
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $wParam = $WM_KEYDOWN Then
If DllStructGetData($tKEYHOOKS, "vkCode") = 13 Then
_WinAPI_SetWindowPos($hEdit, 0, 10, 10, 300, $iEditH + $iFontHeight * 2, $SWP_NOZORDER)
EndIf
EndIf
_CalcEditSize()
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Func _Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hProc)
EndFunc ;==>_Cleanup
Func _Exit()
Exit
EndFunc ;==>_Exit
E
Edit: der Einfacheit halber hab ich nur "tmAscent" als Höhe verwendet und nochmals dazuaddiert - solltest du Wert auf ganz genaue Größe legen, dann solltest du auch "tmDescent" in die Berechnung eibfließen lassen...
Ich hätte da eine Idee - hast du zufällig einen Beispieltext (Screenshot) zum ausprobieren?
Mit Ausnahme von meiner Lösung kann man mit allen auch die Größe des Bildes ändern
Bei Convert.exe gibt man die gewünschte Größe einfach mit " size 320x240 " an
Bei FreeImage sollte die Funktion so aussehen:
Func _ConvertBMP2JPG_FreeImage($sFileName)
Local $aResult = DllCall($hDll, "ptr", "_FreeImage_Load@12", "int", 0, "str", $sFileName, "int", 0)
Local $hDIB = $aResult[0]
$aResult = DllCall($hDll, "ptr", "_FreeImage_Rescale@16", "ptr", $hDIB, "int", $iRescaleX, "int", $iRescaleY, "dword", 5)
DllCall($hDll, "int", "_FreeImage_Save@16", "int", 2, "ptr", $aResult[0], "str", StringTrimRight($sFileName, 3) & "jpg", "int", 50)
DllCall($hDll, "none", "_FreeImage_Unload@4", "ptr", $aResult[0])
DllCall($hDll, "none", "_FreeImage_Unload@4", "ptr", $hDIB)
EndFunc ;==>_ConvertBMP2JPG_FreeImage
Und die Funktion von UEZ hat sowieso schon die entsprechenden Parameter eingebaut.
Hier mein Benchmarkscript: autoit.de/wcf/attachment/13945/
E
Da bin ich mir auch nicht sicher.
Soweit ich weiß, kommen die Werte direkt vom Prozessor und nicht von Windows
Vielleicht weiß da jemand genau bescheid...
Die Funktionen sind gleich
TimerInit gibt in etwa die Anzahl der Prozessortakte seit dem letzten Systemstart zurück
Dividiert durch die Frequenz erhält man die Zeit seit dem Systemstart in ms
Um auch nach einem Reboot weiterzurechnen, musst du wahrscheinlich die Datums/Zeit Funktionen benutzen und die Zeit im Format: "YYYY/MM/DD HH:MM:SS" in der Ini abspeichern
Hier die Ergebnisse meines Vergleichs:
ImageMagick: 9683.29187089421
GDIPlus: 7424.86768569748
UEZ: 8915.10261779081
FreeImage: 6704.62195614247
FreeImage New: 7547.15529487686
Um Convert.exe eine Chance zu geben, hab ich immer 10 Instanzen gleichzeitig gestartet, was die Konvertierung etwas beschleunigt hat - ist aber immer noch an letzter Stelle.
bei "FreeImage" handelt es sich um die Version 3.9.3, welche ich seit etwa 4 Jahren benutze
"FreeImage New" ist die nahezu aktuelle Version 3.15.0 aus Prog@ndy´s UDF: http://progandy.de/downloads/view.download/7
evtl. kann man davon ausgehen, daß eine noch ältere Version von FreeImage.dll noch schneller und kleiner ist...
E
Da es um die Geschwindigkeit geht, würde ich das so machen:
#include <File.au3>
#include <GDIPlus.au3>
#include <GDIPlusConstants.au3>
#include <WinAPI.au3>
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $tGUID = _WinAPI_GUIDFromString("{557CF401-1A04-11D3-9A73-0000F81EF32E}")
Global $pGUID = DllStructGetPtr($tGUID)
Global $tParams = _GDIPlus_ParamInit(1)
Global $pParams = DllStructGetPtr($tParams)
Global $tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", 50)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($tData))
Global $aFiles = _FileListToArray(@ScriptDir & "\BMP\", "*.bmp")
Global $iTimer = TimerInit()
For $i = 1 To $aFiles[0]
_ConvertBMP2JPG(@ScriptDir & "\BMP\" & $aFiles[$i])
Next
ConsoleWrite(TimerDiff($iTimer) & @CRLF)
_GDIPlus_Shutdown()
Func _ConvertBMP2JPG($sFileName)
Local $aResult = DllCall($ghGDIPDll, "int", "GdipLoadImageFromFile", "wstr", $sFileName, "ptr*", 0)
DllCall($ghGDIPDll, "int", "GdipSaveImageToFile", "handle", $aResult[2], "wstr", StringTrimRight($sFileName, 3) & "jpg", "ptr", $pGUID, "ptr", $pParams)
DllCall($ghGDIPDll, "int", "GdipDisposeImage", "handle", $aResult[2])
EndFunc ;==>_ConvertBMP2JPG
Diese Variante ist fast genauso schnell wie FreeImage.dll und mehr als doppelt so schnell wie Convert.exe (ImageMagic)
Das sollte doch ausreichen, oder
Edit: Falls du FreeImage testen willst, das wäre die Funktion dafür:
[autoit]Func _ConvertBMP2JPG_FreeImage($sFileName)
Local $aResult = DllCall($hDll, "ptr", "_FreeImage_Load@12", "int", 0, "str", $sFileName, "int", 0)
DllCall($hDll,"int", "_FreeImage_Save@16", "int", 2, "ptr", $aResult[0], "str", StringTrimRight($sFileName,3) & "jpg", "int", 50)
DllCall($hDll, "none", "_FreeImage_Unload@4", "ptr", $aResult[0])
EndFunc
Hab mir den Code kurz angesehen...
Control-Handle findest du im Array "$aWin" in der Funktion _GetInfo und zwar in der 2 Spalte (_Arraydisplay)
Ich schlage vor, du startest ein neues Projekt und übernimmst nur die Funktionen _ProcessGetChildren und _WinGetControls und schreibst dann deine KI dazu, anstatt diesen unübersichtlichen Code zu verändern
E
Hi
Du erstellst jedesmal in der Schleife die Globale Variable neu - das sollte im gesammten Script jedoch nur indgesammt 1 Mal geschehen.
Auch kannst du den Inhalt der Listbox löschen, anstatt des ganzen Controls (und wieder neu erzeugen).
Ich würde das in etwa so machen:
#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Global $oDict_List = ObjCreate('Scripting.Dictionary')
If Not IsObj($oDict_List) Then
MsgBox(0, "ERROR", "creating scripting.dictionary object failed")
Exit
EndIf
$oDict_List.CompareMode = 1
Global $oDict_System = ObjCreate('Scripting.Dictionary')
If Not IsObj($oDict_System) Then
MsgBox(0, "ERROR", "creating scripting.dictionary object failed")
Exit
EndIf
$oDict_System.CompareMode = 1
$oDict_System.Add('svchost.exe', 1)
$oDict_System.Add('smss.exe', 1)
$oDict_System.Add('dllhost.exe', 1)
$oDict_System.Add('dwm.exe', 1)
$oDict_System.Add('spoolsv.exe', 1)
$oDict_System.Add('csrss.exe', 1)
$oDict_System.Add('winlogon.exe', 1)
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $hGui = GUICreate("Process Inspector", 528, 258 + 25)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $cList = GUICtrlCreateList("", 2, 2, 524, 262)
Global $cButtonRefresh = GUICtrlCreateButton("Refresh", 30, 260, 462, 20)
GUICtrlSetOnEvent($cButtonRefresh, "_Refresh")
GUISetState()
While 1
Sleep(100)
WEnd
Func _Refresh()
Local $aProcess = ProcessList()
If @error Or Not IsArray($aProcess) Then Return False
$oDict_List.RemoveAll
For $i = 1 To $aProcess[0][0]
If $oDict_System.Exists($aProcess[$i][0]) Then ContinueLoop
If Not $oDict_List.Exists($aProcess[$i][0]) Then $oDict_List.Add($aProcess[$i][0], $aProcess[$i][0])
Next
GUICtrlSetData($cList, "")
For $i In $oDict_List.Keys()
GUICtrlSetData($cList, "Process: " & $i)
Next
EndFunc ;==>_Refresh
Func _Exit()
Exit
EndFunc ;==>_Exit
Die Scripting.Dictionary-Objekte arbeiten schneller, als wenn man ein normales Array durchgehen muß - besonders, wenn die Liste immer länger wird
E
Sowas habe ich mal probiert, aber nach kurzer Zeit wieder aufgegeben.
(u.a. aus den Gründen, die Chip oben dargelegt hat)
Vielleicht ist das ja ein Ansatz
Es ist nicht möglich den Audio-Datenstrom von einem Fremdprogramm direkt auszulesen.
Aber 2 Möglichkeiten gibt es doch
1) Einen virtuellen Sountkartentreiber, der quasi zwischen Programm und richtiger Soundkarte sitzt (z.B.: VLC -> Virtueller Treiber -> Soundkartentreiber)
Von diesem lassen sich dann die gewünschten Daten auslesen.
Ich glaube "Virtual Audio Cable" ist sowas; vielleicht gibt es auch eine Freewarevariante...
(oder du bist gut genug in einer höheren Programmiersprache, um selber einen virtuellen Treiber zu schreiben ;))
2) Bei manchen Soundkarten kann man den Output direkt auf den Input patchen. Nennt sich meistens "StereoMix" oder "What you hear", einfach im Windows-Mixer das Häkchen setzen...
Mit Bass.dll kann man den Input dann aufnehmen und analysieren.
Die Lautstärke ist jedoch abhängig von den Reglereinstellungen im Windowsmixer
E
Du kannst mit Hex-Werten rechnen, die in ein 32Bit signed Integer passen, also von -2^31 bis 2^31-1
weiters verlangt Dec einen Hex-String ohne Prefix
Dec(0xFFFFFFFF) wäre dasselbe wie Dec(-1) und das ergibt 0, weil Error
ConsoleWrite("-=========================================" & @CRLF)
_Hex(0)
_Hex(-1)
_Hex(1)
_Hex(-2 ^ 31)
_Hex(2 ^ 31 - 1)
_Hex(-2147483648 - 1)
_Hex(2147483647 + 1)
ConsoleWrite("-=========================================" & @CRLF)
_Dec("00000000")
_Dec("FFFFFFFF")
_Dec("00000001")
_Dec("80000000")
_Dec("7FFFFFFF")
_Dec("FFFFFFFFF")
_Dec(0xFFFFFFFF)
ConsoleWrite("-=========================================" & @CRLF)
Func _Hex($Val)
Local $Hex = Hex($Val)
Local $Dec = Dec($Hex)
If $Dec = $Val Then
ConsoleWrite("+ " & $Val & @TAB & " => " & $Hex & @TAB & " => " & $Dec & @CRLF)
Else
ConsoleWrite("! " & $Val & @TAB & " => " & $Hex & @TAB & " => " & $Dec & @CRLF)
EndIf
EndFunc ;==>_Hex
Func _Dec($Val)
Local $Dec = Dec($Val)
Local $Hex = Hex($Dec)
If $Hex = $Val Then
ConsoleWrite("+ " & $Val & @TAB & " => " & $Dec & @TAB & " => " & $Hex & @CRLF)
Else
ConsoleWrite("! " & $Val & @TAB & " => " & $Dec & @TAB & " => " & $Hex & @CRLF)
EndIf
EndFunc ;==>_Dec