beaTunes News

Wednesday, September 18, 2024

beaTunes on macOS 15 Sequoia - don't update just yet!

Apple just release its latest macOS update named Sequoia. If you're using beaTunes v5.2.34 or earlier, I recommend to wait with the update as it apparently breaks beaTunes' analysis feature.
If you have already updated, I recommend the following workaround:

  • Go to /Applications/beaTunes5 in Finder
  • Right click on beaTunes5 and choose Show package contents from the context menu
  • Navigate to Contents/Java
  • Delete or rename the file casampledsp-complete-0.9.23.jar to casampledsp-complete-0.9.23.jar_
  • Start beaTunes
Background: Apparently the integration with CoreAudio broke with Sequoia. Deleting/renaming that file will force beaTunes to fall back to FFmpeg for decoding audio.

Labels: , , ,

Thursday, July 11, 2013

beaTunes 3.5.14

beaTunes2 logoIt's been a little while since the last update. This is mainly due to my involvement in the SampledSP project. SampledSP serves as an upstream open source project to beaTunes, allowing it to get to raw audio data (i.e. PCM) on both Windows and OS X. This is essential for the analysis of songs. In the past weeks the libraries for Core Audio, Media Foundation, and FFmpeg all got some love. While FFSampledSP will not be included in beaTunes before the next major version, I updated MFSampledSP for this release.

In a first step towards solving Java memory problems, beaTunes now shows its memory configuration in its About dialog and prints a corresponding message to its logs. The displayed values are the minimum and maximum heap sizes. This at least allows users experiencing memory problems to quickly check how beaTunes is currently configured (on OS X beaTunes 3 has no way of remembering its configuration when you update—changes do get lost).

QuickTime problems on Windows

Unfortunately, this release wasn't as smooth for the Windows folks as I would have liked it to be. The original 3.5.14 version contained a bug that prevented beaTunes from loading the audiokern-win.dll. The bug is fixed and the link on the website it updated. Should you have run into this issue, please download beaTunes again, install it, and make sure the built date in the About dialog is July 11. This applies to the Windows version only.

Changes in 3.5.14

  • Moved to MFSampledSP 0.9.1.
  • Memory (heap) min/max now shown in About dialog and logs.
  • Fixed potential OutOfMemory problem when ignoring many issues.
  • Improved Java based audio player.

Labels: , ,

Friday, December 9, 2011

beaTunes 3.5 Early Access 1: Faster, more responsive

beaTunes2 logoSurprising to some, I have not been idle in the past couple of months since the first release of beaTunes 3. In preparation of beaTunes 3.5, I have spent a lot of time on improving Jipes and the SampledSP collection. Both are open source libraries and central to beaTunes 3.x. Let me explain why..

Traditionally, Java offers very poor multimedia support. To illustrate this: In Java you can't just load and play an AAC file. Instead you have to find or write some code that does it for you. Support out of the box is not available. The same is true for all but the most simple (PCM) or obscure (μ-law) encodings.

The SampledSP collection remedies this situation by providing a bridge to native audio libraries like Apple QuickTime (32bit), Apple CoreAudio (OS X) and Microsoft MediaFoundation (>= Windows 7). Furthermore, it provides basic resampling capabilities.

beaTunes 3.5 will take full advantage of these libraries. It will also better take advantage of Jipes. Here's how: To analyze, all versions of beaTunes prior 3.5 first decoded the audio file to memory. Then, one after another, each requested algorithm would operate on the decoded audio data. While this approach is very efficient for multipass algorithms (decode once, process many times), it is flawed, when you want to process many files in parallel, as decoded audio can easily be 50MB and bigger. And once you have used lots of memory, the system becomes less responsive, because the OS is busy with memory management... not a pleasant situation. Starting with version 3.5, beaTunes processes small chunks of audio at a time, drastically reducing peak memory consumption, thus easing the strain on the OS. At the same time, processing steps that many algorithms have in common are only executed once, thus saving some work. The magical framework that makes this possible is Jipes.

To make this all work in beaTunes 3.5, I had to rewrite some of the existing algorithms and the task handling infrastructure. Most plugin APIs stayed unchanged, though. Additionally, the bundled JRuby and Groovy scripting engines were updated to current versions.

Better Responsiveness

While the audio processing stuff is probably the biggest change under the hood, I have also spent some time on other, more immediate performance aspects. One of them being UI responsiveness. When playing with 3.5, you will notice that scrolling around in playlists is a lot smoother than it used to be. There may be a slight flicker when beaTunes has to load data from the database, but typically values should appear in less than 0.5s. In fact, I have not seen this take more than 0.25s. Another area of work has been general responsiveness during standard tasks, like adding analysis tasks to the queue. Here, you should also notice an improvement.

Last but not least, I rewrote much of the online resources interaction code. Before 3.5, beaTunes first sent all data to the server, processed all the results and then added the unsuccessful tasks to the queue for local processing. Considering, that server processing takes a long time, but not a whole lot of resources, while local processing takes a lot of resources and a lot of time, this is a poor approach. In version 3.5 beaTunes sends data to the server (indicated by a message in the status bar of the task queue). In parallel, all tasks are added to the queue. But unlike before, beaTunes does not wait for all results from the online database to be processed before processing the remaining tasks locally. Instead, a task in the queue is processed locally right after we received data from the server for the task at hand (if at that point it is still necessary at all). In essence, both ways of processing (with online resources and locally) are more or less parallelized, thus significantly reducing the total processing time.

One last but important remark about colors: beaTunes 3.5 calculates colors slightly differently. If you have a big collection (i.e. more than 10,000 songs), this can slow down analysis significantly, as many colors (not just for the song you added to the queue) have to be changed in the background. Also, colors calculated with prior versions will have a different meaning, thus similarity can only be computed correctly, after all colors have been re-calculated.

As always, there is some more info in the NOTES.txt file.

Alright, 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 or previous versions (even though I make a reasonable effort)
  • This version will cease to function one week after its release
  • You cannot buy this version

And here are the download links:

Important

For those still using beaTunes 2: beaTunes 3.x changes beaTunes' internal database layout quite a bit, which takes a while. Do not interrupt this process, even if it takes very long! beaTunes 2.x will not be able to use the database anymore, after you ran beaTunes 3.x. If you intend to try 3.x and then go back to 2.x, make sure you back up the database before you try 3.x (depending on your OS it's in ~/Library/Application Support/beaTunes/Database, C:\Users\<username>\AppData\Local\tagtraum industries\beaTunes\database or C:\Documents and Settings\<username>\Local Settings\Application Data\tagtraum industries\beaTunes\database)! You also might want to check out this article about exporting beaTunes data.

Feedback

Please provide feedback! Let me know what does not work. Especially audio decoding problems, OutOfMemoryErrors and UI hangs and hiccups.

Thanks.

PS: The update from 3.0 to 3.5 will be free.

Labels: , , , ,

Wednesday, January 27, 2010

beaTunes 2.1.3 fixes non 44.1kHz problems

beaTunes2 logoConsidering that today's beaTunes release coincides with Apple's big media event, I don't expect for this to be noticed much... Anyhow, let's try!

As mentioned recently in this blog, beaTunes 2.1 had some problems on OS X with files not sampled at the standard 44.1Khz. This was due to a bug in the beaTunes code that interacts with the CoreAudio/QTKit decoders. This problem should be fixed for now. Note, that on Windows this problem was never an issue (and no, this does not mean Window is somehow better, it just means my code for Windows was somewhat better).

The changes made to fix this bug, may also lead to better support of other, more exotic audio formats, that only QuickTime supports.

The second nice thing in this release is the addition of genre and release year import in the MusicIP analysis task. So, if the genre and release year are in the MusicIP database, beaTunes should be able to import them.

Enjoy!

Labels: , ,

Friday, January 15, 2010

Problems with sample rates other than 44.1kHz on OS X

beaTunes2 logoOn OS X, beaTunes 2.1 seems to have a problem with audio files not sampled at the standard 44.1kHz. I believe, I have found a workaround, but it's not quite ready to be posted as update. But I would appreciate it, if people who actually encounter this problem, gave this dev-snapshot a shot and provided some feedback. Thanks!

Labels: ,

Saturday, May 24, 2008

UnsatisfiedLinkError: beaTunes, Leopard and Java 6

beaTunes LogoA little while ago, Apple finally released Java 6 for Leopard. Unfortunately, the 64bit Java 6 does not support QuickTime for Java anymore. Why? QuickTime for Java depends on Carbon, for which Apple is dropping support in 64bit environments.

What does this mean for beaTunes? In the long term we will move away from the QuickTime for Java API on OS X. We already utilize CoreAudio in parts of the application, which will not be affected by Apple's discontinued support for Carbon based APIs. We will replace the remaining code that is still using QuickTime.

Are users affected by this right now? Yes, unfortunately they are. As beaTunes works quite nicely with Java 6 on Windows, the current OS X version of beaTunes (1.2.9) will also start with Java 6, if it is installed. And this will fail due to the reasons mentioned above with an UnsatisfiedLinkError. To fix this, one needs to edit the file Contents/Info.plist in the beaTunes application bundle and replace the existing JVMVersion string with the value 1.5* (instead of 1.5+)

We will release an update next week, which contains this fix.

Labels: , , ,

Wednesday, November 28, 2007

beaTunes 1.2.6 is out

beaTunes LogoRight when we thought, that we had fixed all the issues caused by Leopard, it turns out that Leopard's version of CoreAudio tends to crash on files it decoded just fine in its Tiger incarnation. So this is why we just released beaTunes 1.2.6. It works around all the known CoreAudio issues and features an improved Windows uninstaller. We also did some additional cosmetic fixes specifically for Leopard.

Enjoy!

Labels: , , ,

Friday, November 16, 2007

OS X 10.4.11 solves iTunes Plus-CoreAudio problems

beaTunes LogoIt looks like the recent OS X 10.4.11 update solved a couple of issues with opening iTunes Plus files with CoreAudio. Previously, CoreAudio APIs were often not able to even open an iTunes Plus file even though no DRM was employed. For beaTunes users this was pretty annoying, since they had to fall back to a not as fast QuickTime implementation of the same code, that had to be manually enabled.

Labels: , , , ,