Page 4 of 4 FirstFirst 1234
Results 31 to 39 of 39

Thread: Working on new MP3 "front end"

  1. #31
    Maximum Bitrate kbyrd's Avatar
    Join Date
    Nov 2003
    Location
    Northern Arizona
    Posts
    485
    Quote Originally Posted by intuitionsys
    I would agree to a point about parsing in C/C++, except using Qt (especially things like QString and QRegExp) make parsing pretty hassle-free.
    Of course, nothing is absolute. It jsut when I think "text processing" I don't think "for (char *p = buf; b < sizeof buf; p++)" is very much fun. I have a friend who loves writing parsing loops, he's nuts.

    Quote Originally Posted by intuitionsys
    By the way, when I get a few things polished, I'm planning on releasing the source code for Silverwolf. It uses modified versions of mpg123 and xine
    Not to sound like a zealot, but are you already shipping binary versions of Silverwolf? If you are, you should already be providing the modified source code for the GPL'd apps.
    My worklog.
    Status: VM GTI sold, got out of the CarPC tinkering hobby, but I still think about getting back in.

  2. #32
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    Quote Originally Posted by kbyrd
    Of course, nothing is absolute. It jsut when I think "text processing" I don't think "for (char *p = buf; b < sizeof buf; p++)" is very much fun. I have a friend who loves writing parsing loops, he's nuts.
    I guess I'm a bit of a pointer nut myself. I'm not crazy about parsing either but I'm not that great with Perl And of course Perl and the like isn't of much use in smaller embedded systems which I do alot of work in.

    Not to sound like a zealot, but are you already shipping binary versions of Silverwolf? If you are, you should already be providing the modified source code for the GPL'd apps.
    Oh I've got my butt covered I read through the GPL and Qt licenses well before releasing anything. The code for everything is included on a CD that ships with every unit, although I doubt anyone has ever actually perused it (it is a bit of a niche market product targetted mainly at luxury vehicles with OEM monitors).
    Silverwolf 2 is dead.
    Silverwolf 3...?

  3. #33
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96

    Exclamation

    These are the two ways that I was thinking of going. It is really a perl vs C++ for me.

    I want to tie in the "musicbrainz" library and the id3 library. In perl this would require a visit to CPAN which introduces some version control and updating problems. A Perl script would be incredibly easy to write.

    In C++ the libraries are version controlled and updated by the good folks at debian.org via apt-get. There will be more work integrating Musicbrainz and ID3 tag libs into the app.

    In either case the flow would work like this:
    New songs are added and database update is needed.

    Filenames and paths are scanned from the hdd.

    The original ID3 tag of the file is checked and artist / song / file path info is stored in the database. The "ID3 Updated" flag in the database for the file is set false.

    The songs are then submitted to the Musicbrainz library and the ID3 information is corrected on the file on disk. (this part is done in the background and should eventually correct all of the ID3 tags). If a file does not have ID3 tag for song/artist the filename is used in it's place.

    An "ID3 Updated" flag is set in the database for the file when it has been sucessfully changed. The ID3 tag of the file is then rescanned into the database replacing the old info for the file. The playlist and filelist views are refreshed in the app and the current info is displayed.

    If the Musicbrainz fixing for the song fails or times out the file is left unchanged and the next file is scanned. Rinse, Wash, Repeat.


    Looking at all of the pieces that I want to do I think i have just decided to do it in C++. I am at the last few bugs in my mp3 player. The file scanning/tagging is the last major piece. I will put up a screenshot soon.
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  4. #34
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    You're getting closer to the method I took. Everything is in C/C++ in my case. The approach I took was to have several static import locations: an FTP area for wireless uploads, a USB key, the built-in CF card reader on the MII-12000, and a CD/DVD. The user selects the area they want to "import" from and it moves those files into the permanent library, renaming every file to a six-digit index with a .mp3 extension. After moving the files to the permanent library (and renaming them on the fly), it re-reads the entire permanent file library and refreshes the database with the info from their ID3 tags, thus the files themselves are in essense the permanent database. The only drawback is that if you've got like 3000 MP3s in your library, the database update will take a good 2 minutes or more to finish regardless how many new files you imported.

    Your idea of using a flag for "already updated" is a good idea. That would prevent the long database update every time new files are imported.

    I used libid3 with a wrapper class to do the tag reading. It works flawlessly (assuming the tags are correct in the first place ). One thing I do though is strip commas out of any tag info since it would screw up my database which is a simple CSV file.

    When I create a playlist, it simply creates/appends a file with that playlist's index as the filename (e.g. 005.plist) that contains the ID3 tag info and the index number to the real file in the permanent library.

    I think someone else here might be doing something similar. How far along are you btw?
    Silverwolf 2 is dead.
    Silverwolf 3...?

  5. #35
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    gbr is doing scanning into sqlite for his mp3 player.

    I am 90% finished with the mp3 player at this point.

    The playlist database consists of 2 tables. A current table and a filesystem table. The filesystem table holds the db of all of the songs on disk. The current table is the current playlist that the app is running.

    I have just finished my playlist creator last night. The playlist is dynamically generated from the "current" table. Updates to the playlist happen in real time for the app.

    The mp3 player part displays the current table as it's playlist. Songs can be selected from this list and played. Next and previous song buttons work. A mute and volume control are integrated.

    I have also created a "Volume Control" part of the application which allows for volume/bass/treble adjustment outside of the mp3player. Eventually I will have a full EQ here (xmms style probably).

    What I need to do now is multi-thread my app. When a song is being played you cannot interact with the app untill it is done. This is a minor bit of code though.

    When I have the threads in place (and a working Stop button) the music player will be v0.1. Some minor bugs will probably be floating around and scalability has not been tested but the core of the player seems stable.

    The filesystem to database scanning is a big part though. This will probably be a few weeks of coding.

    I will post some screenshots when i get home this evening.
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  6. #36
    FLAC TheLlama's Avatar
    Join Date
    Jul 2004
    Location
    All over the world
    Posts
    970
    I just thought I'd mention a few things. I've been working on an MP3 player for Linux for the last couple of months. The biggest issue I have is that I'm using a 256x128px VFD. So.. I wrote my own GUI Toolkit and it is actually pretty darn powerful. Anyways, I plan on releasing a beta of the toolkit in the next couple of weeks. The nice thing is, by inheritating the "Screen" class one can make the toolkit run on a VFD, X11, the Framebuffer, or SDL. (it currently runs on VFD and X11).

    Just thought I would mention it, since it is alot lighter then running full featured X (unless you plan to run X apps also). I also highly recommend using FMOD for audio (unless you plan to sell your software). It reads just about every audio file. It is thread safe, and it allows you to configure a parametric EQ, effects, and retrieve Waveform and spectrum data. Yes, sqlite is a good choice. I was using it too, until I decided I want to be able to browse the database over the network at home. I need apache to read the data too, so I'm using MySQL now.

    Its great seeing someone else working on some media player solutions for Linux. If all of us make our stuff open source then we will only help each other. Keep up the good work!

  7. #37
    pkg
    pkg is offline
    Low Bitrate pkg's Avatar
    Join Date
    Apr 2005
    Location
    Arizona
    Posts
    96
    Very cool. mysql is a better choice for webdb for sure. what is your target platform? palms and cells?
    -pkg

    Check out my tC: http://publicjestering.com/tc
    Check out my site: http://publicjestering.com

  8. #38
    FLAC TheLlama's Avatar
    Join Date
    Jul 2004
    Location
    All over the world
    Posts
    970
    actually my target platform is a 3.5" embedded board (Advantech PCM-9373). The system currently runs Gentoo Linux, but I might do a LFS for the final system. Maybe I wasn't clear about the flat panel. Its a Vacuum Florescent Display. People used to use character VFDs alot back in the early days of MP3car. I still think it is a great display choice because it is much more readible than an LCD in varying degrees of light. Mine is a graphical VFD made by Noritake (GU256x128C-3900) By wiring the module's Frame Relay Pulse line to the parallel port's ACK line, I can create gray tones by blinking graytones each time I get an interrupt (Basic PWM).

    My system differs from alot of other peoples'. Instead of having a Car-PC, I just want a discrete 100GB media player I can take in and out of my car. The whole thing fits in the dash. Some people will say an iPod does the job. I just don't think that iPod's interface is powerful or flexible enough. Plus, I can take the box inside and enable it's servers which makes it a webserver and NFS server.

  9. #39
    Variable Bitrate intuitionsys's Avatar
    Join Date
    Jul 2005
    Location
    Northern Virginia
    Posts
    293
    Quote Originally Posted by TheLlama
    Its great seeing someone else working on some media player solutions for Linux. If all of us make our stuff open source then we will only help each other. Keep up the good work!
    I agree, especially with the differrent approaches everyone is taking and the various languages people are using, we can all learn something.

    Quote Originally Posted by pkg
    I have also created a "Volume Control" part of the application which allows for volume/bass/treble adjustment outside of the mp3player. Eventually I will have a full EQ here (xmms style probably).
    How are you doing EQ adjustments? I'm using the aRts libraries (not for EQ but for a spectrum analyzer but I could). I know aRts isn't the holy grail by a long shot but it seems to be working well for me so far.

    Quote Originally Posted by pkg
    What I need to do now is multi-thread my app. When a song is being played you cannot interact with the app untill it is done. This is a minor bit of code though.
    How are you implementing your MP3 player? You wouldn't necessarily need to multi-thread your app if your MP3 player was a seperate process and used IPC to communicate with your frontend. I'm using a socket connection to mpg123 myself.
    Silverwolf 2 is dead.
    Silverwolf 3...?

Page 4 of 4 FirstFirst 1234

Similar Threads

  1. Connecting portable mp3 player to car speakers.
    By HomelessGuy in forum Car Audio
    Replies: 8
    Last Post: 10-16-2007, 10:51 PM
  2. Anyone Destinator working in Centrafuse ?
    By superbowl in forum Centrafuse
    Replies: 31
    Last Post: 02-05-2005, 12:30 PM
  3. In dash car MP3 CD Costs
    By mp3designer in forum Classified Archive
    Replies: 7
    Last Post: 02-06-2001, 04:23 PM
  4. Car MP3 Costs???
    By mp3designer in forum General MP3Car Discussion
    Replies: 3
    Last Post: 01-24-2001, 11:45 PM
  5. complete working mp3 player , including SHARP 6" lcd
    By mattfrag in forum Classified Archive
    Replies: 1
    Last Post: 06-27-2000, 10:00 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •