Anhand dieses tut sollte jeder verstehen wie man eine Musik Datei mit der Bass.dll abspielt
Dieses Tutorial basiert auf bass.net da ich persönlich es einfacher finde
Download: [Only registered and activated users can see links. Click Here To Register...]
Füge "Bass.Net.dll" als Verweis hinzu und lege die "bass.dll" zur deiner Anwendungs-Exe.
[Only registered and activated users can see links. Click Here To Register...]
Vorbereitung:
So als nächstes muss im dem Formload Event die .dll "konfiguriert" werden
damit kann man festlegen wie viele Lautsprecher ihr zb. habt
Abspielen der Musik Datei:
als erstes muss eine globale Variable vom Typ Integer erstellt werden:
als nächstes wird diese variable mit Informationen gefüttert
nun wird die Musik gestartet
anstatt false kann man auch true einsetzen dann wird die Muikdatei immer wieder von vorn abgespielt
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
(die 2 in Klammern MUSS so bleiben wie sie ist)
mit
wird das array mit Informationen gefüttert
und mit 2 weiteren variablen so ausgelesen das sie in einer progressbar oä. angezeigt werden können
anstatt alles Mal 100 zu nehmen kann man auch die Eigenschaft Maximum der progressbar auf 1 Stellen das macht keinen unterschied
und hiermit wird’s angezeigt das brauch ich glaube ich nicht zu erklären
So könnte es dann aussehen:
Visualisierung mit Einem Spectrum Analyzer
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
und die zweite Zeile
der Aufbau ist quasi so
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
die Richtige Frequenz bekommt man dann mit einer Simplen Formel raus ;)
Arraylänge *gesuchte Frequenz / Samplingrate
daraus kommt dann der Arrayindex von Data für die Frequenz
das geht natürlich auch bei jeder anderen Frequenz.
Effekte Hinzuschalten am beispiel von Echo
Und schon kommt ein Echo ! :)
Quelle: vb-paradise.de
(Me)
Dieses Tutorial basiert auf bass.net da ich persönlich es einfacher finde
Download: [Only registered and activated users can see links. Click Here To Register...]
Füge "Bass.Net.dll" als Verweis hinzu und lege die "bass.dll" zur deiner Anwendungs-Exe.
[Only registered and activated users can see links. Click Here To Register...]
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)