Wednesday, June 15, 2011

Managing Plugins

I have this unfortunate habit of starting blog entries with sentences like "Some of you may have wondered ..." or "As you have probably noticed ...". Well. Perhaps some of you really have noticed that the blog support has been removed from beaTunes 3. But I doubt it.

The sad truth is, hardly anyone has ever used this feature and because it was hardly used, it was in fairly bad shape, which of course led to less use. The vicious circle of a non-essential feature. What do you do with a feature that's not really necessary? One, that's not the product's core? Right, you either kill it or you make it a plugin.

This is exactly what happened to the blog support. So if you are one of the very few who liked and used the blog support, you will need to install the blog plugin. And that's the real reason for this post.

beaTunes 3 now has a built-in plugin manager that allows you to discover, download and install plugins via the preference panel.

Just open the beaTunes preferences and go to the Plugin pane. There you can inspect which plugins are currently installed, uninstall them, update them or check out other available plugins. One of the plugins currently available is the blog plugin. Others are old friends, like the keytocomment or the last.fm plugin.

If you want your Java plugin to be listed here, please contact me through the support forum. For now, plugins need to be submitted as Maven projects in source code.

Labels: ,

Tuesday, June 14, 2011

Lowering CoGS: beaTunes' new Plugin API

beaTunes3 logoFor a long time beaTunes has offered a more or less stable plugin API. With beaTunes 3 the API has changed significantly - and it has become a lot easier to use. The new AudioSong object for example, lets you easily manipulate song metadata without having to worry about how and where that data is going to be saved.

But an API is only worth the bits it's coded in, if the cost of getting started (CoGS™) is low enough. Let's recap:

The old API was...

  • poorly documented,
  • plugins needed to be in written in Java (i.e. compiled) and
  • one needed to package them in a special way, which included adding a plugin descriptor in a defined location.

In other words, the old API was a perfect example of how not to do it.

Now, let me say that the new API is still not the greatest API ever (imagine that!). But is has gotten a lot better and CoGS is a lot lower.

Better Documentation

There is now a page that offers a real starting point. The access to the javadocs has been there before, but now they are also deployed to the Maven repository. That makes them a lot easier to access from your IDE (if you are using one). That said, most people don't learn an API by looking at the reference docs. Annotated sample code teaches most people way more in much less time.

It's like API essence: take a sip, mix it with your own experience and it magically inflates to knowledge.

This is why I made an effort to write some key examples - code that can be modified and re-used as you see fit. But most importantly, it just works without you having to find out some boring details the hard way.

No need to compile

For the old API you had to install a Java JDK, setup an IDE, install Maven, create a project... before you could do anything. The only question left to answer here is: Did you give up after the JDK installation or before the Maven setup?

Of course IDEs can be great and make your life a lot easier. The same is true for Maven. But what, if you just want to code something simple, like a global search and replace? This is the kind of thing that should be done via a simple script. No JDK, no Maven, no IDE.

No hassle.

And that's exactly what beaTunes 3 is capable of.

Little scripts called beaTlets can now be dropped into a special directory and beaTunes will pick them up the next time it starts. The API is still written in Java, but thanks to JSR-223 magic, your code can be in either Groovy, JRuby or Jython. Working examples for all three scripting languages can be found here.

Trivial Installation

I already mentioned it - these fancy little scripts called beaTlets can be installed by merely moving a file into the right directory. No need to write a special descriptor anymore. That said, you can still do it to communicate certain needs to beaTunes. But you don't have to.

Conclusion

Writing simple plugins for beaTunes has become a lot easier. CoGS has been lowered a lot. Should you still have questions, please feel free to contact me or post to the Plugins section of the forum. I'm here to help.

Labels: ,

Announcing Jipes 0.9.2

Jipes is an open source library that allows you to efficiently compute audio features. Possible uses for these features are general music information retrieval (MIR) applications or more specifically personal music software like beaTunes. As a matter of fact, since version 3, beaTunes uses Jipes.

To create your own Jipes-based music analyzer in beaTunes, check out the Song Property Analyzer example in the plugin API documentation.

Labels: , ,

Thursday, June 9, 2011

Rate beaTunes!

beaTunes2 logoSo far the beaTunes 3 feedback has been overwhelmingly positive. Everybody seems to really like the new inspection UI. Thanks, guys!

That said, beaTunes could really benefit from some more public love. If you are using MacUpdate or the like, please go over there and express how you feel in terms of rating stars! Let other people know, that beaTunes rocks!

Thank you!

Labels:

Friday, June 3, 2011

beaTunes 3 Key Detection Accuracy

beaTunes2 logoI promised yesterday that I'm going to back up my claim that beaTunes 3's key detection works pretty well. To make it short, I tested against the Beatles studio albums. They make testing easy, because reference keys are published at Isopohonics. It also means that you can easily verify my results.

The graph shows correctly recognized keys.

Not so bad, right?

Labels:

Thursday, June 2, 2011

beaTunes 3 out now!

beaTunes2 logoI'm quite happy being able to post that I just turned beaTunes 3 live. The release has been in the making for quite some time, but I think it really kicks ass - not least, thanks to the valuable feedback I got from you guys.

So.. Thank you!

Since I have posted little bits and pieces about what's new in the last couple of weeks, I won't go into too many details here. Let's just say that the UI has gotten a lot better, I added a ReplayGain analysis task, scripting plugins with JRuby/Jython/Groovy is now possible, and I completely rewrote the key detection algorithm - it is now based on Jipes.

Apropos key detection algorithm. Hm.. not sure how to say this humbly.. It rocks! My tests against Christopher Harte's Isopohonics Beatles test set show, that with 'use online resources' turned off it performs significantly better than other software DJs typically use. But more about that in another post.

For now, enjoy this release... I surely will :-)

Upgrading

Upgrade licenses are available for $11.95 for 2->3 and $24.95 for 1->3, respectively. The price for the regular license (for now) stays the same: $31.95.

Note, that when first running beaTunes 3, it changes its internal database layout. This can take a while. Please don't interrupt the process.

Labels: ,