Who's
MyDJ?
Hear Here

Mixer 1.9 Preview: Acoustic Tweaks

May 19th, 2008

With the beta 4 update of 1.9, we’re introducing yet another rule which you can use to make mixes just the way you want. This particular rule gets right to the core of our acoustic analysis, and because it lets you tweak the results based on acoustic properties, we’ve named it tweak.

Tweak

The tweak rule lets you push a playlist in one of six directions, based on acoustic properties. Because the core playlisting engine is doing a lot of different work to build the list, these particular rules are more like nudges in a given direction, rather than an absolute lock on the desired property. Still, they can be useful. The key properties exposed in this version are bass, energy, and tempo.

The full syntax looks like this:

<tweak cond="expr" index="type" more="boolean" weight="expr"/>

The index attribute lets you choose the property you want to base the tweak on - either bass, energy, or tempo (there is no default value, this attribute is required). The more attribute lets you specify if you want more or less of the given property - more tempo will mean faster, less tempo will mean slower, and so forth (as a reminder, though, these are general nudges rather than hard and fast rules). The default is more! The default weight is 2.5.

As an example, here’s a recipe that will try to produce a playlist which is overall faster and higher energy than an equivalent mix without the recipe:

<recipe name="Give Me More">
  <tweak index="energy" more="true"/>
  <tweak index="tempo" more="true"/>
</recipe>

One common thread we’re hearing from people playing with all these new features is the need for more examples. When we finish this next round of testing, we hope to introduce some ways to make all this power even easier to use.

Mixer 1.9 Preview: A Few Last Items and Nested Filters

May 9th, 2008

Welcome to day five of MusicIP Mixer 1.9 preview week. This will be the last post, for now, about the new features. I’ll wrap up with a few final miscellaneous features.

Two Extra Rules

With the pile of constraints, modifiers, and other rules introduced so far, here are two more which might, at first blush, seem a little odd. The first one simply replaces the acoustic ranking algorithm with a fixed "no bias" level.

<fixed/>

This lets you apply any of the other rules by themselves, without the acoustic data.

The jitter rule lets you introduce some controlled randomness in your mixes. This is similar to the variety slider for regular mixes, but tends to give better results. The full syntax looks like this:

<jitter cond="expr" exp="bool" low="expr" high="expr"/>

The exp option uses an exponential distribution instead of a flat distribution (the default is flat).

The low and high options specify the range of the jitter. The default range is .9 to 1.1. Bigger ranges will produce more randomness.

File/Save As Text

Moving on from recipes, one of the new features is the rather unassuming Save As Text option under the File menu. This takes whatever data is being displayed in the song window, and saves it as tab-delimited text. Just choose the columns you want to have displayed (you can right-click on the column headers to enable and disable columns, drag the columns around to position them, and click to sort them). Then use Save As Text to get a text version of the mix. This can be an easy way to share lists of songs, or post them to blogs. Simple, but convenient.

Nested Filters

Many months ago, we conducted a poll on the forums to see what the most requested feature for 1.9 would be (with some restrictions). The winning selection, with 50% of the votes, was nested filters. So, what’s a nested filter?

Regular filters allow you to create a set of conditions for which songs are currently visible. Some of our users like filters so much that they create a lot of them. In this case, the left hand pane becomes a bit unwieldy with too many entries. In order to clean things up, it’s convenient to be able to store them in a tree structure, like the folders on your hard drive.

Rather than stop there, though, we added an extra twist - you can choose to have nested filters inherit the properties of the parent filter. In this way, you can build a heirarchy with increasingly narrow conditions, to let you easily drill down to whatever specific filter you have in mind. (If you don’t want to inherit conditions, just make sure the parent filters are empty.)

To create a nested filter, either right-click on the parent filter and choose New Filter, or use drag-and-drop to drop one filter on to another. This should work just like other tree controls you may be familiar with.

We hope you enjoy the new version of the mixer. As always, if you have questions or comments, you can leave them here or on the forums.

Mixer 1.9 Preview: New Recipe Options

May 8th, 2008

Yesterday I showed some new data which the mixer makes available through power words. However, there’s even more data buried inside the newest version of the mixer. To use that, you’ll need to understand how to use recipes - you might want to review our earlier posts introducing recipes or the official documentation if you are planning on using this feature. In a nutshell, recipes are special rules which modify how the mixer creates playlists - so you can customize the algorithms until they are just right for you.

The good news is that even if you don’t feel comfortable making your own recipes, you can still use recipes created by other people - since the description is basic XML, you can simply use your favorite text editor to copy and paste recipes which other people have created, and then choose those recipes from the preferences menu.

Up to now, the only rules available for recipes were constraints and modifiers. Version 1.9 introduces new rules which use the extra data available through MusicDNS (some of these are simply convenience wrappers around constraints or modifiers you could write yourself using the new power words). The following summary shows the most common options. Note that all rules share the following attributes:

cond="expr" - This indicates a conditional rule. The value of the expression will determine whether the rule is to be applied to a given mix.

weight="expr" - This indicates a modifier weight. The higher the number, the more likely a song is to show up in a mix (2 would mean roughly twice as likely). Numbers less than one make songs less likely to show up in a mix (.5 means roughly half as likely).

All attributes are optional - each rule has default values for general use.

Era

The era rule lets you incorporate information about when a song was first released. The full syntax looks like this:

<era cond="expr" type="type" mode="mode" range="expr" end="bool" weight="expr"/>

The type attribute controls the primary meaning of this rule. If the value is lock, this is a constraint. If the value is bend, it will bring matching songs closer. If the value is contemporaries, it will bring matching artists closer (this is the default).

The mode attribute controls which year data is used. It may be mip (use only MusicIP years), mip-local (use MusicIP years if present, or local years otherwise - this is the default), local-mip (use local years if present, or MusicIP years otherwise) or local (only use years from your own metadata).

The range attribute controls how large a range of years is considered to match - the default is plus or minus 5 years, but you can choose any range you like. The range may even be an expression.

The end attribute is used when comparing artist eras. If true, then the full release range for an artist is used - otherwise, only the initial date is used. The default is to only use the initial year for each artist.

Location

The geo rule lets you incorporate information about where a song is most popular, based on the anonymous data collected through the mixer and MusicDNS. For instance, if a certain artist is big in Germany, then you can associate songs by that artist with songs by other artists which are big in Germany. The full syntax looks like this:

<geo cond="expr" type="type" weight="expr"/>

If you want to use this as a constraint, set type="lock". Otherwise, it will work as a modifier, and you can override the default weight if you choose.

Genre

The genre rule lets you incorporate information about more detailed genres, like Heavy Metal, Disco, or Funk. This does not depend on your own tags, but on how other people around the world have tagged their songs. Using this rule, you can associate artists based on similar genre tags. The full syntax looks like this:

<genre cond="expr" type="type" weight="expr"/>

If you want to use this as a constraint, set type="lock". Otherwise, it will work as a modifier, and you can override the default weight if you choose.

Popularity

The popularity rule lets you incorporate information about how popular a song is - do you want just the hits, or do you want to reach deeper into an artist’s catalog? The full syntax looks like this:

<popularity cond="expr" type="type" weight="expr"/>

The type attribute may have one of the five following options:

  • hits - only match the most popular songs (the default),
  • mainstream - prefer more popular songs,
  • mixed - blend popular and less popular songs,
  • offbeat - prefer less popular songs,
  • fringe - only match less popular songs.

Social Contexts

The social rule lets you incorporate information about how artists relate to each other in various social contexts. The full syntax looks like this:

<social cond="expr" source="source" type="type" weight="expr"/>

If you want to use this as a constraint, set type="lock". Otherwise, set type="bend", and it will work as a modifier, and you can override the default weight if you choose. (The default for this rule is to lock.)

