beaTunes News

Sunday, April 21, 2019

Easter Update: beaTunes 5.1.13

Just in time for Easter: a new beaTunes update. This release features a couple of bug fixes and minor performance enhancements. Additionally, it provides initial support for DSF files—at least for folder-based libraries. Note that this is still rather new, i.e., your mileage may vary.

As always, you can download the new version from the download section of the website.

Changes in 5.1.13

  • Fixed accidental genre removal in multi-item Get Info dialog.
  • Fixed search bug in large collections.
  • Fixed matching logic in similar artist rule.
  • Improved rendering performance of tags column.
  • Prefer FFmpeg-based decoding over Windows Media Foundation.
  • Added initial support for DSF.

Labels: , , ,

Tuesday, October 11, 2016

Update: beaTunes 4.6.8

beaTunes4 logo

Mostly thanks to user-feedback, today's update fixes a number of little things having to do with showing the right cursor, dealing with filter issues, synchronization artifacts etc. That aside, the most important change is probably, that for now I have dropped support for directly writing to STEM files. Whenever the file manipulation happens via iTunes (in an iTunes-based library), things work as expected. But beaTunes itself will not modify STEM files anymore. It turned out that the library beaTunes uses for MP4 manipulation wasn't able to correctly adjust a certain value for all five streams contained in a STEM, which led to problems when playing the file in Traktor. The problem is understood and fixed, but a newer version of the library that contains the fix is not released yet.

People using MIK made me aware that it uses different tags when writing the initial key into OGG and FLAC files. I have updated beaTunes to make sure that they are imported correctly.

Last but not least, a bug that led to rare application crashes was fixed in both MFSampledSP and FFSampledSP, which is why I updated both libraries.

As always, you can download the new version from the download section of the website.

Most important changes in 4.6.8

  • Added support for MIK-style key tags for OGG and FLAC.
  • Fixed loss of sort order after folder-based library sync.
  • Fixed manually entered ratings shown as computed until sync.
  • Fixed possible disappearing resize cursor for table headers.
  • Fixed display refresh problem when editing inline while a filter is set.
  • Removed some tagging support for stems, due to file corruption issues.
  • Improved automatic iTunes library detection (non-ASCII paths).
  • Improved resilience against Windows COM errors.
  • Moved to MFSampledSP 0.9.7.
  • Moved to FFSampledSP 0.9.15.

Labels: , , , , ,

Tuesday, October 7, 2014

beaTunes 4.0.10: Now with AV framework du jour

beaTunes4 logo

I just released beaTunes 4.0.10, a minor maintenance update. If you have experienced crashes while analyzing Album Replay Gain on Windows, this update is the one you don't want to skip. On OS X, the move from the QTKit-based player to an AVFoundation-based one should not be noticeable. The reason for the move is not technical, but rather an attempt to use Apple's AV framework du jour.

You can download the software from the download section of the website.

Most important changes in 4.0.10

  • Moved from QTKit to AVFoundation on OS X.
  • Fixed possible crash when analyzing AlbumReplayGain on Windows.

Update

A nasty little bug snuck into the original release of 4.0.10 for 64-bit Windows (OS X and 32-Bit Windows are fine). You can easily tell whether this is of concern to you, as most analysis tasks crash right away rather unceremoniously. I have replaced the 4.0.10 release with a fixed version. If you are having problems, please simply download and install 4.0.10 again. Thank you.

Labels: , ,

Tuesday, August 19, 2014

beaTunes 4.0.4: Configurable key formats

beaTunes3 logo It's been requested many times, but so far there just wasn't time. Now it's finally built-in: Configurable key formats. This means, that beaTunes can now display the tonal key in several different formats (traditional, OK-Notation, Wall Clock, etc). And for those, who are still unhappy with the built-in formats, there is an API that allows you to create custom renderers.

For those of you, who use the KeyToComment-plugin, please note that there is an update available via the beaTunes plugins preference pane. The plugin now features the ability to choose a key format.

To avoid misunderstandings: beaTunes still writes the same standard information to Id3 tags—exactly as it is defined in the specification. But it is now capable of displaying this information in multiple different ways. In other words, the Id3 TKEY frame will not suddenly contain information formatted in OK-Notation, just because it is rendered as such in the beaTunes user interface. This is to ensure interoperability between different applications.

Besides this addition, v4.0.4 contains some important bug fixes for Windows users who keep their music on network shares. Interesting for everybody is a fix for a bug that led to missing BPM values in iTunes when analyzing with Use online resources turned on.

As always, you can download the software from the download section of the website.

Most important changes in 4.0.4

  • Fixed use online resources for BPM (0 values).
  • Fixed ignore solution for acoustic. duplicates.
  • Fixed UNC path support.
  • Moved to FFSampledSP 0.9.7.
  • Moved to MFSampledSP 0.9.4.
  • Added interface for custom key text renderers.
  • Segment analysis of songs longer than 30min now skipped.

Labels: , , , , , , ,

Wednesday, August 21, 2013

64 bit beaTunes on Windows 7/8

beaTunes2 logoFor years now, beaTunes has used Apple's QuickTime SDK for Windows to decode and play audio files (on OS X, beaTunes uses CoreAudio and QTKit). Unfortunately, QuickTime for Windows is 32 bit only and has been all but abandoned by Apple a couple of years ago. In the OS X world it has been first replaced by QTKit and more recently by AVFoundation—and both are available in 64 bit, but not on Windows.

Truth be told, the QuickTime SDK is covered with quite a bit of patina. But to my knowledge it is the only commercially available, comprehensive cross-platform multimedia API. The only other library that comes close is the open source project FFmpeg (…which does not take care of licensing issues).

Why am I telling you all this?

Without some sort of inter process communication (a trick used by the QuickTime X player), any program that wants to use a 32 bit library, has to be a 32 bit process as well. And 32 bit means 4 GB of addressable memory per process—a boundary beaTunes with a big library and lots of parallel analysis tasks can bump against. As a consequence, to allow beaTunes to run as 64 bit process, I have to get rid of QuickTime and replace it with something else. This something else will be a mixture of different SampledSP-libraries—FFSampledSP for free codecs like FLAC and OGG and MFSampledSP for commercial formats like AAC, MP3 and WMA. For a complete list of available MFSampledSP decoders, please see this Microsoft Media Foundation article.

The switch away from QuickTime is planned for beaTunes 4, not due for at least a couple of months. But since most of the code for 64 bit audio decoding is already written and available, I'm making a special 64 bit Windows 7/8 build of beaTunes 3.5.15 available for you today. This should be interesting to folks with memory problems on Windows. In the 64 bit version they can increase the maximum heap size to a much larger value than the typical 1200 MB. If you want to try this, please keep in mind, that you need at least Windows 7—this will not work properly on Vista or XP! Obviously, you also need a 64 bit operating system and 64 bit hardware.

You can get the 64 bit version here: beaTunes-3-5-15-x86_64-win.exe

This build contains MFSampledSP, but not FFSampledSP. So working with most commercial codecs should be fine. Free or Apple specific codecs (e.g. Apple Lossless) on the other hand might be problematic.

Of course I'm putting this out there for your benefit, but also for mine. Please let me know, if you run into any kind of problems! I need your feedback to solve issues.

Thank you.

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: , , , ,