Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   BassPlayerEx für mehrere Soundkarten... (https://www.delphipraxis.net/65380-bassplayerex-fuer-mehrere-soundkarten.html)

omata 15. Mär 2006 22:57


BassPlayerEx für mehrere Soundkarten...
 
Liste der Anhänge anzeigen (Anzahl: 3)
Nachdem wir hier mal gestartet sind und der Thread nun doch langsam unübersichtlich wird, mache ich hier mal was neues auf.
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 nur dieser!). Dies alles funktioniert für mehr als eine Soundkarte (pro Anwendung). Allerdings können hier keine Funktionen aus Erweiterungs-Dlls für die Bass.dll eingesetzt werden. Wer mehr Spezielfunktionen benötigt und wem eine Soundkarte pro Anwendung reicht der sollte hier mal schauen.

Die Visualisierungen werden jetzt als Plugin nachgeladen. Die Pluginstruktur ist die von Winamp.
Die Plugins findet ihr hier.


Viele Grüsse
Thorsten

100nF 18. Mär 2006 15:55

Re: BassPlayerEx mit erweiterten Soundeffekten (eine Soundka
 
hallo,

ich habe die komponente mal ausprobiert, konnte aber nicht compillieren, da er in der BassPlayerU.pas "TGetLiedEvent" nicht kennt.

gruss
urbanbruhin

omata 18. Mär 2006 17:09

Re: BassPlayerEx für mehrere Soundkarten (keine Spezielfunk.
 
Hallo urbanbruhin,

ich gebe ja zu das es schwierig ist durch den kuddelmuddel, den ich hier verzapft habe durchzusteigen :roll:
Hoffe ich habe jetzt wirklich alles so korrigiert, dass es jetzt endlich richtig ist :wall:

Deine erwähnte Datei gibt es in diesen Projekten nicht mehr. Sie heisst jetzt BassPlayerExU.pas. Ich habe auch gerade beide Archive mal getestet. Beide kann ich ohne Probleme compilieren und in beiden ist deine erwähnte Datei nicht vorhanden (weder als Datei noch im Quellcode) :gruebel:

Also ich bin jetzt etwas verwirrt :roteyes:

MfG
Thorsten

omata 11. Apr 2006 21:45

Re: BassPlayerEx für mehrere Soundkarten (keine Spezielfunk.
 
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 hier.

Viele Grüsse
Thorsten

thabaker 4. Aug 2007 15:38

Re: BassPlayerEx für mehrere Soundkarten...
 
HI, ich habe deine Demo heruntergeladen und compiliert, beim Ausführen bekomme ich aber immer eine EIntOverflow in der Unit DLLLoaderU.pas, Zeile 741.
Delphi-Quellcode:
      {$Q+}
      ImageBaseDelta:=LONGWORD(ImageBase)-ImageNTHeaders.OptionalHeader.ImageBase;
      {$Q-}
Benutze Dellphi 2007 auf WinXP Sp2.

omata 4. Aug 2007 22:12

Re: BassPlayerEx für mehrere Soundkarten...
 
Hallo thabaker,

kommt der Fehler nur in der IDE oder auch wenn du die EXE startest?

Gruss
Thorsten

F.W. 22. Nov 2007 17:26

Re: BassPlayerEx für mehrere Soundkarten...
 
Hi Leutz, ich weiß ja nicht genau wie das bei Vista funktioniert, ob man da dann wie quasi mehrere Sound karten hat (da kann man aj auch irgendwie den Sound für jede Anwendung einzeln steuern, soweit ich weiß), aber geht diese Version des BassPlayerEx's dann auch unter Vista?

rollstuhlfahrer 3. Jan 2008 21:50

Re: BassPlayerEx für mehrere Soundkarten...
 
Nachdem ich mir die 18 Seiten von TBass(Dll)Player reingezogen hab, bin ich auf die Idee gekommen, BassPlayerEx zu verwenden. Als einfacher Mensch fände ich es ganz nett, den BassPlayerEx auch als Komponente verwenden zu können. Jetzt hab ich aber schon mehrmals gelesen, dass es den BassPlayerEx nicht als Komponente gibt/ geben werden soll. Frage: Wird es den BassPlayerEx irgendwann mal als Komponente geben? Die Komponente hat den Vorteil, dass sie eben mehr regelt...

rollstuhlfahrer

omata 3. Jan 2008 22:42

Re: BassPlayerEx für mehrere Soundkarten...
 
Hallo rollstuhlfahrer,

es gibt keine visuelle Komponente. Das bedeutet, man kann eben nicht per KlickiBunti arbeiten. Aber ist das nötig? Man kann die benötigten Sachen doch einfach selber anlegen. Und welche da nötig sind kann man doch leicht über Strg+Leertaste ermitteln.
Da der BassPlayerEx keine Begrenzung bei den Channels aufweist, kann man soetwas nur schwer im Objektinspektor realisieren. Es gibt vermutlich eine Möglichkeit aber das sehe ich nicht als so tolle Erweiterung und würde das System vermutlich eher unübersichtlicher machen.
Und was bleibt dann noch übrig, wenn man die Channels nicht über den Objektinspektor erreichen kann? Die drei Parameter kann man doch dann auch im Code setzen.

Und mal angenommen ich realisiere jetzt auch die Channels als Visuelle Komponente, dann ist man doch wieder eingeschrängt. Weil man nur die Channels zur Verfügung hat, die auf der Form liegen. Oder man erzeugt sie sich dann doch wieder selbst.

Also ich sehe da nicht unbedingt handlungsbedarf.

Ist dieser Zustand, das kein visuelles Rechteck auf der Form liegt, der einzige Grund warum der BassPlayerEx nicht so gern eingesetzt wird?
Das kann ich überhaupt nicht nachvollziehen.

Gruss
Thorsten

rollstuhlfahrer 4. Jan 2008 07:33

Re: BassPlayerEx für mehrere Soundkarten...
 
da es gestern sehr spät war, hatte ich nicht so die große lust, mal in das Programm reinzuschauen, was ich eben heute nachholen werde. mal sehen, was sich machen lässt...

rollstuhlfahrer

EDIT: Die Demo hat nen kleinen Macken...
Wenn man auf Verzeichnis hinzufügen(Playlist) klickst und einen Ordner auswählt, in dem nicht nur Lieder drin sind, sondern auch Bilder (z.B. AlbumCover) zeigt die Anwendung jedes mal einen Fehler "Can't open File *.jpg"

omata 4. Jan 2008 13:05

Re: BassPlayerEx für mehrere Soundkarten...
 
Zitat:

Zitat von EWeiss
Wenn erlaubt möchte ich das Plugin gerne Winamp5 Kompatibel machen.
Für die Bitmaps einen eigenen Ordner anlegen und das Window wenn möglich Transparent zu machen
also ohne Borderstyle.

:thumb: gute Idee, da freu ich mich schon drauf.

Zitat:

Zitat von EWeiss
Auch unter BassVis läuft es gut

Das freut mich besonders, dann habe ich da ja nicht zu großen Blödsinn verzapft.

Gruss
Thorsten

omata 4. Jan 2008 20:24

Re: BassPlayerEx für mehrere Soundkarten...
 
Ich habe hier kein Delphi zur Hand, habe aber gerade mal in den Code geschaut.

In der Unit VisDizzyU.pas ist doch folgende Funktion...
Delphi-Quellcode:
function render_vis(this_mod:PwinampVisModule):Integer;
var waveformData: PwaveformData;
    spectrumData: PspectrumData;
begin
  waveformData:=@this_mod^.waveformData;
  spectrumData:=@this_mod^.spectrumData;
  _FDizzy.Draw(spectrumData^, waveformData^);
  Result:=0;
end;
und dort wird das Draw aufgerufen.

Wo ist da jetzt das Problem? Hoffe das hilft dir weiter.

Gruss
Thorsten

omata 4. Jan 2008 21:00

Re: BassPlayerEx für mehrere Soundkarten...
 
Da kann ich leider nicht helfen, weil ich keine Ahnung von Winamp5-Plugins habe.

Was ich nicht verstehe:
1. Wo kommt den Timer1 her, ich habe den da nicht eingebaut und wie sieht da die Event-Prozedur von aus?
2. Wieso kannst du da keinen Timer drauf machen, hast du doch gemacht?
3. Ich dachte immer das Winamp die Render-Prozedur aufruft und dann wird gezeichnet, ist das bei Winamp5
anders?

Also sorry für die dummen Fragen, aber ich habe zur Zeit kein Delphi zur Hand und von Winamp5 keine Ahnung.

Gruss
Thorsten

rollstuhlfahrer 6. Jan 2008 07:26

Re: BassPlayerEx für mehrere Soundkarten...
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab noch nen Macken gefunden, allerdings in dem BassPlayerEx. Wenn man das Virtualisierungsfenster öffnet, hat das nur eine einzige Sprache, und das ist Englisch... Ich hab da mal was vorbereitet:

Delphi-Quellcode:
// Unit VisPluginControl

type
  TVisControlForm = class(TForm)
  private
    _Sprachen: array[0..1, 1..8] of String; //Sprachen, (btnConfigure, Label3, btnStart,
                                            // Label2, btnStop, btnClose, Label1, Form.Caption)
  public
    procedure SetSprache(SprachCode: String);
    function GetAvailibleSprachen: TStringList;
  end;

implementation

constructor TVisControlForm.create(AOwner: TComponent; BassDll:TBassDll);
begin
...
//Sprachen, (btnConfigure, Label3, btnStart,
// Label2, btnStop, btnClose, Label1)

// EN (0)
_Sprachen[0][1] := 'Configure';
_Sprachen[0][2] := 'Description of library';
_Sprachen[0][3] := 'Start';
_Sprachen[0][4] := 'Available modules';
_Sprachen[0][5] := 'Stop';
_Sprachen[0][6] := 'Close';
_Sprachen[0][7] := 'Detected Plug-ins';
_Sprachen[0][8] := 'Visualization plug-in control';
// DE (1)
_Sprachen[1][1] := 'Konfigurieren';
_Sprachen[1][2] := 'Beschreibung';
_Sprachen[1][3] := 'Start';
_Sprachen[1][4] := 'Vorhandene Module';
_Sprachen[1][5] := 'Stop';
_Sprachen[1][6] := 'Schließen';
_Sprachen[1][7] := 'Gefundene Plug-ins';
_Sprachen[1][8] := 'Virtualisierungsplug-in auswählen';
end;

procedure TVisControlForm.SetSprache(SprachCode: String);
begin
//Sprachen, (btnConfigure, Label3, btnStart,
// Label2, btnStop, btnClose, Label1)

if Uppercase(SprachCode) = 'DE' then
begin
  btnConfigure.Caption := _Sprachen[1][1];
  Label3.Caption := _Sprachen[1][2];
  btnStart.Caption := _Sprachen[1][3];
  Label2.Caption := _Sprachen[1][4];
  btnStop.Caption := _Sprachen[1][5];
  btnClose.Caption := _Sprachen[1][6];
  Label1.Caption := _Sprachen[1][7];
  Self.Caption := _Sprachen[1][8];
end else if UpperCase(SprachCode) = 'EN' then
begin
  btnConfigure.Caption := _Sprachen[0][1];
  Label3.Caption := _Sprachen[0][2];
  btnStart.Caption := _Sprachen[0][3];
  Label2.Caption := _Sprachen[0][4];
  btnStop.Caption := _Sprachen[0][5];
  btnClose.Caption := _Sprachen[0][6];
  Label1.Caption := _Sprachen[0][7];
  Self.Caption := _Sprachen[0][8];
end;
end;

function TVisControlForm.GetAvailibleSprachen: TStringList;
var Liste: TStringList;
begin
Liste := TStringList.Create;
Liste.Add('EN');
Liste.Add('DE');
Result := Liste;
Liste.Free;
end;

end.
Um das nutzen zu können braucht man noch:
Delphi-Quellcode:
// Unit BassPlayerExU
type
  TBassPlayerEx = class(TComponent)
  public
    { Public declarations }
    procedure SetVisControlFormSprache(SprachCode: string);
    function GetVisControlFormSprachen: TStringList;
  end;

procedure TBassPlayerEx.SetVisControlFormSprache(SprachCode: string);
begin
  _VisControlForm.SetSprache(SprachCode);
end;

function TBassPlayerEx.GetVisControlFormSprachen: TStringList;
begin
  Result := _VisControlForm.GetAvailibleSprachen;
end;

end.
rollstuhlfahrer

PS: Das ganze könnte man auch noch mit TLanguages ( anhang ) und oder automatischer Erkennung der Systemsprache erweitern

rollstuhlfahrer 6. Jan 2008 18:49

Re: BassPlayerEx für mehrere Soundkarten...
 
jetzt, wo ich reingeschnuppert bin und schon viele Stunden Arbeit hinter mir liegen :coder: , bin ich immernoch überzeugt, eine Komponente wird sich hinbiegen lassen, aber der Aufwand ist arg groß... :gruebel: (Schätze mal: 1/2 Channel, 10 Band EQ, Fade zw. Channel1-Channel2, LiedInfo, ...)
Das ist harte Arbeit. :wall: :wall: :wall:

rollstuhlfahrer 19. Jan 2008 22:38

Re: BassPlayerEx für mehrere Soundkarten...
 
mal was ganz anderes:
Wie kann man denn mit dem BassPlayerEx AddOns einbinden (z.B.: BassWMA.dll)
Laut Werbung in [Komponente]TBassDllPlayer soll das hier gehen

rollstuhlfahrer

omata 19. Jan 2008 23:07

Re: BassPlayerEx für mehrere Soundkarten...
 
Siehe ersten Post in diesem Thread...

Zitat:

Zitat von omata
Dieser Thread beschäftigt sich mit dem Einsatz der Bass.dll (und nur dieser!). Dies alles funktioniert für mehr als eine Soundkarte (pro Anwendung). Allerdings können hier keine Funktionen aus Erweiterungs-Dlls für die Bass.dll eingesetzt werden. Wer mehr Spezielfunktionen benötigt und wem eine Soundkarte pro Anwendung reicht der sollte hier mal schauen.

Zitat:

Zitat von rollstuhlfahrer
Laut Werbung in [Komponente]TBassDllPlayer soll das hier gehen

Zitat:

Zitat von turboPASCAL
:arrow: Eine Erweiterte Komponente (+ Demo) BassPlayerEx zu diesem Thema hat omata geschrieben.
Mit ihr ist es möglich mehrere Sound-Kanäle gleichzeitig abzuspielen. Unbedingt Sehenswert. :thumb: Preview

Wo steht das? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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