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
http://development-lounge.de/download/file.php?id=674