The source attribute indicates the general type of data you want to include, and may be any combination of the following values:

  • A - album relationships (artists who appear in collections together)
  • C - commonly confused artists (casual listeners commonly mistake these artists)
  • P - playlist relationships (hand made playlists may include these artists)
  • W - working relationships (artists who have played in bands together)

The default value is all four: ACPW.

Example

A quick example may help clarify how to use these new rules. Here we will make a recipe to focus on popular music, which has similar genres and eras.

<recipe name="example">
    <popularity type="mixed"/>
    <genre weight="3"/>
    <era weight="2"/>
</recipe>

This will combine both popular and less popular tracks. Songs which are tagged with similar genres to the seed tracks will be roughly three times more likely to show up than songs with non-matching genres. Songs which were released within five years of the seed tracks will be roughly twice as likely to show up. (So songs with matching genre and era will be six times as likely to be included in the mix.)

As you can see, with this powerful new set of rules, the mixer combines the best of the social context with the best acoustic algorithms to provide unprecedented flexibility in create your own personal playlists - when you want it, how you want it.

Tomorrow we’ll wrap up this first set of previews with a quick review of some smaller changes which can still prove remarkably useful.

Mixer 1.9 Preview: New Power Words

May 7th, 2008

In this preview, I’m going to discuss some of the new data which the 1.9 mixer makes available, and show a few of the ways to use it. For this post, I’ll focus on some new keywords which have been added to the mixer vocabulary.

Reviewing Expressions

As a basic review, the mixer lets you use expressions in a variety of contexts, which can provide powerful tools for working with your music collection. These expressions can include references to basic metadata already in your file, like artist, title, or path. If you enable Power Search from the preferences dialog, you can enter an expression into the search bar with a preceding question mark, to do a power search, like this:

?seconds > 180

This will show all songs over 3 minutes.

Another context for expressions is adding columns to the song view in order to show data which otherwise might not be visible. For example, you might want to show how many channels your audio files have (1 for mono, or 2 for stereo). Normally this is not exposed in the user interface, but you can add it with the new channels keyword. To do this, simply edit the powerwords.txt file in your installation directory (copy examplewords.txt to powerwords.txt if you don’t already have one), and add a Power Column, like this:

[Channels] channels

The word inside brackets is the title which will show up in the song list, and the rest of the line is any expression (in this case, a single word, but it could just as well be bytes / seconds or any other expression). If you want the column to sort numerically, place a # symbol after the closing bracket. If you want to format a number as a date, place an @ symbol after the closing bracket.

For completeness, you can also use expressions inside patterns. In this case, just use the %{ } syntax, like this:

%{seconds}

This lets you access any available data when updating metadata or constructing paths.

New Keywords

Now that we’ve seen how powerful expressions can be, what new options are exposed in version 1.9? We’ve already seen the channels keyword above. Four more new words are missingname, missingartist, missingalbum, and missinggenre. Normally, if your files are missing metadata for artist, album, genre, or title, then the mixer provides a default value like “Miscellaneous” or “Various Artists”. If you want to find out whether a file is actually missing the metadata, or if it simply had one of those default values, you can use the associated keyword to find the relevant songs.

The most useful new keywords come from an improved connection between the mixer and MusicDNS. The central database behind MusicDNS has grown to over a billion rows of anonymous data, which gives us a lot of information about what music is popular, where it’s popular, and how it’s tagged. Additionally, as the data in MusicDNS is connected to MusicBrainz, we have access to richer metadata about artists. Version 1.9 includes the following new keywords (these are case insensitive):

Keyword Meaning
artistDNSgenre
genreDNSgenre
songDNSgenre
This represents the MusicDNS genre attached to the artist, genre, or song. These provide high level, simple genres which can be used to organize your music.
artistBegin
artistEnd
These are the first and last years during which an artist released new tracks (if known).
songBegin This is the first year the track was released (if known).
artistReach This is a numeric representation of how popular an artist is, according to MusicDNS. Zero is the least popular, and one is the most popular.
songReach
songRelativeReach
This is a numeric representation of how popular a song is, according to MusicDNS. Zero is the least popular, and one is the most popular. Relative reach is the same scale, but refers to how popular a song is relative to other songs by that artist (the most popular song by an artist will always have a relative reach of 1).

Note that the above data depends on MusicDNS being able to identify your music, and connect it to our main database.

One quick example will show just how cool this feature can be. In this case, I have a library with two songs by “Nancy Wilson”. However there are two Nancy Wilsons - one is the jazz singer, and the other is a member of the rock band Heart. I’ll create a Power Column using artistBegin, like this:

[Artist Begin]# artistBegin

Now, in my songs list, I get the following image:

The extremely cool feature here, is that the mixer knows that the two songs are by different Nancy Wilsons, and provides the correct date in each case!

Final Words

You can also use expressions to power constraints and modifiers, which let you make your own rules for customizing playlists. Tomorrow we’ll continue our exploration of the new data available in the mixer by looking at the upgraded features available with recipes.

Mixer 1.9 Preview: Freestyle Mixes

May 6th, 2008

If you’ve used the mixer for awhile and have a premium key, you’re probably already aware that there are lots of ways to make mixes besides just selecting a song and pressing the mix button. For instance, you can create waypoint mixes, spiced playlists, or morph existing collections of songs. With version 1.9, we’ve added a new option: freestyle mixes.

A freestyle mix will take your seed selection, like a regular mix, and use that as the starting point to create a new mix. However, after each new song is added, that new song will become the seed as the mix progresses. In this way, the playlist will drift around your collection, stopping for a while here and there before moving into another section. (Particularly astuste observers may note that this is in some ways similar to a smooth shuffle throughout your collection.)

To create a freestyle mix, select your seed like usual, then choose the Power Tools/Freestyle Mix menu. All the usual options work, including playlist size, filters, and recipes.

Tips For Creating Freestyle Mixes

The existing tips page provides a bunch of good ideas for tweaking your mixes, but a few issues commonly show up when initially playing with freestyle mixes in particular.

Too Much Repetition - A freestyle mix will wander around your collection, but if it hits an area dominated by a single artist, you may get a “hot streak” of songs by that artist. In order to tame this beast, you’ll probably want to ue the “Restrict duplicate artists in a mix” option. Set this to at least one or two to help shake things up (unless you are, for instance, making a freestyle mix of just the songs by a single artist).

Too Much Variety - This is the flip side of the previous problem. If you start with your entire collection, you might very well go from classical, to new age, to jazz, to pop, to rock, and end up in metal. If that’s what you’re looking for, great! Otherwise, you might want to create a filter to put some boundary conditions on what sort of music is allowed for a specific freestyle mix. In this way, you can still provide some rough context (all rock songs, or all songs from the 80’s). Just right-click in your library, select New Filter, and choose the conditions which you are interested in. Select the filter, then choose your seed and select freestyle mix from the Power Tools menu.

If you are using a filter, you might not care too much which seed you start out with. If you want to just randomly pick a seed, one easy way is to select All Genres and All Artists, then shuffle the results, and use whatever’s at the top as your seed.

One last note: you can make multi-seed freestyle mixes - in this case, each seed forms its own freestlye mix, and the results are woven together. If this gets too trippy, you might want to consider smooth shuffling the results in order to get some reasonable structure back into your playlist.

Tomorrow, we’ll start looking at some of the new data exposed in MusicIP Mixer 1.9.

MusicIP Mixer 1.9 Beta

May 5th, 2008

Over the next week, I’m going to describe some of the changes which are being introduced in the latest update to MusicIP Mixer. First, a few brief words about this blog - as you may have noticed, we haven’t been updating this much. Our focus has been on creating a lot of back-end infrastructure and support, and that doesn’t lead to a lot of interesting blog posts. Also, with the forums, we have an easy way to interact more directly with our users. However, with the 1.9 beta release, I thought it would be worth a few posts to cover the new features. If you’ve missed the regular blog updates, and would like to see it updated more frequently, leave a comment and let us know. Otherwise, we’ll probably continue to use the forums as our main channel of communication.

