vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 19.03.11 20:11

Hallo an alle.

Habe einen Player erstellt um Radiostreams zu Spielen alles über Bass.net und bass.dll.
Der Player und der Equalizer sind 2 eigene Formen allerdings wird die Form Equalizer mit der Playerform über einen Button aufgerufen.
Leider kann ich die einstellungen des Equalizers nicht speichern da ich nicht weiss wie.
Wäre euch dankbar wenn ihr mir helfen könnt.

Hier mal der Equalizer Code.
 #Region "Imports"
Option Explicit On
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Net
Imports Un4seen.Bass
#End Region
Public Class Form2
 
    Public Stream As Integer
    Public fx(19) As Integer
    Private S As New AudioMixerHelper
 
#Region "' benötigte API-Deklarationen"
    Private Property hWnd As Long
    ' benötigte API-Deklarationen
    Private Declare Function GetAsyncKeyState Lib "user32" ( _
      ByVal vKey As Integer) As Short
    Private Declare Sub keybd_event Lib "user32" ( _
      ByVal bVk As Byte, _
      ByVal bScan As Byte, _
      ByVal dwFlags As Integer, _
      ByVal dwExtraInfo As Integer)
 
    Const KEYEVENTF_KEYUP As Integer = &H2
    Const VK_ESCAPE As Integer = &H1B
    Const VK_LWIN As Integer = &H5B
    Const VK_RWIN As Integer = &H5C
    Public peak(2) As Single
 
#End Region
 
#Region "Equalizer_Load"
    Private Sub Equalizer_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        Bass.BASS_Init(-1, 192000, BASSInit.BASS_DEVICE_CPSPEAKERS, _
          IntPtr.Zero, Nothing)
 
        Dim eq As New EqualizerClass
 
        eq.EQ_Int()
        eq.EQ_Load()
 
    End Sub
#End Region
 
#Region "TrackBar1_Scroll"
    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles TrackBar1.Scroll
 
        TrackBar1.Text = IIf(0 < 3, 10 - TrackBar1.Value, 20 - TrackBar1.Value)
        Dim p As New BASS_DX8_PARAMEQ
        Bass.BASS_FXGetParameters(fx(0), p)
        p.fGain = TrackBar1.Value
        Bass.BASS_FXSetParameters(fx(0), p)
 
    End Sub
 
 
    Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles TrackBar2.Scroll
 
        TrackBar2.Text = IIf(0 < 3, 10 - TrackBar2.Value, 20 - TrackBar2.Value)
        Dim p As New BASS_DX8_PARAMEQ
        Bass.BASS_FXGetParameters(fx(1), p)
        p.fGain = TrackBar2.Value
        Bass.BASS_FXSetParameters(fx(1), p)
 
    End Sub
 
 
#Region "Button1_Click"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
 
        Dim instance As New Form1
        instance.Show(Me)
        Close()
    End Sub
#End Region
 
#Region "Public Class AudioMixerHelper"
    Public Class AudioMixerHelper
        Private Const MMSYSERR_NOERROR As Integer = 0
        Private Const MAXPNAMELEN As Integer = 32
        Private Const MIXER_LONG_NAME_CHARS As Integer = 64
        Private Const MIXER_SHORT_NAME_CHARS As Integer = 16
        Private Const MIXER_GETLINEINFOF_COMPONENTTYPE As Integer = &H3
        Private Const MIXER_GETCONTROLDETAILSF_VALUE As Integer = &H0
        Private Const MIXER_GETLINECONTROLSF_ONEBYTYPE As Integer = &H2
        Private Const MIXER_SETCONTROLDETAILSF_VALUE As Integer = &H0
        Private Const MIXERLINE_COMPONENTTYPE_DST_FIRST As Integer = &H0
        Private Const MIXERLINE_COMPONENTTYPE_SRC_FIRST As Integer = &H1000
        Private Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS As Integer = _
          MIXERLINE_COMPONENTTYPE_DST_FIRST + 4
            Private Structure MIXERCONTROL
            Public cbStruct As Integer
            Public dwControlID As Integer
            Public dwControlType As Integer
            Public fdwControl As Integer
            Public cMultipleItems As Integer
            <MarshalAs(UnmanagedType.ByValTStr, _
              SizeConst:=MIXER_SHORT_NAME_CHARS)> Public szShortName As String
            <MarshalAs(UnmanagedType.ByValTStr, _
            SizeConst:=MIXER_LONG_NAME_CHARS)> Public szName As String
            Public lMinimum As Integer
            Public lMaximum As Integer
            <MarshalAs(UnmanagedType.U4, SizeConst:=10)> Public reserved As _
              Integer
        End Structure 'MIXERCONTROL
 
            End If
 
            mixerClose(mixer)
 
        End Sub 'SetVolume
 
    End Class 'AudioMixerHelper
 
#End Region
 
 
End Class
Müsste den Code ein wenig Kürzen er war ein wenig zu lang sollte aber dennoch das wichtigste für Euch da sen um mir zu helfen.
Danke für Eure Hilfe
0

Beitrag wurde zuletzt am 19.03.11 um 20:42:00 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 12:32

Hallo an alle.

hier nochmal eine Frage an Euch betreffend des Equalizers.

Alles funktioniert super nur wenn ich das Programm ausführe und die Equalizer Einstellung mache "Sprich die Frequens ändere" und dann den Equalizer Schliesse und ihn dann wieder öffne stehen alle Pannels wieder auf null und die zuvor gemachte Einstellung ist nicht mehr zu sehen.

Wie kann ich das ändern?

Danke für Eure Hilfe
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 15:28

Hallo!

Ich vermute, dass Du die Instanz des Formulars mit Close
"vernichtest" und später wieder eine neue Instanz erstellst.
Dabei gehen natürlich alle Einstellungen, die in dieser Instanz
gespeichert waren, verloren.

Benenne zunächst das Formular von "Form2" um z.B. in "frmEqualizer".
Damit wird das AutoInstancing der Form vermieden:
Erstelle den Equalizer einmal (im Hauptformular, Deklarationsteil)
als: Dim myEqualizer as New frmEqualizer

Mache diese Form nur unsichtbar - kein Close.
(Oder im FormClosing-Event die CloseReason: UserClosing canceln.)

Etwa so:
 
Private Sub FormClosing(sender As Object, _
       e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       If e.CloseReason = CloseReason.UserClosing Then
           Me.Hide() : e.Cancel = True
       End If
End Sub
MfG
Manfred

Beitrag wurde zuletzt am 20.03.11 um 15:51:53 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 16:06

Hallo!

Was ich gerade noch sehe:
Dein Button1 muss natürlich raus.
Erstelle statt dessen einen Button "OK" und weise der
Eigenschaft "DialogResult" den Wert OK zu.

Im Hauptformular wird die Equalizer-Instanz geöffnet:
myEqualizer.showdialog
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 16:10

Hallo Manfred X

ist dann die Einstellung auch gespeichert wenn ich den Player ganz schliesse und dann wieder öffne??
Das sollte auch sein.
Wenn nicht dann kannst du mir sicher sagen wie das zu Bewerkstelligen ist.

Danke dir.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 16:21

Hallo!

Am einfachsten ist es wohl, wenn Du im FormClosing-Ereignis
des Player-Formulars eine Datei "myPlayerSettings.txt" zum Schreiben
öffnest (z.B. im Ordner: ApplictionData des Users) und die aktuellen
Values Deiner Steuerelemente dort einträgst.

Im Load-Ereignis des Player-Formulars prüfst Du zunächst, ob diese
Datei bereits vorhanden ist.
Falls ja, öffnest Du die Datei, liest die gespeicherten Werte und
überträgst sie in die zugehörigen Eigenschaften der Steuerelemente
des Equalizers.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 16:27

ok klingt gut nun aber meine frage wie genau mache ich das?
dankefür deine Gedult.

gruß
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 16:47

Hallo!

Hier das Prinzip:
    Private Sub frmPlayer_FormClosing(sender As Object, e As 
         System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
 
        'Abrufen der Werte  der Trackbars und als String aufbereiten
        Dim text As String = myEqualizer.TrackBar1.Value.ToString & ";" & _
                             myEqualizer.TrackBar2.Value.ToString
 
        'Datei öffnen und schreiben
        With My.Computer.FileSystem
            Dim folder As String = _
              .SpecialDirectories.CurrentUserApplicationData
            Dim filename As String = "PlayerSettings.txt"
            Dim filepath As String = IO.Path.Combine(folder, filename)
            .WriteAllText(filepath, text, False)
        End With
    End Sub
 
 
    Private Sub frmPlayer_Load(ByVal sender As System.Object, _
                   ByVal e As System.EventArgs) Handles MyBase.Load
 
       With My.Computer.FileSystem
         Dim folder As String = .SpecialDirectories.CurrentUserApplicationData
         Dim filename As String = "PlayerSettings.txt"
         Dim filepath As String = IO.Path.Combine(folder, filename)
         If .FileExists(filepath) Then
           Dim text As String = My.Computer.FileSystem.ReadAllText(filepath)
           Dim values() As String = text.Split(";"c)
 
           myEqualizer.TrackBar1.Value = CInt(values(0))
           myEqualizer.TrackBar2.Value = CInt(values(1))
         End If
      End With
   End Sub


Beitrag wurde zuletzt am 20.03.11 um 16:50:19 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 19:28

Hallo Manfred X

habe alles gemacht wie du sagtest.

nur eines geht noch Überhaubt nicht.
Und zwar das Speichern der Einstellung.
Hier mal der Code."Was mache ich falsch???" Ich habe 10 Regler im Equalizer.

#Region " Private Sub Form1_FormClosing"
    Private Sub Form1_FormClosing(ByVal sender As Object, _
      ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
      Me.FormClosing
 
        ' Timer stoppen
        Timer1.Stop()
 
        'Abrufen der Werte  der Trackbars und als String aufbereiten
        Dim text As String = myEqualizer.TrackBar1.Value.ToString & ";" & _
                             myEqualizer.TrackBar2.Value.ToString
 
 
        'Datei öffnen und schreiben
        With My.Computer.FileSystem
            Dim folder As String = _
              .SpecialDirectories.CurrentUserApplicationData
            Dim filename As String = "PlayerSettings.txt"
            Dim filepath As String = IO.Path.Combine("C:\PlayerSettings.txt")
            .WriteAllText(filepath, text, False)
        End With
    End Sub
 
#End Region
 
 
 
#Region " Private Sub Form1_Load"
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        BassNet.Registration()
 
        Dim eq As New EqualizerClass
        eq.EQ_Int()
        eq.EQ_Load()
 
        Try
            System.IO.File.Copy(CurDir() + "\bass.dll", _
              "C:\Windows\System32\bass.dll")
        Catch
        End Try
        Bass.BASS_Init(-1, 192000, BASSInit.BASS_DEVICE_CPSPEAKERS, _
          IntPtr.Zero, Nothing)
 
        Me.TrackBar1.Minimum = 0
        Me.TrackBar1.Maximum = 10
        Me.TrackBar1.TickFrequency = 1
        Me.TrackBar1.Value = S.GetVolume
 
        Dim OSC(1023) As Integer
        Dim OSCData(1023) As Single
        Dim oLeft, oRight As Single
 
        With My.Computer.FileSystem
            Dim folder As String = _
              .SpecialDirectories.CurrentUserApplicationData
            Dim filename As String = "PlayerSettings.txt"
            Dim filepath As String = IO.Path.Combine("C:\PlayerSettings.txt")
            If .FileExists(filepath) Then
                Dim text As String = My.Computer.FileSystem.ReadAllText( _
                  filepath)
                Dim values() As String = text.Split(";"c)
 
                myEqualizer.TrackBar1.Value = CInt(values(0))
                myEqualizer.TrackBar2.Value = CInt(values(1))
 
            End If
        End With
    End Sub
 
 
#End Region
 
End Class
Was habe ich hier falsch?
Danke dir.
0

Beitrag wurde zuletzt am 20.03.11 um 19:36:52 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 20:32

Hallo!

Du mußt die Einstellungen Deiner 10 Trackbars zunächst in die
Variable "text" eintragen (FormClosing) bzw. aus der
Variable "text" in die 10 Trackbars eintragen.
In meinem Code werden nur 2 Trackbars berücksichtigt.

Wenn Du Deine Trackbars als "Me.Trackbar1" usw. ansprechen kannst,
(=> der Code befindet sich im Equalizer-Formular) mußt Du auch in
meinem Code "myEqualizer." entfernen bzw. durch "Me." ersetzen.

Wenn Du den Pfad zur Settings-Datei komplett in einem String angibst,
benötigst Du die Methode "IO.Path.Combine" nicht.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 21:23

Habe es nochmal umgeschrieben aber nur ein erfolg gehabt.
Nun werden die Trackbars in die txt datei eingeschrieben mit dem Wert 0.
aber ansonsten Speichert das Programm die einstellungen nicht.

Hier nochmal der code.

 Private Sub Equalizer_Load(ByVal sender As System.Object, ByVal e As _
   System.EventArgs) Handles MyBase.Load
 
        Bass.BASS_Init(-1, 192000, BASSInit.BASS_DEVICE_CPSPEAKERS, _
          IntPtr.Zero, Nothing)
 
        Dim eq As New EqualizerClass
 
        eq.EQ_Int()
        eq.EQ_Load()
 
        With My.Computer.FileSystem
            Dim folder As String = _
              .SpecialDirectories.CurrentUserApplicationData
            Dim filename As String = "PlayerSettings.txt"
            Dim filepath As String = IO.Path.Combine("C:\PlayerSettings.txt")
            If .FileExists(filepath) Then
                Dim text As String = My.Computer.FileSystem.ReadAllText( _
                  filepath)
                Dim values() As String = text.Split(";"c)
 
                Me.TrackBar1.Value = CInt(values(0))
                Me.TrackBar2.Value = CInt(values(1))
                Me.TrackBar3.Value = CInt(values(0))
                Me.TrackBar4.Value = CInt(values(1))
                Me.TrackBar5.Value = CInt(values(0))
                Me.TrackBar6.Value = CInt(values(1))
                Me.TrackBar7.Value = CInt(values(0))
                Me.TrackBar8.Value = CInt(values(1))
                Me.TrackBar9.Value = CInt(values(0))
                Me.TrackBar10.Value = CInt(values(1))
 
            End If
        End With
    End Sub
 
Private Sub Form2Closing(ByVal sender As Object, _
           ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
           Me.FormClosing
        If e.CloseReason = CloseReason.UserClosing Then
            Me.Hide() : e.Cancel = True
 
            'Abrufen der Werte  der Trackbars und als String aufbereiten
            Dim text As String = Me.TrackBar1.Value.ToString & ";" & _
                                 Me.TrackBar2.Value.ToString & ";" & _
            Me.TrackBar3.Value.ToString & ";" & _
            Me.TrackBar4.Value.ToString & ";" & _
            Me.TrackBar5.Value.ToString & ";" & _
            Me.TrackBar6.Value.ToString & ";" & _
            Me.TrackBar7.Value.ToString & ";" & _
            Me.TrackBar8.Value.ToString & ";" & _
            Me.TrackBar9.Value.ToString & ";" & _
            Me.TrackBar10.Value.ToString & ";"
 
            'Datei öffnen und schreiben
            With My.Computer.FileSystem
                Dim folder As String = _
                  .SpecialDirectories.CurrentUserApplicationData
                Dim filename As String = "PlayerSettings.txt"
                Dim filepath As String = IO.Path.Combine( _
                  "C:\PlayerSettings.txt")
                .WriteAllText(filepath, text, False)
            End With
        End If
    End Sub
beide Codes habe ich in der Equalizer Form geschrieben.

Was stimmt hier nicht??

Danke dir
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Manfred X
Datum: 20.03.11 21:58

Hallo!

Du musst im Debugger prüfen, welche Einstellungen die
Trackbars besitzen, wenn die Form geschlossen wird.

Beim Schreiben (im Closing):
 If e.CloseReason = CloseReason.UserClosing Then
     Me.Hide() : e.Cancel = True
 else 
    'Falls die Form von der überg. Form geschlossen wird:
    'Einstellungen speichern
    Dim text As String = Me.TrackBar1.Value.ToString & ";" & _
       Me.TrackBar2.Value.ToString & ";" & _
       Me.TrackBar3.Value.ToString & ";" & _
       Me.TrackBar4.Value.ToString & ";" & _
       Me.TrackBar5.Value.ToString & ";" & _
       Me.TrackBar6.Value.ToString & ";" & _
       Me.TrackBar7.Value.ToString & ";" & _
       Me.TrackBar8.Value.ToString & ";" & _
       Me.TrackBar9.Value.ToString & ";" & _
       Me.TrackBar10.Value.ToString 
 
       'Datei öffnen und schreiben
       With My.Computer.FileSystem
            Dim filepath As String = "C:\PlayerSettings.txt"
          .WriteAllText(filepath, text, False)
       End With
End If
Beim Zuweisen auf die Trackbars im Load-Ereignis müssen die
Indizes korrekt gesetzt werden:
Me.TrackBar1.Value = CInt(values(0))
Me.TrackBar2.Value = CInt(values(1))
Me.TrackBar3.Value = CInt(values(2))
Me.TrackBar4.Value = CInt(values(3))
Me.TrackBar5.Value = CInt(values(4))
usw.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Wie Equalizer einstellung Speichern??? 
Autor: Micka
Datum: 20.03.11 22:09

Danke Manfred X

habs hinbekommen.

Super Klasse 5 Sterne für Manfred X

Gruß Micka
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel