XMMS mp3cue v0.94

by Brian Fernandes

Now with ID3v2 Tag support

Looking for version v0.9 ? Click here to go to the old page
mediaCue (Winamp 3 plugin) is coming up shortly. Stay tuned.

Introduction

XMMS mp3cue adds cue file support to XMMS. Cue files store information (Artist, Title, Time) describing smaller tracks within a large audio file. mp3cue allows you to easily manipulate these cue files; and more importantly, it presents you with a separate playlist composed from the cue information which you can use to easily navigate to any of the smaller tracks in the audio file, just like a normal playlist. You can also save this cue information within an ID3v2 tag (if the audio file is an mp3), eliminating the need for an external cue file.

XMMS mp3cue is a General plugin for XMMS (X Multimedia System), which runs on Linux. The original mp3cue plugin was conceived by John Dee, written for Winamp 2. I have written XMMS mp3cue from scratch; it is not a port. However, I did get the idea from John and, to the best of my knowledge, the two plugins are totally compatible. You can switch between the two players without any hassles.

Having said that, XMMS mp3cue is an ongoing project, there are still many things left to do ... I need your feedback.

The Problem

If you wanted to rip / encode a mix CD or if you downloaded a large song, you basically had 2 options.

In order for you to be able to identify and seek to any particular song within the mix, you would have to encode each song as a separate MP3 file. So what's the problem ? Well, if you are listening to the music using XMMS, you'd probably get a pause between the tracks, as XMMS switches between them. Playlist ordering can also be an issue, not to mention managing all those files.

Alternatively, you can rip the entire CD as a single MP3; but then how do get to a particular track within the mix ? Not only would you have to remember the location of the track, but the slider is hardly precise enough for large files. Needless to say, you don't retain any information about the individual tracks, and you would probably have to manage this information outside XMMS.

The Solution ... and how to Use it

The solution is this plugin ... you were expecting maybe the Easter Bunny ?

Compatibility

My Winamp 3 Plugin (mediaCue)
This goes without saying, mediaCue and mp3cue are totally compatible. For the actual file manipulation, I've even used the same code.

John Dee's Winamp 2 Plugin
Cue sheets created by the Winamp 2 plugin can be read by the XMMS plugin and vice versa.
The same goes for MP3 support as well. Save to MP3 in XMMS mp3cue and the Winamp plugin will pick it up ... and vice versa *sigh*.

External Cue Sheet Editors
You can create cue sheets using external Cue Sheet Editors, or by hand and the plugin should handle them properly, as long as standard cue sheet conventions are followed. Some Audio CD rippers such as Exact Audio Copy create the cue sheet for you, but I haven't personally tried that out.

Other Audio Formats
Even though the plugin is called mp3cue, it can be used for all types of audio files, as long as XMMS is capable of seeking within them. hooray !

To Do

Download and Installation

Enough of the crap already, here are the downloads. Now, why do I get the feeling you came here first ?

WhatWhereSizeRemarks
SourceXMMS-mp3cue-0.94.tar.gz 39 KBSource released under GPL. XMMS devel package and GTK 1.2+ libraries required to build.
RPMXMMS-mp3cue-0.94-1.i586.rpm31 KB
BinaryXMMS-mp3cue-0.94.tgz28 KBCreated with alien.


If you use the RPM or compile with a "make install" then the plugin and it's documentation should automatically be installed in the right place, but just in case ...

The important thing is, the libmp3cue.so file must go in the /usr/lib/xmms/General/ directory
(this directory is mostly constant, but there is a small chance that it just might be different on your machine) You can locate it using "xmms-config --general-plugin-dir".
Everything else is secondary. Forget the documentation, forget your girlfriend, forget your life. Just put the frickin libmp3cue.so file in XMMS's "General Plugin" directory and everything will be allright. Don't cry.

After installation, restart XMMS. Right click on XMMS and choose preferences, go to the General plugins tab and enable the plugin.
I have no configurable options yet, but will add some in the next release (this is exactly what I said in the last release). If you try to close the mp3cue playlist, it will only hide itself. So you can click the Configure button (where you enabled the plugin) to unhide it. There seems to be no other way to handle this behavior, but I'm still looking.

Payment

XMMS mp3cue is free software distributed under GNU GPL. v0.9 was released when I was still an Engineering Student ... I'm now working. What Fun :P.
Give some money to your favorite charity and help your fellow man. And tell me about it.

Details

As with the previous release, this release was actually complete about 3 months ago ... but I didn't feel like testing it. Testing is a bitch. aaarrgghh !

If your audio file has a 3 letter extension (.mp3, .ogg, .wav ...), then the cue sheet for that file will have the same name, but the extension will be changed to "cue".
e.g. Audio File: myfile.mp3 Cue Sheet: myfile.cue
In any other case, (more or less than 3 letters in the extension) the file will be given an additional extension viz. "cue".
e.g. Audio File: myfile.mpeg Cue Sheet: myfile.mpeg.cue
When exporting cue files from mp3cue, it will automatically supply an appropriate name. If you stick to the supplied name, mp3cue will find the cue sheet automatically when the file is next loaded. Alternatively, you can specify any file you want when importing a cue sheet for the current song, but then that would have to be done manually each time.

For an MP3, the plugin first checks for the external cue file. Only if this is not found does it search the MP3 for the cue frame. So, if you have stored the cue data in the MP3, but you have a cue file as well, then only the external cue file will be parsed.

If you are saving the sheet to an mp3 which did not originally possess an ID3v2 tag, then the plugin generates the Performer (TPE1) and Title (TIT2) frames from the Cue Sheet Properties. It would be advisable to set these properties ~ if you do not, the earth will explode. No, really.
If a new ID3v2 tag is being generated, then the plugin uses ID3v2-3. If there is a ID3v2 tag in the mp3 already, then the plugin will use that format. It is capable of writing ID3v2-4 tags as well.

Feedback

I'm usually a paranoid tester. You probably wouldn't believe some of the scenarios I'd test. But then again, it's possible that I missed something (oops). The plus point here is that I've re-verified my code while coding my Winamp 3 plugin, mediaCue. I doubt mp3cue would cause XMMS to crash, but if XMMS does crash, disable the plugin and see if XMMS still crashes (I've known XMMS to seg. fault a few times). Then enable it and check. With such flexible input, it's not too easy to test all scenarios.

Since I've distributed the source this time, you can also recompile the plugin in DEBUG mode; simply change the "DEBUG := n" line in the Makefile to "DEBUG :=y" and recompile. Then run XMMS from a console window, it will print Debug messages to the console, and those will certainly give me a better idea of what's going wrong and where.

Non standard cue sheets can cause the plugin to behave "inappropriately"; I suggest creating a cue sheet using the plugin or an editor. The "by hand" method is error prone, and using the plugin is simple enough, isn't it ?

I would really really appreciate any suggestions or bug reports from you. A few words of appreciation would go a very long way too. If you want to volunteer to test out new versions of the plugin, drop me a line. I had asked for testers for this version, but I guess nobody has time anymore. :(

Contact

Email:brianv at phreaker dot net
MSN: infernalproteus at hotmail dot com
Y!: infernalproteus
ICQ: 96722990

Postal Address:
503, Miaami Apts. II,
St. Vincents Street,
Pune 411001
India.

Other Sites:
ProteanArt
Photoshop Plugins
Brian's Assembly Graphics Site

Thanks

First of all - John Dee, for writing the original plugin and taking the time to explain all the details of his plugin, ID3 tags and Trance in general.
His plugin is here

I would also like to thank iso:crash and Tamas Pal the authors of the hello world and Goodnight plugin respectively, whose source I studied to make this one.

The guys on the XMMS forum very helpful, hope they continue to be.

Joshua McKinny reinkindled my interest in the plugin. I actually thought nobody really wanted / needed it. Josh also found a few big bugs (which have been fixed :) ), so you have to thank him for pre-crashing the plugin for you.

Christoph Thielecke found an issue with multiple windows.

Sunil Beta provided much needed packaging support.

Last modified: Sat Oct 25 18:51:29 India Standard Time 2003