Mp3 Suche in Laufwerken
Übersicht

BlitzPureBetreff: Mp3 Suche in Laufwerken |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Einfacher MP3-Player !
Mein Problem war, das ich eine Software brauchte um schnell mal Verzeichnisse zu durchsuchen und um zu erfahren, ob sich in den Verzeichnissen MP3 Dateien befinden. Gut das kann man mit vielen anderen Programmen auch (Explorer,Freecommander usw.) aber ich wollte, das per Mausklick die Datei abgespielt wird, nun habe ich viele Lieder auf meinem Rechner, aber kenne ich zu Namen des Liedes auch die Melodie ? Nein , also ist das hier rausgekommen. es wird die BASS.dll (Version Hex = 02030003 wird benötigt) verwendet. BlitzBassStudio von Abrexxes Was fehlt sind noch Play und Pause Button, dann noch Lautstärke ändern usw. ich bekomme es nicht hin, vernünftig den Quellcode zu formatieren (ich benutze den Standard Editor BlitzPlus) viele Variablen sind hier jetzt noch überflüssig, mache sie demnächst weg und versuche den Code aufzuräumen, leider fehlt mir immer die Zeit dazu. Viele Beispeilcodes aus dem Blitz Forum sind hier mit eingeflossen. Danke schön an deren, die die Code Schnipsel gepostet haben. Die Buttons Spectrum 1 und 2 haben noch keine Funktion !! Achtung das Programm ist OpenSource, ich will damit kein Geld verdienen und oder mich daran bereichern ! eine Bitte noch , ich bin wahrlich kein Profi und wenn Fehler in meinem Code sind (davon gehe ich aus) bitte mich nicht gleich in der Luft zerreissen-- Vielen Dank (ich bin auch keine 25 Jahre mehr, lach) Es wird noch eine Grafik (png Bild ) benötigt ! (ich weiss nicht wie ich hier im Forum ein Bild mitschicken kann.) Breite : 645 Höhe : 20 Bittiefe : 32 Name der Datei muss Vumeter.png heißen ! Zeile 43 : Natürlich auch anders , wenn man dann den Code anpasst , z.B. "C:\Bilder\meine.png" Code: [AUSKLAPPEN] ; Einfacher MP3-Player !
; Mein Problem war, das ich eine Software brauchte um schnell mal Verzeichnisse zu durchsuchen und um zu erfahren, ; ob sich in den Verzeichnissen MP3 Dateien befinden. ; Gut das kann man mit vielen anderen Programmen auch (Explorer,Freecommander usw.) ; aber ich wollte, das per Mausklick die Datei abgespielt wird, nun habe ich viele Lieder auf meinem Rechner, aber kenne ich zu Namen des Liedes auch die Melodie ? ; Nein , also ist das hier rausgekommen. ; es wird die BASS.dll (Version Hex = 02030003 wird benötigt) verwendet. BlitzBassStudio von Abrexxes ; Was fehlt sind noch Play und Pause Button, dann noch Lautstärke ändern usw. ; ich bekomme es nicht hin, vernünftig den Quellcode zu formatieren (ich benutze den Standard Editor BlitzPlus) ; viele Variablen sind hier jetzt noch überflüssig, mache sie demnächst weg und versuche den Code aufzuräumen, leider fehlt mir immer die Zeit dazu. ; Viele Beispeilcodes aus dem Blitz Forum sind hier mit eingeflossen. ; Danke schön an deren, die die Code Schnipsel gepostet haben. ; Die Buttons Spectrum 1 und 2 haben noch keine Funktion !! ; Achtung das Programm ist OpenSource, ich will damit kein Geld verdienen und oder mich daran bereichern ! ; eine Bitte noch , ich bin wahrlich kein Profi und wenn Fehler in meinem Code sind (davon gehe ich aus) bitte mich nicht gleich ; in der Luft zerreissen-- Vielen Dank (ich bin auch keine 25 Jahre mehr, lach) Include "D:\blitzplus\bass.bb" ; ; ;-------------BASS Initialisierung--------- ; Const BASSMAXIMUM%=65 ;Spektrum-Balkenhöhe ; für die Spectrum Anzeige : Vielen Dank ABREXXES !! Const BASSSMOOTH#=4 ;Horizontale-Weichzeichnerstärke Const PEAKBASSAGRESSIVITY%=16 ;Peakagressivität spectrum = CreateBank(1024) ; bank for data transfer to make the visualisation NPeakBank= CreateBank(1024) ;Umgerechneter-Spectrumanalyser APeakBank= CreateBank(1024) ;Alter-[NPeakBank]-Für-Differenzberechnung LPeakBank= CreateBank(1024) ;Background-Falling-Lines-Position RXPosBank= CreateBank(256) ;Reale-Lese-Position-Einer-Bank*4 For Q=0 To 255 PokeByte(RXPosBank,Q,Floor(Q/8.0+(Q*Q*Q/106000))) Next ;--------BASS Init--------------- If Not BASS_Init(-1,44100,0,0,BASS_NULL) Then RuntimeError "Bass not ready"; Fehler Init fehlgeschlagen BASS_Init(-1,44100,0,0,BASS_NULL) ; Bass Initialisieren version = BASS_GetVersion() ; Welche Bass Version ; Deklarationen Global win=CreateWindow("Suche MP3 in Ordner",450,200,900,750,0,33) ; Window Fenster erstellen (win) cnv=CreateCanvas(0,50,900,430,win) SetBuffer CanvasBuffer(cnv) ClsColor 0,0,0 ; Hintergrund Farbe des Canvas Global buffersize% = 4096 Global volume = 100 Global Volume_Meter = LoadImage ("D:\Vumeter.png") Global fft Global pic$ ; Variable Ordner auswählen Global font=LoadFont("Arial",14,0); Font laden (1) Global fonttxt=LoadFont("Arial",14,1); Font laden (2) Global fonttag=LoadFont("Arial",18,0) Global matrixfont=LoadFont("Arial",28,0) Global test$ Global box=CreateListBox(0,480,900,270,win) Global TAGID, a$,vu$ Global xad$ SetGadgetFont(box,fonttxt) ok=CreateButton("Exit !",0,0,120,50,win) ;create button new_search=CreateButton("Neue Suche !",120,0,120,50,win) ;create button auswahl= CreateButton("Ordner auswählen ",240,0,120,50,win) mpstop= CreateButton("Information",360,0,120,50,win) mpvol_up= CreateButton("Volume +",480,0,120,50,win) mpvol_down = CreateButton ("Volume -",600,0,120,50,win) Spec_1= CreateButton ("Spectrum 1",720,0,90,50,win) Spec_2= CreateButton ("Spectrum 2",810,0,90,50,win) timer=CreateTimer(10) timer1=CreateTimer(10) lchan=0 fft=CreateTimer(60) Local ms= MilliSecs() Repeat ; Hauptschleife Anfang Color 64,64,64 Cls Zeit = (MilliSecs() And $7fFFffFF) cpu# = BASS_GetCPU() Local bef_e=SelectedGadgetItem(box) If WaitEvent(1) Then Select EventID() Case $803 End Case $401 Select EventSource() Case auswahl pic$ = RequestDir("Ordner Auswählen") If pic$="" Then Notify("Keine Auswahl eines Ordners"):End getfiles(pic$) Case new_search ClearGadgetItems box pic$ = RequestDir ("Wählen Sie einen Ordner aus...") getfiles(pic$) If pic$ = "" Then Notify ("Wählen Sie bitte ein Laufwerk oder ein Ordner aus") Case box a$=GadgetItemText$(box,SelectedGadgetItem(box)) If CountGadgetItems(box) <>1 Then vu$ = " Read" Else vu$=" False " music = BASS_StreamCreateFile(0,a$,0,0,BASS_STREAM_PRESCAN) BASS_ChannelPlay(music, BASS_TRUE) If lchan <> 0 BASS_ChannelPause(lchan) EndIf lchan = music Case mpstop AppTitle "Information" x = Confirm("Bass Version !" + Chr$(13) + "Hex : "+Hex$(version)+Chr$(13)+ Chr$(13)+"Titel : " +Chr$(13)+getidtag(a$,1)+Chr$(13)+"Interpret : "+Chr$(13)+getidtag(a$,2)+Chr$(13)+vu$) Case mpvol_up BASS_SetVolume(100) Case mpvol_down BASS_SetVolume(20) Case ok Notify ("Beenden von Truempi !") BASS_Free End End Select End Select EndIf vumono = BASS_ChannelGetLevel (music) vuleft = BASS_MakeLoWord (vumono) vuright = BASS_MakeHiWord (vumono) If MilliSecs() > time +25 ;LEVEL Verzögerung 25ms Volume_Meter time = MilliSecs() hibar = Int (vuleft/256) hibarrechts = Int (vuright/256) lobar =Abs (hibar) lobarrechts =Abs (hibarrechts) anzahl_proz# = hibar + hibarrechts richtig_proz = hibar / anzahl_proz * 100 falsch_proz = hibarrechts / anzahl_proz * 100 db_level_left = 20*Log10(vuleft) db_level_right = 20*Log10(vuright) EndIf DrawImageRect Volume_Meter,0,25,0,0,hibar*4.9,20 DrawImageRect Volume_Meter,0,45,0,0,hibarrechts*4.9,20 Color $66,$00,$00 Local libar libar =330 For libar = 330 To 130 Step -20 Oval libar,10,10,10,1 Next For libar =330 To 530 Step 20 Oval libar,10,10,10,1 Next If db_level_left =90 Then Color $00,$FF,$00:Oval 330,10,10,10,1 If db_level_left = 89 Then Color $FF,$00,$00:Oval 310,10,10,10,1 If db_level_left = 88 Then Color $FF,$00,$00:Oval 290,10,10,10,1 If db_level_left = 87 Then Color $FF,$00,$00:Oval 270,10,10,10,1 If db_level_left = 86 Then Color $FF,$00,$00:Oval 250,10,10,10,1 If db_level_left = 85 Then Color $FF,$00,$00:Oval 230,10,10,10,1 If db_level_left = 84 Then Color $FF,$00,$00:Oval 210,10,10,10,1 If db_level_left = 83 Then Color $FF,$00,$00:Oval 190,10,10,10,1 If db_level_right = 90 Then Color $00,$FF,$00:Oval 330,10,10,10,1 If db_level_right = 89 Then Color $FF,$00,$00:Oval 350,10,10,10,1 If db_level_right = 88 Then Color $FF,$00,$00:Oval 370,10,10,10,1 If db_level_right = 87 Then Color $FF,$00,$00:Oval 390,10,10,10,1 If db_level_right = 86 Then Color $FF,$00,$00:Oval 410,10,10,10,1 If db_level_right = 85 Then Color $FF,$00,$00:Oval 430,10,10,10,1 If db_level_right = 84 Then Color $FF,$00,$00:Oval 450,10,10,10,1 If db_level_right = 83 Then Color $FF,$00,$00:Oval 470,10,10,10,1 Color $66,$00,$00 Oval 693,31,10,10,1 Oval 693,51,10,10,1 Color $ff,$ff,$ff Text 710,39,"Peak" Text 710,35,"Left",False,True Text 710,56,"Right",False,True If hibar > 120 Then Color $EE,$00,$00:Oval 693,31,10,10,1 If hibarrechts > 120 Then Color $EE,$00,$00:Oval 693,51,10,10,1 Color $FF,$CC,$FF Local f%,fftd#,fftd2# Color $CC,$00,$CC ; Spectrum FFT buffersize = BASS_ChannelGetData(music,spectrum,BASS_DATA_FFT512 Or BASS_DATA_AVAILABLE) For Q=0 To 255 Step+1 PokeFloat(APeakBank,Q*4,PeekFloat(NPeakBank,Q*4)) RXPos=PeekByte(RXPosBank,Q)*4 PeakLevel# = PeekFloat(Spectrum,RXPos) PeakLevel# = PeakLevel * (5+RXPos/2) PeakLevel# = 1 - (1.0 / (1 + PeakLevel / (8.0/PEAKBASSAGRESSIVITY))) PokeFloat(NPeakBank,Q*4,PeakLevel) Next PeakLevel#=PeekFloat(NPeakBank,0)/2 For Q=0 To 255 Step+1 PeakLevel# = PeakLevel - (PeakLevel - PeekFloat(NPeakBank,Q*4)) / BASSSMOOTH PokeFloat(NPeakBank,Q*4,PeakLevel) Next For Q=255 To 0 Step-1 PeakLevel# = PeakLevel - (PeakLevel - PeekFloat(NPeakBank,Q*4)) / BASSSMOOTH PokeFloat(NPeakBank,Q*4,2+PeakLevel*BASSMAXIMUM) Next For Q=0 To 255 Step+1 APeak#=PeekFloat(APeakBank,Q*4) NPeak#=PeekFloat(NPeakBank,Q*4) LPeak#=PeekFloat(LPeakBank,Q*4) DiffPeak#=APeak-NPeak If APeak>NPeak Then NPeak=APeak-DiffPeak/BASSSMOOTH*1 PokeFloat(NPeakBank,Q*4,NPeak) End If BassVerstaerker# = 8 - (8-NPeak) / 20000.0 DiffPeak# = Abs(DiffPeak) * WHITEBASSAGRESSIVITY If NPeak > LPeak Then LPeak = NPeak LPeak#=LPeak-.02-BassVerstaerker/100.0 ;100.0 PokeFloat(LPeakBank,Q*4,LPeak) Color 255-Q+DiffPeak*(1+Q/40), NPeak*4+DiffPeak, Q+DiffPeak Rect 1+(Q*2),399-APeak*4,2,APeak*4 Color 255,255,255 Rect Q*2,399-LPeak*4,2,1 Next buffersize = BASS_ChannelGetData(BassHandle,spectrum,BASS_DATA_FFT512 Or BASS_DATA_AVAILABLE) ; _________Dateigröße bestimmen______________ size# = FileSize(a$) If size < 1024 Then output$ = size : unit$ = " Bytes" If size >= 1024 Then output$ = size / (1024^1) : unit$ = " KB" If size >= 1024*1024 Then output$ = size / (1024^2) : unit$ = " MB" If size >= 1024*1024*1024 Then output$ = size / (1024^3) : unit$ = " GB" output$ = Left(output$, Instr(output$,".") + 2) + unit$ ;______________Position______________ pos = BASS_ChannelGetPosition(music) v = (pos Shr 16) getsek#= BASS_ChannelBytes2Seconds(music,pos) temp = getsek# min = Floor(temp / 60) sek = temp - min * 60 ; Bitrate auslesen bitrate = BASS_ChannelBytes2Seconds(music,BASS_ChannelGetLength(music)) bitrate_len = BASS_StreamGetFilePosition(music,2) lies_bitrate = Bitrate_len/(125*bitrate)+0.5 laenge =BASS_ChannelGetLength(music) Total_dauer = lies_bitrate /(size#/1024) mp_dauer = bitrate * 1000 mp_sec$ = (mp_dauer / 1000) Mod 60 mp_min$ = (mp_dauer / 60000) Mod 60 mp_hours$ = (mp_dauer / 3600000) Mod 24 If (Int(mp_sec$) < 10) Then mp_sec$ = "0"+mp_sec$ If (Int(mp_min$) < 10) Then mp_min$ = "0"+mp_min$ If (Int(mp_hours$) < 10) Then mp_hours$ = "0"+mp_hours$ Color $33,$66,$99 Rect 520,346,v/2.7,36,1 Rect 520+mp_dauer/1000,346,2,36,1 Color $00,$00,$00 ;_____________EndPosition_____________ Color $ff,$ff,$ff Line 54,24,54,65 Line 75,24,75,65 Line 106,24,106,65 Line 150,24,150,65 Line 212,24,212,65 Line 299,24,299,65 Line 423,24,423,65 Line 451,24,451,65 Line 506,24,506,65 Line 598,24,598,65 Line 1,24,750,24 Line 1,65,750,65 Line 1,24,1,65 Line 750,24,750,65 Line 514,110,514,400 Line 1,400,514,400 Line 1,110,1,400 Line 1,110,514,110 Line 0,45,645,45 Text 45,72,"-21" Text 66,72,"-18" Text 97,72,"-15 " Text 141,72,"-12 " Text 203,72,"-9 " Text 290,72," -6" Text 414,72,"-3" Text 442,72,"-2" Text 497,72,"-1" Text 598,72,"0 dB" Color $ee,$ee,$ee Text 50,405,"Current Time " +CurrentTime() +" " + " Decoding CPU Time : "+LSet$(Str(cpu),5)+ " %" SetFont fonttag Color $33,$66,$99 Text 520,115," Search : "+CountGadgetItems(box)+ " MP3 Files were found in this Directory" Text 520,175, " Filesize : " + output$ ms = MilliSecs() Text 520,155," Tracknumber : " +getidtag(a$,0) Color $00,$66,$99 Text 520,135," Album : " + getidtag(a$,3) Text 520,195," Bitrate : " +lies_bitrate +" (Kbps) " SetFont Matrixfont Text 520,320,"Time Play : " +sek_to_time(temp) Text 520,380,"Total Time : " +mp_hours+":"+mp_min+":"+mp_sec Text 40,82,"" + getidtag(a$,2)+" "+getidtag(a$,1) SetFont font ;Color $33,$33,$33 Gitternetz erzeugen wenn man's braucht ? ;For g = 25 To 512 Step 32 ;Line g,112,g,400 ;Next ;For gg = 112 To 400 Step 15 ;Line 2,gg,512,gg ;Next ;Color 255,255,255 FreeBank sdbank FlipCanvas(cnv) Flip 0 Forever FreeFont font FreeFont fonttxt FreeFont fonttag FreeFont matrixfont FreeBank spectrum FreeBank NPeakBank FreeBank APeakBank FreeBank LPeakbank FreeBank RXPosBank End Function Fileexists (Datei$) If FileType (Datei) = 1 Then Return True EndIf End Function Function getfiles(dir$) verz=ReadDir(dir$) Repeat test$=NextFile$(verz) If test$<>".." And test$<>"." Then If test$= True Then xad$ = "Reading Success" Else xad$="Done" If test$="" Then Exit If FileType(dir$+"\"+test$)=2 Then getfiles(dir$+"\"+test$) ElseIf FileType(dir$+"\"+test$)=1 Then If mode=0 Then If Right(test$, 4)=".mp3" Then AddGadgetItem (box,dir$+"\"+test$) EndIf ElseIf mode=1 Then If Right(test$, 4)=".mp3" Then AddGadgetItem (box,test$) EndIf EndIf EndIf EndIf Forever CloseDir(verz) End Function Function getseconds() Local sek pos = BASS_ChannelGetPosition(music) getsek# = BASS_ChannelBytes2Seconds(music,pos) sek = Floor(getsek#) Return sek End Function ; ; ID3-TAG-_______________ ; Function GetIDTag$(FFile$,FMode%=1) ;ALLGEMEINE/GÜLTIGKEITSPRÜFUNG If FileType(FFile)=1 Then ;VARIABLENDEKLARATIONEN Local IBuffering$="" Local ICollector$="" Local ITagStream$="" Local ICount%=0 Local IStart%=0 Local IFile%=0 Local ISize%=0 ;DATEIGRÖSSE/ENTNEHMEN ISize=FileSize(FFile) ;VERFÜGBARKEIT If ISize>1024 Then ;STRINGSTREAM/ERSTELLEN IFile=ReadFile(FFile) ;ERSTEN/KiB/ALS/STRING/ZUSAMMENSTELLEN SeekFile(IFile,0): For ICount=1 To 1024: ITagStream=ITagStream+Chr(ReadByte(IFile)): Next ;LETZTE/128/BYTES/ALS/STRING/ANSTELLEN SeekFile(IFile,ISize-128): For ICount=1 To 128: ITagStream=ITagStream+Chr(ReadByte(IFile)): Next ;TAGSINFO/AUS/OGG/EINLESEN If Lower(Right(FFile,4))=".ogg" Then Select FMode Case 0 IStart=Instr(ITagStream,"TRACKNUMBER=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+12,Asc(Mid(ITagStream,IStart-4))-12) Case 1 IStart=Instr(ITagStream,"TITLE=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+06,Asc(Mid(ITagStream,IStart-4))-06) Case 2 IStart=Instr(ITagStream,"ARTIST=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+07,Asc(Mid(ITagStream,IStart-4))-07) Case 3 IStart=Instr(ITagStream,"ALBUM=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+06,Asc(Mid(ITagStream,IStart-4))-06) Case 4 IStart=Instr(ITagStream,"DATE=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+05,Asc(Mid(ITagStream,IStart-4))-05) Case 5 IStart=Instr(ITagStream,"COMMENT=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+08,Asc(Mid(ITagStream,IStart-4))-08) Case 6 IStart=Instr(ITagStream,"GENRE=",1): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+06,Asc(Mid(ITagStream,IStart-4))-06) End Select End If ;TAGSINFO/AUS/MP3/EINLESEN If Lower(Right(FFile,4))=".mp3" Then ;ID2V2/LESEN Select FMode Case 0 IStart=Instr(ITagStream,"TRCK"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) Case 1 IStart=Instr(ITagStream,"TIT2"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) Case 2 IStart=Instr(ITagStream,"TPE1"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) Case 3 IStart=Instr(ITagStream,"TALB"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) Case 4 IStart=Instr(ITagStream,"TYER"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) Case 5 IStart=Instr(ITagStream,"COMM"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+15,Asc(Mid(ITagStream,IStart+7,1))-5) Case 6 IStart=Instr(ITagStream,"TCON"): If IStart>0 Then IBuffering=Mid(ITagStream,IStart+11,Asc(Mid(ITagStream,IStart+7,1))-1) End Select ;ALTERNATIVE If IBuffering="" And Mid(ITagStream,1025,3)="TAG" Then ;ID2V1/LESEN Select FMode Case 0 IBuffering=Replace(Mid(ITagStream,1150,02),Chr(0)," ") Case 1 IBuffering=Replace(Mid(ITagStream,1028,30),Chr(0)," ") Case 2 IBuffering=Replace(Mid(ITagStream,1058,30),Chr(0)," ") Case 3 IBuffering=Replace(Mid(ITagStream,1088,30),Chr(0)," ") Case 4 IBuffering=Replace(Mid(ITagStream,1118,04),Chr(0)," ") Case 5 IBuffering=Replace(Mid(ITagStream,1122,30),Chr(0)," ") Case 6 IStart=Asc(Mid(ITagStream,1152,1)): If IStart<148 Then For ICount=0 To IStart: Read IBuffering: Next End Select End If End If ;MODULDATEIEN/TITEL/EINLESEN If Lower(Right(FFile,3)=".it") Then IBuffering=Mid(ITagStream,5,26) If Lower(Right(FFile,3)=".xm") Then IBuffering=Mid(ITagStream,18,20) If Lower(Right(FFile,4)=".mod") Then IBuffering=Mid(ITagStream,1,20) If Lower(Right(FFile,4)=".s3m") Then IBuffering=Mid(ITagStream,1,28) If Lower(Right(FFile,4)=".mtm") Then IBuffering=Mid(ITagStream,5,20) ;AUSGABE/BEREINIGEN IBuffering=Trim(IBuffering) For ICount=1 To Len(IBuffering) If Asc(Mid(IBuffering,ICount,1))>31 Then If Asc(Mid(IBuffering,ICount,1))<254 Then ICollector=ICollector+Mid(IBuffering,ICount,1) End If End If Next ;DATEI/FREIGEBEN CloseFile IFile ;FUNKTION/RÜCKGABEWERT Return Trim(ICollector) End If End If End Function ;STANDARD/ID3V1-TAG-GENRE/BEZEICHNUNG Data "Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal","New Age" Data "Oldies","Other","Pop","Rhythm and Blues","Rap","Reggae","Rock","Techno","Industrial","Alternative" Data "Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz&Funk" Data "Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise" Data "Alternative Rock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock" Data "Ethnic","Gothic","Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream" Data "Southern Rock","Comedy","Cult","Gangsta","Top 40","Christian Rap","Pop/Funk","Jungle" Data "Native US","Cabaret","New Wave","Psychedelic","Rave","Showtunes","Trailer" Data "Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro" Data "Musical","Rock & Roll","Hard Rock","Folk" ;ERSTE/UND/ZWEITE/WINAMP-ERWEITERUNG Data "Folk-Rock","National Folk","Swing","Fast Fusion","Bebop","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic Rock" Data "Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic","Humour" Data "Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove","Satire","Slow Jam" Data "Club","Tango","Samba (Musik)","Folklore","Ballad","Power Ballad","Rhytmic Soul","Freestyle","Duet","Punk Rock" Data "Drum Solo","Acapella","Euro-House","Dance Hall","Goa","Drum’n’Bass","Club-House","Hardcore","Terror","Indie" Data "BritPop","Negerpunk","Polsk Punk","Beat","Christian Gangsta","Heavy Metal","Black Metal","Crossover" Data "Contemporary Christian","Christian Rock","Merengue","Salsa","Thrash Metal","Anime","JPop","SynthPop" ; ; ; Function sek_to_time$(sek) Local time$ h$=(sek / 3600) m$=(sek Mod 3600)/60 s$=(sek Mod 60) If (Int(s$) < 10) Then s$ = "0"+s$ If (Int(m$) < 10) Then m$ = "0"+m$ If (Int(h) < 10) Then h = "0"+h time=h+":"+m+":"+s Return time End Function Function milli2min$(i) t=i/1000 t2=t*1000 m2$=Str(i-t2) mt=t/60 t2=mt*60 m$=Str(mt) s$=Str(t-t2) If Len(s$)=1Then s$="0"+s$ Return m$+":"+s$+"."+m2$ End Function |
||
- Zuletzt bearbeitet von BlitzPure am Fr, Okt 23, 2015 14:09, insgesamt einmal bearbeitet
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, habe am Anfang folgendes gesehen:
Code: [AUSKLAPPEN] If Not BASS_Init(-1,44100,0,0,BASS_NULL) Then RuntimeError "Bass not ready"; Fehler Init fehlgeschlagen
BASS_Init(-1,44100,0,0,BASS_NULL) ; Bass Initialisieren Da startest du Bass gleich zweimal. Einmal mit Fehlerabfrage, einmal ohne. Die erste Zeile reicht. Denn Rest wird sicherlich hectic sich angucken. ![]() cu |
||
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja na klar, macht ja nun gar kein Sinn !
Aber vielen Dank das du Dir den Code angesehen hast ! Der Code baut ja auch auf deinem BlitzBassStudio auf. Vielleicht von dir noch ein Feedback zum Code selber, wäre für mich als Anfänger sinnvoll ! Was kann ich verbessern bzw. was ist überflüssig ? Danke Dir ! Herzlichen Gruß BlitzPure ![]() |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann den Code gerade auch nicht testen, aber ein paar Hinweise geben:
-) Du hast 2 (gleiche) Timer erstellt, aber nichtmal benutzt (timer, timer1). -) Du hast dir viel Mühe gegeben, mit den Graphikbefehlen ein Interface zu zeichnen. Allerdings kann man es schwer nachvollziehen (besonders Zeile 243 bis 272, das sieht ja fast wie Assembler-Code aus) Hier könnte man zB Funktionen verwenden, die Zeichen-Befehle in eine Funktion "zeichneDBSkala" oder so geben. -) Der Block wo db_level_left und _right abgefragt wird und entsprechend ein Kreis gezeichnet wird "schreit" förmlich danach, etwas eleganter programmiert zu werden ![]() Code: [AUSKLAPPEN] Color $FF,$00,$00
If db_level_left = 90 or db_level_right = 90 Then Color $00,$FF,$00 EndIf Oval 190+(db_level_left - 83) * 20,10,10,10,1 Oval 470-(db_level_right - 83) * 20,10,10,10,1 Müsste (ohne es getestet zu haben) dasselbe ergeben, nur "etwas kompakter" programmiert. Ansonsten, du kannst dein Projekt in ein zip-Archiv packen (mit Quelltext, Bild, Bass.dll, bass.bb und eventueller exe) und hier im Archiv hochladen. So wie du es hier postest werden es nur die wenigsten ausführen können ![]() mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke Christoph,
ja wie gesagt bzw. geschrieben halt noch Anfänger . Aber trotzdem vielen Dank das du dir die Mühe gemacht hast es sich mal anzusehen. Ja richtig im Code sieht es halt aus wie Spaghetti ! (noch !) Das gleiche Programm habe ich in PureBasic 5.30 geschrieben aber warum bin ich umgestiegen auf Blitz-Basic ? Ganz einfach, auch im PureBasic Forum gefragt bzw. hochgeladen. Aber Antworten die sachlich waren gab es nicht. Antworten wie "Was ist das für ein Sch..ß, lerne erstmal Programmieren du Pfei.e" waren noch milde. Tja 69€ für nichts...leider . Danke Dir Gruß Olli |
||
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ Christoph
Ich glaube jetzt wird es peinlich für mich ! wie lade ich denn eine zip.datei hoch finde hier keinen Button oder ähnliches womit ich die Datei hochladen kann ? Gruß Olli |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Oben rechts auf "Archiv" gehen, dann "Eigene Dateien verwalten". cu |
||
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Morgen an alle,
so habe das Programm (incl. dll,decls,png usw.) hochgeladen . Liegt im Archiv ! Gruß |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Hab deinen Player noch nicht testen können, da ich unterwegs bin und nur am Handy hier drin bin. Wollt dir nur mal schreiben, wie man eventuell eine nettere Antwort kriegt, als du im PB-Forum gekriegt hast. Hier im Forum sind wir alle nett und familiär, also brauchst du dir hier weniger Sorgen um Ärger machen. Nim das nicht als Gebashe oder so, sondern einfach nur als Hinweis, wie man in solchen Foren angenehmer auffällt ![]() Zuerst mal, der Titel: Dein Titel beinhält zu viel und sagt zu wenig aus. Das du Listboxes und die Bass.dll verwendet hast ist nett, aber das brauchst du nicht in den Titel schreiben, dafür hast du den Post. Schreib in den Titel nur das, worum es geht: "MP3-Player". "Bitte lesen" u.Ä. sorgt nicht dafür, das Leute es mehr lesen, sondern klingt eher unhöflich. "Bitte lesen" im Titel ist reserviert für Sachen, die die Leute wirklich lesen müssen, wie z.B. Ankündigungen von den Moderatoren oder so. Dein Post ist etwas unleserlich formuliert. Soweit ich sehe hast du einfach den Kommentarblock am oberen Ende deines Codes in deinen Post kopiert, inklusive der Strichpunkte, die eine Kommentarzeile einleiten. Wenn du einen Forenpost machst, dann schadet es prinzipiell nicht, den von Hand dafür zu schreiben. Achte auf eine schöne Formatierung und angenehmeren Satzbau (so finde ich persönlich das rethorische Fragen, die du gleich selbst beantwortest, den Lesefluss eher stören als ihm zuträglich sind). Achte auch darauf, das du eine Posts im richtigen Unterforum machst. So würde dein Projekt wohl eher in das "Projekte"-Unterforum gehören, da es sich dabei nicht um ein schön wiederverwendbares Codesnippet handelt, sondern um ein komplettes Projekt, das Opensource ist. In's Codearchiv gehören eigentlich nur Codes, die zum Verwenden in anderen Projekten gedacht sind, wie z.B. fertige Funktionen. Ich hoffe, du nimmst mir das nicht schief, ist nur gedacht, um dir in Zukunft etwas zu helfen ![]() |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo DAK
Super vielen Dank, ja das werde ich ab jetzt so machen. Nein bin immer für Kritik offen Richtig habe das alles etwas falsch Kommentiert. Bitte Lesen ! z.B., könnte ja auch bedeuten "die Welt geht unter" Nein aber vielen Dank Also sollte der Code in Projekte und oder Allgemein gepostet werden ? Muss dazu sagen das ich mich wirklich noch nicht so richtig mit Foren auskenne ! Danke das du dir die Mühe gemacht hast . Gruß BlitzPure |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Freut mich, das es dir was hilft ![]() Das Codearchiv ist dafür da, Codes zu posten, die man so in anderen Projekten verwenden kann, wie z.B. eine Pathfinding-Funktion oder so. Diese Codes sind üblicherweise nicht alleinstehend ein gesamtes Projekt, und sind dafür gemacht, in anderen Projekten leicht eingesetzt zu werden. Sachen, die im Codearchiv gepostet werden müssen notwendigerweise ihren Source dabei haben. Das Projekte-Unterforum ist dafür da, dass man dort alleinstehende Projekte posten kann. Die müssen lauffähig und verwendbar (aber nicht notwendigerweise komplett fertig) sein. Sie können, müssen aber nicht, Sourcecode beinhalten. Ist das Programm stark unfertig, dann kann man es in den WIP-Thread im Projekte-Forum posten. Um es zusammenzufassen: In's Codearchiv gehören Sachen, die Programmierer in ihre Programme einbauen können, ins Projekte-Forum gehören Sachen, die Nutzer ausführen können. PS: Mit Projekte-Forum mein ich das Forum ganz unten unter der Kategorie "Sonstiges", nicht das Allgemeines-Forum unter der Kategorie "BlitzBasic". |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Fürs Codearchiv ist es wirklich nicht, so ganz ohne Kapselung. Für ein fertiges Projekt ist die Aufmachung eher uninteressant; bau einen downloadlink ein, verlinke einen screenshot. Ansonsten: Glückwunsch zur Fertigstellung - aber du könntest da noch viel verbessern... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
BlitzPure |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Xeres, ja ich weiß, noch viel Arbeit, aber es macht Spass. Ja richtig hier ist es besser aufgehoben. Danke schön Gruß Blitzpure Muss mich nochmal mit den Functionen vertraut machen. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group