beaTunes News

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.

Conclusion

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

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.

Conclusion

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

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
BPMsmalllow
Colorsmalllow
Keymedium/largelow
Silencewholelow
Track ReplayGainwholelow
Segmentationwholehigh
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 Last.fm 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. Last.fm 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.

Conclusion

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

Tuesday, January 20, 2015

Different Libraries for different Needs

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. Today, I am going to concentrate on how to get started with beaTunes libraries.

Although beaTunes is also a music player and audio analysis tool, to a large degree, it is a music library management software. Therefore, when you first start beaTunes, it asks you what kind of library you would like to create:

You can choose between a folder- and an iTunes-based library. No worries, this decision isn't final—you can add other libraries later. But to help you make the right choice, let me explain how these two libraries differ.

Folder-Based Libraries

If you don't use iTunes, folder-based libraries are the right choice for you. To create one, point beaTunes to a base-folder in your file system. This can be any folder—local, remote, external—it does not matter, as long as it's visible in your file system. Usually it makes sense to choose the Music folder, but you're certainly not limited to it. Tip for OS X users: If you cannot find your external drive, try using the keyboard shortcut Command(⌘)-Shift-G and enter /Volumes. That's where external drives are usually mounted. When you have defined the base-folder, beaTunes will start adding all audio files in that folder and its sub-folders to its database. While doing so, it also imports all ID3 and other tags it can find. The process of reading external data is called Synchronization. More about that later.

Once your files are scanned, beaTunes presents your library to you and you are ready to go. Starting an analysis or an inspection is a good idea. All changes will be written directly to your files.

A common question that comes up is, "how do I add files to the library"? The easiest way is to add new sub-folders with audio files to your base-folder and then choose Synchronize from the File menu. Alternatively, you can also simply drag files into the beaTunes Music list. If the file is not already contained in the base-folder, a copy within in the base-folder will be created and added to the library.

If you're not afraid to modify an XML file with a text editor, you can also add additional base-folders to a single, folder-based library.

iTunes-Based Libraries

If you are using iTunes and expect BPM values calculated by beaTunes to show up immediately, you should create an iTunes-based library (Important: iTunes XML sharing needs to be on for this). When you do so, beaTunes will add all files you have in iTunes to its database and also scan them for additional ID3 and other tags. But more importantly, whenever you change something in beaTunes, it tells iTunes that something has changed or even asks iTunes to perform the change. This ensures that you see changes in iTunes right away without having to play a file. However, it does not mean that other programs also see changes immediately. Software like Traktor typically has to re-scan files. Also, when in iTunes-library-mode, beaTunes by default does not write certain values to your files. If you are interested in embedding non-iTunes fields like key or color into your files, make sure to check the box Embed non-iTunes fields into audio files in the general preferences before you start the analysis. This can also turn out to be useful, should beaTunes' internal database ever get corrupted, as it can then be completely restored from your files.

Synchronization

The biggest problem in library management is dealing with external changes. If you for example mass rename all your files, beaTunes will have great trouble connecting the files under their new name to their corresponding database entry. Removing or adding songs from your iTunes library may also pose problems. This is why synchronization is needed. It's basically an attempt to synchronize the internal beaTunes database with your actual library—be it folder- or iTunes-based. To achieve this, beaTunes supports two kinds of synchronization: Automatic on window activation and manual.

Automatic synchronization re-scans your library every time you switch from another program back to beaTunes. Naturally, it does not always re-read the whole library, but pays attention to certain changes. Nevertheless, this can slow down the software quite a bit. If you find that beaTunes spends a lot of time on this, it's better to turn it off. Again, this can be done in the general preferences under Synchronize on window activation. With automatic synchronization turned off, data may get out of sync at some point. Then it's time for a manual synchronization. This can easily be done with the corresponding item in the File menu. Tip: If you don't want beaTunes to work on outdated data, synchronize every time before you run an inspection.

Creating a new Library

If you realize after a while that you need to switch between a folder-based and an iTunes-based library or simply want to use a different base-folder, it's time to create a new library. The easiest way to do so, is to open the File menu and select New Library.... beaTunes will ask you which kind of library you would like to create and either prompt you for a folder name or the iTunes Music Library.xml file you want to base your library on. To switch back to another library, simply open the general preferences and choose another library from the drop down list.

Conclusion

I hope this article explained how the two kinds of libraries differ. Please comment below, if you have any questions or start a discussion in the help forum.

Thank you.



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

  • Part 1 explains the overarching idea behind beaTunes.
  • Part 3 takes a closer look at analysis and analysis options.
  • Part 4 takes you step-by-step through the inspection process.
  • Part 5 concludes this little series, showing how to build great playlists.

Labels: ,

Tuesday, January 13, 2015

Using clean Metadata to build great Playlists

Over the years many different people tried beaTunes. Aerobics and spinning instructors love it to prepare their classes, marathon runners to keep their pace, audiophiles to fix their tags, and DJs to detect key and BPM for their next set. But what about the tagline: Build better playlists? Why this tagline? What's the original idea?

I love to explain this.

One of beaTunes' most popular features is audio analysis. That's really just a fancy phrase for saying, the program manages somehow to measure the tempo in BPM and find out the musical key. Perhaps some other stuff like ReplayGain or automatic segmentation. The idea here is to find out something about the music that's not already in widely available textual tags. Something that helps you to see right away that there is a similarity between two audio pieces. Tempo and key are pretty good candidates, so is beaTunes' color (more or less a measure of dominant frequency ranges). In essence, via analysis, beaTunes tries to better describe your music.

The next thing beaTunes is loved for is inspection. That's what I call the systematic and automatic inspection of mostly textual tags (e.g. ID3 tags) for consistency. Is the name for a given artist always spelled the same way? Does s/he always sing in the same language? Are his/her songs in the same genre? Answers to these questions aren't easily given. But beaTunes supports you in finding issues and making decisions in order to clean up your tags. That's right, it's all about improving the available metadata, making it more consistent.

Both calculating new metadata via analysis and improving existing metadata through inspection serve one ultimate purpose: Creating playlists that rely on good metadata.

beaTunes' MatchList feature allows you to formulate rules (in the application preferences), that determine whether two songs are similar or match. If you want to create a playlist that has to have a fairly constant tempo, you can put emphasis on the "similar BPM" rule. If the same language is important to you, again, just put emphasis on the corresponding rule. To create a MatchList, simply select a template song and click on the "Create MatchList" button. beaTunes will do the rest for you.

Of course, there are other ways of building great playlists. But having additional and clean metadata is definitely helpful. And this is where beaTunes excels. This is what beaTunes was originally built for.



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

  • 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.
  • Part 5 concludes this little series, showing how to build great playlists.

Labels: , ,