Wednesday, December 31, 2008

NYE Release

beaTunes LogoEA16 is available. I fixed a number of queue issues - cancel should now work properly and other visual errors should be fixed. Most of the icons used throughout the app can now be replaced through custom themes, as I added a Theme.getResource() method, which is used for looking up icons. Internally a couple of things have changed to aid plugin development. And as a little GUI enhancement, the number of remaining songs in the queue is now displayed as badge on the dock icon (OS X only). And of course there are some other smaller fixes and enhancements.

And here's the obligatory warning: Before downloading and installing this, please make sure you understand what Early Access means:

  • Absolutely no warranty for whatever
  • Features may or may not work, appear, and disappear
  • It may not be possible to migrate data to future versions (even though I make a reasonable effort)
  • This version will cease to function 2 weeks after its release
  • You cannot buy this version

Just so that there is no doubt about it: EA16 isn't even a beta version (actually, we are getting very close to that, though).

And here are the download links:

Note for EA15 users

If you have been using the keytogrouping plugin - go to the blog post and download the updated version, remove the old version and put the new one in the plugin folder. Things will fail without removing the old version!

Labels: ,

Thursday, December 18, 2008

Adding a custom menu item

beaTunes LogoAs I mentioned before, beaTunes 2 will be a lot more friendly towards developers who want to write plugins. As a matter of fact, many of the standard components you can see in the UI are plugins already. If you're curious, just unzip the beaTunes.jar (on OS X open the app bundle and navigate to Contents/Resources/Java - that's where all the jars are, on Windows, just go to the apps lib directory) and checkout the file plugin.xml in the META-INF directory. That file is read by beaTunes and the classes in it are instantiated and registered with the plugin manager. For you that basically means, you have to include a plugin.xml in your own plugin jar file.

But this post wasn't supposed to be about plugin.xml, it was supposed to be about how to get a new menu item into beaTunes. And that is actually pretty easy.

Obviously, a menu item is backed by an action, in the case of beaTunes it should be a com.tagtraum.beatunes.action.BaseAction. So, just subclass BaseAction. Because getId() and actionPerformed() are abstract, you will have to implement them. getId() is supposed to return a String id. Make something up. actionPerformed() does whatever you want your action to do.

public String getId() {
return "com.mycomp.action.somethingfancy";
}

public void actionPerformed(final ActionEvent e) {
// do something grand!
}

Now, obviously you want your action to have a name. To give it one, implement a constructor like this:

public MyAction(final BeaTunes beaTunes) {
super(beaTunes);
putValue(Action.NAME, "My Menu Item");
// add other action properties as you see fit
}

At this point you have an action with a name, an id and some action method, but beaTunes doesn't know yet where to put the thing. To tell it where to show it, you have to override the following method:

public ActionLocation[] getActionLocations() {
// install the action in just one location - in this case the tool menu
return new ActionLocation[] {
new AbsoluteActionLocation(BeaTunesUIRegion.TOOL_MENU)
};
}

The sample code above installs the action in the tool menu. Now, unfortunately that does not give you any control over where exactly in the tool menu the action will be placed. To get more control, you can use a RelativeActionLocation. Like this:

new RelativeActionLocation(BeaTunesUIRegion.EDIT_MENU,
RelativeActionLocation.RelativePosition.BEFORE, "tree.show.hide")

This location installs an action in the edit menu, right before the action with the id tree.show.hide.

Now compile your action, put it in a jar and add a META-INF/plugin.xml-file that looks like this:

<?xml version="1.0" encoding="UTF-8" ?>
<plugins>
<plugin class="com.yourcomp.MyAction"/>
</plugins>

Then place the jar into the beaTunes plugin directory and start beaTunes.

Done!

Note: This code will only work with beaTunes 2. It has been updated for EA16.

Labels: ,

Wednesday, December 17, 2008

Copy Keys to Grouping Plugin

beaTunes LogoWe all know the problem: iTunes does not show tonal key information available in beaTunes. To solve it, I wrote a little beaTunes 2.0 plugin, that copies the key info into the (often unused) grouping field. Just download the this file and place it into your plugin directory. Make sure that it is the only version of the plugin in that folder - i.e. remove any older versions.

The location of your plugin directory depends on your operating system:

  • XP: c:\Documents and Settings\[username]\.beaTunes\plugins
  • Vista: c:\Users\[username]\.beaTunes\plugins
  • OS X: [your_home]/Library/Application Support/beaTunes/Plug-Ins

If you're interested in how the plugin works - it's trivial and here's the maven project complete with Java sources. Just make sure you somehow point to the beaTunes binaries for compilation.

Important!

This plugin needs at least beaTunes 2.0.3 to work correctly!

Note: This post has been updated to reflect changes in EA16 and changed again to reflect changes in 2.0.3.

Labels: , , ,

Holiday release, the 2nd

beaTunes LogoBecause there have been some problems with the embedding of non-iTunes fields, I figured it makes sense to push out another release before the holidays start. This one contains the latest version of jaudiotagger, the library beaTunes currently uses for tagging files whenever iTunes is unwilling to do the job. Paul Taylor, the jaudiotagger author, has made a bunch of changes that make tagging with his library a lot safer (especially padding mp3 files). I really hope to benefit from that. Great work, Paul!

Other than that, I did some changes so that one can now run custom analysis tasks in the queue (more about that in another post), fixed some file location related issues and fixed sorting by key.

And here's the obligatory warning: Before downloading and installing this, please make sure you understand what Early Access means:

  • Absolutely no warranty for whatever
  • Features may or may not work, appear, and disappear
  • It may not be possible to migrate data to future versions (even though I make a reasonable effort)
  • This version will cease to function 2 weeks after its release
  • You cannot buy this version

Just so that there is no doubt about it: EA15 isn't even a beta version (actually, we are getting very close to that, though).

And here are the download links:

Note for EA14 users

There should be no problems.

Labels: ,

Sunday, December 14, 2008

Don't embed non-iTunes fields, the 2nd.

beaTunes LogoIt looks like EA14 of beaTunes 2 still doesn't correctly embed non-iTunes fields into audio files. Please turn this feature off, if you are using EA14. To do so, just open the Preferences, open the General tab and uncheck Embed non-iTunes fields into audio files.

Labels:

Wednesday, December 10, 2008

Holiday Release

beaTunes LogoAlmost unbelievable, but true - we are slowly approaching a final release. Today's EA release focusses on some query speed issues as well as some stability issues, but at this point there probably won't be any major feature additions for the actual 2.0 release. EA14 should fix the non-iTunes field problem I posted about earlier. It also features some faster queries and faster matching against the whole Library. Additionally, I added some fallbacks for memory management, which should make the app more stable overall.

Contrary to previous EA releases, this release will expire after 3 weeks and not 2. So you can use this throughout the holidays...

And here's the obligatory warning: Before downloading and installing this, please make sure you understand what Early Access means:

  • Absolutely no warranty for whatever
  • Features may or may not work, appear, and disappear
  • It may not be possible to migrate data to future versions (even though we make a reasonable effort)
  • This version will cease to function 3 weeks after its release
  • You cannot buy this version

Just so that there is no doubt about it: EA14 isn't even a beta version (actually, we are getting very close to that, though).

And here are the download links:

Note for EA13 users

Some updates to the database.

Labels:

Wednesday, December 3, 2008

Don't embed non-iTunes fields!

beaTunes LogoIt has come to my attention that in some cases EA13 of beaTunes 2 doesn't correctly embed non-iTunes fields into audio files. I highly recommend to turn this feature off altogether for EA13. To do so, just open the Preferences, open the General tab and uncheck Embed non-iTunes fields into audio files.

Labels: