AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

equalizer mit der bass.dll

Ein Thema von Dr.No · begonnen am 20. Jul 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Dr.No

Registriert seit: 18. Mär 2005
38 Beiträge
 
#1

equalizer mit der bass.dll

  Alt 20. Jul 2005, 13:56
Hallo, ich mach gerade nen mediaplayer mit der bass.dll.
hab das teil jetzt auch zum laufen bekommen, und wollte nen equalizer einbauen. Ich weiß, gleich will mir wieder einer nen link andrehen, aber ich hab auch schon selbs gesucht, und nicht wiklich eine gute beschreibung gefunden. und ich kenn mir auch noch nicht gut mit der bass dll aus, deshalb brauch ich da was ausführlicheres. Also? kann mir jamand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 14:07
Hast Du schon einmal bei Demo Samples der Bass.dll reingeschaut ?

...bass21\Delphi\fxtest\FXTest.dpr <- Ein einfaches Beispiel für einen EQ
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Dr.No

Registriert seit: 18. Mär 2005
38 Beiträge
 
#3

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 16:11
ja, gerade eben, es tut zwar, aber richtig verstanden hab ichs net

warum braucht man das?

Delphi-Quellcode:
    fx[1] := BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 1);
    fx[2] := BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 1);
    fx[3] := BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 1);
und für was ist
fBandwidth := 18;
da?

[edit=alcaeus]delphi-Tags Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 17:01
... := BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 1); Damit wird der Effekt auf/zum dem aktuellem Stream ( Channel ) gesetzt, mit der Priorität 1.
Also den aktuellen Stream den EQ- Effekt zuweisen.
Mann kann somit auch einzelnen Kanälen verschiedene Effekte zuweisen.

z.B.:
- MP3-Kanal bekommt einen Halleffect,
- Musick–Kanal einen Chorus,
…usw.

fBandwidth - da wird irgend eine Bandbreite gesetzt (in Semitones) 1 bis 36.

Semitones: kann ich jetzt nicht genau sagen (¿ Durchschnittliche Töne ?)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Dr.No

Registriert seit: 18. Mär 2005
38 Beiträge
 
#5

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 20:00
ok, danke.

Kann mir jezt noch jemand sagen, wie ich mit
BASS_ChannelGetData
ne visualisierung machen kann.
es soll nur was einfaches sein!
und gibts vieleicht ein gutes tutorial auf deutsch zu der bass.dll?
  Mit Zitat antworten Zitat
Dr.No

Registriert seit: 18. Mär 2005
38 Beiträge
 
#6

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 20:37
Delphi-Quellcode:
image1.Picture.LoadFromFile('J:\mediaplayer\bass\a.bmp');
  Bass_ChannelGetData(stream, @data, BASS_DATA_FFT512);
  for i := 1 to 256 do
  begin
 image1.Canvas.LineTo(i, strtoint(formatfloat('0',450-data[i]*2000)) );

  end;
  end;
isch das schon eine?
also ausshen tuts schon wie eine!

[edit=alcaeus]Delphi-Tags Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: equalizer mit der bass.dll

  Alt 20. Jul 2005, 22:31
Ich würde es eher so machen (Spectrumanalyzer) :

Delphi-Quellcode:

var
  data : array[1..255] of Single;
  i : byte;
begin
  Bass_ChannelGetData(stream, @data, BASS_DATA_FFT512);

  Paintbox1.Canvas.FillRect(Paintbox1.ClientRect);
  Paintbox1.canvas.Lineto(0, Paintbox1.height);
   for i := 0 to 255 do
   begin
     Paintbox1.Canvas.Lineto(i, Paintbox1.Height - round( Data[i] * 200 ) );
// strtoint(formatfloat('0',450-data[i]*2000)) ); ???
   end;
...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: equalizer mit der bass.dll

  Alt 19. Sep 2005, 14:37
Wenn ich das so mach, wie von Dr. No vorgeschlagen, kommt etwa sowas bei raus: (siehe Anhang)
Der Abstand zwischen den Balken gibt zwar schon die Frequen an, aber so richtig schön (Oszillokop wie bei Winamp) ist es nicht grad....
Wie geht´s ???

(habe die Schleife aber bis 2048 laufen lassen, weil ich der Meinung bin, dass ich das irgendwo in der Bass.dll gelesen hätte)
Miniaturansicht angehängter Grafiken
wave_165.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: equalizer mit der bass.dll

  Alt 19. Sep 2005, 15:29
Ich fasse mal eine Antwort aus deinen beiden Fragen (hier und da) zusammen (besser wäre nen eigener Thread gewesen ).

padavan hat im anderen Thread geschrieben:
Hab immer die maximale Amplitude und die Frequenz stellt sich im Abstand der Balken dar.

Kleine Begriffsklärung: Die X-Achse stellt die Zeit da. Somit ist der Begriff "Frequenz" an dieser Stelle missverständlich - ich musste 3 Mal drüberlesen

Wie greifst du auf die Bass.dll zu? GetWaveData z.B. ist kein nativer Aufruf an die DLL. Dort hieße es ChannelGetData, und dort wird erst via Parameter angegeben ob man FFT oder Wave haben möchte. Von daher wäre es schonmal gut wenn du die entsprechenden Funktionen dazuschreiben könntest.

Dazu wäre auch der QT deiner Zeichenmethode sehr interessant - die aktuellen Infos sind zu knapp. Zudem sind die Wertebereiche von Wave- und FFT-Daten wenn ich mich nicht irre unterschiedlich.
Die Schleife bis 2048 laufen zu lassen ist auch nicht per se richtig. Die gewünschte Länge kann der Bass.dll angegeben werden.


Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: equalizer mit der bass.dll

  Alt 19. Sep 2005, 22:32
Sorry,
du hast natürlich recht, der Quelltext ist recht knapp,
hab aber nichts richtiges Vorzuweisen, da ich hin und her probiere.
Ich benutze eine Komponente die ich hier gefunden habe, in der die Bass.Dll zur Verfügung gestellt wird. Dort ist der Aufruf BassDllplayer1.Getwavedata wohl das was dir mit ChannelGetData bekannt ist.

Das ist mein letzter Versuch

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject); // Draw Vis.
var
  data: TFFTData;
  data1: TwaveData;
  i: integer;
  tmpBitmap: TBitmap;
begin
data1 := BassdllPlayer1.GetwaveData;

Paintbox1.Canvas.MoveTo(0, Paintbox1.height div 2);
for i := 0 to 255 do begin
  Paintbox1.Canvas.pen.color := RGB(255 - i, i, 0);
  Paintbox1.Canvas.LineTo(i,Paintbox1.height div 2 - Data1[i] div Trackbar1.position);
                                                                 // als Offset quasi...

end;
(danke für´s drüber nachdenken)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz