![]() |
BASS.dll/Playlist
Hi,
1. mit der BASS.dll spielt man mit siesem Befehl in Delphi einen geladenen Sound ab:
Delphi-Quellcode:
Nur wie funktioniert Stop, Pause, Next etc.
BASS_StreamPlay(Channel, False, 0);
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: |
Re: BASS.dll/Playlist
Hi!
Bitte für jede Frage einen neuen Thread, sonst wird das so unübersichtlich hier :wink: Ciao Frederic |
Re: BASS.dll/Playlist
|
Re: BASS.dll/Playlist
Hi,
wenn ich
Delphi-Quellcode:
verwende kann ich nichts mehr abspielen, aber warum?
BASS_STOP;
|
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 |
Re: BASS.dll/Playlist
Und wrarum kommt dann der Fehler: 'INkompatible Typen: TPosition und Integer'?
|
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. |
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: |
Re: BASS.dll/Playlist
Hi!
Zitat:
![]() Ciao Frederic |
Re: BASS.dll/Playlist
Hi,
@fkerber: den dwonload kann ich nicht finden! @all: ich hab bei der Playlist ausgewählte Lieder mit
Delphi-Quellcode:
abgespielt, nur wie spielt mal alle Lieder die in der ListBox vorhanden sind ab?
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; :hi: |
Re: BASS.dll/Playlist
Zitat:
![]() |
Re: BASS.dll/Playlist
thx!
bei meiner Playlist läuft nichts:
Delphi-Quellcode:
könnt ihr mir da weiterhelfen :?:
i := playlist.ItemIndex;
Channel := BASS_StreamCreateFile(FALSE, PChar(i), 0, 0, 0); if i >= 0 then BASS_StreamPlay(Channel, False, 0); |
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: !
|
Re: BASS.dll/Playlist
Ohne dir zu Nahe treten zu wollen: Ohne Geduld und Eigeninitiative (Suchen) wirste nie ein Programmierer :)
|
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. |
Re: BASS.dll/Playlist
Zitat:
Delphi-Quellcode:
:?:
Channel := BASS_StreamCreateFile(FALSE, PChar(playlist.items[i]), 0, 0, 0);
Ist eigenlich zu offensichtlich um danach zu fragen ;) |
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. |
Re: BASS.dll/Playlist
i-ten :lol: , hab ich noch nie gehört.
:freak: |
Re: BASS.dll/Playlist
Nur jetzt mal im ernst, wie meinst du das?
:hi: |
Re: BASS.dll/Playlist
Hi!
Dizzy hat es doch schon gepostet :gruebel: Ciao Frederic |
Re: BASS.dll/Playlist
Aber es gibt einen Fehler!
jim_raynor hat dazu aber etwas gesagt. |
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 |
Re: BASS.dll/Playlist
Code:
Ist ja kein Code (halt eine FehlerMeldung)
'Der Index der Liste überschreitet das Maximum (9989172)'
|
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. |
Re: BASS.dll/Playlist
Das wir's gleich klarstellen:
Ich habe mich schon sehr lange darum gekümmert :wink: ! Der Debugger bringt nichts. |
Re: BASS.dll/Playlist
Gehe deinen Code mal mitters F7 durch, bei irgendeiner Schleife o.Ä. muss der Fehler ja kommen.
|
Re: BASS.dll/Playlist
1 oder 2-mal (bei 2-mal kommt noch etwas anderes).
Jetzt hab ich's gefunden :hi: |
Re: BASS.dll/Playlist
:shock: :gruebel: Ich verstehe zwar wieder garnichts, aber schön dass du jetzt glücklich bist... :roll:
|
Re: BASS.dll/Playlist
Ich freu mich ja nicht, das hilft mir überhaupt nicht weiter.
:hi: |
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 |
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: |
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 |
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. |
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 |
Re: BASS.dll/Playlist
Der Index der Liste überschreitet das Maximum :wink:
|
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 |
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.
|
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. |
Re: BASS.dll/Playlist
Hi,
Delphi-Quellcode:
Liegt es vieleicht daran, dass Du zuerst Channel auf Basis vin i = initial erzeugst, und dann erst i den Wert Deiner Selektion übergibst?
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; Ist nur so eine Idee, ich kenn dieses BASS.dll nicht.. |
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. |
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