![]() |
equalizer mit der bass.dll
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? |
Re: equalizer mit der bass.dll
Hast Du schon einmal bei Demo Samples der Bass.dll reingeschaut ?
...bass21\Delphi\fxtest\FXTest.dpr <- Ein einfaches Beispiel für einen EQ |
Re: equalizer mit der bass.dll
ja, gerade eben, es tut zwar, aber richtig verstanden hab ichs net
warum braucht man das?
Delphi-Quellcode:
und für was ist
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); fBandwidth := 18; da? [edit=alcaeus]delphi-Tags Mfg, alcaeus[/edit] |
Re: equalizer mit der bass.dll
Delphi-Quellcode:
Damit wird der Effekt auf/zum dem aktuellem Stream ( Channel ) gesetzt, mit der Priorität 1.
... := BASS_ChannelSetFX(chan, BASS_FX_PARAMEQ, 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 ?) |
Re: equalizer mit der bass.dll
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? |
Re: equalizer mit der bass.dll
Delphi-Quellcode:
isch das schon eine?
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; also ausshen tuts schon wie eine! [edit=alcaeus]Delphi-Tags Mfg, alcaeus[/edit] |
Re: equalizer mit der bass.dll
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; ... |
Re: equalizer mit der bass.dll
Liste der Anhänge anzeigen (Anzahl: 1)
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) |
Re: equalizer mit der bass.dll
Ich fasse mal eine Antwort aus deinen beiden Fragen (hier und
![]() 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 |
Re: equalizer mit der bass.dll
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:
(danke für´s drüber nachdenken)
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz