Dieses Tutorial basiert auf bass.net da ich persönlich es einfacher finde
Download:

Füge "Bass.Net.dll" als Verweis hinzu und lege die "bass.dll" zur deiner Anwendungs-Exe.
Vorbereitung:
Code:
Imports Un4seen.Bass
Code:
Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_CPSPEAKERS, IntPtr.Zero, Nothing)
Abspielen der Musik Datei:
als erstes muss eine globale Variable vom Typ Integer erstellt werden:
Code:
Public stream As Integer
Code:
stream = Bass.BASS_StreamCreateFile("*Pfad zur Musikdatei*", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
Code:
Bass.BASS_ChannelPlay(stream, False)
so die Musik spielt schon einmal nun kommen wir zum
Peak auslesen
die besten Ergebnisse erzielt ihr wenn ihr die folgenden Zeilen in einen timer packt und den Intervall auf 45 stellt
wir brauchen diesmal ein Array und zwar nenne ich es mal
Code:
Dim peak(2) As Single
mit
Code:
Bass.BASS_ChannelGetLevel(stream, peak)
und mit 2 weiteren variablen so ausgelesen das sie in einer progressbar oä. angezeigt werden können
Code:
Dim rechts As Integer = (Math.Round(peak(1), 3) * 100)
Dim links As Integer = (Math.Round(peak(2), 3) * 100)
und hiermit wird’s angezeigt das brauch ich glaube ich nicht zu erklären
Code:
ProgressBar1.Value = rechts
ProgressBar2.Value = links
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
Ein spectrum mit der Bass.dll zu bekommen ist eigentlich sehr Easy was mann dazu braucht sind 2 Zeilen Code und eine Picturebox.
Das ist die erste Zeile
Code:
Public Spectrum As New Un4seen.Bass.Misc.Visuals
Code:
PictureBox1.Image = Spectrum.CreateSpectrumLine(stream, PictureBox1.Width, PictureBox1.Height, Color.Lime, Color.Red, Color.White, 8, 5, _ False, True, True)
Spectrum.CreateSpectrumLine(der channel,Breite der Visualisirung,Höhe der Visualisirung,Untere farbe des farbverlaufs,Obere Farbe des Farbverlaufs,Hintergrund Farbe,Breite der balken,Entfernung der balken zueinender,False,True,true)
Amplitude von Bestimmten Frequenzen Auslesen
Also per ChannelGetData werden die Daten in ein Array Geladen
Code:
Dim FFT(2048) As Single
Bass.BASS_ChannelGetData(Stream, value, BASSData.BASS_DATA_FFT256)
Dim data(128) As Double ' hier noch ein 2. Array damit wir später die richtige Frequenz herausfinden können
For i = 0 To 128
data(i) = value(i * 4)
Next
Arraylänge *gesuchte Frequenz / Samplingrate
daraus kommt dann der Arrayindex von Data für die Frequenz
Code:
Dim 125Hz As Integer = (128 * 125 / 44100)
Dim Freq as Integer
Freq = data(125Hz)
Effekte Hinzuschalten am beispiel von Echo
Code:
Dim Echo As Integer
Dim p As New BASS_DX8_ECHO
Echo = Bass.BASS_ChannelSetFX(Stream, BASSFXType.BASS_FX_DX8_ECHO, 0) 'Hier wird der effekt Intialisiert
p.fLeftDelay = 333 ' Hier kann man die länge des echos einstellen
p.fRightDelay = 333 ' Hier ebenfalls für den rechten Kanal
p.fFeedback = 50
p.fWetDryMix = 50
Bass.BASS_FXSetParameters(Echo, p) ' hier wird der effekt Gesetzt
Quelle: vb-paradise.de
(Me)






