Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 03:06

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TuT] Bass.Dll Tutorial

Discussion on [TuT] Bass.Dll Tutorial within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 14
Join Date: Mar 2016
Posts: 65
Received Thanks: 11
Post [TuT] Bass.Dll Tutorial

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:

Füge "Bass.Net.dll" als Verweis hinzu und lege die "bass.dll" zur deiner Anwendungs-Exe.




Vorbereitung:
Code:
Imports Un4seen.Bass
So als nächstes muss im dem Formload Event die .dll "konfiguriert" werden
Code:
 Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_CPSPEAKERS, IntPtr.Zero, Nothing)
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:
Code:
Public stream As Integer
als nächstes wird diese variable mit Informationen gefüttert
Code:
stream = Bass.BASS_StreamCreateFile("*Pfad zur Musikdatei*", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
nun wird die Musik gestartet
Code:
Bass.BASS_ChannelPlay(stream, False)
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
Code:
Dim peak(2) As Single
(die 2 in Klammern MUSS so bleiben wie sie ist)

mit
Code:
Bass.BASS_ChannelGetLevel(stream, peak)
wird das array mit Informationen gefüttert

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)
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
Code:
ProgressBar1.Value = rechts
      ProgressBar2.Value = links
So könnte es dann aussehen:
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
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
Code:
Public Spectrum As New Un4seen.Bass.Misc.Visuals
und die zweite Zeile
Code:
PictureBox1.Image = Spectrum.CreateSpectrumLine(stream, PictureBox1.Width, PictureBox1.Height, Color.Lime, Color.Red, Color.White, 8, 5, _
False, True, True)
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

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
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

Code:
Dim 125Hz As Integer = (128 * 125 / 44100)
      Dim Freq as Integer
      Freq = data(125Hz)
das geht natürlich auch bei jeder anderen Frequenz.

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
Und schon kommt ein Echo !
Quelle: vb-paradise.de
(Me)
Coffee Time is offline  
Old 03/21/2016, 23:14   #2

 
Nanoxx™'s Avatar
 
elite*gold: 15
Join Date: Feb 2013
Posts: 2,880
Received Thanks: 465
Ist 1:1 von vb-paradise / Kombrinki

Wenn du es in C# übersetzt hättest OK... aber 1:1 Kopiert?


Edit:

Quote:
Originally Posted by Coffee Time View Post
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\P ink 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




Dein ernst?
Nanoxx™ is offline  
Thanks
2 Users
Old 03/22/2016, 11:29   #3
 
elite*gold: 14
Join Date: Mar 2016
Posts: 65
Received Thanks: 11
Quote:
Originally Posted by Nanoxx™ View Post
Ist 1:1 von vb-paradise / Kombrinki

Wenn du es in C# übersetzt hättest OK... aber 1:1 Kopiert?


Edit:







Dein ernst?
Bearbeitet. Danke!
Vergessen hinterzugeben. Mich haben viele Gefragt wie ich mit Bass.DLL arbeite. Da ich kein Bock hatte ein TuT selber zu schreiben.. Dann eben Copy & Past. ^^
Coffee Time is offline  
Reply


Similar Threads Similar Threads
KK's/LED's zum Bass
01/25/2013 - Hardware Discussions / Questions - 4 Replies
N'Abend, da bald bei mir eine komplette Zimmer-Renovierung ansteht, bin ich auf die Idee gekommen, KK's bzw LED's immer Zimmer zu verteilen, die zum Bass aufleuchten sollen (besitze natürlich einen Subwoofer) Habe mir dazu mehrere Möglichkeiten angeguckt: Einmal eine Soundsteuerung für KK's (hier), habe leider nur diese gefunden, HAMA soll ja nicht immer so hochwertig sein ;). Dieses Gerät wird im PC angeschlossen, daran können KK's angeschlossen werden. Problem dabei ist, dass diese...
[TUTORIAL] Starter friendly tutorial to searching for Nuke casting time [TUTORIAL]
02/09/2011 - 9Dragons - 12 Replies
If you already have Cheat Engine and know how to use it, skip to part 4 of the tutorial. 1. Introduction This forum has helped me quite a bit, so I decided to give something back :) Now I've noticed there are quite a few who ask for nuke casting time hacks / address', and I've also noticed, that there are quite a few who are REALLY annoyed with these questions, so I decided to write this so both sides can benefit from it. 2. Getting started First off, you need to have Cheat Engine...
ICQ UIN Bass 8x
01/04/2011 - Trading - 0 Replies
Verkaufe hier diese ICQ Nummer 84558639 Besonderheit: Leetspeak heist es 8 4 5 5 8 6 3 9 B A S S Wer also so ein Nicknamen hat ist es viel. interessant:)
Bass...
06/27/2006 - Technical Support - 1 Replies
hat jemand ein programm (freeshare) womit ich bass in lieder machen kann? also was simples nicht irgendwas mega großes mist dings programm ^^



All times are GMT +1. The time now is 03:07.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.