Aktuelle Zeit: 21.07.2019 14:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: MP3 als Waveform anzeigen
BeitragVerfasst: 13.01.2019 16:45 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Habe aus dem englischen Forum diesen Code und er scheint auch zu funktionieren, naja fast. Irgendwie ist es bei mir nur eine 3 Pixel dicke Linie... wie zoomt man das ? Kann jemand helfen ? Wollte eigentlich die PEAKs anzeigen lassen und kam darauf.....

Code:
IncludeFile "D:\bass.pbi"     ; Pfad anpassen !!!
BASS_Load_Library("D:\bass.dll")
Filename.s = "D:\test.mp3"
 
Structure Sample
  l.w
  r.w
EndStructure

Procedure UpdateWaveImage(PBImage, *SampleData.Sample, SampleCount)
  Protected.i Width, Height, x, VOffsetL, VOffsetR, MUL
  Protected.i SamplesPerPixel, sample
  Protected.w MinL, MaxL, MinR, MaxR
  If *SampleData And SampleCount
    StartDrawing(ImageOutput(PBImage))
    Width = OutputWidth() : Height = OutputHeight()
    VOffsetL = Height >> 2 : VOffsetR = VOffsetL + Height >> 1
    MUL = (VOffsetL * $19999) >> 16
    Box(0, 0, Width, Height, $FFE0E0E0)
    Line(0, VOffsetL, Width, 1, $FFA0A0A0)
    Line(0, VOffsetR, Width, 1, $FFA0A0A0)
    SamplesPerPixel = (SampleCount + Width - 1) / Width
    If SampleCount
      MinL = *SampleData\l : MinR = *SampleData\r : MaxL = MinL : MaxR = MinR     
      While SampleCount
        If *SampleData\l < MinL : MinL = *SampleData\l : ElseIf *SampleData\l > MaxL : MaxL = *SampleData\l : EndIf
        If *SampleData\r < MinR : MinR = *SampleData\r : ElseIf *SampleData\r > MaxR : MaxR = *SampleData\r : EndIf
        sample + 1 : SampleCount - 1
        If sample = SamplesPerPixel Or SampleCount = 0
          MinL = (MinL * MUL) >> 16 : MaxL = (MaxL * MUL) >> 16
          MinR = (MinR * MUL) >> 16 : MaxR = (MaxR * MUL) >> 16
          LineXY(x, VOffsetL - MinL, x, VOffsetL - MaxL, $FFFF8000)
          LineXY(x, VOffsetR - MinR, x, VOffsetR - MaxR, $FFFF8000)
          MinL = *SampleData\l : MinR = *SampleData\r : MaxL = MinL : MaxR = MinR
          x + 1 : sample = 0
        EndIf
        *SampleData + 4
      Wend
    EndIf
    StopDrawing()
  EndIf
EndProcedure

BASS_Init(-1, 44100, 0, 0, #Null)

Channel  = BASS_StreamCreateFile(#False, @Filename, 0, 0, #BASS_STREAM_PRESCAN|#BASS_STREAM_DECODE|#BASS_UNICODE)
BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, 200.360), #BASS_POS_BYTE)
length = BASS_ChannelSeconds2Bytes(Channel, 0.500)
Dim Buffer.Sample(length >> 2)
BASS_ChannelGetData(Channel, @Buffer(), length)

OpenWindow(0, 0, 0, 620, 320, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

WaveImage = CreateImage(#PB_Any, 600, 300)
UpdateWaveImage(WaveImage, @Buffer(), length >> 2)
ImageGadget(1, 10, 0, 600, 300, ImageID(WaveImage))

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 13.01.2019 16:59 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Interessant wäre auch folgenden Code in PB umzuwandeln, aber ich habe da leider keine Ahnung.... ich brauche ja nur die Lautstärke grafisch.... kann das jemand ??

Code:
Imports Un4seen.Bass
Public Class Form1
    Public stream As Integer
    Public peak(2) As Single
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_CPSPEAKERS, IntPtr.Zero, Nothing)
        stream = Bass.BASS_StreamCreateFile("F:\Filme&Musik\Musik\Pink Floyd\Pink Floyd-Brick the Wall.mp3", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
        Bass.BASS_ChannelPlay(stream, False)
    End Sub
    Private Sub Peak_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Bass.BASS_ChannelGetLevel(stream, peak)
        Dim rechts As Integer = (Math.Round(peak(1), 3) * 100)
        Dim links As Integer = (Math.Round(peak(2), 3) * 100)
        Try
            ProgressBar1.Value = rechts
            ProgressBar2.Value = links
        Catch
        End Try
    End Sub
End Class

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 13.01.2019 18:28 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Then,

der obere Code ist doch toll.

Du musst doch nur diese Werte anpassen:

Code:
Channel  = BASS_StreamCreateFile(#False, @Filename, 0, 0, #BASS_STREAM_PRESCAN|#BASS_STREAM_DECODE|#BASS_UNICODE)
BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, 0), #BASS_POS_BYTE) ;Position in Sekunden angeben (Bsp. Startposition: 0)
length = BASS_ChannelSeconds2Bytes(Channel, 120) ;Länge der anzuzeigenden Sekunden angeben. (z.B. 120 = 2 Minuten)
Dim Buffer.Sample(length >> 2)
BASS_ChannelGetData(Channel, @Buffer(), length)


Sollte eigentlich funktionieren.

Anbei:

Achtung! Hier immer schön teilen, oder Bitshiften!
Aber dabei immer die Länge beachten!

Bsp.:

length = BASS_ChannelSeconds2Bytes(Handle, 2)
UpdateWaveImage(WaveImage, @Buffer(), length >> 4)

Noch ein paar kleine Tipps!

Bleibe lieber im Bass-Unicode-Modus, dann kannst auch @Filename benutzen und musst nicht UTF8(Filename) schreiben.
Du kannst das hier: #BASS_STREAM_PRESCAN|#BASS_STREAM_DECODE auch weglassen und die Visualisierung bei einer normalen Wiedergabe nutzen.
Und auch Threads/Timer sind hier deine Freunde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 14.01.2019 10:40 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Danke, ich sehe schon, du scheinst ein BASS-Genie zu sein, ich komme da nicht mit und muss noch probieren und testen und dabei vergeht ne menge Zeit. Ich versuche mal zu verstehen, was genau du meinst.... Ein funktionierendes Code-Beispiel würde mir sehr helfen, wenn ich da einige Werte einfach verändere und sehe, was passiert, dann begreife ich´s evtl Besser.

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 14.01.2019 18:12 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
@Then:

Du hast jetzt eine PN.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 16.01.2019 21:36 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Ich bekomme es nicht hin.... Stelle mich zu blöd an. Hat nicht jemand einen Ansatz für mich ? Ein mp3 in 1900x150 Pixel anzeigen ? Ohne scrollen, ohne Bewegung, einfach nur ein Bild.... Es wäre nett.... :cry:

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 16.01.2019 22:24 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
1. Tipp:
Code:
BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, 0), #BASS_POS_BYTE)

length = BASS_ChannelSeconds2Bytes(Channel, BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel, #BASS_POS_BYTE)))


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 17.01.2019 20:45 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Hilft mir leider nicht weiter. Ich dachte das ist ein Forum in dem geholfen wird. Mit Rätsel komme ich nicht weiter - andere evtl auch nicht.

Was ist denn für die Profis unter euch so schwer, einen Code zu posten ? Aus nem lauffähigen Code kann man auch lernen, wenn man die Werte verändert und dann sieht, was raus kommt. Warum ist das hier so schwierig ? In jedem anderen Foren geht's doch auch ...

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 17.01.2019 21:24 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Zitat:
Warum ist das hier so schwierig ?
keine bass.dll, geschweige denn eine bass.so für linux die ich bräuchte. keine bass.pbi. Ich forste nicht das englische Forum durch nach irgendwelchen auf-gut-glück versionen. Hättest ja mal resourcen verlinken können.

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: MP3 als Waveform anzeigen
BeitragVerfasst: 18.01.2019 10:56 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Warum fühlst du dich eigentlich angesprochen ? Es gibt einige User hier im Forum, die mit der BASS-DLL viel zu tun haben und sich super damit auskennen. Die sind angesprochen. Die können das aus dem FF... Warum helfen die nicht, die es können ? Dafür ist doch eigentlich so ein Forum da, oder ? Statt sein Wissen zu teilen, nimmt man wohl alles mit ins Grab :|

Wenn ich nen Fliesenleger frage, ob er mir das Fliesen mal zeigt, legt der mir auch nicht nur eine Fliese und nen Spachtel hin und sagt, "Ist mal der erste Tipp, nu mach mal.." /:->

Ich denke, es wird gleich wieder hier ausarten, also belassen wir es bei Tipps und Andeutungen und ich hake das Thema ab. Danke ... :allright:

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye