Autor |
Beitrag |
herr-master
Beiträge: 34
|
Verfasst: Sa 17.09.11 20:30
Und das hier stimmt nicht
Delphi-Quelltext 1:
| Sound.LoadFromFile(Edit1.Text); |
Da kommt bei mir couldn't open file soll man da etwa den namen eingeben selbst wenn ich den namen eingebe von der sound datei geht es nicht.Es sollte woll er so ausehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| type OpenDialog1: TOpenDialog; procedure TForm1.Button7Click(Sender: TObject); begin if OpenDialog1.Execute then Sound.LoadFromFile(Edit1.Text); end; |
Und bei fromfilestream bekomme ich eine zugriffs verletzung bei adresse 00404EA8 in modul 'soundtest.exe'.Lesen von adresse 0574c080
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Sa 17.09.11 21:14
Also, hab mir das genze gerade nochmal angeschaut:
herr-master hat folgendes geschrieben: | 650449)
Das ligt an dem raiseplay <-- raise ist ein fehler in delphi allso raise excption da hin kommt man doch erst wenn irgend wo im code raise exception auftritt.
|
Das Raiseplay feuert nur eine eventuell bei "OnPlay" registriertes Event. Es hat NICHTS mit exceptions zu tun. Der Name ist vieleicht nicht ganz gelungen.
herr-master hat folgendes geschrieben: | 650449)
Oder muss ich erst {$define HookAppIdleEvent} in meine form schreiben das er was abspielt.
Selbst deine sound test demo spielt kein sound ab.
|
{$define HookAppIdleEvent} Ist nur für leute die nicht wollen das die Klasse sich in Application.OnIdle reinhängt. einfach alles lassen wie es ist
herr-master hat folgendes geschrieben : | Und das hier stimmt nicht
Delphi-Quelltext 1:
| Sound.LoadFromFile(Edit1.Text); |
Da kommt bei mir couldn't open file soll man da etwa den namen eingeben selbst wenn ich den namen eingebe von der sound datei geht es nicht.Es sollte woll er so ausehen: |
Das war der ursprüngliche Plan, ist wohl auch nicht ganz gelungen. Neue Version des Demoprogramms ist im ersten post (in max 5 min) Edit: ist da
herr-master hat folgendes geschrieben : | Und bei fromfilestream bekomme ich eine zugriffs verletzung bei adresse 00404EA8 in modul 'soundtest.exe'.Lesen von adresse 0574c080 |
Ja das ist mir bekannt, nur hab ich es leider nicht hier reingeschrieben, das liegt daran das LoadFromStream noch nicht funktioniert. Das ändert sich mit 0.3
Wie genau startest du die Demo? nimmst du die .exe aus dem Archiev oder erstellst du sie aus dem code selbst? Welche Delphi version? welches Windows?
Alles in allem: danke für das feedback, es freut mich dass sich wer für meine Klasse interesiert
Moderiert von Narses: Zitat repariert.
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Sa 17.09.11 22:30
Ich starte die exe nicht aus dem archiv ich erstelle sie mir selbst , und meine delphi version ist xe.
Windows benutze ich xp pro mit sp3.
Klar intressiere ich mich für die klasse hab versucht meine procedure für musicload(fasttracker) einzufügen dan sagt mir der compiler aber tbasssound hat keine classe musicload.
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: So 18.09.11 20:54
könntest du bitte die beigelegte exe aus der neuen Version ausprobieren und mir sagen ob die auchn icht geht? Wär sehr hilfreich. Falls es nicht geht: kommen irgendwelche Fehlermeldungen?
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: So 18.09.11 21:58
----18.09.2011 0.5
*Bug gefixt: "LoadFromStream" funktioniert jetzt
*Neue property: Loop (gibt an ob die datei wiederholt werden soll)
*Auslösen der Change events verbessert
*Fehler im Beispielprogramm behoben
*Fehler in LoadFromStream behoben
Neue version des Beispielprogramms und des Units im ersten post
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Mo 19.09.11 11:49
Ja es geht soweit die zeit wird jetzt auch richtig angezeigt nur bei fromfilestream bekomme ich immer noch eine zugriffsverletzung bei adresse 00404EA8 in Modul'Soundtest.exe'.Lesen von adresse BEFFFFFC.
Repeat geht auch einwandfrei ich kann nur sagen mach weiter so.
Wenn ich das hier einbaue bekomme ich bestimmt so an die 40 msg boxen mit zugriffsverletzungen zu sehen die popen alle nach einander auf.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TBassSound.MusikLoad(Path:string); var f:PChar; begin freeSound; FFreeMemAfter := false; f := PChar(Path); Handle := BASS_Musicload(False,f,0,0,0{$IFDEF UNICODE} or BASS_UNICODE {$ENDIF},0); if not Ready then BassError(BASS_ErrorGetCode); FSource := BSSo_File; RaiseLoad; end; |
Ich hab es mal im debugger gestartet und er breakt an dieser stelle
Delphi-Quelltext 1:
| raise EBassError.Create('Couldn''t load '+DLLName); |
Dabei lade ich die bass.dll nicht dynamic mit {$define DYNAMIC_BASS_LOAD}
Das ist der error den ich im debugger zu sehen bekomme.
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EBassError mit Meldung 'Couldn't load bass.dll'. Prozess SoundTest.exe (3340)
Und ja die bass.dll liegt im gleichen verzeichnis wie soundtest.exe.
Selbst wenn ich das hier mache
Delphi-Quelltext 1: 2: 3: 4: 5:
| var dll:string; begin dll:='..\bass.dll'; OpenDialog1.Filter := TBassSound.InitBassPlugins(dll); |
Startet er die exe nicht weil sie nicht im gleichen verzeichnis ist?
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Di 20.09.11 23:23
herr-master hat folgendes geschrieben : | Ja es geht soweit die zeit wird jetzt auch richtig angezeigt nur bei fromfilestream bekomme ich immer noch eine zugriffsverletzung bei adresse 00404EA8 in Modul'Soundtest.exe'.Lesen von adresse BEFFFFFC. |
Sollte mit der neuen Version gehen. (hoffe ich)
herr-master hat folgendes geschrieben : | Repeat geht auch einwandfrei ich kann nur sagen mach weiter so.
Wenn ich das hier einbaue bekomme ich bestimmt so an die 40 msg boxen mit zugriffsverletzungen zu sehen die popen alle nach einander auf
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TBassSound.MusikLoad(Path:string); var f:PChar; begin freeSound; FFreeMemAfter := false; f := PChar(Path); Handle := BASS_Musicload(False,f,0,0,0{$IFDEF UNICODE} or BASS_UNICODE {$ENDIF},0); if not Ready then BassError(BASS_ErrorGetCode); FSource := BSSo_File; RaiseLoad; end; | |
versuchs mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TBassSound.MusikLoad(Path:string); var f:PChar; begin freeSound; f := PChar(Path); Handle := BASS_Musicload(False,f,0,0,0{$IFDEF UNICODE} or BASS_UNICODE {$ENDIF},0); if not Ready then BassError(BASS_ErrorGetCode); FSource := BSSo_File; RaiseLoad; end; |
ich glaube allerdings das MusicLoad einfach nicht mit den anderen funktionen kompatible ist. Werde das später noch genauer testen.
herr-master hat folgendes geschrieben : | Ich hab es mal im debugger gestartet und er breakt an dieser stelle
Delphi-Quelltext 1:
| raise EBassError.Create('Couldn''t load '+DLLName); |
Dabei lade ich die bass.dll nicht dynamic mit {$define DYNAMIC_BASS_LOAD}
Das ist der error den ich im debugger zu sehen bekomme.
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EBassError mit Meldung 'Couldn't load bass.dll'. Prozess SoundTest.exe (3340)
Und ja die bass.dll liegt im gleichen verzeichnis wie soundtest.exe.
Selbst wenn ich das hier mache
Delphi-Quelltext 1: 2: 3: 4: 5:
| var dll:string; begin dll:='..\bass.dll'; OpenDialog1.Filter := TBassSound.InitBassPlugins(dll); |
Startet er die exe nicht weil sie nicht im gleichen verzeichnis ist? |
hier lieg ein Fehler vor:
TBassSound.InitBassPlugins lädt nur die Plugins, NICHT die bass.dll selbst. Das passiert davor mit InitBass.
versuch mal das:
Delphi-Quelltext 1:
| InitBass ('..\bass.dll'); |
Neue Version:
----20.09.2011 0.6
*OnEnd verbessert, es verwendet jetzt die BASS syncs dafür
*LoadFromResource hinzugefügt
*LoadFromMemory hinzugefügt
*LoadFromStream in LoadFromBufferdStream umbenannt
*LoadFromStream neu eingeführt, die procedure lädt jett nichtmehr die ganze Datei in den Speicher
*Fehler im Speichermanagment behoben der einen Bluescreen verursachen konnte
*Mehrere Fehler mit AnsiString/String behoben
Leider kann ich das Beispielprogramm nichtmehr anhängen, da es gepackt genau 2081kb hätte und das Forum nicht mehr als 2 mb erlaubt. Das liebt daran das jetzt eine funktion "LoadFromResource" dabei ist, und diese Sounddaten lassen die .exe leider auf 4 mb anwachsen. Der Code hängt weiterhin an, muss man sich halt selber erstellen.
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Mi 21.09.11 18:25
Das scheint wirklich nicht mit den anderen sachen kompatibel zu sein hier ein bug rebot.txt von madexcept erstellt dan weisst du auch wo der fehler liegt.
So sieht der code aus:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button10Click(Sender: TObject); begin sound.MusikLoad(Edit1.Text); end; |
Delphi-Quelltext 1:
| BASS_ERROR_NOTAVAIL : raise EBassError.Create('Requested data is not available!'); |
Die procedure hab ich so eingebaut wie du gepostet hast musst aber noch das hier anpassen damit er das format erkennt:
Delphi-Quelltext 1:
| Filter := '*.mp3;*.mp2;*.mp1;*.ogg;*.oga;*.ogx;*.ogg;*.spx;*.wav*;*.aif;*.aiff;*.aifc,*.it;*.xm;*.mod,*.s3m'; |
Der spielt zwar die musik ab aber ich bekomme dauernt diese exception message :'Requested data is not available.'
Ich finde das from buffered den sound extrem leise abspielt oder ist das so gewollt?
Und könntest du bitte die rc datei mit hochladen oder posten wie der inhalt aussieht.
Einloggen, um Attachments anzusehen!
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mi 21.09.11 18:38
herr-master hat folgendes geschrieben : | Der spielt zwar die musik ab aber ich bekomme dauernt diese exception message :'Requested data is not available.' |
Aus dem Bug report seh ich leider das das daher kommt wenn das Programm versucht Sound.Progress zu lesen, ich denke das es grundsätzlich nicht möglich ist das funktionierend zu machen, auf jedenfall nicht alle Attribute/Funktionen der Klasse. Dafür schreib ich wohl mal eine eigene Klasse.
herr-master hat folgendes geschrieben : | Ich finde das from buffered den sound extrem leise abspielt oder ist das so gewollt? |
hmmm an der Lautstärke wird da nichts geändert, die Soundfile wird nur in dem Speicher geladen. Werd dem mal nachgehen.
herr-master hat folgendes geschrieben : | Und könntest du bitte die rc datei mit hochladen oder posten wie der inhalt aussieht. |
In etwa 5 min lad ich mal alle Daten auf eine externe Seite, da es im Forum leider nicht möglich ist
Edit: ist im 1. Post
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Mi 21.09.11 20:07
Für die wo 4 warnungen bekommen hier die lösung:
1: {$M+}{$TYPEINFO ON}
2: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TBassSound.LoadFromResource (Instance: THandle; const ResName: string); var stream: TStream; begin try stream := TResourceStream.Create(Instance,ResName,RT_RCDATA); LoadFromBufferdStream(Stream); FSource := BSSo_Resource; finally end; Stream.Free end; |
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mi 21.09.11 20:13
1 wird in der nächsten Version hinzugefügt, ich werde auch noch schauen ob ich es mit XE2 und 64bit win compatible bekomm.
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Fr 09.12.11 22:38
----09.12.2011 1.0
*Komplette überarbeitung der Klasse
*Aufteilung auf mehrere Klassen
*Events benötigen kein Application.OnIdle mehr
*Events müssen jetzt Thread-save sein
*Beispielprogramm erweitert
*Die GUI des Beispielprogramm verbessert
*Manche Sachen, besonders das Device handeling ist noch buggy.
*Recording geht noch nicht
neue Version im ersten posting.
Die neue Version ist in KEINSTER WEISE kompatible mit der alten.
noch funktionieren eine menge Sachen nicht, aber das kommt bald noch, ich wollte jetzt nur mal wieder ein Update posten.
Das Beispielprogramm ist auch noch nicht ganz fertig, es kannn zur Zeit NUR Musik aus Dateien, nich von urls/Streams/irgendetwas wiedergegeben werden. Die entsprechenden Buttons gibt es leider noch nicht.
Ein neues Beispielprogramm liegt auch bei.
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Mo 05.03.12 13:35
Da ist noch ein bug in der version 1.0 und zwar wenn man outputdevice einen eintrag über das feld mit drag&drop zieht steht da bass_init has not been successfull called.
Hier ein screenshot dazu:
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mo 05.03.12 18:25
schau ich mir gleich mal an, danke
edit:
lokal schon gefixt, hab die neue Version nur noch nicht online. 1.1 wird wohl ziemlich bald kommen. Nur als Randnotiz: das war wohl einer der Sachen die bei der Version noch nicht gingen, lokal schon fertig waren und ich "irgend wann mal" raufladne wollte und das dann verpennt hab... sorry dafür aber ein großes Lob dass es jemanden aufgefallen ist. Ist ja schön wenn das ganze noch wen nützt/interesiert
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
Zuletzt bearbeitet von glotzer am Di 31.07.12 19:20, insgesamt 1-mal bearbeitet
|
|
herr-master
Beiträge: 34
|
Verfasst: Mo 05.03.12 19:58
Ich schaue immer mal rein ob es schon eine neue version gibt du hast auch den {$m+} switch vergessen.
Das bekomme ich bei puplished zu sehen.
Bin ich mal gespannt was du so in die neue version eingebaut hast.
Das du noch andere projecte am laufen hast hindert dich bestimmt daran die meisten projecte up to date zu halten.
Aber das ist nicht schlimm so lange das dieses project nicht im www nichts untergeht.
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mo 05.03.12 20:12
----05.3.2011 1.1
*Output devices funktionieren jetzt, channeln können jetzt zur Laufzeit andere Ausgänge verwenden.
*Beispielprojekt verbessert um alle neuen Features zu verwenden.
*Viele Compiler Warnungen behoben
neue Version im ersten Post, sorry das es so lang gedauert hat,
nur gewisse bb-code Spezialitäten von ineinander geschachtelten Listen haben mich ein bischen aufgehalten :p
seit neuesten gibt es jetzt auch eine ToDo List. Wenn es da Wünsche gibt, bitte melden.
edit: upload spinnt grad bisal, Beispiel kommt später
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
herr-master
Beiträge: 34
|
Verfasst: Mo 05.03.12 20:50
Hier bin aber nicht sicher ob es so geht:
Bassfilesound.pas:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| type TBassFileSound = class(TBassSound) public procedure LoadFromFile(FilePath: String); procedure MusicLoad(FilePath:string); end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TBassFileSound.MusicLoad(FilePath:string); var f: PChar;begin FreeSound; f := PChar(FilePath); Handle := BASS_MusicLoad(False,f,0,0,0{$IFDEF UNICODE} or BASS_UNICODE{$ENDIF},Nil); if not Ready then BassError(BASS_ErrorGetCode); AfterLoaded; RaiseLoad; end; |
Könntest du das mal testen. Wo ist eigentlich der filter in der neuen version in welcher datei?
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mo 05.03.12 21:36
Kurze Rückmeldung: der Hoster spinnt noch immer, ich werd mir da mal was neues suchen...
zu deinen Fragen:
PChar ist richtig, damit wird nur der Datenname üergeben, was das jetzt sind (ob Module, Äpfel oder sonst was) ist egal.
Auf Unicode wird mit {$IFDEF UNICODE} or BASS_UNICODE{$ENDIF} schon geachtet.
Wenn du mit "filter" die Liste mit den Datenendungen meinst, die sind jetzt hier:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| type TBassDllManager = class private FOptions: TBassOptions; FDeviceManager: TBassDeviceManager; FFileExtensionFilter: String; protected function GetOptions: TBassOptions; function GetDeviceManager: TBassDeviceManager; function GetCpuUssage: float; public property CPUUssage: float read GetCpuUssage; property FileExtensionFilter: String read FFileExtensionFilter; property Options: TBassOptions read GetOptions; property DeviceManager: TBassDeviceManager read GetDeviceManager; public constructor Create(DllPath: String=''); destructor Destroy; override; end; |
Algemein zu "MusicLoad": Das hab ich schonmal probiert, aber leider geht es nicht ganz so einfach, da dort ein paar Sachen anders/nicht funktionieren. Besonders ein Fortschrittsbalken ist dabei nicht möglich, heißt wenn die entsprechenden Propertys abgefragt werden fleigt einfach eine exception. Eine entsprechende Klasse kommt aber noch, bin halt noch auf der Suche nach brauchbaren Testdaten.
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
Sinspin
Beiträge: 1332
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Mo 05.03.12 22:48
Hi,
ich kenne MusicLoad nicht (bzw. die Bass.dll kaum) was meinst du mit Testdaten? Musikdateien in Moduleformaten? Es gibt eine ganze ordentliche Anzahl von Webseiten und Servern mit (das muss man ja Heutzutage mit dazuschreiben schreiben : Copyright freier) Musik. Meine Hauptquellen zur Versorgung mit neuer Musik sind ftp.Modland.com und Modarchive.org.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Für diesen Beitrag haben gedankt: glotzer
|
|
glotzer
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mo 05.03.12 23:29
Danke dafür, werd mir das in nächster Zeit mal anschauen
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|