Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi BASS.dll/Playlist (https://www.delphipraxis.net/34784-bass-dll-playlist.html)

Nils_13 28. Nov 2004 13:25


BASS.dll/Playlist
 
Hi,

1.
mit der BASS.dll spielt man mit siesem Befehl in Delphi einen geladenen Sound ab:
Delphi-Quellcode:
BASS_StreamPlay(Channel, False, 0);
Nur wie funktioniert Stop, Pause, Next etc.

2.
Wie funktioniert eine Playlist mit der BASS.dll
:arrow: Bei meinem alten Player habe ich die MediaPlayer Komponente verwendet nur jetzt verwende ich die BASS.dll, dass gibt halt ein paar kleine/große probleme.
Manchmal gibt es bei mir Erläuchtungen :coder2: ... nur diesmal ergibt es :kotz:
...
:mrgreen:

:hi:

fkerber 28. Nov 2004 13:27

Re: BASS.dll/Playlist
 
Hi!

Bitte für jede Frage einen neuen Thread, sonst wird das so unübersichtlich hier :wink:


Ciao Frederic

Matze 28. Nov 2004 13:27

Re: BASS.dll/Playlist
 
Die DP hat eine hervorragende Suchfunktion:

http://www.delphipraxis.net/internal...=unit+bass+dll

Nils_13 28. Nov 2004 13:55

Re: BASS.dll/Playlist
 
Hi,

wenn ich
Delphi-Quellcode:
BASS_STOP;
verwende kann ich nichts mehr abspielen, aber warum?

fkerber 28. Nov 2004 13:57

Re: BASS.dll/Playlist
 
Hi!

Hast du dir den Link überhaupt mal angeschaut?

Auszug:
Delphi-Quellcode:
[...]
procedure TBassPlayer.stop;
begin
  BASS_ChannelPause(channel);
  position := 0;
end;

procedure TBassPlayer.pause;
begin
  BASS_ChannelPause(channel);
end;

procedure TBassPlayer.resume;
begin
  BASS_ChannelResume(channel);
end;
[...]

Ciao Frederic

Nils_13 28. Nov 2004 14:08

Re: BASS.dll/Playlist
 
Und wrarum kommt dann der Fehler: 'INkompatible Typen: TPosition und Integer'?

Luckie 28. Nov 2004 19:59

Re: BASS.dll/Playlist
 
Weil TPosition nicht vom Typ Integer ist? :roll:

Im ASrchiv von der Bass.ddl liegen so viel ich weiß Demos bei, auch für Delphi. Desweiteren ist die Hilfe sehr gut. Es war mir ohne weiterers möglioch meinen MP3 Player damit zu programmieren, ohne dass ich auf größere Probleme gestossen bin.

Nils_13 29. Nov 2004 14:43

Re: BASS.dll/Playlist
 
@Luckie: thx

Da du gut programmieren kannst würde ich sehr gerne deinen mal sehen.

Nur noch die Playlist anfertigen, thx for all!
:hi:

fkerber 29. Nov 2004 14:45

Re: BASS.dll/Playlist
 
Hi!

Zitat:

Zitat von Nils_13
Da du gut programmieren kannst würde ich sehr gerne deinen mal sehen.

Dann schau mal auf seiner Homepage vorbei: www.luckie-online.de


Ciao Frederic

Nils_13 29. Nov 2004 15:13

Re: BASS.dll/Playlist
 
Hi,

@fkerber: den dwonload kann ich nicht finden!

@all:
ich hab bei der Playlist ausgewählte Lieder mit
Delphi-Quellcode:
procedure TFormPlayer.playClick(Sender: TObject);
var i: Integer;
begin
i := playlist.ItemIndex;
Channel := BASS_StreamCreateFile(FALSE, PChar(op.FileName), 0, 0, 0);
BASS_StreamPlay(Channel, False, 0);

if i >= 0 then
BASS_StreamPlay(Channel, False, 0);
end;
abgespielt, nur wie spielt mal alle Lieder die in der ListBox vorhanden sind ab?

:hi:

Luckie 29. Nov 2004 15:15

Re: BASS.dll/Playlist
 
Zitat:

Zitat von Nils_13
@fkerber: den dwonload kann ich nicht finden!

Also so groß ist meine Homepage auch wieder nicht: http://www.luckie-online.de/Delphi/Alt/

Nils_13 29. Nov 2004 15:41

Re: BASS.dll/Playlist
 
thx!

bei meiner Playlist läuft nichts:

Delphi-Quellcode:
i := playlist.ItemIndex;

Channel := BASS_StreamCreateFile(FALSE, PChar(i), 0, 0, 0);
if i >= 0 then
BASS_StreamPlay(Channel, False, 0);
könnt ihr mir da weiterhelfen :?:

Nils_13 29. Nov 2004 17:11

Re: BASS.dll/Playlist
 
Will ja keine Doppelposts machen, aber so helft mir doch bitte (das ist das letzte in meinem Programm!), sonst schlag ich mir den Kopf gegen die Wand :wall: !

SubData 29. Nov 2004 17:14

Re: BASS.dll/Playlist
 
Ohne dir zu Nahe treten zu wollen: Ohne Geduld und Eigeninitiative (Suchen) wirste nie ein Programmierer :)

Luckie 29. Nov 2004 17:16

Re: BASS.dll/Playlist
 
Hmpf, du hast trotzdem einen weiteren Thread aufgemacht. Und schon nach 2 Stunden hier wieder gepusht.

Das Prinzip ist doch ganz einfach: Du musst einfach in einer Schleife die Einträge deiner Listbox durchgehen, solnage noch Einträge vorhanden sind. Und wenn die vergangene Zeit der Dauer der MP3 datei entspricht, spielst du den nächsten Eintrag ab.

dizzy 29. Nov 2004 17:20

Re: BASS.dll/Playlist
 
Zitat:

Zitat von Nils_13
Delphi-Quellcode:
i := playlist.ItemIndex;

Channel := BASS_StreamCreateFile(FALSE, PChar(i), 0, 0, 0);
if i >= 0 then
BASS_StreamPlay(Channel, False, 0);

Watt soll ein PChar-Cast auf einen Index?? Wie wäre es mit
Delphi-Quellcode:
Channel := BASS_StreamCreateFile(FALSE, PChar(playlist.items[i]), 0, 0, 0);
:?:

Ist eigenlich zu offensichtlich um danach zu fragen ;)

jim_raynor 29. Nov 2004 17:32

Re: BASS.dll/Playlist
 
Weisst du überhaupt noch was du tust? i ist ein Integer. PChar ist nur ein Pointer auf einen String. Wenn du jetzt versuchst i als PChar zu verwenden wirst du zwangsläufig auf die Schnauze fliegen, da er den Wert in i als Zeiger auf einen String verwendet. i wird nun irgendwas mit 4 oder 10 oder 200 sein. Alles keine gültigen Zeiger auf einen String. Du musst also den i-ten Eintrag aus deiner Playliste verwenden.

Und sorry, muss meinen Vorredner zustimmen. Ohne Geduld und Eigeninitiative darf man sich nicht als programmierer bezeichnen. Naja viel Glück noch bei deinen Vorhaben.

Nils_13 29. Nov 2004 17:36

Re: BASS.dll/Playlist
 
i-ten :lol: , hab ich noch nie gehört.

:freak:

Nils_13 30. Nov 2004 15:15

Re: BASS.dll/Playlist
 
Nur jetzt mal im ernst, wie meinst du das?

:hi:

fkerber 30. Nov 2004 15:26

Re: BASS.dll/Playlist
 
Hi!

Dizzy hat es doch schon gepostet :gruebel:


Ciao Frederic

Nils_13 30. Nov 2004 15:39

Re: BASS.dll/Playlist
 
Aber es gibt einen Fehler!

jim_raynor hat dazu aber etwas gesagt.

fkerber 30. Nov 2004 15:45

Re: BASS.dll/Playlist
 
Hi!

Sorry, Glaskugel hab ich noch keine - vielleicht bekomme ich eine zu Weihnachten

WAS für ein Fehler kommt denn?


Ciao Frederic

Nils_13 1. Dez 2004 13:31

Re: BASS.dll/Playlist
 
Code:
'Der Index der Liste überschreitet das Maximum (9989172)'
Ist ja kein Code (halt eine FehlerMeldung)

dizzy 1. Dez 2004 13:40

Re: BASS.dll/Playlist
 
Wie wäre es dann mal mit Debuggen!? Durchsteppen und uns mal endlich den Codesnippet mit markierter Fehlerzeile + Umstandsbeschreibung zu geben? Mit den wenigen Infos kann nun wirklich keiner was anfangen :roll:
Du wurdest imho auch schon öfters gebeten deine Probleme etwas umfassender darzustellen. Ansonsten brauchst du dich nicht zu wundern wenn die Resonanz hier sich in Grenzen hält...
Etwas Eigeninitiative (Debuggen wäre ja schonmal nen Anfang) trägt auch zur Hilfsbereitschaft anderer bei. Im Moment klingt es so als hättest du nen Fehler, hier gefragt, und dich sonst nicht weiter drum gekümmert weil es hier schon jemand wissen wird... Deine Probleme incl. Beschreibung deiner bisherigen Bemühungen sollten dann doch mehr sein als nen Einzeiler.

Nils_13 1. Dez 2004 13:45

Re: BASS.dll/Playlist
 
Das wir's gleich klarstellen:
Ich habe mich schon sehr lange darum gekümmert :wink: !

Der Debugger bringt nichts.

Matze 1. Dez 2004 13:46

Re: BASS.dll/Playlist
 
Gehe deinen Code mal mitters F7 durch, bei irgendeiner Schleife o.Ä. muss der Fehler ja kommen.

Nils_13 1. Dez 2004 17:37

Re: BASS.dll/Playlist
 
1 oder 2-mal (bei 2-mal kommt noch etwas anderes).

Jetzt hab ich's gefunden

:hi:

dizzy 1. Dez 2004 19:23

Re: BASS.dll/Playlist
 
:shock: :gruebel: Ich verstehe zwar wieder garnichts, aber schön dass du jetzt glücklich bist... :roll:

Nils_13 2. Dez 2004 13:52

Re: BASS.dll/Playlist
 
Ich freu mich ja nicht, das hilft mir überhaupt nicht weiter.

:hi:

fkerber 2. Dez 2004 14:05

Re: BASS.dll/Playlist
 
Hi!

So, jetzt mal im Klartext zum Ankreuzen

Gibt es noch ein Problem?
[ ] JA
[ ] NEIN

Wenn ja:
Wo ist das Problem (Fehlermeldung, Quelltext, Fehlerbeschreibung)


Ciao Frederic

Nils_13 2. Dez 2004 14:08

Re: BASS.dll/Playlist
 
[] Ja

Der Fehler passiert wenn ich auf den label für anspielen klicke, geöffnet wird er von einem anderen label.

Ich :kotz: gleich!
:mrgreen:

fkerber 2. Dez 2004 14:11

Re: BASS.dll/Playlist
 
Hi!

Hallo? Was verstehst du an meinem Posting eigentlich nicht richtig?
WELCHER Fehler? WAS passiert? WAS sollte passieren? ZEIG mal den CODE, bei dem was falsch ist ...

Sorry, wenn ich so unfreundlich bin, aber du lässt dir echt schwer helfen.


Ciao Frederic

Nils_13 2. Dez 2004 14:12

Re: BASS.dll/Playlist
 
Delphi-Quellcode:
unit amp;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, osc_vis, spectrum_vis,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, circle_vis, Spin, Bass, CommonTypes,
  ExtDlgs, LMDCustomControl, LMDCustomPanel, LMDCustomTrackBar, LMDTrackBar,
  MPlayer, LMDCustomComponent, LMDWndProcComponent, LMDCustomFormFill,
  LMDFormFill, LMDControl, LMDBaseControl, LMDBaseGraphicControl,
  LMDGraphicControl, LMDScrollText;

type
  TFormPlayer = class(TForm)
    op1: TOpenDialog;
    PaintFrame: TPaintBox;
    TimerRender: TTimer;
    RadioMode: TRadioGroup;
    RadioDraw: TRadioGroup;
    GroupBox1: TGroupBox;
    TrackOff: TTrackBar;
    TrackRes: TTrackBar;
    TrackY: TTrackBar;
    TrackX: TTrackBar;
    Label1: TLabel;
    Label2: TLabel;
    Image1: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    tb1: TLMDTrackBar;
    Panel2: TPanel;
    Label5: TLabel;
    p1: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Label7: TLabel;
    LMDFormFill1: TLMDFormFill;
    Label8: TLabel;
    add: TLabel;
    allplay: TLabel;
    play: TLabel;
    Panel6: TPanel;
    Panel7: TPanel;
    playlist: TListBox;
    Image2: TImage;
    Image3: TImage;
    op: TOpenDialog;
    Image8: TImage;
    procedure FormCreate(Sender: TObject);
    procedure TimerRenderTimer(Sender: TObject);
    procedure RadioModeClick(Sender: TObject);
    procedure TrackOffChange(Sender: TObject);
    procedure TrackResChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure addClick(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure playClick(Sender: TObject);
  private
    { Private declarations}
    position: integer;
    sams: array[0..128] of HSAMPLE;
    samc: Integer;
  public
    { Public declarations }
  end;

var
  FormPlayer : TFormPlayer;
  Channel   : DWORD;

implementation

{$R *.dfm}

procedure TFormPlayer.FormCreate(Sender: TObject);
begin
  BASS_Init(1, 44100, 0, Application.Handle, nil);

  CircleScope := TCircleScope.Create(PaintFrame.Width, PaintFrame.Height);
  OcilloScope := TOcilloScope.Create(PaintFrame.Width, PaintFrame.Height);
  Spectrum   := TSpectrum.Create(PaintFrame.Width, PaintFrame.Height);
end;


procedure TFormPlayer.TimerRenderTimer(Sender: TObject);
 var FFTFata : TFFTData; WaveData : TWaveData;
begin

 if BASS_ChannelIsActive(Channel) <> BASS_ACTIVE_PLAYING then Exit;

case RadioDraw.ItemIndex of
  0 :
   begin
    BASS_ChannelGetData(Channel, @FFTFata, BASS_DATA_FFT1024);
    Spectrum.Draw (PaintFrame.Canvas.Handle, FFTFata, TrackX.Position - 40, TrackY.Position - 60);
   end;

  1 :
   begin
    BASS_ChannelGetData(Channel, @WaveData, 2048);
    OcilloScope.Draw (PaintFrame.Canvas.Handle, WaveData, TrackX.Position - 50, TrackY.Position);
   end;

  2 :
   begin
    BASS_ChannelGetData(Channel, @WaveData, 2048);
    CircleScope.Draw (PaintFrame.Canvas.Handle, WaveData, TrackX.Position, TrackY.Position);
   end;
end;
end;

procedure TFormPlayer.RadioModeClick(Sender: TObject);
begin
  CircleScope.Mode := RadioMode.ItemIndex;
  OcilloScope.Mode := RadioMode.ItemIndex;
  Spectrum.Mode := RadioMode.ItemIndex;
end;

procedure TFormPlayer.TrackOffChange(Sender: TObject);
begin
 CircleScope.Offset := TrackOff.Position;
 OcilloScope.Offset := TrackOff.Position;
 Spectrum.Height := TrackOff.Position;
end;

procedure TFormPlayer.TrackResChange(Sender: TObject);
begin
 CircleScope.Res := TrackRes.Position;
 OcilloScope.Res := TrackRes.Position;
 Spectrum.Res := TrackRes.Position;
end;

procedure TFormPlayer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Bass_Free;
end;

procedure TFormPlayer.Image1Click(Sender: TObject);
begin
  BASS_ChannelPause(channel);
  position := 0;
  op1.Title := 'Open Files';
  if not op1.Execute then exit;
    Channel := BASS_StreamCreateFile(FALSE, PChar(op1.FileName), 0, 0, 0);
    BASS_StreamPlay(Channel, False, 0);
    Image1.Enabled:= true;
    p1.Visible:= false;
end;

procedure TFormPlayer.Image2Click(Sender: TObject);
begin
Bass_Free;
Close;
end;

procedure TFormPlayer.Image3Click(Sender: TObject);
begin
Application.Minimize;
end;

procedure TFormPlayer.addClick(Sender: TObject);
var
  f: PChar;
begin
   if not op.Execute then Exit;
   f := PChar(op.FileName);
   sams[samc] := BASS_SampleLoad(FALSE, f, 0, 0, 3, BASS_SAMPLE_OVER_POS);
   if sams[samc] <> 0 then
   begin
      playlist.Items.Add(op.FileName);
      Inc(samc);
   end
    else
      Application.MessageBox('Do you really want to exit?', 'dAmp', mb_OKCancel +
                            mb_DefButton1 + MB_ICONQUESTION);
end;

procedure TFormPlayer.Image6Click(Sender: TObject);
begin
BASS_ChannelPause(channel);
position := 0;
Image1.Visible:= true;
end;

procedure TFormPlayer.Image5Click(Sender: TObject);
begin
  BASS_Pause();
  Image5.Visible:= false;
  Image8.Visible:= true;
end;

procedure TFormPlayer.Image8Click(Sender: TObject);
begin
BASS_Start();
Image5.Visible:= true;
Image8.Visible:= false;
end;

procedure TFormPlayer.playClick(Sender: TObject);
var i: Integer; WaveData : TWaveData;
begin
Channel := BASS_StreamCreateFile(FALSE, PChar(playlist.items[i]), 0, 0, 0);

i := playlist.ItemIndex;
if i >= 0 then
BASS_StreamPlay(Channel, False, 0);

p1.Visible:= false;
Image1.Enabled:= false;
end;

end.

fkerber 2. Dez 2004 14:16

Re: BASS.dll/Playlist
 
Hi!

Zu dem was vorher da stand :roll:

1) keine Ahnung, was du damit sagen wolltest

2)
Jetzt kenne ich den Code, weiß aber immer noch nicht, wo der Fehler ist
Btw: solanger Code sollte vielleicht besser angehängt werden.


Ciao Frederic

Nils_13 2. Dez 2004 14:55

Re: BASS.dll/Playlist
 
Der Index der Liste überschreitet das Maximum :wink:

fkerber 2. Dez 2004 15:28

Re: BASS.dll/Playlist
 
Hi!

Konntest du feststellen wo?
Anscheinend greifst du ja z.B. auf das selektierte Element einer Listbox zu. Tritt der Fehler zufällig nur dann auf, wenn nix in der Listbox selektiert ist?


Ciao Frederic

Nils_13 2. Dez 2004 15:37

Re: BASS.dll/Playlist
 
Nicht wenn nichts in der Listbox ist, sondern wenn ein Item markiert ist und ich auf den Label für abspielen klicke.

fkerber 2. Dez 2004 15:48

Re: BASS.dll/Playlist
 
Hi1

Also der Fehler tritt auf, WENN etwas ausgewählt ist?


Ciao Frederic


P.S. Häng vielleicht mal das ganze Projekt im aktuellen Status als zip an.

plumper 2. Dez 2004 15:52

Re: BASS.dll/Playlist
 
Hi,

Delphi-Quellcode:
procedure TFormPlayer.playClick(Sender: TObject);
var i: Integer; WaveData : TWaveData;
begin
Channel := BASS_StreamCreateFile(FALSE, PChar(playlist.items[i]), 0, 0, 0); //<---

i := playlist.ItemIndex;  // <---
if i >= 0 then
BASS_StreamPlay(Channel, False, 0);

p1.Visible:= false;
Image1.Enabled:= false;
end;
Liegt es vieleicht daran, dass Du zuerst Channel auf Basis vin i = initial erzeugst, und dann erst i den Wert Deiner Selektion übergibst?

Ist nur so eine Idee, ich kenn dieses BASS.dll nicht..

fkerber 2. Dez 2004 15:55

Re: BASS.dll/Playlist
 
Hi!

@Plumper:
Jepp, das ist er. Deswegen auch meine Vermutung es wäre nix ausgewählt (dann ist i=-1 und es käme später zu ner Listenüberschreitung.)
Das er bereits vor der Zuweisung auf i zugreift hatte ich übersehen :oops:


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
Seite 1 von 2  1 2      

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