![]() |
BassPlayerEx mit erweiterten Soundeffekten...
Liste der Anhänge anzeigen (Anzahl: 4)
Nachdem wir
![]() Unübersichtlich deshalb, weil es mittlerweile zwei Varianten gibt. Beide haben ihre Vor- und Nachteile. Und leider habe ich keine Möglichkeit gefunden, alles in einem Projekt zu vereinen. Dieser Thread beschäftigt sich mit dem Einsatz der Bass.dll und ihrer Erweiterungs-Dlls. Dies alles funktioniert allerdings nur auf einer Soundkarte (pro Anwendung). Wer mehr Soundkarten aus einer Anwendung heraus ansteueren möchte (z.B. für einen Monitor) sollte ![]() Die Visualisierungen können jetzt auch als Plugin nachgeladen werden. Die Pluginstruktur ist die von Winamp. Die Plugins findet ihr ![]() Viele Grüsse Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Irgendwie passen Titel und Text deiner beiden Threads nicht zusammen...
Welcher referenziert denn nun welches Thema (eine oder mehrere Soundkaten)? |
Re: BassPlayerEx für mehrere Soundkarten (keine Spezielfunk.
Hallo Der_Ventilator,
danke für deinen Hinweis. Da habe ich wirklich was durcheinandergebracht, habs jetzt korrigiert. Sorry für die Verwirrung. MfG Thorsten |
Re: BassPlayerEx für mehrere Soundkarten (keine Spezielfunk.
hallo omata,
bei ![]() ich klickte auf diesen link: Zitat:
sollte man vielleicht noch ändern, nicht dass jemand die falsche komponente herunterlädt... gruss urbanbruhin |
Re: BassPlayerEx für mehrere Soundkarten (keine Spezielfunk.
Meine Güte, da war ja wohl alles irgendwie durcheinander.
Danke für den Hinweis. MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
ich hätte da noch 2 fragen... 1. Könnte man vielleicht machen, dass alle visualisierungen in der TBassPlayerExU.pas sozusagen "inbegriffen" sind, d.h. dass man die visualisierung über den TBassPlayerEx gewählt werden kann? klingt kompliziert, darum habe ich hier mal ein bisschen code, wie ich mir das ungefähr vorgestellt habe:
Delphi-Quellcode:
verstehst du was ich meine?
Player := TBassPlayerEx.Create(1, self);
Vis := TFrameVisTurboPascal.create(self); ChannelA:=Player.addChannel(100); Player.VisImage := Image321; // TImage32 für die visualisierung Player.VisChannel := ChannelA; // So wird das Vis von ChannelA in Image321 angezeigt Player.Vis := vis; // Hier kann eingestellt werden, welche Visualisierung man will. Kann z.B. auch eine Integer-Zahl sein, z.B. 1 = TFrameVisTurboPascal, 2 = TFrameVisDizzy, 3 = TFrameVisCappellozza usw. wäre das so möglich oder ist das viel zu kompliziert? jetzt die 2.Frage: man kann ja mit Channel.LoadFromLied eine Abspielliste laden (wenn ich das so richtig verstanden habe). Ich habe in meinem programm eine Listview als abspielliste. diese kann sich aber jederzeit verändern, es können tracks hinzugefügt, verschoben oder gelöscht werden. kann ich so trotzdem irgendwie dem Channel diese abspielliste übergeben, die er dann der reihe nach abspielt, oder muss ich das "von hand" programmieren, dass nach dem ende eines tracks der nächste track abgespielt wird? mit dem FadeIn und FadeOut ist das irgendwie ziemlich kompliziert. thx schon im voraus gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
zu 1: sicher ist das möglich. Aber wäre das sinnvoll? Zur zeit gibt es einfach noch eine Indirektstufe mehr als das was du da vorschlägst. Dein Vorschlag ist sehr starr und würde alle die es anders haben wollen zu sehr einschräncken. Außerdem stellt das Basssystem die erforderlichen Informationen für eine Visualisierung nur pro Channel bereit. Das bedeutet wenn es in der BassPlayerEx-Klasse einen Zugriff auf diese Informationen geben soll, müsste das eine Addition aller aktiv spielenden Channels sein. Diese Addition würde aber sicherlich sehr viel Resourcen fressen. zu 2: dafür hatte ich das TGetLiedEvent eingebaut. Dieses Ereignis wird ausgelöst, wenn ein Channel ein neues Lied haben möchte. Als Übergabeparameter wird dort ein TLied erwartet. Wenn du also mit diesem Objekt TLied arbeiten würdest (so wie im Demo die Playlist) hättest du es ganz einfach. Falls du das nicht willst, habe ich die Version gerade dahingehend erweitert, dass es auch ein Event TGetFileEvent gibt. Diesem Event kann man dann einen Dateinamen übergeben. MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo omata,
danke für deine antwort :angel: du hast recht, das mit den visualisierungen war nicht so eine gute idee... das TGetFileEvent wäre genau das, was ich brauche, denke ich. ich habs mal so versucht: im onCreate-Ereignis der Form1 habe ich (nachdem der channelA erzeugt wurde) folgende zeile ergänzt:
Delphi-Quellcode:
die function GetFileEvent sieht im moment so aus:
ChannelA.getFileEvent := GetFileEvent;
Delphi-Quellcode:
so wollte ich schauen, wann und ob diese funktion ausgelöst wird.
function TForm1.GetFileEvent(var Dateiname: string): boolean;
begin showmessage('GetFileEvent'); end; mit ChannelA.loadfromFile() und ChannelA.Play spiele ich ein Track ab. wenn dieser zu ende ist, kommt aber keine Showmessage. was muss ich machen, dass diese funktion ausgeführt wird? und wenn ich einen übergang (FadeIn, FadeOut) zwischen zwei tracks haben will, muss ich da nur FadeAuto und FadeTime einstellen, und dass sollte funktionieren, wenn ich bei GetFileEvent einen dateinamen übergebe? wird dann diese funktion auch rechtzeitig ausgeführt, also bevor der track zu ende ist? ich hoffe ich gehe dir nicht auf die nerven mit den vielen fragen :stupid: gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
deine Vorgehenweise ist im Prinzip richtig. Aber du kannst das Event auch an die BassPlayerEx-Klasse übergeben. Dann wird jedem Channel in dieser Klasse die Ereignisroutine automatisch zugewiesen (beim Aufruf von addChannel). Das Ereignis wird ausgelöst wenn du LoadNextLied eines Channels aufrufst. Es wird auch ausgelöst wenn AutoFade eingeschaltet ist und das Lied am Ende ist bzw. ausgeblendet wurde. Wenn ein Channel noch kein Lied geladen hat und man doFadingIn aufruft, wird das Event ebenfalls ausgelöst. Das Überblenden musst du schon selber verarbeiten. Dies ist erforderlich weil die einzelnen Channels ja nicht wissen können zu welchem Channel du faden möchtest. Die Channels können dich nur unterstützen. Dafür gibt es isFadeOutPosition wenn das true wird, ist die errechnete Endposition im Channel erreicht. Dann kannst du doFadingOut aufrufen. Den Channel den du dann einblenden möchtest kannst du dann mit Channel.doFadingIn einblenden. Hoffe das hilft dir weiter... Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo omata,
ich denke, das habe ich soweit mal verstanden. nun wollte ich mal doFadingOut bei einem channel anwenden. meine OnUpdateTimeEvent sieht so aus:
Delphi-Quellcode:
also isComplete ist immer true wenn ein track abgespielt wird. is fadingOk auch. aber isFadeOutPosition wird immer erst true, wenn der Track zu ende ist, also findet nie ein FadingOut statt. warum ist das so? FadeTime ist ja gesetzt.
procedure TForm1.OnUpdateTimeEvent(Basschannel: TBasschannel);
var TimeUp, TimeLength: String; begin channela.FadeTime := 5; channela.FadeAuto := true; channela.FadeStop := true; label5.Caption := booltostr(channela.isComplete, true); // Hier sehe ich immer, ob true oder false label6.Caption := booltostr(channela.isFadingOK, true); // und hier auch label7.Caption := booltostr(channela.isFadeOutPosition, true); // und hier if (channela.isFadingOK) and (channela.isFadeOutPosition) then channela.doFadingOut; if channela.Status in [sndplaying, sndpaused] then begin TimeUp := ChannelA.SongTimeInfo[SongTimeUp].asSecString; TimeLength := ChannelA.SongTimeInfo[SongTimeLength].asSecString; if TimeUp = '--:--' then TimeUp := '00:00'; if TimeLength = '--:--' then TimeLength := '00:00'; label3.caption := TimeUp +' von '+ TimeLength; JvXPProgressBar1.Position := ChannelA.SongTimeInfo[SongTimeUp].asmillisecinteger; end; end; EDIT: ICh habe grad noch etwas gemerkt:
Delphi-Quellcode:
wenn ich diesen code aufrufe, wird die lautstärke immer leiser bis man nichts mehr hört, doch der track läuft fröhlich weiter, obwohl die volume auf null ist. beim onUpdateTimeEvent wird ja die Position der JvXPProgressBar1 immer aktualisiert (das ist die position des tracks). daran sehe ich auch, dass der track auch nach dem doFadingOut noch weiterläuft. wenn ich dann die volume von ChannelA hochdrehe, höre ich den track wieder. aber FadeStop ist ja auf true, da sollte doch nach dem doFadingOut sofort ChannelA.Stop aufgerufen werden, oder?
channela.FadeTime := 5;
channela.FadeStop := true; Channela.doFadingOut; gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
das was du da geschrieben hast sollte soweit stimmen. Der Channel spielt um die FadeTime weiter und sollte dann auf Stop bzw. Pause gehen. Ich kann nicht so ganz nachvollziehen warum das bei dir nicht geht. Wie du sieht, geht es im Demo wunderbar. Vielleicht kannst du da nochmal reinschauen und dir ein paar Hilfestellungen holen (dafür ist das Demo ja da). MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo omata,
Ich habe mal ein neues Projekt angefangen, um das FadeStop zu testen. hier der ganze code dazu:
Delphi-Quellcode:
wenn man auf play und dann auf stop klickt, "fadet" die musik aus, bis man sie nicht mehr hört. wenn man aber mit dem Button3 die volume auf 100 stellt, hört man sie wieder, d.h. die musik läuft weiter :gruebel:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, BassPlayerExU, basschannelu, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; OpenDialog1: TOpenDialog; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Player : TBassPlayerEx; ChannelA : Tbasschannel; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Player:=TBassPlayerEx.Create(1, self); ChannelA:=Player.addChannel(100); end; procedure TForm1.Button1Click(Sender: TObject); // Play-Button begin if not opendialog1.Execute then exit; channela.LoadFromFile(opendialog1.filename); channela.Play; end; procedure TForm1.Button2Click(Sender: TObject); // Stop-Button begin channela.FadeTime := 2; channela.FadeStop := true; channela.doFadingOut; end; procedure TForm1.Button3Click(Sender: TObject); // Volume-Button begin channela.Volume := 100; end; end. im anhang die EXE vom obigen (deutsch??) code. Komisch ist nur, dass das bei deiner Demo nicht so ist... EDIT: ich glaube, ich habe den fehler jetzt gefunden. ich habe in der Unit "BassCHannelU" ein bisschen abgeändert, jetzt sieht sie so aus:
Delphi-Quellcode:
warum es mit vol funktioniert und mit _volume nicht:
procedure TBassChannel.UpdateTime;
var vol, freq: cardinal; // das ist neu pan: integer; // das auch begin _BassDll.BASS_ChannelGetAttributes(_Channel, freq, vol, pan); // und das... if _FadeAuto then if _BassDll.BASS_ChannelGetPosition(_Channel) < _Start then _BassDll.BASS_ChannelSetPosition(_Channel, _Start); if _FadeOut and ((vol <= 1) or (Status <> sndPlaying)) then begin // hier habe ich _volume durch vol ersetzt if _FadeStop then Stop else Pause; _Volume:=_FadeStartVolume; _FadeOut:=false; if _FadeAuto then LoadNextLied; end; if assigned(_OnUpdateTimeTimer) then _OnUpdateTimeTimer(Self); end; die eigenschaft _volume verändert sich ja nicht während dem fading, und auch nach dem fading nicht. wenn man aber die volume mit BASS_ChannelGetAttributes ermittelt, ist es die volume genau in diesem moment, wenn die prozedur ausgeführt wird. ich hoffe du verstehst was ich meine... es wäre gut, wenn du das mal anschauen würdest, und dann auch eine neue version hochladen würdest. Gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
habe deine Erweiterungen eingebaut und hochgeladen. In meiner Demo ist mir das nicht aufgefallen weil sich dort _Volume auch ändert. Dies wird dort allerdings von aussen gesteuert. Da man das nicht vorraussetzen kann oder sollte, ist dein Tipp sehr sinnvoll. Vielen Dank für deinen Hinweis und deine Mühe. MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo omata,
also irgendwas stimmt da nicht :gruebel: hast du noch mehr am code verändert? jetzt funktionierts nämlich nicht mehr... wenn man nach dem fadeout die volume auf 100 stellt, läuft die musik weiter. ich habe mal den code angeschaut, doch ich habe den fehler nicht gefunden. im anhang ein beispielprojekt (delphi 2005), vielleicht findest du den fehler ja. gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
du musst auch das TimerUpdate aktivieren...
Delphi-Quellcode:
dann geht auch dein Beispiel.
Player.TimeUpdateEnable:=true;
MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Wollte mir das neue Beispiel mal ansehen, um mein Programm eventuell auf diese Version umzustellen, komme aber irgendwie mit dem überhaupt nicht zusammen.
Habs normal entpackt und kompliliert, sowie gestartet. Das Song laden, etc. klappt ohne Probleme, aber wenn ich das Lied abspielen möchte, beginnt es im Lied sehr zu knistern, so dass es nach nichts mehr klingt. Weiters geht die CPU Auslastung (gemessen mit TaskManager) auf über 30%, RAM-verbrauch fast 20Mb.. Angezeigt (daher direkt vom BassPlayer verbraucht) werden aber nur die 2-2,5% die ja normal sind, also liegts wohl nicht am PlayerModul.. Hab mir jetzt noch die schon kompilierte Datei runtergeladen, selbes Verhalten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo kurtm1,
Zitat:
Bei mir bleibt die CPU-Belastung bei 3-4%, deshalb habe ich da nicht weiter drüber nachgedacht. Ich denke mal das dieses Knistern zustande kommt, weil dein Rechner das einfach nicht mehr schafft. Ich konnte den Code noch etwas optimieren. Bitte probier das jetzt nochmal aus. Die 20MB kommen durch die Visualisierungen zustande - ich arbeite dran. MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
mit Player.TimeUpdateEnable:=true; funktionierts jetzt wunderbar!! thx :bounce1: gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
@omata: Der Rechner (Laptop) sollte es locker packen, ich kann mir nur vorstellen, dass die SharedMemory Grafikkarte die Probleme macht, bzw. für die neue grüne Visualisierung einfach zu schwach ist..
|
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
ich habe da noch 2 kleine sachen: also bei doFadingOut würde ich das mit dem FadeTime*1.5 weglassen, das kann man ja auch selber einstellen über Channel.FadeTime. gleichzeitig würde ich beim doFadingIn die Volume nicht auf 25, sondern auf 0 stellen. wenn channel.volume grösser als 25 ist, wird aus dem FadeIn ein FadeOut_To_25 :cat: oder hast du das aus einem bestimmten grund so gemacht? Gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
deine Einwände sind sehr sinnvoll. Ich habe das mal korrigiert und neu hochgeladen. Bei doFadingIn kann man jetzt die Startlautstärke übergeben. Wenn man nichts übergibt, wird bei Null angefangen. MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
danke für die änderung. leider hats jetzt einen anderen fehler drin :wall: wenn ich die volume auf 100 stelle, und dann ein Track abspiele mit FadeIN, fängt es bei volume 0 an und geht bis 100. muss ja auch so sein. nach einem kurzen moment springt aber die volume plötzlich auf 50 :gruebel: es muss an deinem code liegen und nicht an meinem projekt, da der fehler bei dem kleinen projekt, das ich mal hochgeladen habe, auch auftritt. ich konnte den fehler leider noch nicht finden, doch ich werde mal weitersuchen. was hanst du denn noch geändert am code (ausser das mit dem FadeIn und FadeOut)? gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
hast du die Normalisierung an? Oder spielst damit rum? Dann liegt die normale Lautstärke bei 50%. Somit können dann leise Lieder automatisch um maximal 50% in der Lautstärke angehoben werden. Du darf dann also nicht selber an der Lautstärke eines Channels drehen, da ja der optimale Punkt selbst ermittelt und eingestellt wird. Wenn du es doch tust, wird nach dem Laden eines neuen Liedes wieder die Einstellung korrigiert. Dies geschieht erst, wenn das Lied komplett geladen ist, deshalb wohl die kurze Verzögerung. Wenn du das nicht willst, dann schalte die Normalisierung ab.
Delphi-Quellcode:
MfG
Channel.Normalisierung:=false;
Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
genau das war das problem :wall: :wall: aber vorher war das normalisieren standardmässig auf false, oder nicht? :gruebel: thx gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Zitat:
MfG Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Endlich ist die neue Version da.
Die Anwendung enthält jetzt keine Visualisierungen mehr. Diese werden jetzt als Plugin nachgeladen. Pluginschnittstelle ist die von Winamp. Es können jetzt also auch Winampplugins eingebunden werden. Wie man solche Plugins selber macht findet ihr ![]() Viele Grüsse Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Liste der Anhänge anzeigen (Anzahl: 1)
hallo omata,
ich habe jetzt für mein projekt der neue bassDllPlayerEx verwendet, d.h. ich habe die dateien ins lib-verzeichnis kopiert (die alten überschrieben). nun kommt aber jedes mal beim beenden meines programmes ein Anwendungsfehler (siehe anhang). dann habe ich wieder die alten dateien ins lib-verzeichnis kopiert, und der fehler ist weg. das habe ich dann ein paarmal wiederholt, um ganz sicher zu sein dass es am neuen bassDllPlayerEx liegt. Immer bei den neuen dateien kam der fehler, bei den alten dateien nicht. Was könnte denn das problem sein? gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
Hallo urbanbruhin,
da kann ich jetzt nicht wirklich viel zu sagen. In welcher Zeile tritt der Fehler auf? Wieso kopierst du die Dateien in das Lib-Verzeichnis. Dies ist keine Visualisierungskomponente. Das heisst die Delphi-IDE braucht doch keine Informationen. Warum fügst du nicht einfach die Dateien, die du benötigst zu deinem Projekt hinzu. Das hat dann auch den Vorteil, dass wenn du mal deine Sourcen veröffentlichst oder sichern willst, alles dabei ist und nicht einfach was vergessen wird, weil das ja bei deiner Delphiversion vermeintlich dabei ist. Fuktioniert den mein Beispiel? Verwirrte Grüsse Thorsten |
Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
hallo omata,
habe den fehler jetzt doch noch gefunden, ich habe am schluss vergessen player.free aufzurufen :oops: :duck: aber bei der alten version hats auch ohne player.free geklappt :gruebel: dummer fehler... also ich kopiere die dateien ins lib-verzeichnis, damit der projektordner schön übersichtlich bleibt. ich will nicht 100 dateien im projektordner haben, die ich auch ins lib-verzeichnis kopieren kann, wo es niemand stört. ich habe sowieso nicht vor, den source zu veröffentlichen, das wäre viel zu mühsam wegen der "fremdkomponenten" die bei delphi installiert werden müssen. gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten...
Liste der Anhänge anzeigen (Anzahl: 1)
Für die Version, in der die Visualisierungen in der EXE stecken, hier mal ein minimal Beispiel.
|
Re: BassPlayerEx mit erweiterten Soundeffekten...
der letzte Post ist schon etwas länger her.
Ich nutze den BassPlayerEx mit 2 Soundkarten. Beim durchteten von meinem Programm ist mir aufgefallen, dass wenn ich den EQ munter ein und ausschalte (eq.Start; eq.Stop) die CPU-Anzeige jedes mal um ca. 0,9-1,1 % steigt. Was mir noch aufgefallen ist, ist dass sich die verschiedenen EQs überlagern. Heißt soviel: -> 1. EQ an -> 2. EQ einstellen -> 3. EQ aus -> Schritte 1 bis 3 mehrmals wiederholen -> Beobachtung: Die EQs müssen sich überlagern, da dann die Lautsprecher bei dunklen Tönen stark kratzen, wass sie ohne EQ/ nur 1 mal angeschaltetem EQ nicht tun rollstuhlfahrer PS: mein Code sieht so aus:
Delphi-Quellcode:
Und Fehler konnte ich in BassEquiliserU noch nicht finden
if CheckBoxEQ.Checked then
begin Channel1.Equiliser.Start; Channel2.Equiliser.Start; EQChange(Sender); end else begin Channel1.Equiliser.Stop; Channel2.Equiliser.Stop; end; EDIT: Mal nen Screen zur veranschaulischung |
Re: BassPlayerEx mit erweiterten Soundeffekten...
Hallo rollstuhlfahrer,
danke für den Hinweis. Ich habe die Archive schon korrigiert. Da kannst das Problem auch schnell selber lösen, indem du in der Datei BassEquiliserU.pas folgende Methode veränderst...
Delphi-Quellcode:
Gruss
procedure TBassEquiliser.Stop;
var i:integer; Band:TBassEquiliserBand; begin for i:=1 to length(_Band) do begin Band:=_Band[i-1]; Band.par.fGain:=0; Update(Band); end; _Enabled:=false; ClearAllBand; // <-- diese Zeile hinzufügen end; Thorsten |
Re: BassPlayerEx - EQ
noch was wichtiges zum ändern:
wenn man 2 Mal (auch aus versehen) Channelx.Equisiler.Start aufruft, wird dieser auch tatsächlich 2 mal gestartet. Das hat zur folge, dass die Töne kratzen, obwohl der Rechner und die Festplatte schnell genug sind. Folgende Code-Änderunges kann man dann durchführen:
Delphi-Quellcode:
rollstuhlfahrer
procedure TBassEquiliser.Start;
begin if not _Enabled then // <-- begin // <-- _Enabled:=true; Init; end; // <-- end; procedure TBassEquiliser.Stop; var i:integer; Band:TBassEquiliserBand; begin if _Enabled then // <-- begin // <-- for i:=1 to length(_Band) do begin Band:=_Band[i-1]; Band.par.fGain:=0; Update(Band); end; _Enabled:=false; ClearAllBand; end; // <-- end; |
Re: BassPlayerEx mit erweiterten Soundeffekten...
hallo,
wollte jetzt bei einem neuen projekt die bassplayer-komponente verwenden. nun blick ich da aber irgendwie voll nicht durch... also einen Track abspielen ist kein problem, das hab ich shcon hingekriegt. habe leider beim letzten programm mit dieser komponente auch ein bisschen "gebastelt"^^ dieses mal will ichs aber ein wenig"professioneller" machen, und möglicht viel die internen funktioonen von der komponente nutzen usw. eine kleine hilfedatei oder sowas hast du nicht oder? wäre eben gut zu wissen was z.B. jede einzelne unit und/oder klassen machen, ich weiss z.B. nicht was mir die "FrameSoundKarteU" bringt. ausserdem mach ichs jetzt so, dass ich eifach ein TBassPlayer erzeuge und zwei Channels hinzufüge, und dann führe ich jede eintzelne funktion immer direkt vom Channel aus und den TBassPlayer brauch ich für rein gar nix mehr. Jetzt weiss ich nicht ob das normal ist, oder ob man den TBassPlayer auch verwenden sollte um z.B. irgendwelche werte zu setzen oder auszulesen. sorry ist irgendwie voll kompliziert geschrieben aber ist halb so schlimm wenn dus nicht verstehst :mrgreen: also zu meinem programm: es wird eine art jukebox, mit musikarchiv und verschiedene abspiellisten die geladen und gespeichert werden können. ausserdem will ich die fade-funktion nutzen, somit brauche ich wohl 2 channels. cd abspielen, Internet-Streams, ID3-informationen auslesen usw. sollen auch möglich sein über die komponente. eine visualisation brauch ich auch, und zwar eine die ausgewählt werden kann, also mit den DLL-Plugins. hättest du vielleicht vorschläge wie ich da vorgehen soll? z.B. soll ich die interne playlist von der komponente nutzen (gibt doch eine oder?), und soll ich lieder mit channel.loadfromlied oder mit loadfromfile abspielen? was bringt das loadfromlied für vorteile? und brauch ich eine TFrameSoundkarte? sorry für die vielen fragen, aber ich hab keine lust nochmal einfach was zusammenzubasteln, ich wills dieses mal wirklich möglichst effizient machen. wäre sehr dankbar für eine antwort! EDIT: jetzt kommst du bestimmt mit "schau in die demo". hab ich shcon gemacht -> ich finde sie ist sehr kompliziert aufgebaut mit den vielen frames und so...ausserdem wird da verdammt viel code gebraucht, geht das nicht mit viel weniger?? ja ich hab einfach den überblick nicht bei der demo, und das ganze in ein anderes projekt zu übertragen gibt erstens viel zu viel arbeit und zweitens lern ich dann nix ausser Ctrl+C und Ctrl+V EDIT2: eifach gesagt, ich versteh einfach den internen aufbau der komponente nicht! Gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten...
HI urbanbruhin,
hoffe, ich konnte dir helfen rollstuhlfahrer |
Re: BassPlayerEx mit erweiterten Soundeffekten...
Hallo rollstuhlfahrer,
Danke für deine Antwort, war sehr hilfreich! was mich nun noch intressieren würde, warum es beim TBassPlayer eine globale lautstärke gibt, und bei jedem einzelnen channel ebenfalls eine volume? soll ich am besten die eigenschaft volume bei den einzelnen channels gar nie setzen, sondern immer nur bei BassPlayer.volume? wird dann die volume der einzelnen channels ebenfalls geändert oder wie muss ich das ganze verstehen? EDIT: mit channel.lied bekommt man nur den Titel, den Interpret und die länge des tracks raus oder? und was ist channel.lied.bezeichnung? ich glaub, die informationen lese ich besser direkt über die MPEGAudio aus das geht warscheinlich schneller, und es sind dann auch informationen wie z.B. Album vorhanden. Gruss urbanbruhin |
Re: BassPlayerEx mit erweiterten Soundeffekten...
Liste der Anhänge anzeigen (Anzahl: 1)
ich setze die Channel-lautstärke so gut wie nie (für was gibts normalisieren!!)
die globale Lautstärke könnte man mit WMP-Lautstärkeregler vergleichen. somit hast du insgesammt 4 Regler pro Channel :gruebel: (ja und?) rollstuhlfahrer PS: im anhang ein Screen (norm. heißt normalisieren) |
Re: BassPlayerEx mit erweiterten Soundeffekten...
okay, das ist jetzt glaub mehr oder weniger alles klar.
jetzt muss ich nur noch rausfinden wie ich die ID3-Tags am besten ermittle. mit den Jedi-Komponenten werden z.T. einige Tracks nicht erkanns, also es kommen keine Informationen raus, wo jedoch bei Channel.Lied.xx war rauskommt wenn ich mich nicht täusche. Jeder einzelne Track beim hinzufügen ins Archiv noch in den Channel laden dauert jedoch bestimmt sehr lange, darum würde ich dies lieber umgehen..naja mal schauen wie ich das mache. Also dann mal danke für deine Hilfe! mfg |
Re: BassPlayerEx mit erweiterten Soundeffekten...
nimm doch die Id3Lib von Muetze1
Link: ![]() rollstuhlfahrer EDIT: das mit dem laden geht auch einfacher
Delphi-Quellcode:
with TLied.Create(filename) do
begin showmessage(Interpret + ' - ' + Titel); Free; end; |
Re: BassPlayerEx mit erweiterten Soundeffekten...
HI,
ich meld mich mal wieder hier zu Wort. Zum Thema Erweiterungen ist zu sagen, dass ich überhaupt nicht weiß, wie ich den BassPlayerEx dazu bring, WMA Dateien zu lesen. An der BassWMA.dll soll es nicht liegen. Welches Stückchen Code muss jetzt geändert werden, dass der Player auch WMA abspielt? rollstuhlfahrer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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