Mp3 Suche in Laufwerken

Übersicht Sonstiges Projekte

Neue Antwort erstellen

 

BlitzPure

Betreff: Mp3 Suche in Laufwerken

BeitragDo, Okt 22, 2015 9:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Okt 22, 2015 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Cool

cu
 

BlitzPure

BeitragDo, Okt 22, 2015 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Very Happy

Eingeproggt

BeitragDo, Okt 22, 2015 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink Also zum Beispiel sowas:

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 Sad

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

BlitzPure

BeitragDo, Okt 22, 2015 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Okt 22, 2015 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
@ 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

BeitragFr, Okt 23, 2015 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Oben rechts auf "Archiv" gehen, dann "Eigene Dateien verwalten".

cu
 

BlitzPure

BeitragFr, Okt 23, 2015 7:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Morgen an alle,
so habe das Programm (incl. dll,decls,png usw.) hochgeladen .
Liegt im Archiv !

Gruß

DAK

BeitragFr, Okt 23, 2015 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

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 Wink
Gewinner der 6. und der 68. BlitzCodeCompo
 

BlitzPure

BeitragFr, Okt 23, 2015 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 23, 2015 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich, das es dir was hilft Wink

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

Xeres

Moderator

BeitragFr, Okt 23, 2015 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
~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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

BlitzPure

BeitragFr, Okt 23, 2015 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group