MP3-Player bewerten



  • WebFritzi schrieb:
    yogle schrieb:

    Wenn man ein Lied abgespielt hat, lässt sich danach nicht mehr auf die Datei zugreifen (löschen, umbenennen usw.), auch wenn es nicht mehr läuft und auch nicht mehr in der Playliste ist!

    Tatsächlich? Das ist merkwürdig. Die Einträge werden eigentlich nur mit FindFirst und FindNext eingelesen. Am Ende wird FindClose aufgerufen. Das muss gefixt werden!

    Hab ich gerade mal ausprobiert. Ist bei mir nicht so. Nur das gerade laufende Lied (also die Datei) kann nicht geändert werden. Was sagt dir denn Windows, wenn du das versuchst? Sind die Dateien bei dir vielleicht schreibgeschützt oder auf CD? 😉

    Muss es relativieren, das Lied das man gerade abgespielt *hat*, also Play und dann Stop, lässt sich mit der Meldung: "*** kann nicht gelöscht werden, da es von einem anderem Programm gerade benutzt wird bla bla bla" nicht löschen.

    WebFritzi schrieb:
    yogle schrieb:

    Wenn man ein Lied abgespielt hat, lässt sich danach nicht mehr auf die Datei zugreifen (löschen, umbenennen usw.), auch wenn es nicht mehr läuft und auch nicht mehr in der Playliste ist!

    Tatsächlich? Das ist merkwürdig. Die Einträge werden eigentlich nur mit FindFirst und FindNext eingelesen. Am Ende wird FindClose aufgerufen. Das muss gefixt werden!

    Hab ich gerade mal ausprobiert. Ist bei mir nicht so. Nur das gerade laufende Lied (also die Datei) kann nicht geändert werden. Was sagt dir denn Windows, wenn du das versuchst? Sind die Dateien bei dir vielleicht schreibgeschützt oder auf CD? 😉

    Hmm kann ich jetzt auch nicht mehr reproduzieren (hatte nur ein Lied in der Playliste), werde es aber weiter beobachten.

    yogle schrieb:

    Falls Loop funktioniert, ist die Playtaste nicht mehr eingedrückt, erst wenn man z.B. mit der Maus darüberfährt.

    Was meinst du mit "funktioniert"? Auch diesen Punkt verstehe ich nicht so ganz.

    Mit "funktioniert", meine ich Punkt 1. und 2. von meinem vorigem Post treten nicht auf, da passiert Punkt 3. 😉 Aber es tritt auch nur auf wenn nur 1 Lied in der Playliste ist und dies über Loop nochmal gespielt wird. Naja

    MfG
    yogle



  • Danke, yogle!

    Das geile ist: Jetzt bekomme ich auch Swordfishs Meldung. Genau das gleiche. Das muss also am FMOD liegen. Die FMOD-LIB, die ich hier verwende, ist nämlich recht alt. Die habe ich vor 1,5 Jahren oder so runtergeladen. Jetzt gerade habe ich mir die neuste Version runtergeladen, die alte FMOD.dll und FMOD.lib umbenannt und die neuen eingefügt. Dann sagt er mir beim Linken

    [LinkerFehler] Unresolved external 'FSOUND_Stream_OpenFile' referenced from C:\SAVED\C++\PROJEKTE\BABYPLAYER\PLAYLIST.OBJ.

    Geil. Das Ding heißt jetzt nicht mehr FSOUND_Stream_OpenFile, sondern FSOUND_Stream_Open und hat einen Parameter mehr. Naja, hab alles wieder zurückgemacht, und dann kam der Fehler.

    Die Sache ist: Der Fehler kommt dann, wenn ich die Borland C++Builder Library (VCL) mit einbinde, also eine Standalone-EXE mache. Wenn ich das unterlasse, läuft alles supi. Merkwürdig...



  • Pfft...Fragt mich nicht warum, aber jetzt geht's wieder. Ich benutze dabei die neue FMOD-Lib. Zwar ging das mit der erst auch nicht, aber nach einigem hin und her dann doch. Natürlich lad ich es gleich hoch und warte auf Swordfishs Diagnose. 😉

    http://de.geocities.com/WebFritzi/Projekte/Downloads/BabyPlayerOnly-2.ZIP



  • yogle schrieb:

    Muss es relativieren, das Lied das man gerade abgespielt *hat*, also Play und dann Stop, lässt sich mit der Meldung: "*** kann nicht gelöscht werden, da es von einem anderem Programm gerade benutzt wird bla bla bla" nicht löschen.

    Das ist auch klar, da das Programm noch im BabyPlayer geladen ist. Es wird erst wieder entladen, wenn ein neues drankommt oder wenn das Programm geschlossen wird.



  • Nö, Pustekuchen.

    Greetz, Swordfish



  • Sehr schade. Aber das kriegen wir schon noch hin. 😉 Was ging denn am STOP-Button nicht beim Test-Programm?

    TODO-List (wenn einem was ein- oder auffällt, bitte erweitern):

    [ ] Click in die TrackBar
    [ ] Playlist auch im MAC-Style
    [ ] Thread für Einlesen von Songs <-- sowieso was für überlegen
    [ ] Titel in der Playlist verschieben können per Maus
    [ ] Mehrere Titel auf einmal öffnen können
    [ ] [SHIFT] + [DOWN/UP] implementieren
    [ ] Optionen
    [ ] Problem von swordfish auf den Grund gehen
    [ ] Menus an richtiger Position nach oben aufklappen lassen
    [ ] Verhalten ändern, wenn geladenes Lied in der Playlist verschwindet (LOOP beachten)
    [x] PAUSE raus, wenn STOP gedrückt wird oder ein anderes Lied drankommt
    [x] [DEL] implementieren
    [x] Kein Verschieben mehr bei Aktivierung von frmBaby
    


  • WebFritzi schrieb:

    Was ging denn am STOP-Button nicht beim Test-Programm?

    Er stoppte die gestartete Wiedergabe nicht.

    Wie verwaltest du die Playlisteinträge? Ich glaube, dort liegt der Hund begraben.

    Greetz, Swordfish



  • Also bei mir funzt es auch, nur krieg ich am Anfang ne Fehlermeldung, dass die "LastPlaylist.txt" nicht geöffnet werden kann (weil die am Anfang natürlich nicht exisitiert). Danach ist das kein Problem mehr. Ich hab den letzten Download-Link benutzt, vielleict liegts auch daran, und die Text-Datei ist normalerweise mit dabei bzw. wird erstellt beim Installations-Programm.

    Ich hab übrigens Win98 😉 Vielleicht liegt das eine Problem doch daran, dass Win2k3 nicht mit der einen Bibliothek zurecht kommt...



  • Vielen Dank fürs Testen, nep. Ja, das mit der Playlist wird natürlich auch noch geändert. Da kommt dann eben eine leere Text-Datei dazu. 🙂

    @Swordfish: Das ist merkwürdig, denn bei mir klappt das mit dem Stoppen. Das Testprojekt ist ganz klein, deswegen stelle ich mal den Code hier hinein. Die Funktionen sind selbsterklärend. Ich kann daran keinen Fehler finden.

    BTW: Was ist eigentlich Win 2k3? Was ist daran anders?

    Die Header-Datei:

    //---------------------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <Dialogs.hpp>
    #include "fmod.h"
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Komponenten, die von der IDE verwaltet werden
        TEdit *Edit1;
        TButton *Button1;
        TButton *Button2;
        TButton *Button3;
        TOpenDialog *OpenDialog1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
    
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
        void __fastcall Button3Click(TObject *Sender);
    private:	// Benutzerdeklarationen
        FSOUND_STREAM*  hSoundStream;
        AnsiString FileName;
        int Channel;
    
    public:		// Benutzerdeklarationen
        __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    Und jetzt die cpp-Datei:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
       hSoundStream = NULL;
    
       FSOUND_Init(44100, 32, 0);
       FSOUND_SetVolume(FSOUND_ALL, 255);
       FSOUND_SetPanSeperation(1.0);
       FSOUND_SetPan(FSOUND_ALL, FSOUND_STEREO);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       if( OpenDialog1->Execute() )
       {
          FileName = OpenDialog1->FileName;
          Edit1->Text = FileName;
       }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
       hSoundStream = FSOUND_Stream_OpenFile(FileName.c_str(), 0, 0);
       if( hSoundStream )
       {
          Channel = FSOUND_Stream_Play(FSOUND_FREE, hSoundStream);
          if(Channel == -1)
             ShowMessage("File can be opened but not be played");
       }
       else
          ShowMessage("The file cannot be opened");
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
       if(hSoundStream)
          FSOUND_Stream_Close(hSoundStream);
       FSOUND_Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
       if(hSoundStream)
       {
           FSOUND_Stream_Stop(hSoundStream);
       }
    }
    //---------------------------------------------------------------------------
    


  • Hab mir auch mal eben die Zeit genommen und...das Ding funzt perfecto!

    Meiner wird zwar schöner aber egal 😃 ... Joke 😉 . Echt gelungen 👍 .



  • Benutzt du auch FMOD?



  • Jo aber FMod Ex .... hab das inne Klasse gekapselt...dann isset übersichtlicher...aber mein Player is noch nit fertig...


Anmelden zum Antworten