1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. eukalyptus

Beiträge von eukalyptus

  • OnEventMode - Event kann nicht registriert werden

    • eukalyptus
    • 11. September 2011 um 11:14

    So wie ich das sehe, versuchst du einem Button mit GuiSetOnEvent eine Funktion zuzuweisen,
    Dazu musst du allerdings GuiCtrlSetOnEvent verwenden!

    E

  • da InetGet nicht mehr geht: wie mit Bass.dll Mp3 speichern

    • eukalyptus
    • 10. September 2011 um 18:23

    Hier findest du den Code einer CallBack Dll von Progandy: http://www.autoitscript.com/forum/topic/83…post__p__604118

    theoretisch musst du nur innerhalb der Funktion "DownloadProc" die empfangenen Daten speichern.
    entweder direkt mit in FreeBasic, oder ca. so:
    Dazu zuerst eine DllStruct in AutoIt erstellen, die genügend Bytes groß ist und deren Pointer als Parameter $User an DownloadProc übergeben.
    Dann die empfangenen Daten in den reservierten Speicher schreiben und am Schluß die Struct via FileWrite speichern...

    E

  • Bass UDF Hilfe

    • eukalyptus
    • 10. September 2011 um 18:10

    Hi

    Willst du weißes Rauschen über die PA abspielen und wieder mit einem Messmikro aufnehmen und die Frequenzspektren vergleichen?

    Das Rauschen in Echtzeit zu erzeugen geht mit AutoIt nicht.
    Die einfachste Variante wäre ein weißes Rauschen als Wav-Datei abzuspielen.
    Zum abspielen von Wav-Dateien findest du in der Hilfe genug Beispiele.
    Und um das Frequenzspektrum des Eingangs anzuzeigen brauchst du theoretisch nur im Hilfebeispiel "_BASS_EXT_ChannelGetFFT" den Filestream durch einen Recordstream ersetzen (siehe _BASS_RecordStart)

    Alternativ zur Wav-Datei fallen mir noch 2 Möglichkeiten ein:
    1) _BASS_EXT_MemoryBufferCreate verwenden und Buffer mit weißem Rauschen befüllen
    2) Eine CallBack-DLL erstellen, welche in Realtime das Rauschen generiert (Beispiele in der Hilfe unter "Using CallBacks")

    Vielleicht bau ich auch irgendwann noch verschiedene Rauschtypen in _BASS_EXT_Generator ein ;)

    E

  • Transparentes GdiPlus-Image mit GDI zeichnen

    • eukalyptus
    • 8. September 2011 um 19:14

    Via CreateIconIndirect und DrawIconEx lassen sich auch BMP-Bilder mit Transparenz laden und darstellen.
    Beispiel im Anhang

    Dateien

    TestSprites.zip 20,69 kB – 469 Downloads
  • Transparentes GdiPlus-Image mit GDI zeichnen

    • eukalyptus
    • 5. September 2011 um 17:24

    Habt ihr das Script auch getestet?
    Es ging um die Frage, wie man ein GDI+Image zu einem HBitmap umwandeln kann, und die Alphawerte erhalten bleiben.
    Das geht, allerdings muss man zum zeichnen DrawIconEx verwenden, denn mit BitBlt wird das nichts.
    Und auch für AlphaBlend müsste man das Bild vorher noch umrechnen - oder?

    Hier hab ich noch eins für euch:

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    Global $hBitmap = _CreateBitmap()
    Global $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $hGui = GUICreate("Test", 800, 200)
    GUISetBkColor(0x394E69)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hIcon = _WinAPI_CreateIconIndirect($hHBitmap, $hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hDC = _WinAPI_GetDC($hGui)
    Global $hDC_BG = _WinAPI_CreateCompatibleDC($hDC)
    Global $hBMP_BG = _WinAPI_LoadImage(0, @ScriptDir & "\Wasserlilien.bmp", $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE)
    _WinAPI_SelectObject($hDC_BG, $hBMP_BG)

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_BitBlt($hDC, 0, 0, 800, 200, $hDC_BG, 0, 0, $SRCCOPY)
    _WinAPI_DeleteDC($hDC_BG)
    _WinAPI_DeleteObject($hBMP_BG)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _WinAPI_DrawIconEx($hDC, 0, 0, $hIcon, 800, 200)
    _WinAPI_DestroyIcon($hIcon)
    _WinAPI_ReleaseDC($hGui, $hDC)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While GUIGetMsg() <> -3
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreateBitmap()
    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
    Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 200, $hGraphics)
    _GDIPlus_GraphicsDispose($hGraphics)
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
    Local $hPen = _GDIPlus_PenCreate(0xFF00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 8
    _GDIPlus_BrushSetSolidColor($hBrush, BitOR(BitShift($i * 0xFF / 8, -24), 0x000000FF))
    _GDIPlus_GraphicsFillEllipse($hContext, ($i - 1) * 100, 10, 100, 100, $hBrush)
    Next
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hContext)
    Return $hBitmap
    EndFunc ;==>_CreateBitmap

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _WinAPI_CreateIconIndirect
    ; Description....: Creates an icon or cursor that has the specified size, colors, and bit patterns.
    ; Syntax.........: _WinAPI_CreateIconIndirect ( $hBitmap, $hMask [, $XHotspot [, $YHotspot [, $fIcon]]] )
    ; Parameters.....: $hBitmap - Handle to the icon color bitmap.
    ; $hMask - Handle to the icon bitmask bitmap.
    ; $XHotspot - Specifies the x-coordinate of a cursor's hot spot. If creates an icon, the hot spot is always in
    ; the center of the icon, and this member is ignored.
    ; $YHotspot - Specifies the y-coordinate of the cursor's hot spot. If creates an icon, the hot spot is always in
    ; the center of the icon, and this member is ignored.
    ; $fIcon - Specifies whether creates an icon or a cursor, valid values:
    ; |TRUE - Creates an icon. (Default)
    ; |FALSE - Creates a cursor.
    ; Return values..: Success - Handle to the icon or cursor that is created.
    ; Failure - 0 and sets the @error flag to non-zero.
    ; Author.........: Yashied
    ; Modified.......:
    ; Remarks........: The system copies the bitmaps before creating the icon or cursor. Because the system may temporarily
    ; select the bitmaps in a device context, $hBitmap and $hMask should not already be selected into a device context.
    ; The application must continue to manage the original bitmaps and delete them by _WinAPI_DeleteObject() when they
    ; are no longer necessary.
    ; Related........:
    ; Link...........: @@MsdnLink@@ CreateIconIndirect
    ; Example........: Yes
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_CreateIconIndirect($hBitmap, $hMask, $XHotspot = 0, $YHotspot = 0, $fIcon = 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $tICONINFO = DllStructCreate($tagICONINFO)

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($tICONINFO, 1, $fIcon)
    DllStructSetData($tICONINFO, 2, $XHotspot)
    DllStructSetData($tICONINFO, 3, $YHotspot)
    DllStructSetData($tICONINFO, 4, $hMask)
    DllStructSetData($tICONINFO, 5, $hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Ret = DllCall('user32.dll', 'ptr', 'CreateIconIndirect', 'ptr', DllStructGetPtr($tICONINFO))

    [/autoit] [autoit][/autoit] [autoit]

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, 0)
    EndIf
    Return $Ret[0]
    EndFunc ;==>_WinAPI_CreateIconIndirect

    [/autoit]

    und das ist das Ergebnis: Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Die Alphawerte der einzelnen Kreise bleiben doch erhalten...

    E

    Dateien

    Test.jpg 544,55 kB – 0 Downloads
  • Transparentes GdiPlus-Image mit GDI zeichnen

    • eukalyptus
    • 4. September 2011 um 15:59

    Heute wurde in der Shoutbox quasi danach gefragt, wie man mit GDI ein transparentes GDI+Bild zeichnen kann
    Dies ist möglich mit DrawIcon:

    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    _GDIPlus_Startup()
    Global $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\autoit_logo_gtaspider.png")
    Global $iImageW = _GDIPlus_ImageGetWidth($hImage)
    Global $iImageH = _GDIPlus_ImageGetHeight($hImage)
    Global $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

    [/autoit][autoit][/autoit][autoit]

    Global $hGui = GUICreate("Test", $iImageW, $iImageH)
    GUISetBkColor(0x394E69)
    GUISetState()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Global $hIcon = _WinAPI_CreateIconIndirect($hHBitmap, $hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)

    [/autoit][autoit][/autoit][autoit]

    Global $hDC = _WinAPI_GetDC($hGui)
    _WinAPI_DrawIconEx($hDC, 0, 0, $hIcon, $iImageW, $iImageH)
    _WinAPI_DestroyIcon($hIcon)
    _WinAPI_ReleaseDC($hGui, $hDC)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While GUIGetMsg() <> -3
    Sleep(10)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _WinAPI_CreateIconIndirect
    ; Description....: Creates an icon or cursor that has the specified size, colors, and bit patterns.
    ; Syntax.........: _WinAPI_CreateIconIndirect ( $hBitmap, $hMask [, $XHotspot [, $YHotspot [, $fIcon]]] )
    ; Parameters.....: $hBitmap - Handle to the icon color bitmap.
    ; $hMask - Handle to the icon bitmask bitmap.
    ; $XHotspot - Specifies the x-coordinate of a cursor's hot spot. If creates an icon, the hot spot is always in
    ; the center of the icon, and this member is ignored.
    ; $YHotspot - Specifies the y-coordinate of the cursor's hot spot. If creates an icon, the hot spot is always in
    ; the center of the icon, and this member is ignored.
    ; $fIcon - Specifies whether creates an icon or a cursor, valid values:
    ; |TRUE - Creates an icon. (Default)
    ; |FALSE - Creates a cursor.
    ; Return values..: Success - Handle to the icon or cursor that is created.
    ; Failure - 0 and sets the @error flag to non-zero.
    ; Author.........: Yashied
    ; Modified.......:
    ; Remarks........: The system copies the bitmaps before creating the icon or cursor. Because the system may temporarily
    ; select the bitmaps in a device context, $hBitmap and $hMask should not already be selected into a device context.
    ; The application must continue to manage the original bitmaps and delete them by _WinAPI_DeleteObject() when they
    ; are no longer necessary.
    ; Related........:
    ; Link...........: @@MsdnLink@@ CreateIconIndirect
    ; Example........: Yes
    ; ===============================================================================================================================

    [/autoit][autoit][/autoit][autoit]

    Func _WinAPI_CreateIconIndirect($hBitmap, $hMask, $XHotspot = 0, $YHotspot = 0, $fIcon = 1)

    [/autoit][autoit][/autoit][autoit]

    Local $tICONINFO = DllStructCreate($tagICONINFO)

    [/autoit][autoit][/autoit][autoit]

    DllStructSetData($tICONINFO, 1, $fIcon)
    DllStructSetData($tICONINFO, 2, $XHotspot)
    DllStructSetData($tICONINFO, 3, $YHotspot)
    DllStructSetData($tICONINFO, 4, $hMask)
    DllStructSetData($tICONINFO, 5, $hBitmap)

    [/autoit][autoit][/autoit][autoit]

    Local $Ret = DllCall('user32.dll', 'ptr', 'CreateIconIndirect', 'ptr', DllStructGetPtr($tICONINFO))

    [/autoit][autoit][/autoit][autoit]

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, 0)
    EndIf
    Return $Ret[0]
    EndFunc ;==>_WinAPI_CreateIconIndirect

    [/autoit]


    (Das Bild "autoit_logo_gtaspider.png" ist das AutoIt.de-Logo ganz oben)

    E

  • Dynamische Erstellung einer Wave-Datei

    • eukalyptus
    • 4. September 2011 um 10:42

    Vielleicht helfen dir die Funktionen "_BASS_EXT_Generator" und "_BASS_EXT_MakeWave" und "_BASS_EXT_SaveWave" aus der aktuellen BassUDF weiter.

    E

  • AutoIt Script ausführen ohne AutoIt.exe

    • eukalyptus
    • 4. September 2011 um 03:04

    für RunAutoIt.exe reicht das hier:

    [autoit]

    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & FileOpenDialog('AutoIt Skript wählen', @ScriptDir, '(*.au3)') & '"')

    [/autoit]

    E

  • INPUT-Feld, Edit-Feld nicht anklickbar machen

    • eukalyptus
    • 4. September 2011 um 02:37

    Du kannst auch ein durchsichtiges Fenster darüberlegen

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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")

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    $hGuiNF2 = GUICreate("sdf", 300, 20, 10, 120, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
    WinSetTrans($hGuiNF2, "", 1)
    GUISetState(@SW_DISABLE, $hGuiNF2)
    GUISetState(@SW_SHOW, $hGuiNF2)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGui)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SetEditText()
    Local $sText = ""
    For $i = 1 To Random(5, 20, 1)
    $sText &= Chr(Random(65, 90, 1))
    Next
    GUICtrlSetData($cEdit, $sText)
    EndFunc ;==>_SetEditText

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SetInputText()
    Local $sText = ""
    For $i = 1 To Random(5, 20, 1)
    $sText &= Chr(Random(65, 90, 1))
    Next
    GUICtrlSetData($cInput, $sText)
    EndFunc ;==>_SetInputText

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    E

  • Suche (schnelle) Funktion zum Umrechnen ins Dual- oder Hexadezimalsystem

    • eukalyptus
    • 31. August 2011 um 21:23

    Du bist leider nur an 4 Stelle!
    (Und das, obwohl du auch nicht die führenden Nullen wegmachst)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $tChr = DllStructCreate("char[64];")
    Global $pChr = DllStructGetPtr($tChr)
    Global $hDll = DllOpen("msvcrt.dll")

    [/autoit] [autoit][/autoit] [autoit]

    Global $iLoops = 500
    Global $iTestCnt = 7

    [/autoit] [autoit][/autoit] [autoit]

    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"

    [/autoit] [autoit][/autoit] [autoit]

    Global $iTimer, $iInt, $bDif
    Global $aRes[$iTestCnt + 1]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 31
    For $j = 1 To $iLoops
    $iInt = Int(2 ^ $i) + Random(0, 2 ^ ($i - 1), 1)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[1] = _DecToBin_1($iInt)
    $aTime[1][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[2] = _DecToBin_2($iInt)
    $aTime[2][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[3] = _DecToBin_3($iInt)
    $aTime[3][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[4] = _DecToBin_4($iInt)
    $aTime[4][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[5] = _DecToBin_5($iInt)
    $aTime[5][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[6] = _DecToBin_6($iInt)
    $aTime[6][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $aRes[7] = _DecToBin_7($iInt)
    $aTime[7][0] += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _ArraySort($aTime)
    For $i = 1 To $iTestCnt
    ConsoleWrite("> " & Round($aTime[$i][0]) & " " & $aTime[$i][1] & @CRLF)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DecToBin_5($iD)
    DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iD, "ptr", $pChr, "int", 2)
    Return DllStructGetData($tChr, 1)
    EndFunc ;==>_DecToBin_5

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]


    Die Funktion von James1337 konnte ich leider nicht dazunehmen, da sie eine fixe Längenangabe verwendet...

    Ergebnis:

    Code
    > 458 DllCall mit Optimierung
    > 624 DllCall
    > 876 Ausgedachte Methode mit Optimierung
    > 1103 Buphx
    > 1131 Subtraktionsmethode
    > 1230 Divisionsmethode
    > 1334 BugFix

    E

  • Suche (schnelle) Funktion zum Umrechnen ins Dual- oder Hexadezimalsystem

    • eukalyptus
    • 31. August 2011 um 09:43

    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

    [/autoit]


    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)

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    $aRes = DllCall("msvcrt.dll", "ptr:cdecl", "_i64toa", "int64", $iNum, "ptr", DllStructGetPtr($tChr), "int", $iNewBase)
    If @error Then Return SetError(1, 3, False)

    [/autoit][autoit][/autoit][autoit]

    Return DllStructGetData($tChr, 1)
    EndFunc ;==>_TranslateBase

    [/autoit]
  • Suche (schnelle) Funktion zum Umrechnen ins Dual- oder Hexadezimalsystem

    • eukalyptus
    • 31. August 2011 um 00:03

    Hier noch eine Methode
    bei Zahlen < 65536 wird Methode 1 angewendet, da sie bei mir am schnellsten war...

    Spoiler anzeigen
    [autoit]

    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

    [/autoit]

    Edit: Deine Version ist allerdings am schnellsten, wenn man die Variablenamen noch kürzt und das Array als Static deklariert

    Spoiler anzeigen
    [autoit]

    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

    [/autoit]
  • Mit Button sound abspielen

    • eukalyptus
    • 30. August 2011 um 23:16

    Wav-Datei binär laden oder als Binärstring in den Quellcode schreiben.
    Dann in den Speicher laden mit DllStructSetData und abspielen

    Spoiler anzeigen
    [autoit]

    Global $bWav1 = "0x524946465414000057415645666D74201000000001000100112B0000112B000001000800646174612F1400008080808080808080808080808080808080808080808080818181808080808080807F7F7F7F7F7F7F808080808081818181818181818080807F7F7F7E7E7E7E7F7F808080818182828282828281818080807F7E7E7E7E7E7E7F7F80808080808181818282828181818080808080808080807F7F7F7D7C7C7B7B7B7C7F808082878A8D8F90908F8C8886807E7874706C6A6A6B6C71787E828A90969A9CA09F9A958F8680786E67615D5B5D60666E787F8A959CA3A8ABABA6A0998C80786B6158525152575D66717D8794A0A9AEB2B3B2ABA094867A6B5F554E4E4E4E57606C798394A0A9B2B5B8B5B2A6998C806E61554E4E4E4E535D66767F909CA6AFB8B9B8B2A99F8F807161584E4E4E4E535A66737F8A96A3ABB2B4B4B2A89F928276675F55514E51575D66717E87949CA3A9ADADA9A59B92867E71675F5B57575B616A737D828D959A9FA1A3A19C998F87807A716B676565666A70747A7F838A8F92949494928F8C86827F7A78747473747478797D7F7F818283838383868683838382828281818080807F7F7E7E7D7A79787878797A7D7F8183888C8D9090908F8D8886807E78736E6B6A6A6A6C71787E838A92969B9F9F9F9A958D8680766E67605D5B5D616670797F8A959CA3A9ABABA69F998C80746B6158525153575F66737F8A95A0A9AFB4B3B2A99F928276675F554E4E4E5158616C7D8796A0A9AFB5B9B5B2A599887A6B5F534E4E4E4E535D6A7883909CA9AFB8B9B8B2A89B8D806E61554E4E4E4E535D66737F8D9CA6ADB2B4B4B2A69B8F8074675B554E4E52575F67737F88949CA5A9ADABA9A39A8F837A70675F58585A5D646A737E838F959BA0A1A19F9B958F868078716B676565676B70767D7F868A8F92949492908F8C87827F7A78747474747478797D7F7F818283838383838686838383828282818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8883807D78736E6B6A6A6B6E73797F838C94999B9F9F9C9A948C827E746B655F5B5B5D61677079828D96A0A6ABADABA59F95888074675F585251535A606A737F8A96A1A9AFB4B4B2A89C8F8074675B534E4E4E515A64707E8A96A3ABB3B8B9B4ADA1998678675B524E4E4E4E57606C798394A0A9B3B8B9B5B2A5998C806E5F554E4E4E4E555F6A7883909BA6AEB3B4B2AEA59A8C8074675B524E4E5257606A767F8A959FA6ABAEADA8A19A8F827A6E655D58575A5D646B747F8790969B9FA1A19F9A958D867E766E6A676565676C71767D81878C8F92949492908D8A86817F7A787474747476787A7D7F7F818283838383838683838383828282818180807F7F7E7D7A7A79787878797A7E7F82868A8C8F9090908F8C8782807A76716E6B676A6B6E73797F868D94999CA0A09C99928C827A746B645F5B5B5F646A717D83909AA0A6A9ADABA59B92877E71675D555151535A606B787F8D9AA5ADAFB3B3B2A59A8C8074675B514E4E4E525A65737F8A9AA3AEB4B8B8B3ABA1928274675B4E4E4E4E4E57606C7D8796A1ADB4B8B9B4AEA599867A6B5F534E4E4E4E57606C7983949CA8AEB3B4B2ABA5998C8070645B534E4E525A616C767F8A96A0A6ABADABA8A0998C80786B645D58575A5F656C767F8790969CA0A1A19F9A948C827E746E6A676566676C71787E82888D9092949492908D8883807E7A787474747476787A7E7F80828283838383838383838383828282818180807F7E7E7D7A7978787878797A7E7F82868A8D8F9090908F8C86817F7974706C6B6A6A6B70747A7F878F959A9C9F9F9C999288807A7167615F5B5D60656B737E86909AA1A6ABADA9A59B92867A6E675B535152555A646C7983909AA3ADB3B4B2ADA5998C806E6158514E4E4E535D66737F909CA6AEB5B9B8B2AB9F92807465584E4E4E4E515A64717F8A96A3AEB5B9B9B4ADA1948278675B514E4E4E515864707D8796A1A9AEB3B4B2ABA195877A6E6158524E4E535A646E79838F9AA1A8ABADABA69F958880746B615B58585B606670797F8A90969CA0A1A09C99928A817A746E676565666A6C73797F838A8D90949494928F8C8882807E79767473737476787A7E7F818283838683838383838383828282818180807F7F7E7E7D7A7A79797979797D7F7F83878A8D8F90908F8D8A86817E7974706C6A6A6B6C71767D818890969A9C9F9F9B998F8780786E67615D5B5D60656C767F88949BA3A8ABABA8A1998F82786C615B555152575D66707A83909CA6AEB3B4B2ABA199887A6C6057514E4E4E555F6A7883909CA8AFB5B9B8B2A89B8C807061554E4E4E4E515A66737F8D9BA6AFB5B9B8B3AB9F92817467584E4E4E4E525A65717F8A96A1A9B2B4B4B2AB9F9283786B5F554E4E51535B65707D87909BA3A9ADADA9A59C94877E7167605B57585B616A717A828C949A9CA0A1A09C999088807A716B676565666A6E737A7F838A8F92949494928F8C8782807D79747473737476797D7E7F818283838686868686838383828282818180807F7F7E7E7D7A79797878797A7D7F8183878A8D8F90908F8D8886807D7874706B6A6A6B6E71787E828A90969B9F9F9F9B958F8680766E67605D5B5D606670787F8A959CA3A8ABABA8A0998C80786B6158525152575D66737E8895A0A9AFB2B3B2AB9F92837A6B5F534E4E4E4E57606C798694A0A9B3B5B8B4B2A5998C806E5F554E4E4E4E535D6A767F909CA8AFB5B9B8B2A89B8D807161584E4E4E4E535B66737F8D9AA3ADB2B4B4B2A89F908174675D55514E4E555F66737E87949CA5A9ADADA9A59B92867D70675F5B57575B646A737D838D9"
    $bWav1 &= "59A9FA1A1A09B968F878078716B676565676B70747A7F868A8F92949492928F8C86817F7A78767474747478797D7F7F818283838383838383838382828282818180807F7F7E7D7A7A79787878797A7D7F8183888C8F9090908F8C8883807D78736E6B6A6A6B6C73797F838A92969B9C9F9C9A958C8680746C67615D5B5D606770797F8A969CA3A9ADABA6A0998C80746A6057525253575D66737F8A96A0A9B2B4B3B2A99F928278675B534E4E4E5158616C7D8896A1A9B2B8B9B4AEA599887A6B5D524E4E4E4E555F6A7883949FA9B2B8B9B8B2A89B8C806E61554E4E4E4E535D6A767F8F9CA6ADB2B4B4B2A69B8F8074675B534E4E51575F6A737F8A949CA6A9ADABA8A19A8F827A6E675F5A585A5D646B737E838D959B9FA0A09F9B958D868078716B676566676B70767D7F868A8F92949492908D8A86817F7A78767473747678797D7F7F818383838383868683838383828281818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8882807A76716E6B6A6A6B6E73797F838C949A9C9F9F9F9A948C827E746B645F5B5B5D61677079838D969FA6ABADABA59F95888071675F5752515358606A737F8A96A3ABB2B4B4B2A89B8F8074675B524E4E4E525A65707E8A96A3ABB3B8B9B4ADA1958678675B514E4E4E4E57606C798794A0ADB3B8B8B5B2A6998C806E5F534E4E4E4E555F6A7883909BA6AEB3B4B3AEA5998C8074675B524E4E5258606B767F8A96A0A6ABADABA8A1998C80786C645D58575A5F656C767F8790969BA0A1A19F9A948C837E766E6A676566676C71787E81878C8F92949492908C8886807F7A78747474747678797D7F808282838383838383838383838282828181807F7F7F7E7D7A7A79787878797A7E7F82868A8D8F9090908F8C8882807A76716E6B676A6B7073797F878D949A9CA09F9C99928C817A716A645F5B5B5F646A737D839096A0A6ABADABA59C92877E71675B555151535A606B767F8D9BA6ADAFB3B3B2A5998C80746758514E4E4E535A66737F8D9AA6AEB3B5B8B4AB9F928274675B514E4E4E4E5764707E8A96A3ADB4B8B8B4AEA5998678675D524E4E4E5157606C7987949CA6AEB3B3B2ABA19988806E615B534E4E535A646C797F8D96A0A6ABADABA6A0998C80766B645D58575A60666C767F8790969CA0A1A19F99928C827D746E67676566676C73797F82878D9092949292908C8883807E79767474747476797A7E7F80828383838383838383838383828282818180807F7F7E7D7A7978787878797A7E7F82878A8D909092908F8C86827F7A74706C6B6A6A6B70747A7F878F969B9FA09F9C999288807A7167615F5B5B5D646B737E87909AA1A8ADADA9A59B92867A6E645B535152555A646C7983909BA6AEB3B4B2AEA5998C806E61584E4E4E4E535D66737F909CA6AEB4B9B8B2AB9F92807464584E4E4E4E515A64707F8A96A3AEB5B9B8B4ADA1948278675B514E4E4E515764707D8895A0A9AFB3B4B2ABA195877A6E6158524E4E535A64707983909AA1A8ADADABA59F958880746B615B58585B606770797F8A92969CA0A0A09C999288817A746E676665676A6C73797F83888D90929492928F8C8883807E7A787474747476787A7E7F80818283838383838383838383838282818180807F7E7E7D7A7978767878797A7F7F83878A8F909290908D8A86817E79746E6B6A6A6A6C70767D818890969C9FA09F9B99908780786E67605B5B5B5F656C767F87929BA3A9ADADA9A19A8F82786C645B555151555B65707A83949CA8AEB3B4B2ABA199877A6B5F554E4E4E4E575F6B787F909CA8AFB5B9B8B2A89B8D807061554E4E4E4E515A66737F8D9AA6AFB5B8B8B3AB9F92817467584E4E4E4E515A64717F8A96A1ABB2B3B3B2A99F92867A6B5F55514E51555B65707D87909AA3A9ADADA9A59F9487807167615B57585B616A7179828A949A9CA0A1A09C999088807A716C676665676B6E747A7F838A8D90929292928F8C8782807E79767474747476797A7E7F80828283838383838683838383838282818180807F7E7D7A7A7978787878797D7F8183888C8F909292908D8886807E78716E6B6A676A6C71767E828A90969CA0A09F9B968F8680786E67605D5B5D60666E787F8A949CA3A9ADABA8A1998C80786B6158525152575D66717E8895A1A9AFB3B4B2AB9F92867A6B5F534E4E4E4E57606C798394A0A9B2B5B8B5B2A6998C806E5F554E4E4E4E535D6A767F909CA8B2B5B8B5B2A89B8D807164584E4E4E4E525A66737F8D96A3ADB2B4B3B2A89F928276675F57514E51575F66717E87949BA3A9ADABA8A39B92867D7167605B58585D646A737D838D959A9CA0A1A09B958F868078716B676565676B70767D7F838A8F92929292908F8C86827F7D79767474747678797D7F7F818283838383838383838383838282828180807F7F7E7D7A7A7978787878797D7F8183888C8F9092928F8D8883807D78716E6B6A6A6A6C73797F838A92969C9FA09F9A958D867E746B655F5D5B5D606670797F8A949CA5A9ADABA6A0998C8074675F57525153585F66737F8A96A0A9B2B4B3B2A89F928274675B534E4E4E5158646C7D8896A1A9B2B8B9B4AEA599887A6A5B524E4E4E4E55606B798394A0A9B3B8B9B5B2A69A8C806E61554E4E4E4E535D6A767F8F9BA6ADB2B3B3AEA59A8D8074675B534E4E5257606A747F8A959CA5A9ABABA8A1998F827A6E675F5A585A5F646C747F868F959B9FA0A09F9B958D868078706B676566676B70767D7F878C9092929292908D8A86817F7A787474747476787A7D7F80818283838383838686838383828282818180807F7F7E7D7A7A79787878797A7E7F8186888C8F9090908F8C8882"
    $bWav1 &= "807A76716C6A676A6B6E73797F838D949A9C9F9F9C9A948C827D746B645F5B5B5D646A717D838D96A0A6ABADABA59F94888071675F575251535A606A767F8D96A3ADB2B5B4AEA69B8F8074675B534E4E4E525A65707F8A96A3ADB3B8B9B4ABA1948678675B514E4E4E4E5761707D8794A0ADB3B8B8B4B2A599887A6B5F534E4E4E4E55606C7983909CA6AFB3B4B2AEA5998C8071675B524E515358606C787F8D96A0A6A9ADABA6A0998C80786C655D58585A5F656C767F8790969CA0A1A19F99948C837E746E6A676565676C71787E82888D9092949492908C8886807E7A787474747476787A7D7F80818283838383838383838382828282818180807F7E7E7D7A7A79787878797A7E7F82868A8C909292908F8C8882807A74706C6A676A6B70747A7F878F959A9CA0A09C999288817A7167615D5B5B5F646B737D83909AA1A8ABABA9A59B92867A70675B535151535A646C797F8F9BA6ADB3B4B3AEA5998C80716458514E4E4E535D66737F8D9BA6AFB4B8B8B3AB9F92817467584E4E4E4E4E5864707D8A96A3AEB4B8B8B4AEA5958678675B524E4E4E4E57606C7D87949CA8AFB3B4B2ABA199887D6E6158524E4E535A646C7983909AA1A6ABADABA59F958C80746B645B58575A60666E787F8A929A9CA0A1A19F99928C827D746E676565666A6C73797F82888D90929492928F8C8883807E7A767474747476787A7E7F80828383838383838683838383828282818180807F7E7E7D7A7A79787878797D7F7F83878A8D909090908D8C86817F7974706B6A676A6C70767D7F8790969B9FA0A09C99908880797067615D5B5B5F656C767F87909AA3A9ABABA9A59A8F827A6E615B535252535A646E7983909CA6AFB4B4B2ADA59988806E61574E4E4E4E535D6A767F909CA6AFB5B9B8B2A89F8F807161574E4E4E4E515A66737F8A96A5AFB5B9B8B4ADA1928276675B514E4E4E515864707D8A96A1A9AFB3B4B2ABA195867A6E6157514E51535A65707D83909BA1A8ABABA9A59C928880746A615B58585B606770797F8A949A9CA0A09F9C999288817A746C676666676A6E737A7F83878C8F90908F8E8D8A8681807F7B7877777777797B7C7F808081818282828282818181818181818180808080807F7F7D7D7D7C7C7C7D7D7F8080818384868787878685858280807E7C7979777778797B7D7F80838587898A8A8A88878482807E7B797776767778797B7E8082858789898A8A89888683807F7C7979777677777A7B7D80818385878889898887858481807D7B79787979797A7C7D7F808284858687878786858381807E7D7B7B7B7B7B7B7C7E7F808182838485858585848381807F7E7D7C7C7C7C7C7D7E7F80808182838383838382828180807F7E7E7D7D7D7E7E7F808080818182828282828281808080807F7F7F7F7F7F7F7F80808080808181818181818180808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808000"

    [/autoit] [autoit][/autoit] [autoit]

    Global $bWav2 = "0x52494646E442000057415645666D742010000000010001002256000044AC00000200100064617461C0420000F9FF0700F8FF0800F7FF0900F6FF0A00F5FF0C00F3FF0E00F1FF1000EFFF1300EBFF1700E6FF1D00DEFF2700D0FF3900020003038FFBF2F1DBEF2CEA2DE4EEEB56F35CF289F4ADF518F7FEFB39048C0A5A1443193819961A6E187115EA136C0D330599040703B2FEA1FE79FE3AFBF2FCE3FFB1FCECFC090121033A05AE0702089A09700B3F0AD407C007410869074F0575023D02AC0023FC74F839F86DF832FB46007AFF1EFEB900FFFFD6FC57FC40FCF6FAAEFBFFFAF2F78DF7DCF7CEF628F6FBF553F5B8F4C8F2EEEF5CEE46EE86EF05F26BF3AAF4D3F835FCC5FB1DFDCA001602A10319057A02E5FFBA00B40056003B022E038C03690493041506F409520D190F7110B7109712AE151415281349126D0F1F0C250BEE08A3058D05DC039CFF3AFE13FEB8FDAAFF7A01B801AF03F005390653061506910573051B046601B2002C0004FED6FC6DFA55F6EAF481F537F4B4F4C2F6CFF5D6F44DF467F2B8F24BF53EF646F6B7F66BF570F4EBF3D7F173F175F27CF2CBF207F39BF2D1F3E9F536F6C8F71BFB5BFD62FFED01B2024A030F067207EC06CF068906F8044D037F01E6FFAEFF4A0047013B02A603F405F308E40A5F0DC81032149016E117CD173F16D514BA122F0F040CAD0A6C098C0721069E04DD0353045904690450057C063E071307EF05CB043804FA024F0160FF2DFD79FB21FA96F7D6F4C2F37AF222F1FDF036F112F23FF490F501F504F53CF5CDF43EF46FF303F32EF305F3CBF155F01CEF71EE6AEECFED9AEDABEE0AF0E9F0B9F2EFF4F1F6CEF98BFCF9FDC0FF2002670462065008680A730B9A0C3E0CA20A390903084E074C064705B60526078208A90A040DA70FD4129715C316A7171D18DC165A14F311540F430DB30B9609CE071D069204C4034C030203C603DA04D30453059305090564056105F503F40182006DFE88FB58F90BF7D7F4D9F2F3F003EFABED5FEDDDECCAECEBECACED39EF8DF00DF2C4F3F1F4A4F5D6F55FF521F493F36BF3C1F2A3F256F320F444F5C3F659F763F8C1F9DEFA07FCE9FD1200F90127043A05D1054D06FF069907BD0777071E07110777064006F806A6074809170B640C5B0DCC0EA10FDA0FEF100A12DF12AA133914F2139912FF10EF0E950C2E0A0E0837062D04D4020F02A401E6018302EA02CA02C5027402ED017401220195008BFF3BFEA0FCF7FA48F97BF744F503F3D7F0A1EE3DEDECEC34EDDAEDDFEEEEEFCAF0ECF118F3C4F3F2F3B1F36BF3D0F267F271F288F260F251F282F293F23CF397F4FBF5CCF70BFA15FCF5FDE3FF3A013D020D033E03610345033303AC0341047B04EB045D055905E605B2065507A608230A480BA90C8B0E2110DF118713B4142F153E15C4148613FF113610640E890C5D0A9208C106D30445030B02240116017301BF01670204033F038903D0035B038E027D010300FFFD0CFC0FFA65F8ACF652F566F47DF3B1F210F2B5F151F17BF1DDF110F2ADF280F3E7F306F429F498F3BBF258F230F2D9F1BAF1B8F168F18CF1FEF1E9F290F428F6C7F797F947FBCCFC5AFEC9FFFF0057020E03880339045C04CC03530316039B02D502DA031D05F9062409F70ADF0C110FDC107D1221144E15F91547165C16CD15D0149613D911E00FA90D830B7A09E3078F066B057F04D7034904A004B4041C05570591042B040B046F034203E80267018EFFB1FDE2FB1FFA92F823F7DEF581F415F309F21FF183F0B5F0AFF079F0F3F078F1CEF04EF00DF02BEFE6EEFAEEBCEEA7EED8EED8EEE4EE52EF31F09FF177F387F5C1F7CFF9DBFB7AFDD7FEF1FF4E01AC025003C60332044C042C049E0402053A05E0056C0681062F074A086A09A60A4C0C230E8310E01292148615E915DC156E15D514F713DD127C112110A60E110D940B840A70094F08BD07A70780075C073207BC062106C705A8055405A8049103A501B9FF28FEE5FC75FB7EFA6FF9A8F7DCF56CF4E5F269F14BF053EF6DEE00EE18EE4EEE6FEE7AEE91EEF6EDF6EC83EC28ECC7EBD5EBF0EBB1EB46ECB8EDE0EE80F0B4F2B8F45DF63FF812FAAAFB6AFDE5FE1F00D0004E01D801FF01C1016C01BD013E024503D804BC06E508640B820D350F321108133B148815A316F81637177317FD168F166B16DB15BE14A1137E1239112C106D0FDC0EB30EC40EF00EA50EC70DC80C780BEE09B508C0076606E30461034E01FCFE0CFD0FFBE7F834F7A4F5C6F35CF22FF104F02FEFC0EE62EE1CEEBAED60ED3DED94ECC6EB29EB4AEA6AE97EE99CE960E9C7E9F3E997E9E6E902EB27EC1BEEA5F091F22EF406F67FF7F1F898FAAFFBDDFCEEFD8DFE2DFF1C00E000D0010D03810473060809E90A750C7F0E4C10FB114114801612185219FC19C4197B192B199F183418971797169C15A0144113EB11E31021108E0F040F390E8D0DC70CB30BD60AF209C508C007AA06D804E102FE003DFE1CFBB1F887F6B8F4AAF3A0F21BF17CEF31EE2AED54ECBEEB81EB9BEB37EBDBEAD7EA52EA77E902E91BE829E7F0E6F2E6D2E613E7B1E754E881E9EAEA48EC1FEE53F055F269F444F6D4F7A1F9A8FB42FDD3FE6B00930188021703AF03AD0410065007E708E60AC20CDD0E1811DC12B514AF163D185A19291A6E1A3B1A101A8819D518371871176E161B15BE13C312011240116A10C80F370F600E780D880C410B1F0A2609D407800631056E037B0183FF04FD88FAA7F899F682F4BCF2CDF003EF11EE48EDBFECC7ECBDEC6AEC23EC59EB34EA81E995E8ABE73CE727E759E7FDE786E8CDE878E916EA84EA7CEBC2EC0FEE26F06CF220F40EF658F8D0F91FF"
    $bWav2 &= "BC9FC33FE36FF6B005B0126028303D4041E06E207AC097E0BDA0DF80F001252145016EA17E4194C1BC71B581C301C301B771AD919CF180C1879174E161E150E1499125E1184107C0FA20E0A0E2C0D580C860B6B0AA709FB08F907BE063405BA022E00C0FDD9FA4CF875F6B5F4D0F243F1A5EFD8ED7DEC46EB31EA59E9B3E829E8F8E794E731E71EE70EE7BEE6BFE6E4E628E7E1E79CE8FEE8E9E939EB45ECA3ED8EEF5DF16EF37AF5FEF688F863FA03FCBCFD9AFFF10020026F0342041B05450638076508020A660B030D2D0F0811A51288140C167F170319FD19681A081B7D1B711B501BEF1AF1199B18211748157913DB117A10830FB20EDF0D720DDA0CCA0BC00AC90979082F07EA0526045E02B20085FE2FFC0AFADDF7DDF545F48FF2CDF040EFD5EDB9EC11EC63EBF0EAC9EA4EEAC0E982E927E9CDE87AE8FAE7A6E7C0E7E0E737E8CEE842E995E92FEAE5EABAEB4EED7DEF82F198F3C3F5D2F7E6F9E3FBB5FD84FF300168026603560456058706D207F808420AB00B260D9E0E3310D5114B13C6143C169017B7186619C919C5194B19CC189E18FF172E177016A415BC1410148013ED128912CB11FE10EF0FA30E620D4D0CFE0AB909A30853078B0571032C019BFE52FC15FADBF7F5F54DF48DF2E5F06EEF13EE41ED6EECA9EB17EB7AEAD7E9ADE979E9F3E8C6E892E80FE8DCE7F2E7FEE750E8CCE847E904EA12EB31EC8DED02EF63F0E4F18DF329F505F7D9F884FA70FC49FECEFF730124035A046D059F06F10778093A0BED0CCF0EB6108A123514BE154B17B618E719A81A1F1B251BEF1AB61A251A7019E0181518AC1646150814CD12BB11F51076101310B00F2B0F480E1E0DEF0BA80A01091A071905D1024E00D0FD6DFB1AF9D0F6BAF4A4F2CAF03EEFECEDBDECC6EBF4EA38EAB6E99FE989E94AE903E9A7E844E8AAE723E7B4E639E6BFE578E577E59FE526E6D6E6CCE742E9DEEAB1ECF5EE94F1FDF321F621F8AEF9F0FA64FCE7FD26FF51007C01AB02E1032A05AB066108190AF30BD70DA30FA711E713D6158A174B19BD1ABA1B5A1CB91C881C071C701B931A9E1999187A173416E214BA13CB122E12A81126117310750F740E600D300CFE0A9809C407C1055503A200ECFD3BFB5BF8AFF55BF352F158EFA3ED11ECA4EA70E98BE8B9E705E794E626E6B0E523E5B2E489E465E472E48EE49AE4E9E450E5D7E5AAE68FE772E86AE952EA78EB33ED08EFD5F0ADF25AF426F622F820FA0CFC12FECAFF0E016B02A6031605CF06A3086C0A840CE30E4211A813171667186C1A101C2C1DE61D211E191ECF1D091D031C2E1B521A9219B018B517B716DD1526157814E4132D135B1225118F0FFB0D710CDF0A7109EC07150629041902C2FF4CFD0DFBEBF8E8F6CAF4C0F2D3F007EF82ED26ECE0EAC2E908E931E83FE765E69EE5E0E43CE4C0E338E3FCE221E36BE3D3E3BDE408E62EE7F7E7DBE8FBE959EBFFECDBEEE6F01DF34FF55AF74EF926FBE5FC5AFEB9FF1C0190023804F705BC076909450B5E0DA00FD911FB1324160518BB19501BC91C221E6A1F3D2051203220DA1F3F1F871EC21DC11CA91B9C1A5A193F186E17CB162E1665153F140613C71174102C0FC40D140C440A2C08A7051B039D00E8FD2EFB5CF85DF533F273EF1CED09EB78E9E1E856E89BE7C4E619E6A0E548E52AE553E59EE59CE578E53DE5EDE4F3E43CE558E59DE55DE631E720E886E9F1EA83EC81EE8BF07BF2BAF427F758F996FBD4FDD7FFB701A2035605CE062A08A609190BA90C810E74103C12FA13FE15F717E219001CFE1D521F2720D1200521D52088200C203A1F451E1B1D6F1BD6197C183D17FA15E114DF13C712B6117010E00E510D010C8F0AD908D406B704290254FFA0FC1EFA94F723F5C1F223F0C2EDF7EB3DEAAEE850E717E616E590E41EE4C7E39BE348E3C3E24CE2E9E1E9E12FE24FE27CE2D4E218E394E374E434E52AE677E7A9E8F5E9BBEBBCED1DF0B0F207F52EF787F9CEFBE5FDF2FFED01AF036A052207D508BA0AC10CBE0EA1109512BB1423174B19281BD91C211E051FD81F54203F20DE1F481F601E541D601C7E1BA11A85194A180317E815F414EA139D1245110C10980EEA0C190B4F0965073205E6027900FCFD93FB23F975F6BBF34AF11FEF21ED57EBB3E92BE8DAE6C1E59DE4D3E370E3CAE2E9E13EE1D0E0C2E0E3E0E5E014E159E1A4E131E20CE3FDE32DE583E6C5E723E9B1EA53EC3DEE45F02DF223F465F672F880FAD6FC14FF3F0170037F058707DD091D0C430E82108812581461165C18261AE01B3E1D5C1E5D1FF71F2C207D206920A01FD71E301E2B1D091CE91A991963188317AF16E5154D157E146E133012B510360FD80D1E0C3C0A5708D10501037A0096FD96FAFBF75FF595F213F0BBED86EBD1E941E8DAE606E65CE5DEE49BE447E4D4E38BE30DE36CE242E21BE2DBE1FCE132E25BE22EE363E466E59FE62EE8BFE95CEB23EDF0EEDBF0CCF2A0F47EF674F831FADBFB63FDA5FE0B00D401B703C6052208410A4A0C8F0EA710D212411593178C198A1B141D2D1E3A1FDC1F1C208E2094200F205F1F611E3C1D261CE51ACA1912192918341782167D1527140313B0113310E70E840DE00B270A1D08BD056C0300014AFEBAFB22F988F60DF471F1B1EE59EC4FEA89E83DE740E643E58EE4DBE3CEE200E27BE114E1ECE005E11CE151E1B3E1E5E127E2D2E2D6E30CE56FE6D8E777E930EBB6EC41EEF5EFA5F184F3A5F576F734F922FBFCFC84FE3500420232042F063F08430A6A0CC80EF8101D137E15CE17CC19B11B341D6B1E641FDA1F13203B200720D01F7B1F7D1E871DDB1CEE1B061B901AE41918197718801742160E15991311128010B70EC70CD0"
    $bWav2 &= "0A910818068303AD00EFFD5FFBC1F827F6CFF37FF134EF65EDCAEB42EA25E910E8EEE6FAE515E51FE475E3D7E227E2C0E1C0E1D5E114E27BE218E3EDE3DDE4D0E514E794E8EAE933EB6AEC90EDEFEE7DF0FEF190F363F548F716F9D9FAB4FC98FE9800A902B204D7063309AA0BF50D22105B12B3140E172C191C1BD11C271E221FD81F5E20C5201E211121DB207E20E11F391FBE1EE71DEB1C191C2D1BEF1990181F17D6158814F0124511BE0FF00DED0BEE0993072A05E4026600C7FD7DFB2EF9C4F682F429F2BEEFACEDCCEB0EEA57E8C1E665E533E4F5E2E8E123E194E03DE024E04DE0B3E03FE1B2E1F4E172E239E319E422E560E6B1E702E973EAF7EB96ED5AEF49F135F3F5F48EF62BF8D5F96AFB03FDE9FE2901B10357060D09B70B3F0EBA103313A015F517F019881BB11C971D5F1EFE1E911F00202020E81F781FEF1E401E501D841CC01BC31AC919F2180418C61696156014F6128F1115105F0E6D0C350AE1077F0535030B01F7FEE8FCBAFA6EF8E5F551F3FEF0E7EEEBEC17EB51E977E7B8E53FE4F4E2FFE14BE1AFE03EE0E9DF9BDF66DF6EDFB5DF37E0F8E0E9E110E358E49AE5CFE6FCE73EE9ACEA2AECA4ED32EFDEF06AF2E7F386F53FF72DF959FB8FFDC2FFFF015B04B6060C09680BE00D4E10AE12EE141617EE18881AEF1BE01CA11D761E2F1F731F631F3D1FF81E571E801D9F1CA91BC51AEE19001911180B17DB1564140213A2116710240FA40DCF0BBD09A80798057C03790175FF50FDF8FA7CF8D7F519F3A1F079EE49EC3EEA98E8F5E664E521E4F7E2DBE10CE16FE0E7DFBADFE7DF44E0C6E047E106E216E337E465E5A8E6D8E710E949EA36EB42ECAFEDF6EE37F0DEF147F391F42CF6FAF7EEF930FC91FEFF006903B4052008E40A9B0D3910CB12DD14C4169018D819C61A8D1BE51B151C7F1CBD1CD61C0A1D0F1DC91C7C1C311CD31B6E1BE21A2B1A41191318AD162F158C13FB11AD10440FAE0D210C5F0A6108690679046B0282009CFE6DFC2BFA02F8D9F5C5F3CDF1FAEF50EEB2EC36EBA7E912E8AEE682E563E499E340E3FEE2EBE212E31DE329E3A7E384E469E59FE62CE895E9AFEABAEBDBEC06EE71EF2CF1DDF271F4F7F5A0F724F9AAFA70FC33FEE5FFB0017A03470555078609940B930DD70F1012E613A7152A172A182319301AEE1A6E1B171C851C8C1C7E1C771C3A1CC61B411B851A9D19B918DA17CB16841551143F13F411A910B10F7F0EFD0C7C0BA9099E07D105FC03F5011F002FFEF1FBEBF9D5F78BF597F3E7F148F0E3EE96ED44EC03EBD1E9A7E8B5E7F4E684E675E649E616E625E641E650E6CBE6A6E79AE8CDE93BEB54EC32ED2CEE35EF51F09FF109F355F4A6F5E3F6FEF71EF970FA05FCAFFD72FF8601C103D605D607C609970B690D550F1A118D12081445150216971638179A170918AE1813194D1990199C1967191A19B8184618CA17F416D815AF1455130112C9105B0FF20DBE0C3E0BA7094608BA061F05B60312025100DDFE4CFD6EFB9FF9BBF7B3F5D4F324F28DF03FEFF8EDBAECBAEBB7EA99E9D9E847E8B6E770E75BE74FE78DE7DCE716E8C5E8BDE9B9EAE5EB14ED04EEEFEEDFEF93F056F13EF214F306F41CF50FF629F77CF8E1F989FB41FDF9FED300AA023B04FC05F207B109770B630D030F7F10F9111E13E91381140015A6152B167016A216BD1679162516E7157F151C15AC14E013E5120B121611E20FB40E700D270C090BDD0999085B07FE0598042D03B4013400E4FEA4FD22FC9EFA17F9A2F758F620F5E2F3D2F2E1F1A1F065EF53EE61ED93ECE4EB11EB62EA04EAD1E9CDE9FEE956EAD3EA7AEB3DEC18ED1EEE2DEF2EF0DCF057F1FDF1C6F285F340F41EF5DEF595F680F777F89EF93CFBF7FC92FE3700EB01A40369052407C908630AE90B550D9B0EB10FA510891114126312DD125313A413E513F013BB1385133213C0124812BD1135118F10B00FB60ED00DE50CF30B220B680AC9091A093F082507F005D004A40367023001EFFF9FFE32FD97FBFAF97BF821F7D2F564F4F5F291F13AF0F2EEE5EDFCEC3CECD2EB86EB3BEB16EB1FEB4DEBA2EB0AEC9FEC6AED59EE51EF21F0D0F091F159F2E1F254F3FDF39EF420F5C8F584F65BF783F8EDF940FBA8FC3AFEECFFC901AC03990579074009D30A3A0C740D870E6D0FFF0F5110B31038119F11FA115412BC1218135D136B134A132E131B13D7125C12E1113A116010730F7C0E8A0DA80CB50B9D0A7D0953080D07B80574044D0365029A01C500C1FF5CFECDFC2EFB8CF9FFF792F643F5E5F384F238F1FCEF18EF6DEED7ED6AED12EDC7EC82EC6BEC6CECA7EC3EEDF1EDA0EE5BEF23F0ECF0A1F15BF22CF3ECF392F434F5CCF558F60DF7E8F7DDF806FA51FBA8FC0FFE88FF090195023004C80534079308060A650B950CA90DA80E6F0F2110BD103411A81128128912DC12211352135C134C1336130F13F412E212A4120A1235113310EF0E9D0D620C440B4B0A500939080207AF055F042E031202FC00E8FFCCFE98FD5CFC1DFB06FA02F9E3F7B7F686F550F409F3C1F187F065EF6FEEB5ED31EDD1ECB0ECB7ECDCEC42EDF1EDB0EE7EEF4BF009F1B5F156F2EFF2A2F347F4E9F496F527F6A1F635F7DAF791F87EF9A9FAEFFB3AFDA2FE3A00D7017C0343051607C808700AF80B420D5C0E510F04108910F4103D117411BB11FA110C12201239121C12011213121912E5118511F6103A106A0F8C0EA80DBF0CEA0B240B160AD708B3076406F304D103CA02A801A10075FF01FE9DFC53FBEBF998F88DF78FF692F588F467F33BF2FAF0E0EF23EF8AEEFEED9EED2DED99EC4DEC5CEC77ECCCEC79ED2BEECEEEA4EF65F01AF10CF202F3E8F3E9F4EAF5CAF6B9F78"
    $bWav2 &= "DF83CF902FACFFAADFBC4FCFEFD4EFFC7004702BB035E05F5067D08030A4C0B6C0C920D6F0E040FA90F22104D108510D41003112911641190119411861169112F11C2103510930FB80EC60DB90CA00B8D0AA109B808A10791066D051E04E102D801F100110038FF30FE09FDD9FB84FA2DF9FFF7E2F6CFF5C0F492F363F238F13EF091EF10EF9AEE4AEE10EEA0ED54ED6DED99EDD5ED48EEF3EEB6EFA8F0BCF19EF25BF320F4D4F48FF56DF651F706F8B2F852F9E7F9C3FA04FC5CFD93FECBFFFB000C0214036404D7053B07A008150A370B1E0C0C0DCD0D440EBC0E2D0F7B0FC90F17103E1039102C101E10F50FD00FC60FC70F980F3C0FA90EC90DCA0CBB0B910A4F093A0836070F06EB04DD03CE02EC013E018100D2FF2FFF38FEF6FCA8FB60FA17F9EAF7F1F603F6F7F4C7F3B2F29EF1A0F0FDEF9CEF3DEF20EF15EF0DEF1BEF41EF69EFD4EF8BF054F130F200F398F3FDF356F4C5F48BF56DF632F7F0F785F8EDF886F954FA38FB66FCB5FDDFFE12007201A302B003FC04390655079308E209EA0AC40B6F0CE60C410DA70D150E850EE70E180F300F0B0FD60ED60EE80EED0EF90E0C0FC70E460EBC0D080D360C800B890A600959084C0736064805530447037E02B101E300450095FFB0FEB9FD98FC6BFB62FA40F92BF82CF71CF60EF52EF44EF382F212F2B6F172F179F17DF144F11BF112F119F16DF11BF2E0F2A2F34BF4CCF43AF5A9F54AF623F7FAF7A3F83EF9AAF9FAF980FA4CFB26FC27FD5EFE80FF8700A201C902E6030C05290647076D086D09400A010B790BE30B530CB30C030D600DA60DC20DD50DD30DBE0DD40DF80D050EFE0DE70D9E0D250D7C0CA40BB40ACD09D608E907120732064F05560444034A028401E6007500160081FFC4FEF8FD07FD02FC2BFB6BFAA9F9EAF81DF82CF73FF658F57FF4DEF36EF33BF339F30FF3CBF2B5F2C2F2F6F26FF30CF4B9F459F5BEF501F64EF6B1F62CF7B4F736F8AAF82FF9AEF918FA81FA14FBE9FBE7FCF3FD0BFF1C001301BF015C022B0326043C0567065D071008A60820096809B3091C0A8C0AF80A4C0B8A0BB80BD50BE80B060C0C0C060C090CCA0B410BC60A3A0A930901097008CA073807BB0621067A05DF044D04C1033F03BC023402B1010801250032FF5BFE96FDCBFC0DFC5AFB7FFA74F961F876F79BF6F5F597F52FF5B8F46FF42CF4DFF3BDF3C4F3E0F333F4ACF411F55CF5BAF507F634F67FF6FEF69CF733F8B9F81AF960F9AAF904FA6EFA10FBE6FBCDFCA9FD7CFE41FFEBFF9D0077016C0261036604590502068906110788070A08AF084709D509510AA50AC50ADF0A1E0B6E0BB00BF20B1D0C1E0C040CD00B680BF00A660AB809FA0846089407D8060E064F058504B60310037E02E9016801F20057009AFFECFE47FE9FFD05FD71FCB6FBD1FAE2F9FFF822F872F7DFF649F6CCF568F5FFF49FF467F44FF450F476F4B0F4DAF408F53EF558F578F5CEF55BF6D6F639F7A4F703F83AF878F8E7F875F935FA19FBF2FBB3FC71FD3DFEFAFEC0FFA900A901A002890356040805A7054806E2067A072008CB086309D1090A0A1D0A1B0A2B0A4C0A7C0AC50AE60ACC0AA50A800A4D0A0E0AD4098D093809DD087408E70737077A06C50519058E041F04A303F6022E02530168008EFFD2FE12FE41FD6BFC7AFB8AFAB5F9F3F847F8BFF734F796F60EF698F520F5BCF47FF467F468F493F4EAF433F56BF59AF5B5F5C1F5F6F55BF6B4F6FDF640F773F7A3F700F893F84BF92CFA20FB07FCDAFCACFD72FE2BFFE4FFBD00A401830257030A04900404056C05D80567062007C4073608B40825097509E9098B0A1A0B910BEC0B180C070CD90B980B360BC10A490ACB0932099C0816087007C0062F069705FF049D0438049E03040362029301C700170060FFB3FE15FE69FDA6FCCFFB06FB42FA69F9AAF824F8AFF734F7DAF67FF614F6D2F5BCF59FF59CF5C0F5CCF5CCF5EAF501F624F67AF6D3F61CF76EF7C2F704F859F8CEF873F940FA17FBF8FBD4FC94FD60FE3FFFEEFF940068012B02CB02750306046504D1045805D4056A063A07FD078F0811098809E709410AA90A060B440B710B890B6E0B290BDC0A7C0AFB097109F4086F08EA077E07F9066106DC056505DE0467041404B00322038202CB010D016300B8FFF1FE20FE44FD4AFC52FB6DFAA9F909F97FF8FAF77EF7FBF699F662F639F631F653F67CF6AEF6E3F603F720F74DF763F770F797F7C2F7F1F72BF856F890F8EDF851F9B6F933FAC9FA7BFB4AFC16FDDDFDBBFE8EFF62003401E60185022703A703F6035704C2042A05A40523068906FB067007C00708085A089F08E8083E0979099709AA099A0967092009CA0876082008B1072B079906E5053705AC043B04F203D3039E033C03C8023902A4012601A5000C0075FFC5FEE0FDF0FC16FC47FB8FFAE7F93FF9CCF872F80CF8B9F779F73EF72AF72CF725F728F732F734F73CF75FF794F7E3F733F85EF875F8A2F8C8F8E9F830F98EF9FDF989FA22FBB3FB52FCF4FC8AFD37FEE0FE96FF6A002B01BF015A02F9027A0301048C0406057805EB054C069D06E206120752078607B107030852087D08B108BF0886084D082908F107CE07BC0788073907C6063606AE052C05BC045F04F7038403170393021A02AA012501910016008CFFDFFE3BFE93FDD6FC28FC9BFB1BFBABFA56FA05FAA4F938F9F3F8BBF87AF854F843F82AF825F838F850F867F893F8CCF8FEF830F969F9BAF9F6F92AFA7AFAC9FA1EFB98FB10FC79FCF4FC68FDCDFD31FEACFE2EFFB4FF3400A70011017F01F5017302F2027703030486040F05980509066006B406FB062B076C07B707DB07D207C207A00759071407E00698063906E705"
    $bWav2 &= "960545050B05DA04AA0472043904F103A203570304039502120299012201A200170083FFDFFE2EFE74FDB4FC0BFC93FB2DFBD8FAA3FA7CFA49FA23FA03FAD2F9A5F98BF970F94BF92DF911F9EDF8CAF8B5F8ADF8BEF8F3F839F970F9B9F928FAA4FA18FB96FB14FC8CFCFCFC5BFDBDFD10FE62FEB8FE0DFF6DFFE1FF5700B9001F018601E8015702CE023A039B03FD036204C40437059D05F00544068406B006D606E806E406D606B30682064606FD05B80583054205F104B004750430040004DB03A80371032903D0026C02070296012501AE002C00A0FF0CFF79FEF4FD72FDFBFC97FC39FCE8FB9EFB52FB02FBC5FA8FFA5BFA33FAFDF9B7F977F93BF90EF9F5F8FEF820F94BF974F9ADF9EFF93CFA99FAF8FA45FB97FBF1FB3CFC87FCEBFC3BFD7AFDC4FD0DFE4AFE8FFEDFFE34FF89FFEBFF6100EB007001FC018C020C037E03F6035F04BF0433059805DF05250662068406960699067D065B063E061B06F605D005AA05830559053705290528051C050305D6049D045C040E04B0034E03E5026202CC0127018300E5FF45FFA3FE12FE99FD27FDC5FC79FC36FC01FCD6FB99FB58FB22FBEFFAC8FAA1FA6DFA35FA05FAD5F9ADF9A0F9ABF9B5F9BFF9D0F9EEF927FA77FADBFA44FBB2FB12FC65FCACFCE7FC27FD6FFDB6FDFDFD5AFEBFFE27FF98FF04007500E4005001B9013002B6024603CB034004AD040B0557059A05D805FF052006340638062E061D060706F805FC0505061406280628061406EC05B70580053C05E2048C043004C6035A03EB026E02F20183010D0191002700C5FF5CFFFDFE9EFE3BFEE2FD8DFD31FDD2FC77FC17FCCDFB8CFB4BFB0CFBD3FA8DFA3FFAF5F9C8F9C0F9DBF9F9F90BFA1BFA24FA3BFA6AFA9AFAD1FA0FFB35FB4DFB81FBC9FB05FC4BFC98FCD9FC38FDB7FD45FEDCFE65FFD1FF3E00AC001F01AF013F02A602030356039303D6032F048004D9042E056F05A405D205F5050E0615060D060D06110610060F060D06EB05B30576052A05DB049E045D041104C70376031903C6027C022E02EC01AA014501CF005400C8FF3FFFB9FE2EFEB0FD34FDBEFC66FC11FCA5FB51FB0BFBB3FA6BFA46FA2FFA1BFA12FA0CFA12FA24FA2BFA2BFA2FFA35FA3DFA53FA6DFA91FAB4FACFFA02FB46FB81FBCCFB17FC60FCB8FC2BFDA9FD32FEC6FE4BFFC4FF3E00B20028019F010D027002C702100346036E03A503EF0335046E04A904ED0422053F056E059805AB05BE05D105CB05C205B5058F055E0535050505CC0496044A04FA03AD0359030C03CF0282023302E3017E011A01C40070001700B6FF38FFBAFE45FECCFD60FD12FDBDFC6AFC24FCD5FB91FB70FB4EFB1EFBFAFAD6FAB8FAA5FA91FA7CFA74FA78FA86FA98FAA2FAB8FADAFAEFFA0AFB35FB62FB9DFBDAFB10FC57FCB8FC2AFDACFD35FEB9FE32FFA5FF0F007A00E7005301BB01090235026902A202CD0205034F039603EA0342048204BB04F10410053205590579059E05C205BD05A1057A053F050B05DF04AA047B044F041104D703AA0373034E033B030F03D8029D024602D5015E01D7004C00BAFF21FF91FE0DFE91FD2CFDD2FC6DFC15FCDFFBAFFB8CFB80FB6FFB58FB4CFB3EFB2BFB2BFB29FB19FB09FBFFFAF2FAEBFAF5FAF6FA06FB24FB49FB77FBAAFBE6FB24FC6EFCBFFC23FD85FDE3FD43FE9AFEE0FE1CFF6EFFC1FF0A006000BC000A016501C1010C026502CD0226037D03D5031D046104A204D504FF0424053305480552053B0526050805D00497046A043B041C040304D703AF03950368033A031303DF02AA0276022A02CF016E01FB0085000F0095FF1DFFB6FE54FEFBFDADFD60FD1CFDE9FCB1FC7EFC5CFC2EFCF4FBBEFB8CFB5CFB40FB22FBF7FACFFAAFFA96FA8FFA92FA92FA9DFAB6FAD8FA0CFB50FB98FBDCFB18FC59FCB1FC10FD6CFDC6FD28FE85FECFFE23FF75FFBAFFFFFF45008900D0001F017D01EC015E02CF024803B70308045804A504D604FE0422052A052A053C0543053B0528050805EA04C8049804730458042F040A04E803BD039103720348031103D60294024102DE017A011A01B9005F000900B1FF55FFF2FE8BFE1EFEB2FD57FD13FDD8FC99FC60FC25FCEAFBB6FB8EFB62FB3FFB2CFB1FFB17FB17FB1BFB2AFB3EFB57FB77FB9EFBBBFBD4FBF2FB08FC37FC84FCCDFC24FD88FDD9FD2AFE7CFEC1FE07FF58FFA6FFEFFF3B008400D4002A017401CD0132028A02DE024303A103FD034F048F04BA04D504EE0405051B051E051505FE04DE04BA0498047B0469045D044C04370424041304FC03DD03BF0397035E031D03CA026302FC0195012001A6003300D6FF88FF3DFFF4FEAEFE6CFE2EFEF6FDC7FD91FD53FD0EFDC0FC6CFC23FCEAFBB8FB7FFB3EFB03FBD5FAAAFA98FA9FFAAEFAD1FA04FB30FB67FBA9FBEBFB37FC8DFCD3FC1EFD6BFDA4FDDEFD11FE34FE61FE96FEC0FEFAFE47FF8AFFDBFF3E009D0004017A01EA015502C0021B036403A603D4030104330469049704BF04CE04CB04BE04B404A504A704B104AC04A3049304760456043A040A04D703A00354030403B2024F02EA018A012201C6007A003200DDFF86FF2AFFCAFE7CFE3FFE08FEDCFDB0FD77FD3AFDF2FCA7FC6CFC37FC00FCD0FBA1FB5EFB25FBF5FAD0FABFFAADFA9DFAA6FABAFACBFAFEFA30FB5BFB9EFBF3FB45FCA5FC09FD52FD88FDB4FDD9FD09FE41FE7CFEC1FE0CFF52FFA0FFEEFF32008400F3005F01D9015B02C10212035E039C03D2031D045F049304B204B1049F049404890488049C04AC04AF04AA049B0484046D0453043C041D04E803B2037D032803C4026302FD0198014401F800A90059000100A0FF3BFFE0FE94FE47FE02FEC5FD7FFD3AFDFCFCBFFC8DF"
    $bWav2 &= "C70FC51FC23FCEBFBA3FB4DFB03FBC2FA96FA88FA8BFAA1FAC5FADEFAFFFA31FB5DFB93FBE8FB3FFC92FCE5FC1BFD3FFD72FDB2FDF5FD4AFEA8FE03FF5AFFA1FFE8FF3D009E0003017001DB013D029802E1021C0350037E03A703DC030A042C044C04610462045F045E04640470048D04A804B704B804B10495046E0454043A040A04CD0385032A03BF025B020A02C60188014701FE00A5004000DBFF80FF30FFF1FEBDFE86FE4CFE03FEB2FD63FD1EFDD7FC9CFC64FC2CFCF9FBC0FB80FB4FFB36FB30FB3AFB4EFB6EFB8BFBA6FBBCFBDDFBFEFB36FC75FCA7FCDDFC11FD2EFD38FD4CFD65FD92FDD6FD21FE6AFEB7FE07FF66FFD0FF4400BF003E01B20113026A02BA02F80223033D0351037403A003C803E603FC03F903F303F8030404210448046104650461045504460445043F0427040704D30389033703E30289023402D80175012901E900AA0060000D00AEFF55FF06FFBFFE82FE3CFEE3FD87FD35FDEEFCC6FCB3FC98FC72FC48FC16FCE3FBBFFBA1FB8BFB7DFB79FB76FB7CFB8EFBAAFBD9FB09FC3CFC7BFCC2FCF9FC25FD41FD54FD6FFD8FFDB9FDFBFD49FE8DFECFFE15FF67FFD3FF4B00BD0028018E01E201220259028402B102E102160351038903B003C303C703BA03B303BA03C603D103DB03DE03DC03D803CF03CA03CE03CE03C003A20375033C03F602AC026B023302F901C40197015F011A01CF007A002400DBFFA4FF6DFF30FFDFFE80FE1AFEC2FD79FD4BFD2FFD09FDD5FCA0FC6EFC3EFC1FFC11FC10FC16FC1CFC22FC2CFC36FC46FC5EFC7AFCA7FCDDFC03FD1CFD28FD28FD30FD49FD69FD92FDC5FDFCFD2EFE65FEA7FEF3FE3FFF9BFFFBFF5500B20012016801B7010D0251028502B902E1020003280358037D03A003C503E8030D043204500461045F045704480429040E040204E803B803880359031D03E502B302780246021602DB019A015F011F01D7009D0062002400EAFFA3FF4AFFE9FE89FE42FE0EFED6FDA3FD69FD1AFDCAFC86FC44FC14FCF9FBDEFBC0FBAEFB9EFB91FB8BFB8CFB9EFBBFFBE4FB0BFC31FC4DFC67FC8CFCACFCD0FCFBFC24FD50FD7EFDACFDE6FD35FE89FEE9FE4EFFB7FF1F007800C7001C016D01B901020246028102C002FE023203630383039603AB03C103DF03FD031E0435043D043A043E044604450439042404F303B1036C032603E802B0027A0245020902CF01990157010F01C900860041000C00D5FF81FF2CFFDBFE7CFE27FEECFDB3FD71FD27FDCEFC78FC32FCF9FBCEFBABFB8DFB77FB64FB4DFB46FB56FB6DFB8DFBBBFBE7FB15FC44FC5DFC70FC8AFCA5FCC5FCF4FC1EFD44FD6FFD9DFDD5FD22FE88FEFBFE70FFDDFF3F00A30005016501B901FD01370268028A02A502C602E402FE021F03360355038803C103EB03170440045C0472047D047E04720456042E04F803B50375033E030103BB02800249020A02CB0194015E012401ED00B0006B002200D2FF78FF14FFAAFE51FE0BFEC4FD84FD42FDFAFCA8FC63FC2AFC05FCF8FBF3FBE9FBDFFBD7FBC7FBC4FBC7FBCDFBDFFBFCFB16FC3DFC68FC8EFCB1FCCFFCE7FC0AFD37FD62FD95FDC9FDFAFD3BFE8CFEE1FE48FFBCFF1D007600D30024017401C90109023F0273029802C202F602250354038703A903C303E8030E043804660483049704A904A904A6049F0486045B042304D703890347030203BA0275023002EB01AA0163011901DB009E00650034000200C3FF7CFF28FFCDFE7FFE3BFE03FEC9FD88FD43FDFAFCB0FC6FFC3FFC14FCECFBD1FBB8FBA5FBA6FBB5FBC6FBE0FB07FC30FC5DFC86FCA0FCABFCBBFCCDFCE8FC13FD44FD6FFD96FDBDFDEBFD2CFE7DFED8FE3CFF9BFFFBFF6800CE0030019501EB01290267029702BA02E0020603210337034B0362038403B203DA03FD031B042B043A04510463046F04710455042404EE03B20375033F03FE02B90276022502D80196014F010E01DC00A4006D003E000000ADFF59FF02FFA9FE5AFE10FECDFD88FD3CFDF3FCB1FC78FC55FC41FC34FC2BFC29FC25FC1DFC12FC0EFC0FFC1CFC2EFC46FC65FC84FC96FCA1FCB1FCC3FCD5FCF7FC1BFD45FD76FDAFFDE9FD31FE89FEEAFE52FFB3FF12007300CE0026017C01C90107023E0272029F02C302E202F60206031503290347036C038A03A803C603D603E403FB03080406040304F103D703B7038C0357031D03DC02A10268022602E701AF0165011E01E700B300770042000600BFFF73FF1DFFC7FE76FE29FEE4FDACFD72FD36FD05FDDDFCBDFCA3FC85FC6FFC60FC4FFC42FC3FFC35FC25FC23FC28FC34FC4CFC6EFC88FC9FFCBCFCDBFC03FD34FD62FD8CFDBAFDF2FD30FE75FEC6FE20FF7DFFD0FF1C006200A900F30040018A01C70101022C0252027C02A002BE02E30206031E03410366037E038E039F03B203CA03E80300040E040404E503BA03830342030103C1027C023C02FD01BE01870154011B01E500B800880052002400EBFFABFF65FF11FFBCFE75FE35FEF3FDB1FD63FD0EFDC8FC90FC6AFC54FC49FC47FC4AFC4BFC5BFC79FC96FCADFCC7FCE0FCF3FC04FD0DFD04FDFEFC02FD09FD1FFD43FD69FD90FDBEFDEBFD24FE6BFEB7FE02FF4AFF95FFE5FF3A008C00DF002F017301B001DF01FE01190237024902530266028302A102C402F1021A03400364037F039C03BA03CC03D503C3039B036A0338030603DB02B4028A0259021C02D601920155011D01F000C4009B00790055002800F3FFB6FF74FF36FFFEFEC5FE8BFE4BFE04FEBCFD78FD42FD24FD0DFDF8FCE6FCD8FCCAFCC2FCBEFCBDFCBDFCC4FCCDFCD0FCD4FCD8FCDAFCE1FCF0FC07FD29FD4EFD7AFDA3FDCCFDFEFD3BFE7CFEC4FE15FF62FFA4FFE5FF1E0057009000C9"
    $bWav2 &= "00FE0028014E017701A001C601EB01100235025B028202A902D60203032803440361038403A203BC03CD03CB03B9039E037E0357032803F602BF027D023802FB01C0018901580127010001E600C9009D0066002600E6FFB3FF8AFF63FF35FFFEFEB4FE61FE17FED8FDA7FD7FFD59FD33FD12FDF3FCD8FCC4FCAFFCA9FCB4FCBDFCCDFCE3FCF3FCFBFC03FD04FD05FD1AFD33FD49FD64FD82FDA4FDD1FD10FE56FEA0FEEAFE2DFF6BFFA3FFD6FF11004C007F00B200E8001601420171019B01CA01FD01270250027D02A602CB02F5021A033C03620382039903A503A3039A038B036E034D032D030603D702A702740246021F02F001C00194016D0145011901E700B20075003400EDFFA9FF64FF26FFF0FEB2FE6DFE2FFEF4FDBAFD90FD6AFD46FD2BFD0DFDE6FCC7FCBEFCB7FCB5FCB6FCB2FCB2FCB5FCB2FCB1FCB0FCB5FCC8FCDFFCF9FC23FD57FD84FDB7FDF3FD2BFE6DFEBCFEFFFE3DFF82FFC5FF030041007800AA00DD0008012F015D019001C001F3011C0242026C029802BD02E10200031E033E03570370038B039B039D039C0395037F03650346031803E802BD028A0251021C02E301AF01840154012101EB00AF0070002E00ECFFACFF78FF40FF0AFFD3FE9AFE5EFE29FEF6FDCCFDB0FD96FD7AFD5FFD42FD25FD16FD0BFDFAFCECFCE2FCDCFCD7FCD3FCD3FCD7FCD8FCDEFCEDFC09FD2DFD53FD7AFDA0FDCEFD05FE46FE90FEDFFE28FF6CFFA8FFDDFF110048007E00B100E2001001390160018501A901D101FA0129025C028D02BD02E9020C032B0349035E0370037B0375036603500330030F03F402D702B5028D025E022902F601C30197016B013B010A01DD00AF00820050001900DFFFA4FF68FF2EFFFBFEC0FE82FE45FE0BFEDAFDB4FD94FD69FD3CFD1FFD0AFDFDFCFEFC02FD01FDFDFCF7FCECFCEAFCF2FCF9FC01FD04FD0DFD20FD3AFD58FD83FDADFDD8FD0AFE45FE8AFED7FE20FF5DFF98FFCBFFFBFF330067009200B800D700F4001801420166018B01B201DD010802350263028C02AD02CA02E502FD0215032803260316030303EE02D002AD028C02690243021902EB01BC01930170014D0127010401E700C400960066003200FCFFC6FF91FF5BFF27FFEDFEAAFE65FE2AFEFAFDD6FDB8FDA1FD8DFD80FD78FD71FD6BFD62FD5CFD58FD54FD58FD63FD6EFD74FD74FD6EFD6AFD70FD7EFD93FDACFDC8FDECFD17FE48FE85FECAFE12FF55FF92FFCBFF04003C007300A300C500DD00F400070118012D014B016E019501B901DC0101022902500272029202B302D002E302F002FD02FE02EF02D502B0028602640248022602FD01D301A601730143011901F700DC00BD0099007700550032000A00DEFFB6FF91FF67FF3EFF16FFE9FEBAFE8FFE5FFE32FE13FEF7FDE0FDCEFDBAFDA8FDA0FD9DFD98FD98FD9AFD9AFD95FD8EFD90FD9FFDB2FDC6FDE4FD01FE1FFE43FE69FE8EFEBEFEF3FE27FF59FF89FFBAFFEAFF16003C0066009600C500EC000D0126013A014A0153015F0174019201B301D901FB0122024A0267027B029002A102AB02AB029B027F026102440223020702EE01D201B10187015C013A011A01F600D200B300990081006700460027000100D7FFAEFF87FF60FF38FF0DFFD8FEA8FE7CFE57FE3CFE2AFE17FE07FEFCFDEEFDE0FDDDFDE1FDE7FDEBFDEAFDE6FDDEFDD8FDD6FDDDFDE7FDF9FD0CFE21FE38FE55FE7AFEA9FEDEFE11FF44FF73FF9DFFC1FFE3FF010020003F005D0078009100A900BC00CA00DC00F600160136015D018501A701C401DA01E701F40106021B022A02350239023302280219020702F601E601CF01B801A3018701660140011801F000D000B30096007800590032000B00E4FFC4FFAEFF99FF83FF69FF4CFF26FF04FFE2FEBFFEA3FE88FE70FE5DFE47FE2FFE20FE0FFEFAFDF0FDECFDE6FDE6FDEBFDEBFDF0FDFDFD0FFE29FE3DFE4CFE5EFE71FE87FEA8FED3FEFCFE26FF4FFF6EFF8EFFAFFFCEFFF0FF130031004B00650078008C00A600BF00DE0005012D014F016F018B01A101B501C601D501E801FC010A020E020302F101DC01C001A70198018B017A016A015801430133011B010001E900DA00CA00B700A1007E0055002800FBFFD2FFB4FF98FF76FF50FF23FF02FFE6FECFFEBFFEB7FEAEFEA7FEA2FE95FE8BFE84FE76FE69FE5EFE4DFE37FE26FE0DFEFAFDF3FDF6FD05FE1EFE3CFE5EFE81FEA0FEC0FEEBFE13FF39FF5EFF79FF8EFFA7FFBCFFCAFFE0FFF8FF0C002500400055006B007E009100A900CD00F4001D013E0158016F018801A101BB01D201E501F001EE01E001D001C201B701AB01A30199018A01770160014A013801290118010801F600E100CD00B5009400740059003E002100FFFFD7FFABFF7CFF4EFF28FF08FFEDFEDDFEC9FEB3FEA3FE9AFE8EFE86FE85FE80FE75FE6BFE5BFE45FE37FE2FFE28FE27FE2CFE36FE46FE59FE6BFE82FE98FEB8FEE1FE03FF29FF50FF6EFF8AFFA8FFC4FFE0FFFFFF16002900400054006300730084009A00B800D900F9001D013C015801710186019D01B201BF01C801C801BE01AD019F0195018A018601800174016501560142012E011F0111010201F300E300CA00A9008700600036001400FAFFDEFFC1FFA6FF82FF5CFF3DFF23FF0CFFF8FEEAFED9FEC5FEB1FEA1FE90FE85FE7EFE7CFE7AFE79FE78FE75FE6FFE69FE65FE63FE68FE72FE7AFE84FE90FEA0FEB4FED0FEF2FE19FF3BFF5CFF7AFF96FFAEFFC7FFE0FFF8FF10002900410058006A007C009200A600BE00D700F3000B011D012E0144015B0171018C01A501B601C101C401BD01B101A10191017F01690153013C0124010901F200DD00C900B800A70094007F006A004F0036001D000"
    $bWav2 &= "500EFFFD5FFB8FF9AFF79FF57FF3DFF25FF0FFF01FFF3FEE5FED6FECBFEC3FEC2FEC3FEC3FEBDFEB4FEA7FE98FE8DFE85FE85FE89FE8CFE91FE98FEA6FEB8FED0FEE8FE08FF2AFF4EFF6CFF8BFFA5FFBCFFD2FFE6FFF9FF0D002300320040004E005F0074008C00A400C100E000FB0012012501350142014F015A0165016C0172017501700165015D015701510147014001330122010E01F600DE00CD00BA00A5008F007D006C005B0049003700270014000300F2FFDEFFCAFFB6FFA0FF8CFF77FF61FF4BFF38FF1FFF0BFFF9FEEAFEE0FED9FED4FED1FECDFEC6FEBEFEBBFEBCFEBEFEC5FECDFED6FEE3FEF4FE06FF18FF2DFF42FF56FF6DFF82FF98FFABFFBAFFC8FFD8FFECFF04001A002F00400050005E006D007D008F00A100B400C500D300E300F10000010F011D0124012B013001310130012A0126011C010F010501FC00F100E600D800CC00BD00B200A5009300820071005E004A00360024001200FEFFEBFFD7FFC3FFB0FF9CFF88FF73FF62FF54FF45FF39FF2EFF22FF15FF0DFF06FFFEFEFCFEFAFEF6FEF0FEEAFEE6FEE7FEEAFEEDFEF5FEFCFE05FF0FFF1CFF29FF3AFF4AFF5FFF76FF8DFFA4FFB9FFC5FFCCFFD5FFDFFFEBFFF9FF050010001B0023002F003E00520069007C008B009A00A700B100BE00C600CE00D600DC00DF00E100E500E500E200DA00D400CA00C500BE00B600AC00A4009C0094008C0086007C00700063005500450037002B001D000C00FCFFEAFFD7FFC4FFB2FF9FFF8FFF85FF79FF6CFF62FF56FF4CFF45FF41FF3FFF40FF3FFF3DFF37FF32FF30FF2DFF29FF28FF28FF2BFF30FF32FF38FF3EFF4AFF56FF61FF74FF88FF9AFFA7FFB4FFBFFFCAFFD7FFE3FFEEFFFBFF04000D000F00150022002F003E004D0060007000850094009F00AC00BA00C400CB00D200D600D900D800D300CE00C800C100BA00AF00A800A0009A00930091008C008500820079006B006000550048003C00350026001B000E00FEFFEFFFE2FFD4FFC5FFB7FFA9FF9CFF8FFF81FF75FF6AFF61FF5CFF59FF51FF4EFF4DFF4CFF4CFF4EFF51FF52FF56FF5AFF5CFF60FF64FF67FF68FF6BFF6FFF75FF7FFF88FF92FF9CFFA9FFB2FFBDFFC7FFD3FFE0FFEDFFFAFF0800140020002B0034003D004B005900640073007F008A0094009F00A400AA00AF00AF00AD00AB00A800A500A300A0009C00980092008D00880083007F007A0072006B0064005B00530049003D00310027001A000C00FFFFF1FFE5FFDAFFCFFFC5FFBEFFB6FFADFFA8FFA1FF9CFF95FF90FF8AFF87FF85FF82FF7DFF76FF6FFF6AFF62FF5DFF59FF59FF5CFF60FF65FF6AFF71FF78FF7EFF87FF95FFA2FFAEFFBBFFC6FFD1FFDAFFE3FFEAFFF2FFFAFF010007000D0014001B002100290035003F004D005600600067006F00740077007A007D007E008200860087008A008B008B0088008600860083007F007A0076006F0065005C0053004A0044003F003900340030002B00230018000F000500FBFFF1FFE6FFDAFFCFFFC4FFB9FFB0FFA7FFA2FF9CFF98FF94FF93FF8DFF8AFF86FF85FF84FF84FF85FF86FF86FF87FF88FF89FF8BFF8DFF8EFF91FF96FF9CFFA4FFACFFB2FFB8FFBFFFC5FFCCFFD3FFDDFFE6FFEFFFF7FF000004000B001200180023002D00380040004D0056005F0066006E00730078007A007B007C007A00790078007900790079007800750072006E006A0067005E00570053004D00450040003B0035002F0027001E0016000C000400FAFFF2FFECFFE5FFDAFFD1FFC5FFBAFFB2FFA9FFA3FF9DFF9BFF97FF93FF91FF8EFF8CFF8CFF8CFF8DFF8EFF91FF94FF97FF9AFF9EFF9FFFA0FFA1FFA2FFA5FFA9FFADFFB1FFB6FFBBFFC2FFC6FFCBFFD1FFD9FFE1FFE9FFF1FFFBFF050010001900250030003A00420048004C004E00540055005A005D00610064006600660067006A006A006B006B00690067006600620060005C0058005100490040003B0034002F00280022001D001500100008000300FCFFF3FFE9FFDEFFD5FFCEFFC8FFC0FFBAFFB5FFB1FFAEFFABFFA8FFA6FFA6FFA2FF9EFF9CFF9BFF98FF98FF97FF97FF98FF9AFF9CFF9DFF9FFFA3FFA6FFA9FFADFFB3FFB7FFBCFFBFFFC4FFCAFFD3FFDBFFE4FFECFFF6FFFEFF03000A0010001A001F0025002C0034003B00400045004A004E005200560057005C005D005F005F0062006000610061005D005B00580054004E004A0045003F003A00370032002E00270023001C00190014000F000B000500FDFFF6FFEDFFE6FFE0FFD8FFD1FFC9FFC4FFBFFFBBFFB8FFB6FFB3FFB0FFAEFFACFFABFFAAFFA8FFA8FFA7FFA7FFA9FFAAFFABFFACFFAFFFAFFFB2FFB5FFB8FFBDFFC1FFC5FFCAFFCEFFD3FFDBFFE0FFE8FFEDFFF5FFFAFFFFFF06000D00130019001E00230028002B003000330038003C004000440047004B004E00510051005200510050004F004D004C0049004600430040003C003A003600340031002F002C00290025001E00190014000D000600FFFFF8FFF1FFECFFE6FFE1FFDDFFD8FFD5FFD2FFCFFFCEFFCCFFCCFFCAFFC7FFC7FFC2FFC1FFBFFFBEFFBCFFBDFFB9FFB7FFB8FFB9FFBAFFBEFFBEFFC1FFC4FFC7FFCBFFD0FFD4FFDBFFDFFFE4FFEAFFF0FFF6FFFDFF00000200050007000A000D0012001300170019001D002100260027002C002E003200350039003D0040004000430042004200410040003D003A00360033002F002E002C0029002700240024002100200020001C0019001400100009000300FCFFF6FFF0FFE9FFE5FFDFFFDCFFD9FFD8FFD6FFD5FFD4FFD1FFD0FFCFFFCEFFCDFFCDFFCDFFCCFFCDFFCCFFCDFFCEFFD0FFCEFFCFFFCFFFCEFFCEFFCFFFD2FFD4FFD7FFD9FFDDFFE0FFE4FF"
    $bWav2 &= "E8FFEDFFF0FFF4FFF8FFFCFF0000050008000D001100140018001B001F002000230023002600280029002C00300031003400320033003300340035003400330030002E002A0028002500240021001E001B001A001A0019001700130011000D00090007000200FDFFF9FFF5FFEFFFEDFFE9FFE6FFE3FFE0FFDDFFDDFFDBFFDAFFDAFFD9FFD8FFD7FFD7FFD5FFD6FFD5FFD6FFD3FFD3FFD4FFD5FFD5FFD6FFD5FFD7FFD7FFDAFFDBFFDEFFE0FFE3FFE3FFE6FFEAFFEDFFF1FFF5FFF9FFFCFF01000400070008000B000E0011001400170017001A001A001C001D0020002100240022002400250025002600270025002500240023002300220021001F001F001F001D001C001B001800160011000E000B00090004000100FDFFF9FFF3FFF0FFEEFFECFFEBFFEAFFE9FFE8FFE8FFE8FFE7FFE6FFE4FFE3FFE0FFE0FFDEFFDBFFDAFFD8FFD8FFD8FFD8FFD9FFDBFFDCFFDEFFDEFFDFFFE1FFE3FFE5FFE8FFE9FFEAFFEAFFECFFEFFFF1FFF3FFF6FFFAFFFCFFFFFF03000400070009000A000D000F001000110011001400130015001600190019001A001C001C001C001C001D001D001C001B001A001800170015001400110011000F0010000F000F000D000C000A0009000600040002000000FCFFF9FFF6FFF4FFF3FFF1FFF0FFEFFFEDFFEEFFECFFECFFECFFEBFFEBFFEAFFE9FFE8FFE8FFE6FFE4FFE4FFE4FFE4FFE4FFE4FFE3FFE4FFE4FFE5FFE7FFE8FFEAFFECFFEDFFEEFFF0FFF3FFF4FFF6FFF7FFF8FFFAFFFBFFFDFFFFFF000003000400060008000A000C000D000E000F000E001000100011001200130014001500150015001600160015001500140014001300140013001100110011000F000F000D000C000B000B0009000A0007000600030002000000FEFFFCFFF9FFF8FFF6FFF5FFF3FFF3FFF2FFF2FFF1FFF1FFF2FFF2FFF1FFF1FFF0FFF0FFF1FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF2FFF1FFF3FFF3FFF4FFF5FFF5FFF6FFF7FFF7FFF8FFF9FFFAFFFBFFFCFFFDFFFFFF00000000000001000300030004000400040004000400040004000400050005000600050005000500050005000500050005000500050005000400040004000400030003000300030002000200020001000100000000000000000000000000FFFFFFFF000000000000000000000000"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $tWav1 = DllStructCreate("byte[" & BinaryLen($bWav1) & "];")
    DllStructSetData($tWav1, 1, $bWav1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $tWav2 = DllStructCreate("byte[" & BinaryLen($bWav2) & "];")
    DllStructSetData($tWav2, 1, $bWav2)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _Play()
    Switch @GUI_CtrlId
    Case $cButton1
    _PlayFromMem($tWav1)
    Case $cButton2
    _PlayFromMem($tWav2)
    EndSwitch
    EndFunc ;==>_Play

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
  • Audio Recorder MP3/OGG/WAV incl. Schedule & AGC

    • eukalyptus
    • 30. August 2011 um 10:23

    Der Sourcecode ist im Zip-Archive dabei.

  • Edit - Feld so groß wie der Text

    • eukalyptus
    • 25. August 2011 um 23:42

    Hi

    du kannst die Größe der Schrift auslesen und damit die Größe des Edit berechnen:

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GuiScrollBars.au3>

    [/autoit] [autoit][/autoit] [autoit]

    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()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CalcEditSize()
    Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
    $iEditH = $iCnt * $iFontHeight
    GUICtrlSetPos($cEdit, 10, 10, 300, $iEditH + $iFontHeight)
    EndFunc ;==>_CalcEditSize

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Cleanup()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hProc)
    EndFunc ;==>_Cleanup

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    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...

  • OCR - Brainstorming

    • eukalyptus
    • 17. August 2011 um 23:11

    Ich hätte da eine Idee - hast du zufällig einen Beispieltext (Screenshot) zum ausprobieren?

  • bmp 2 jpg konvertieren

    • eukalyptus
    • 15. August 2011 um 11:57

    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:

    [autoit]

    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

    [/autoit]

    Und die Funktion von UEZ hat sowieso schon die entsprechenden Parameter eingebaut.

    Hier mein Benchmarkscript: Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    E

    Dateien

    BMP2JPG.zip 3,84 MB – 216 Downloads
  • Unterschied zwischen Timer Funktionen?

    • eukalyptus
    • 15. August 2011 um 11:51

    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...

  • Unterschied zwischen Timer Funktionen?

    • eukalyptus
    • 15. August 2011 um 11:29

    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

  • bmp 2 jpg konvertieren

    • eukalyptus
    • 15. August 2011 um 10:47

    Hier die Ergebnisse meines Vergleichs:

    Code
    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™