Spektrum (musik) GDI+

  • ich habe XP-Fans Script gesehen und dachte nur:" cool!sowas kann ich doch bestimmt auch hinkriegen!muss mir nur genau angucken wie das dort läuft!" (ok die "_Tower" funktion ist fast komplett übernommen 8) )
    gesagt getan.
    es ist aber wirklich nichts im gegensatz zu XP-Fans script! einfach nur ne kleine übung....
    hier script, ihr benötigt aber den anhang wg. bass.dll/bass.au3 etc.! :

    Spoiler anzeigen
    [autoit]

    #include <Bass.au3>
    #include <BassConstants.au3>
    #include <BassTags.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIplus.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    $fftstruct = DllStructCreate('float[128]')
    OnAutoItExitRegister("OnAutoItExit")

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

    _BASS_STARTUP(@ScriptDir & '\BASS.dll')
    _Bass_Tags_Startup('BassTags.dll')
    _BASS_Init(0, -1, 44100, 0, '')

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

    If @error Then
    MsgBox(0, 'Error', 'Sound konnte nicht Initialisiert werden!')
    Exit
    EndIf
    $file = FileOpenDialog('Bitte wählen Sie eine Sounddatei aus!', '', 'MP3 Datei (*.mp3)')
    If @error Then
    Exit
    EndIf
    $Form1 = GUICreate("Form1", 1280, 700)
    $Label1 = GUICtrlCreateLabel("", 0, 0, 461, 28)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    GUISetBkColor(0x000000)
    GUISetState()
    ;~ GuiSetOnEvent(-3,"OnAutoItExit",$Form1)
    HotKeySet("{ESC}","OnAutoItExit")
    _GDIPlus_Startup()
    $distance = 7
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(1280, 700, $hGraphic)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $Pen1 = _GDIPlus_PenCreate(0xFF00FF00)
    $hBrush1 = _GDIPlus_BrushCreateSolid(0xFFFFF2FF)
    $hBrush2 = _GDIPlus_BrushCreateSolid(0xFFFFF2FF)

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

    Global $hFormat = _GDIPlus_StringFormatCreate()
    Global $hFamily = _GDIPlus_FontFamilyCreate('Arial')
    Global $hFont = _GDIPlus_FontCreate($hFamily, 20, 1, 2)
    Global $tLayout1 = _GDIPlus_RectFCreate(100, 70, 500, 35)
    Global $tLayout2 = _GDIPlus_RectFCreate(100, 105, 500, 35)

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

    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    $ID3Title = _Bass_Tags_Read($MusicHandle, '%IFV1(%TRCK,%TRCK. )%IFV2(%ARTI,%ICAP(%ARTI), Nichts) - %IFV2(%TITL,%ICAP(%TITL) , Nichts )')
    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    $ID3Album = _Bass_Tags_Read($MusicHandle, '%IFV1(%ALBM,%IUPC(%ALBM))')
    GUICtrlSetData($Label1,$ID3Title&" - "&$ID3Album)
    _BASS_ChannelPlay($MusicHandle, 0)
    $mal = 8
    If @error Then
    Exit
    EndIf

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

    While Sleep(1)
    _Tower()
    WEnd

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

    Func OnAutoItExit()
    _BASS_Stop()
    _BASS_Free()
    _GDIPlus_Shutdown()
    AdlibUnRegister()
    Exit
    EndFunc ;==>OnAutoItExit

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

    Func _Tower()
    _GDIPlus_GraphicsClear($Buffer, 0xFF000000)
    $level = 300
    _GDIPlus_PenSetWidth($Pen1, 19)
    _BASS_ChannelGetData($MusicHandle, DllStructGetPtr($fftstruct), $BASS_DATA_FFT256)
    For $i = 1 To 63 Step 1
    If $i > 5 Then $level = 500
    _GDIPlus_GraphicsDrawLine($Buffer, 20 * $i, 400*$mal, 20 * $i, 400 - DllStructGetData($fftstruct, 1, $i) * $level*$mal, $Pen1)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    Next
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0,0,1280,1200)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
    EndFunc ;==>_Tower

    [/autoit]

    Edit:\\ habe nun eine neue version die nen bissel anders aussieht!

  • ich bekomme immer die msgbox(Sound konnte nicht Initialisiert werden!) augegeben?!?

    mfg Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Scripte mit bass.dll müssen im X86 Modus laufen:

    [autoit]

    #AutoIt3Wrapper_UseX64=n

    [/autoit]

    mfgE


    Da lag wohl das Problem. Ich werds mal ausprobieren.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.