As before, the beta will be initially available only on Windows. To download the beta, you will need to create an account on the MusicIP website, and join the beta program.

So, what sorts of goodies can you expect in 1.9? Here are some teasers to whet your appetite.

Optimizations Aplenty

A lot of behind the scenes work has gone into our core engine. The communication to our server has been tightened to be more robust, our use of threads has been improved to accelerate the validation process, and memory usage during validation has been reduced. While working on the web-based version of our engine (which supports millions of songs), we’ve dramatically increased the speed of generating playlists - this shows up mostly noticeably with faster waypoint mixes and morphs.

Improved Mixes

This release includes an update to the core algorithms we use to generate the mixes themselves. This shows up in the artist recommendations (right-click on an artist and choose Similar Artists) as well as in regular mixes. On the preferences dialog, this update is configurable as MyDJ Ranking V2.

Additionally, we’re introducing a ton of new options for the recipes feature. This gives you access to the masses of data available through MusicDNS, to tweak, nudge, and adjust your mixes in a whole variety of new ways. Some of this data is also available through power words, so you can use it in custom searches, columns, and other contexts.

Naturally, we’ve also included a bunch of bug fixes addressing some of the most common issues reported by our users. Full details on the bug fixes and minor changes will be available on the beta forum. Tomorrow, we’ll introduce a brand new way to create mixes.

Customizing Your Recipes

September 28th, 2007

Every great chef needs a great set of tools to help create the perfect set of recipes. Now that Mixer 1.8 has been out a bit, with the new recipes feature for customizing playlists to your own taste, I’d like to show you one of the tools we use internally to help tweak our own recipes. In order to use this feature, you will need to be comfortable creating and editing recipes.

Note that this is more of a hack, and may not be supported in future versions, especially in this form. It is still a useful tool for now.

First off, one of the main requests we frequently get is being able to tweak playlist options from the main user interface. Although this hack doesn’t cover all of that, it does do some of it. To get this hack to work, you’ll need to pass -playlistcontrols on the command line when you start the mixer. (If you need help passing command line arguments, check out the command line options for MusicIP Mixer).

After starting the mixer with the -playlistcontrols option, you’ll have a new option on the View menu - Show Playlist Controls. Select this, and you’ll have a new window to customize the current recipe. You can keep this window up while you use the mixer, or hide it from the View menu whenever you’re done. Note that you can press the Remix button to update the current mix after you change the recipe.

If you’ve jumped ahead and followed the above instructions before getting this far, you might have noticed the default Playlist Controls window has nothing but a Remix button. In order to get some controls there, you need to build them into your own recipes - the existing recipes do not have any controls. These controls are expressed in your recipes as “inputs”. An input is basically a parameterized setting to a recipe. Most of the places where you have previously used hardcoded values, you can use instead put the text “param foo” to refer to a user-settable option. The name is up to you, foo is just a placeholder name developers like to use.

Inputs can currently be mapped to either checkboxes or sliders. If it’s a checkbox, the parameter will evaluate to 1 if the box is selected, or 0 if it is not. If it’s a slider, you can choose the range of values, and the user will pick one by moving the slider. This way, you can make the values in your recipes customizable on-screen.

A checkbox input looks like this:

<input param=”lock” type=”checkbox” label=”My Option” value=”on”/>

A slider input looks like this:

<input param=”foo” type=”slider” label=”Foo” minLabel=”Low” maxLabel=”High” min=”0″ max=”9″ value=”0″/>

In each case, param is the name of the parameter, type is the type, the labels will show up on the playlist controls, and value is used for default settings. The slider has additional options for the range it allows.

Once you have created and selected a recipe with inputs, you’ll be able to adjust the parameters using the playlist controls. Just adjust the spice, press the Remix button, and see how your playlist changed.

Checkbox controls can be useful in combination with the cond setting of a constraint or modifier to allow you to turn parts of your recipes on and off at will. Sliders might be useful for making the effect of a modifier stronger or weaker.

Here’s a sample recipe to get you started:

<recipe name=”Restrict Mixes by Era”>
<input param=”restrict” type=”checkbox” label=”Restrict mixes from different eras” value=”on”/>
<input param=”numyears” type=”slider” label=”Allow this many years:” minLabel=”1 year” maxLabel=”10 years” min=”1″ max=”10″ value=”5″/>
<constraint cond=”param restrict != 0 and seed year != 0″ cutoff=”0″>abs(year - seed year) &lt; param numyears</constraint>
</recipe>

This recipe defines two inputs, restrict and numyears, which are used in the constraint as parameters. The checkbox can be used to enable or disable the constraint, and the slider controls the range of the condition in the constraint (how many years separated matching songs can be from the original song). The controls for this recipe look like this:

Have fun, and make sure to clean the counter when you’re done.

Adding Artist Images to MusicIP Mixer

September 20th, 2007

Ok, here’s a quick tip for the image obsessed (this one should work on Windows and Linux). In the cover art view, on the lower left corner, you see the cover for the current album - this works if you have either a single song selected, or all songs selected are from the same album, or you have an album selected. If you have songs from different albums selected, though, then you don’t get any artwork.

Instead, you’ll get one of several variations of the boring gray box, like the one over on the right.

But…

If you pass -artists on the command line, you can enable artwork for the case where all songs are by the same artist, or you have an artist selected. To do this, you’ll need to create a folder/directory, and then pass that as an argument to the -artists command. So it would look like this:

MusicIPMixer -artists c:\artists

Inside the c:\artists folder, create a subfolder for each artist you have images for. For example, you might make a

c:\artists\u2

folder, and put an image of U2 there. If you put more than one image in the folder, then a random one will be chosen each time it gets displayed. You can usually download artist images from their webpages, or do a Google Image search. To go quickly to the Wikipedia page for an artist, if they have one, you can select the artist and press Ctrl-W.

Here’s an example with several albums from They Might Be Giants selected. The image I’m using for my collection is a promotional one from the TMBG website. Isn’t that more interesting than a dull gray box?

You can learn about other command line options, on the Mixer help pages.

Congratulations, MusicBrainz!

June 28th, 2007

Big news for Rob and his MusicBrainz team (and by team I mean over 300,000 dedicated music fans) today:

MusicBrainz is an online database of music information, maintained by an international
community of dedicated enthusiasts and managed by MetaBrainz, a US-based 501.c.3 non-
profit. By working with MusicBrainz, the BBC plans to underpin its broadcasts with a data-
driven, comprehensive online offering, enabling music discovery through its music websites
and beyond.

Matthew Shorter, Editor, bbc.co.uk/music says: “The BBC is getting closer to its audiences by
letting fans write and tag the information around the music they love. Using the MusicBrainz
database to achieve this confirms the BBC’s commitment to work more closely with external
suppliers and with the wider web community.”

Commitment to music? Check. Benefits music lovers? You betcha. Commerce strangling information/knowledge? Well, of course not.

By George, I think we have a winner.

We’re having a sale!

May 25th, 2007

Since we love holidays so much we’re offering premium mixer keys at 40% off through Memorial day! That, and we want to try out some features of our new shopping cart. Regardless, who doesn’t love a sale. Regularly $19.95, these babies are going for the low low price of $11.97. You can get the discount by following this link (and only by following the link).

The discount is applied when you check out, so don’t worry that the price that shows up in the shopping cart is the full price - just keep clicking and you’ll see the big savings.

Of course, if you have any problems with the shopping cart or checking out, we’d love to hear from you so we can make the user experience as great as possible.

Hope you all have an amazing long weekend filled with fantastic mixes!