beaTunes News

Wednesday, February 18, 2015

beaTunes 4.0.19

beaTunes4 logo

beaTunes 4.0.19 was released today. As always, the release contains some more or less important fixes, improvements, and updates. For those of you interested in seeing partial artwork in the main table, please check out this discussion.

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

Most important changes in 4.0.19

  • Fixed display of progress dialog on initial import.
  • Reversed mousewheel direction on volume knob on Windows.
  • Improved automatic BPM range detection for EDM.
  • Improved repair/rebuild logic and dialogs.
  • Improved performance of adding selected songs to queue.
  • Improved caching of auto-completion.


Monday, February 9, 2015

Creating great Playlists

So, now that I have bored you enough with overview, libraries, analysis options, and inspection, finally I'm getting to the point of it all: Building better Playlists.

At the core of playlist creation stands a concept. Something that is supposed to make the list tick. Something that ties it all together. This can be something as common as "Best Rock of the 80ies", "Love Songs of 68", as personal as "Songs you made out to as Teenager" or as specialized as "Songs influenced by Nirvana's Nevermind". Or, if you're into working out "Driving Beats for Aerobics", "Steady Steps for Marathon Trance", and "Up and Down on two Wheels". You get the idea.

The point here is, every one of these concepts follows different rules and therefore requires different data.

Regarding data we're in luck. Analysis and Inspection should have whipped your collection in shape. But how do you find the right songs? How do you make beaTunes understand the rules?

Song Matching

Naturally, you can simply browse your library or use the filter field to search, build your lists completely manually. Another approach is called query by example. The idea is, that you choose a song and ask beaTunes to find a similar one. The $100.000 question is: What exactly is similar?

beaTunes sidesteps this question by letting you define what's important to you. This happens in the Song Matching preferences. There you can set up sets of rules that emphasize certain aspects of similarity, like tempo, mood, or color.

Creating Matchlists

Once you have created a ruleset appropriate for the playlist you want to create, select a song that the other songs are supposed to be similar to. This song is called a seed song. Then choose New Matchlist from the File menu (or use the corresponding toolbar button). beaTunes will then display the dialog shown below. Once you click OK, it will automatically create a new playlist according to the configured rules.

Building Playlists Iteratively

Matchlist are a great tool for building playlists with the click of a button. But they also take all the fun out of the creative process. beaTunes supports another way to create playlists, one that works song-by-song.

To get started, again select a song that you want to use as the first song of your list—your opener. Then click on New Playlist from Selection in the File menu. beaTunes will create a new playlist and you might want to change the default name to something better. Then select that very first, lonely song, open the View menu, and make sure that Show Matching Songs is turned on. Below the main playlist table, a panel with matching songs should appear.

To build your playlist, check out the matching songs. Once you've found a good candidate for song #2, simply drag it into the main playlist table above. You will find that beaTunes automatically selects the newly added song, triggering the match process again. So now, beaTunes shows you potential candidates for song #3. And so on... The process is also nicely demonstrated in this video. If you're unhappy with the current match ruleset, you can select another or modify the current one in the preferences. And for those people interested in harmonic mixing, I'd like to point out the key filters. They let you hide songs that are not in a defined harmonic relationship to the selected song.


I hope this articles helped you getting the most out of beaTunes when creating playlists. If you have further questions, please comment below or start a discussion in the support forum.

This article is part of a small series under the heading "HowDoesItAllWork".

  • Part 1 explains the overarching idea behind beaTunes.
  • Part 2 explains what kind of libraries beaTunes supports.
  • Part 3 takes a closer look at analysis and analysis options.
  • Part 4 takes you step-by-step through the inspection process.

Labels: , ,

Wednesday, February 4, 2015

DigitalDJTips features beaTunes

beaTunes4 logo

Phil Morse from just featured beaTunes in his article 5 Ways To Create Better DJ Sets With beaTunes. The article contains a great video walkthrough that I can highly recommend to anyone using beaTunes. Especially the bit about manually building a set using the match table (5:20) is awesome advice.

Today I also released a minor update. As always, the release contains some more or less important fixes and improvements. You can download the software from the download section of the website.

Most important changes in 4.0.18

  • Fixed read-only check on Windows.
  • Fixed issue with tuning rule.
  • Fixed additional matchlist filters.
  • Improved timeout handling on inspection commit.

Labels: ,

Monday, February 2, 2015

Improving Tags through Inspection

After explaining the overall idea, how libraries work, and the finer details of analysis options, today I am going to talk about inspection.

As you might recall, the main idea of inspection is to improve your textual metadata. Inspection does not magically tag all your files correctly (there is an analysis task that can help with that, though). Instead, it supports you in identifying potential issues like spelling mistakes and offers appropriate solutions. Let's look at this step-by-step.

Before you run an inspection, you might want to synchronize the beaTunes library with iTunes or your music files, so that the internal beaTunes database is up to date. You can do so via the File menu. Then click on the inspection button in the toolbar, the Tools menu, or simply use the keyboard shortcut Shift-Command-I. beaTunes will scan your library for issues. How long this takes depends mostly on the size of your library and which inspectors you have enabled (fewer = faster). Once the initial scan is complete, beaTunes will display the found issues along with suggested solutions.

Then the procedure is as follows:

  • Select one or more issues
  • Only if you selected a single issue: Select the songs you want to apply a solution to
  • Choose the solution and apply it
  • Move on to the next issue

Note, that when you select more than one issue at once, not all displayed solutions will necessarily be appropriate for all selected issues—however, they will only be applied to appropriate issues.

Whenever you apply a solution, beaTunes displays two dialogs. The first dialog makes you aware of the fact that the actual change has not happened yet. Instead, the chosen solution has been added to the list of pending solutions. This list appears at the bottom of the inspector list. It allows you to review all applied solutions before you actually commit them. More about that in a bit.

The second dialog asks, whether the issue at hand has been completely resolved. If your answer is Yes, beaTunes removes the issue from the open issues list. If it is No, the issue stays and you can apply another solution to the same issue. This makes sense, e.g. when an issue lists five songs as having the same rarely used genre. Upon checking the songs out, you might realize that the first two belong to pop, while the other three belong to jazz. So you first select the pop songs, apply a solution that changes their genre to pop, and then select the jazz songs and change their genre to jazz.

Committing Solutions

As mentioned above, applied solutions aren't immediately committed. Instead, they are collected in the pending solutions list where they can be reviewed, dropped, and committed. To do any of these things, select the Pending Solutions item in the left pane of the application window. Once you see the list of pending solutions, you can either commit them or delete them—either in bulk or individually via the context menu.

If you dislike this two-step approach of applying and committing—well, you can turn it off. The corresponding switch is located in the inspection preferences and called Delay committing changes. You guessed it, in order to commit solutions right away, you must turn this option off. The same preference pane also lets you turn individual inspections on and off.

Removing Duplicates

Even though the bulk of the offered inspections aim at consistency of textual data, one of the more popular inspections has nothing to do with metadata improvements. Finding and removing duplicates is a great pain in large collections and beaTunes has an inspection that can ease this pain. By default, beaTunes uses the existing textual metadata like song and artist names to find duplicates. Sometimes, songs already have identifiers like ISRCs embedded—those are used as well. Additionally, to identify duplicates that come with wrong or insufficient metadata, beaTunes can use acoustic fingerprints. Unfortunately, it can take quite a while to compute those, therefore they are not calculated during inspection. In order to take advantage of them, you must first analyze your library with the fingerprint analysis task turned on. Once that has happened, beaTunes will take them into account when you run the inspection.


This little guide hopefully explained in detail how inspection works. If you have further questions, please comment below or start a discussion in the support forum.

This article is part of a small series under the heading "HowDoesItAllWork".

  • Part 1 explains the overarching idea behind beaTunes.
  • Part 2 explains what kind of libraries beaTunes supports.
  • Part 3 takes a closer look at analysis and analysis options.
  • Part 5 concludes this little series, showing how to build great playlists.

Labels: ,

Thursday, January 29, 2015

The quickest way to scan through a new album

beaTunes4 logo

A little while ago somebody requested a scan feature in the forum. Something that would play 10-20s of the most important part of a song and then move on to the next one. Ideal for quickly listening through a bunch of newly purchased songs to get a first impression. Back then I decided to quickly code a small beaTlet in Groovy to make it happen.

Today, I made the hack from back then a little bit more official. By that I mean, that you can now install the Scan Playlist plugin via the Plugins pane of the beaTunes preferences (v4.0.17 or later required). Simply click on the Plus button to install, restart beaTunes and you will find a new Scan control in the Controls menu. Admittedly, the plugin is still somewhat of a hack—after the first use, it's recommended to restart beaTunes again so some settings can take effect (in essence, the cover panel is turned off). Also, once scanning has started, you must stop it by using the same menu item (Stop Scan). Just pausing or using any other controls for controlling playback won't stop the scanning.

I hope this is useful for you. Enjoy!


Wednesday, January 28, 2015

beaTunes 4.0.16/17

beaTunes4 logo

beaTunes 4.0.16 was released today. As always, the release contains some more or less important fixes, improvements, and updates.

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

Most important changes in 4.0.16

  • Fixed NullPointerException on new library in windows file system root.
  • Fixed previous/next issue in "Get Info" panel.
  • Fixed potential infinite loop when syncing with Synology NAS.
  • Improved failure behavior on OutOfMemoryError.
  • Improved resume analysis on restart.
  • Improved AirPlay playback on OS X.
  • Improved (shortened) shut down time.
  • Updated to JRuby 1.7.18.
  • Updated to Groovy 2.3.9.


4.0.16 for Windows unfortunately contains a bug that prevents beaTunes to access all kinds of audio files. This bug is fixed in 4.0.17 (available now). If you tried out 4.0.16 on Windows, please update asap to spare yourself some unnecessary frustration. Apologies for this glitch.


Monday, January 26, 2015

Audio Analysis Options Explained

In part 1 of this series of articles, I explained the overarching idea of beaTunes, i.e. how analysis and inspection help you to build better playlists. Part 2 explained the different kinds of libraries. Today, I am going to concentrate on analysis options.

Analysis allows you to compute or retrieve additional, mostly non-textual information about your music—great examples are tempo and key. While both can be useful for DJing, tempo can be used for all kinds of applications including workout playlists for running, spinning, and aerobics. You can trigger analysis by selecting a couple of songs and then clicking on the Analyze button in the toolbar.

Using Online Resources

For most analysis tasks, beaTunes offers to simply download the desired value instead of computing it. If the value cannot be found, beaTunes falls back on its built-in algorithm. To trigger this download-first-behavior, you must check the box Use online resources in the analysis options dialog—that's the dialog that pops up, when you click on Analyze (see screenshot below).

Now, should you check that box or not?

Let's take the BPM analysis as an example. While accuracy differs depending on genre, overall state-of-the-art BPM analysis is currently roughly 74% accurate—94%, if you are willing to tolerate x2 and x0.5 errors. This so called octave error is the biggest problem in automatic BPM detection. When downloading values from the database, you are downloading values computed or entered by other beaTunes users. Doing so, you give up any control over the BPM range (or octave) as well as the used algorithm. This is not all bad—the database uses some fancy heuristics to ignore bad values and attempts to pick the "right" ones. But the fact remains: you give up control over the largest error source. There is no way to increase the octave accuracy via tweaks. Plus, you cannot use this feature when you are offline. And when you're online, analysis speed depends on your Internet connection's bandwidth and the general load on the database server.

If you decide not to use online resources, you can force beaTunes to calculate a BPM value in a certain range, e.g. 80-160 BPM. Assuming you know what general tempo your music is in, this can help you to avoid the octave error. Additionally, you get to choose which algorithm beaTunes will use (OnsetPeak is the more modern algorithm). And if you don't use online services for any task, analysis speed only depends on your personal hardware and some settings. More about those later.

In the end, you might want to use online resources, if computing values locally is too slow and you don't care much about tweaking the algorithm. But if you have lots of local processing power, fast disks, and like to stay in control, not using the online database may be the better choice.

Computational Effort

Regarding online lookup, pretty much the same rules apply to the other computation tasks—namely segmentation, color, key, replay gain, and silence detection. It's worth noting though, that some of these require much more effort than others (see Table 1). Assuming a steady beat, beaTunes does not need to look at the whole file when analyzing just for BPM. Automatic segmentation on the other hand, requires beaTunes to read the whole file and do some hefty computations. Replay gain calculation also dictates that the whole file must be decoded and analyzed. And in the case of album replay gain, multiple files have to be read. So when you enable those analysis tasks and need results quickly for thousands of songs, think about what you really want: Each checked task adds more analysis time.

TaskFile PartComputational Effort
Track ReplayGainwholelow
Album ReplayGainmultiple wholelow
Table 1: Disk IO and effort of computational analysis tasks

Keep in mind that analysis speed is bound by two factors: disk IO and processing power (Table 1). For disk IO the worst case is a music collection on a slow external device that's connected via a slow interface, e.g. a slow spinning disk connected via USB 2 or an old wireless network. So while a NAS is very convenient for your home entertainment system, for analysis it's not the greatest idea. The best case is currently a fast internal SSD. And if you must use an external drive, try to connect it via USB 3—it's substantially faster than its predecessor.

Last but not least, other, non-computational tasks—like missing metadata and tag import—always depend on an online service, no matter what analysis options you use. This means that analysis speed is limited by your network bandwidth, server load, and possible throttling dictated by third party terms of service. for example requires, that "You will not make more than 5 requests per originating IP address per second, averaged over a 5 minute period, without prior written consent" (Terms of Service §4.4).

Global Settings

Remember the settings I mentioned earlier? There are two of them that can make analysis slower or faster. In the beaTunes preferences, under the Analysis tab, you can set the number of parallel tasks. Typically, two or three parallel tasks are recommended. You can increase this number (restart required), but—because of Amdahl's law and bottlenecks like disk IO—this does not necessarily mean that beaTunes will process your files any faster. It will mean however, that beaTunes' memory usage will increase. And memory is the other setting you can change. Usually, modifying this parameter manually is not necessary—beaTunes should prompt you for an increase, if it needs one. Should you nevertheless decide you want to grant beaTunes more memory, please see this page. Specifically, large libraries may benefit from using a little more memory. If you are unsure about your current memory settings, just open the About dialog—it shows the configured min and max memory heap sizes.


I hope this article shed some light on the most important analysis options and their performance implications, and helps you make smart decisions about what box to check the next time you use beaTunes for audio analysis. If you have further questions, please comment below or start a discussion in the support forum.

This article is part of a small series under the heading "HowDoesItAllWork".

  • Part 1 explains the overarching idea behind beaTunes.
  • Part 2 explains what kind of libraries beaTunes supports.
  • Part 4 takes you step-by-step through the inspection process.
  • Part 5 concludes this little series, showing how to build great playlists.

Labels: , , , ,