Seite 1 von 1

Quicklame 1.0

Verfasst: 01.11.2013 13:03
von es_91
QuickLAME

Damit der code funktioniert, muss die lame.rar entpackt im selben Verzeichniss wie das Programm sein.

Wandelt .wav und .mp3 in .mp3 nach leistungsbasierten Datenraten.

Code: Alles auswählen

; PureBasic 5.00

Enumeration
  #Dataratewillbe
  #Mode_fastest
  #Mode_fast
  #Mode_moderate
  #Mode_slow
  #Mode_slowest
  #Progress
  #Convert
  #OutputDir
  #Settings
  #Close
  #Performance
  #Compression
  #Showtecsa
  #Showtecsb
  #Usecbr
  #Filename
EndEnumeration

Enumeration
  #German
  #English
EndEnumeration

Dim Language.s(16, 2)

Language(#Dataratewillbe, 1) = "Data rate will be"
Language(#Dataratewillbe, 2) = "Die Datenrate beträgt"
Language(#Mode_fastest, 1) = "Fastest mode."
Language(#Mode_fastest, 2) = "Schnellster Modus."
Language(#Mode_fast, 1) = "Fast mode."
Language(#Mode_fast, 2) = "Schneller Modus."
Language(#Mode_moderate, 1) = "Moderate mode."
Language(#Mode_moderate, 2) = "Ausgewogener Modus."
Language(#Mode_slow, 1) = "Slow mode."
Language(#Mode_slow, 2) = "Langsamer Modus."
Language(#Mode_slowest, 1) = "Slowest mode."
Language(#Mode_slowest, 2) = "Langsamster Modus."

Language(#Progress, 1) = "Progress"
Language(#Progress, 2) = "Fortschritt"
Language(#Convert, 1) = "Convert"
Language(#Convert, 2) = "Konvertieren"
Language(#Outputdir, 1) = "Set output directory"
Language(#Outputdir, 2) = "Ausgabeverzeichniss festlegen"
Language(#Settings, 1) = "Settings"
Language(#Settings, 2) = "Einstellungen"
Language(#Close, 1) = "Close"
Language(#Close, 2) = "Schließen"

Language(#Performance, 1) = "Performance"
Language(#Performance, 2) = "Rechenleistung"
Language(#Compression, 1) = "Compression"
Language(#Compression, 2) = "Kompression"
Language(#Showtecsa, 1) = "Show technical preference"
Language(#Showtecsa, 2) = "technische Einstellungen"
Language(#Showtecsb, 1) = "Hide technical preference"
Language(#Showtecsb, 2) = "technische Einstellungen"

Language(#Usecbr, 1) = "use constant bitrate"
Language(#Usecbr, 2) = "konstante Bitrate verwenden"

Language(#Filename, 1) = "Filename"
Language(#Filename, 2) = "Dateiname"

OpenPreferences("Quicklame.pref")

quality = ReadPreferenceLong("Quality", 3)
lang = ReadPreferenceLong("Language", 1)

ClosePreferences()

window = OpenWindow(#PB_Any, 0, 0, 480, 480, "QuickLame", #PB_Window_BorderLess|#PB_Window_ScreenCentered)

listicon = ListIconGadget(#PB_Any, 20, 20, WindowWidth(window)-40, WindowHeight(window)-40, Language(#Filename, Lang), 400)

EnableGadgetDrop(listicon, #PB_Drop_Files, #PB_Drag_Link)

image = CreateImage(#PB_Any, 512, 512)

StartDrawing(ImageOutput(image))
For y = 0 To 512
  LineXY(0, y, 512, y, RGB(180-y/4,180-y/4,180-y/4))
Next
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(20, 0, "QuickLAME", RGB(240, 240, 240))
image0 = GrabDrawingImage(#PB_Any, 0, 0, 80, 20)
image1 = GrabDrawingImage(#PB_Any, 80, 0, 400, 20)
image2 = GrabDrawingImage(#PB_Any, 0, 460, 480, 20)
image3 = GrabDrawingImage(#PB_Any, 0, 0, 20, 480)
image4 = GrabDrawingImage(#PB_Any, 460, 0, 20, 480)
StopDrawing()

canvas0 = CanvasGadget(#PB_Any, 0, 0, 80, 20)
canvas1 = CanvasGadget(#PB_Any, 80, 0, 400, 20)
canvas2 = CanvasGadget(#PB_Any, 0, 460, 480, 20)
canvas3 = CanvasGadget(#PB_Any, 0, 0, 20, 480)
canvas4 = CanvasGadget(#PB_Any, 460, 0, 20, 480)

Repeat
  
  Select WaitWindowEvent()
        
    Case #PB_Event_GadgetDrop
        
        string$ = EventDropFiles()
        For x = 1 To CountString(string$, Chr(10)) + 1
          AddGadgetItem(listicon, #PB_Any, StringField(string$, x, Chr(10)))
        Next
        
    Case #PB_Event_Gadget
        
        If EventType() = #PB_EventType_RightClick
          menu = CreatePopupMenu(#PB_Any)
          MenuItem(001, Language(#Convert, Lang))
          MenuBar()
          MenuItem(002, Language(#Outputdir, Lang))
          MenuBar()
          MenuItem(003, Language(#Settings, Lang))
          DisplayPopupMenu(menu, WindowID(window))
        ElseIf EventType() = #PB_EventType_LeftButtonDown
          If Not EventGadget() = canvas0
            oldx = WindowX(window)
            oldy = WindowY(window)
            olddx = DesktopMouseX()
            olddy = DesktopMouseY()
            dragmode = #True
          EndIf
        ElseIf EventType() = #PB_EventType_LeftButtonUp
          dragmode = #False
        ElseIf EventType() = #PB_EventType_LeftClick
          If EventGadget() = canvas0
            popup = CreatePopupMenu(#PB_Any)
            MenuItem(11, "QuickLAME")
            MenuBar()
            OpenSubMenu("Language")
            MenuItem(20, "Deutsch")
            MenuItem(21, "English")
            If Lang = 2
              SetMenuItemState(popup, 20, 1)
            ElseIf Lang = 1
              SetMenuItemState(popup, 21, 1)
            EndIf
            CloseSubMenu()
            MenuBar()
            MenuItem(10, Language(#Close, Lang))
            DisplayPopupMenu(popup, WindowID(window))
          EndIf
        EndIf
        
    Case #PB_Event_Repaint
        
        StartDrawing(CanvasOutput(canvas0))
          DrawImage(ImageID(image0), 0, 0)
        StopDrawing()
        StartDrawing(CanvasOutput(canvas1))
          DrawImage(ImageID(image1), 0, 0)
        StopDrawing()
        StartDrawing(CanvasOutput(canvas2))
          DrawImage(ImageID(image2), 0, 0)
        StopDrawing()
        StartDrawing(CanvasOutput(canvas3))
          DrawImage(ImageID(image3), 0, 0)
        StopDrawing()
        StartDrawing(CanvasOutput(canvas4))
          DrawImage(ImageID(image4), 0, 0)
        StopDrawing()
        
    Case #PB_Event_CloseWindow
        
        End
        
    Case #PB_Event_Menu
        
        If EventMenu() = 001
          
          DisableWindow(window, #True)
          
          window2 = OpenWindow(#PB_Any, 0, 0, 240, 100, Language(#Progress, Lang), #PB_Window_WindowCentered|#PB_Window_SystemMenu, WindowID(window))
          
          progress = ProgressBarGadget(#PB_Any, 10, 25, 220, 20, 0, 100)
          button = ButtonGadget(#PB_Any, 80, 70, 80, 20, "Abbrechen")
          
          Select quality
            Case 0
                If monoencoding
                  If cbrmode
                    presetstring$ = "-b 160 -m m -q "+Str(9-morequality)
                  Else
                    presetstring$ = "--preset 160 -m m -q "+Str(9-morequality)
                  EndIf
                Else
                  If cbrmode
                    presetstring$ = "-b 320 -q "+Str(9-morequality)
                  Else
                    presetstring$ = "--preset 320 -q "+Str(9-morequality)
                  EndIf
                EndIf
            Case 1
                If monoencoding
                  presetstring$ = "--preset 144 -m m -q "+Str(8-morequality)
                Else
                  presetstring$ = "--preset 288 -q "+Str(8-morequality)
                EndIf
            Case 2
                If monoencoding
                  If cbrmode
                    presetstring$ = "-b 128 -m m -q "+Str(7-morequality)
                  Else
                    presetstring$ = "--preset -m m 128 -q "+Str(7-morequality)
                  EndIf
                Else
                  If cbrmode
                    presetstring$ = "-b 256 -q "+Str(7-morequality)
                  Else
                    presetstring$ = "--preset 256 -q "+Str(7-morequality)
                  EndIf
                EndIf
            Case 3
                If monoencoding
                  presetstring$ = "--preset 120 -q "+Str(6-morequality)
                Else
                  presetstring$ = "--preset 240 -q "+Str(6-morequality)
                EndIf
            Case 4
                If monoencoding
                  If cbrmode
                    presetstring$ = "-b 112 -m m -q "+Str(5-morequality)
                  Else
                    presetstring$ = "--preset 112 -m m -q "+Str(5-morequality)
                  EndIf
                Else
                  If cbrmode
                    presetstring$ = "-b 224 -q "+Str(5-morequality)
                  Else
                    presetstring$ = "--preset 224 -q "+Str(5-morequality)
                  EndIf
                EndIf
            Case 5
                If monoencoding
                  presetstring$ = "--preset 104 -m m -q "+Str(4-morequality)
                Else
                  presetstring$ = "--preset 208 -q "+Str(4-morequality)
                EndIf
            Case 6
                If monoencoding
                  If cbrmode
                    presetstring$ = "-b 96 -m m -q "+Str(3-morequality)
                  Else
                    presetstring$ = "--preset 96 -m m -q "+Str(3-morequality)
                  EndIf
                Else
                  If cbrmode
                    presetstring$ = "-b 192 -q "+Str(3-morequality)
                  Else
                    presetstring$ = "--preset 192 -q "+Str(3-morequality)
                  EndIf
                EndIf
            Case 7
                If monoencoding
                  presetstring$ = "--preset 88 -m m -q "+Str(2-morequality)
                Else
                  presetstring$ = "--preset 176 -q "+Str(2-morequality)
                EndIf
            Case 8
                If monoencoding
                  If cbrmode
                    presetstring$ = "-b 80 -m m -q "+Str(1-morequality)
                  Else
                    presetstring$ = "--preset 80 -m m -q "+Str(1-morequality)
                  EndIf
                Else
                  If cbrmode
                    presetstring$ = "-b 160 -q "+Str(1-morequality)
                  Else
                    presetstring$ = "--preset 160 -q "+Str(1-morequality)
                  EndIf
                EndIf
          EndSelect
          
          For x = 0 To CountGadgetItems(listicon)
            thread = RunProgram("lame.exe", presetstring$+" "+Chr(34)+GetGadgetItemText(listicon, x)+Chr(34) + " " + Chr(34)+path$+Left(GetFilePart(GetGadgetItemText(listicon, x)), Len(GetGadgetItemText(listicon, x))-Len(GetExtensionPart(GetGadgetItemText(listicon, x)))-1)+".mp3"+Chr(34), "", #PB_Program_Open)
            time = ElapsedMilliseconds()
            SetGadgetState(progress, 100.0*x/CountGadgetItems(listicon))
            
            Repeat
              If WaitWindowEvent(#True) = #PB_Event_CloseWindow Or EventGadget() = button
                KillProgram(thread)
                Break 2
              EndIf
              sekunden = (ElapsedMilliseconds()-time)/1000
              SetGadgetState(progress, 100.0*x/CountGadgetItems(listicon) + 100.0/CountGadgetItems(listicon) * (1-(1.0/(sekunden+1))))
            Until Not ProgramRunning(thread)
          Next
          
          CloseWindow(window2)
          DisableWindow(window, #False)
          
        ElseIf EventMenu() = 002
          path$ = PathRequester("", "C:\")
        ElseIf EventMenu() = 003
          showtecs = #False
          window2 = OpenWindow(#PB_Any, 0, 0, 480, 180, Language(#Settings, Lang), #PB_Window_SystemMenu|#PB_Window_WindowCentered, WindowID(window))
          SetWindowColor(window2, RGB(120, 120, 120))
          text02 = TextGadget(#PB_Any, 20, 40, 80, 20, Language(#Performance, Lang))
          text03 = TextGadget(#PB_Any, 400, 40, 80, 20, Language(#Compression, Lang))
          If cbrmode = #False
            trackbar = TrackBarGadget(#PB_Any, 20, 60, 440, 20, 0, 8, #PB_TrackBar_Ticks)
          Else
            trackbar = TrackBarGadget(#PB_Any, 20, 60, 440, 20, 0, 4, #PB_TrackBar_Ticks)
          EndIf
          SetGadgetState(trackbar, quality)
          hyperlink = HyperLinkGadget(#PB_Any, 340, 160, 140, 20, Language(#Showtecsa, Lang), RGB(240, 240, 240))
          SetGadgetColor(hyperlink, #PB_Gadget_BackColor, RGB(120, 120, 120))
          text01 = TextGadget(#PB_Any, 20, 100, 440, 40, "")
          Gosub NameText01
          check01 = CheckBoxGadget(#PB_Any, 20, 180, 440, 20, Language(#usecbr, Lang))
;           check02 = CheckBoxGadget(#PB_Any, 20, 163, 440, 20, "better quality (slower)")
          check03 = CheckBoxGadget(#PB_Any, 20, 206, 440, 20, "mono encoding")
          SetGadgetColor(check01, #PB_Gadget_BackColor, RGB(120, 120, 120))
;           SetGadgetColor(check02, #PB_Gadget_BackColor, RGB(120, 120, 120))
          SetGadgetColor(text01, #PB_Gadget_BackColor, RGB(120, 120, 120))
          SetGadgetColor(text02, #PB_Gadget_BackColor, RGB(120, 120, 120))
          SetGadgetColor(text03, #PB_Gadget_BackColor, RGB(120, 120, 120))
          DisableWindow(window, #True)
          Repeat
            Select WaitWindowEvent()
              Case #PB_Event_CloseWindow
                  Break
              Case #PB_Event_Gadget
                  Select EventGadget()
                    Case hyperlink    
                        showtecs = 1 - showtecs
                        If showtecs = 1
                          SetGadgetText(hyperlink, Language(#Showtecsb, Lang))
                          ResizeWindow(window2, #PB_Ignore, #PB_Ignore, #PB_Ignore, 240)
                        Else
                          SetGadgetText(hyperlink, Language(#Showtecsa, Lang))
                          ResizeWindow(window2, #PB_Ignore, #PB_Ignore, #PB_Ignore, 180)
                        EndIf
                    Case trackbar
                        quality = GetGadgetState(trackbar) * (1+GetGadgetState(check01))
                        monoencoding = GetGadgetState(check03)
                        Gosub NameText01
                    Case check01
                        If GetGadgetState(check01) = #True
                          oldstate = GetGadgetState(trackbar)
                          SetGadgetAttribute(trackbar, #PB_TrackBar_Maximum, 4)
                          SetGadgetState(trackbar, oldstate/2)
                        Else
                          oldstate = GetGadgetState(trackbar)
                          SetGadgetAttribute(trackbar, #PB_TrackBar_Maximum, 8)
                          SetGadgetState(trackbar, oldstate * 2)
                        EndIf
                        quality = GetGadgetState(trackbar) * (1+GetGadgetState(check01))
                        monoencoding = GetGadgetState(check03)
                        Gosub NameText01
                    Case check03
                        
                        quality = GetGadgetState(trackbar) * (1+GetGadgetState(check01))
                        monoencoding = GetGadgetState(check03)
                        Gosub NameText01
                  EndSelect
            EndSelect
          ForEver
          quality = GetGadgetState(trackbar) * (1+GetGadgetState(check01))
          cbrmode = GetGadgetState(check01)
;           morequality = GetGadgetState(check02)
          monoencoding = GetGadgetState(check03)
          CloseWindow(window2)
          DisableWindow(window, #False)
        ElseIf EventMenu() = 10
          Break
        ElseIf EventMenu() = 11
          MessageRequester("Info", "QuickLAME v. 1.0 OMEGA"+Chr(10)+Chr(10)+"(C) Enrico Seidel, 2013. All rights reserved."+Chr(10)+Chr(10)+"This program is free and OpenSource."+Chr(10)+Chr(10)+"Check for updates and/or news on bit.ly/17YveZL .")
        ElseIf EventMenu() = 20
          Lang = 2
        ElseIf EventMenu() = 21
          Lang = 1
        EndIf
          
  EndSelect
  
  If dragmode
    dx = DesktopMouseX() - olddx
    dy = DesktopMouseY() - olddy
    ResizeWindow(window, oldx+dx, oldy+dy, #PB_Ignore, #PB_Ignore)
  EndIf
  
ForEver

OpenPreferences("Quicklame.pref")
WritePreferenceLong("Quality", quality)
WritePreferenceLong("Language", lang)
ClosePreferences()

End

NameText01:
Select quality
  Case 0
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_fastest, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(320/(1+monoencoding))+" kbit/s.")
  Case 1
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_fast, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(288/(1+monoencoding))+" kbit/s.")
  Case 2
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_fast, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(256/(1+monoencoding))+" kbit/s.")
  Case 3
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_moderate, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(240/(1+monoencoding))+" kbit/s.")
  Case 4
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_moderate, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(224/(1+monoencoding))+" kbit/s.")
  Case 5
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_moderate, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(208/(1+monoencoding))+" kbit/s.")
  Case 6
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_slow, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(192/(1+monoencoding))+" kbit/s.")
  Case 7
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_slow, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(176/(1+monoencoding))+" kbit/s.")
  Case 8
    SetGadgetText(text01, "["+Str(quality)+"] "+Language(#Mode_slowest, Lang)+" "+Language(#Dataratewillbe, Lang)+" "+Str(160/(1+monoencoding))+" kbit/s.")
EndSelect
Return
lame.rar:

http://development-lounge.de/download/file.php?id=674