FANDOM



Mixer 1.9 Preview: Acoustic TweaksEdit

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 FiltersEdit

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 OptionsEdit

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 WordsEdit

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:

[1] 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 MixesEdit

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.


Customizing Your RecipesEdit

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

[2]

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


Adding Artist Images to MusicIP MixerEdit

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.

Mixer 1.8 Preview: World SearchEdit

April 13th, 2007 So far, we’ve used the search box inside MusicIP Mixer to search your local collection, and other websites. In an earlier post, I mentioned that we’ve added a new option: Search World. This post will explain more about that feature, and what it means.

Part of the advantage of having a metadata set like MusicDNS, tied to the MusicIP acoustic analysis, is that we get a pretty good idea of what most artists sound like. We can tell which songs are popular and that provides clues about which songs might best represent a given artist. Our Acoustic Discovery product allows our recommendation services to be used by other companies with music. One feature we’re often asked about is helping people who are looking for an artist, like Lily Allen, find music which may not be by Lily Allen (since they don’t have those songs), but which would still be interesting.

We call this service Global Music Link, or GML for short, because it links music globally. The world’s popular music meets the long tail. Hi!

Now, you can use this same service for free inside MusicIP Mixer with your own collection. Start by selecting “Search World” in the search box.

Next, type in the artist, album, or track you are looking for and press ENTER. The mixer will query our GML server to find matches for that text. Based on our database, the “most likely” match for what you typed will be selected, either an artist, album or track. A dialog box gives you a summary of the results.

[3] [4]Next, we make a mix based on the recommendation - you can see this on the status as a “GML Mix”. If we happen to guess the wrong match, you can right-click on the status bar, and see the alternate artist, album and track matches (up to the 10 most likely in each category).


If you want to know more about embedding GML style results into your own applications or websites, you can use our request form to get information. [5]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.


Mixer 1.8 Preview: Enhanced Tag FixingEdit

April 12th, 2007 Mixer 1.8 Preview: Enhanced Tag Fixing

When MusicIP Mixer 1.7 was released, with support for MusicDNS, the only fields supported for tag fixing where artist and title. This allowed us to get some initial feedback on the feature while we worked on the MusicDNS backend.

Now, MusicDNS is chugging merrily along, absorbing millions of rows of data every day, and steadily improving. Since our big December update, we’ve been providing extra data to MusicDNS regularly using our improved data mining process, and we’ve grown the available data set significantly. For commercial users, this data is available in a single download via the MusicDNS Metadata Export.

With version 1.8, now more of this data is now available for updating the tags in your music collection. First up, there’s a new panel on the preferences dialog which lets you choose the fields you want to fix:

[6]

The Artist and Title fields are enabled by default. The other fields are all new. Here’s the scoop on the new fields.

Genre - We’ve covered this extensively in earlier posts. The MusicDNS genres are basically aggregated information on how most people classify their tracks generally. If you have used specific genres on your songs, you won’t want to overwrite those, but this can be convenient for quickly sorting all your unclassified tracks.

There are three options for using genres. Since MusicDNS provides up to two genres, sorted by how frequently they are used, you will get separate recommendations for “Rock”, “Pop”, “Rock/Pop” and “Pop/Rock” (to use one example). The options let you simplify this a bit if you don’t want so much detail:

  • Use default genre - simply use the name provided by MusicDNS
  • Use simplified genre - this will sort multiple genres alphabetically, so “Rock/Pop” becomes “Pop/Rock”, eliminating one extra category.
  • Use only primary genre - if there are multiple genres, just use the primary one. This loses some detail, but reduces the number of genres.

As always, you can edit any genre recommendations before applying them by clicking on the recommendation table - this lets you type in next text before applying the edits.

The rest of the fields are related to albums. MusicDNS provides album information which is correlated with the MusicBrainz database. This associates fingerprints/puids with albums, so we can figure out release year, album name, and track index on album. When we download the metadata from MusicDNS, we automatically choose the album which is the best match for your tracks. This is most effective if you do Fix Tags for all tracks which are on an album at the same time - you can do more than that, but if you only provide a single track, there isn’t as much context to determine the best album match.

Once we find the best album match, we can provide the remaining fields:

Year - this recommends updates to the year field. Generally, this should correspond to when the associated album was released. There are two options:

  • Use oldest year - use the oldest available year for that track. In other words, if it was on multiple albums, use the information from the album that was released first. This will get you closest to the actual recording date, as you won’t end up with the dates of, for instance, Greatest Hits collections.
  • Use album year - use the year of the album which the track is assumed to be from.

Album - name of the associated album

Track - track index of the associated album

As we continue to enhance MusicDNS, we plan to keep updating our tag fixing feature. In the meantime, if you have suggestions or corrections to any of our metadata, you can contact us at support@musicip.com.

Mixer 1.8 Preview: ModifiersEdit

April 11th, 2007 So far, we’ve introduced rules which can restrict which songs show up in a mix by applying user customized rules which can depend on the seed songs, or on the contents of the playlist being created.

Sometimes, though, you don’t want to be so draconian - you might just want to emphasize a certain kind of song, or make some songs show up less often. To do that, you can use a new kind of rule, called a modifier.

Modifiers look a lot like constraints, except instead of providing hard limits, they provide gentle (or not so gentle) nudges. Let’s suppose you want to have songs which you’ve rated 4 or higher show up more often in mixes. Here’s one way you might do that with modifiers: <modifier weight=”2″>rating >= 4</modifier> (In a real XML file, >= would be written >= )

The weight provides a “nudge” value. You can think of it as expressing how often a matching song should show up, relative to a non matching one. In this case, songs rated four or higher would be twice as likely to show up with the modifier, as without.

You can decrease a song by using a fractional modifier: <modifier weight=”.5″>rating = 2</modifier> In this case, songs rated 2 should be half as likely to show up.

Just like constraints, you can do comparisons with seeds songs in your modifiers. One of the new methods available is version 1.8 is called overlap. This returns the number of words that two phrases have in common, ignoring words like the and a. Here’s a modifer which says if a given song’s genre has at least one word in common with the seed genre, then it should be weighted more heavily - this is a looser version of our genre locking: <modifier weight=”2″>overlap(seed genre, genre) != 0</modifier> Ok, that’s it for our brief overview of constraints and modifiers. If you look in the installation folder, you can see the source code for several examples which you can use to try out your own rules. As a reminder, the file is called recipes.xml.

If you’d like to ask questions, or share your ideas, you can talk to us on our forums. We’ll showcase more examples in future posts. Have fun!


Mixer 1.8 Preview: Advanced ConstraintsEdit

April 10th, 2007 The previous post in this series introduced constraints. This post will show some of the more advanced options, and provide a few more examples.

So far, we’ve seen how to use a constraint to specify extra conditions on which songs should be included in a mix. The full constraint system lets you do more than that - you can specify specific percentages of songs you would like to see satisfying certain conditions. To do this, we add two more attributes: min, and max. These specify the minimum and maximum percentages you would like to see rules satisfying the condition. Percentages are normally expressed in statistical notation, where 0 means 0% and 1 means 100% (.5 would mean 50%). If you would like to use a different scale, like 0 to 100, you can use the scale attribute to select it. By default, the minimum percentage is 100%. Naturally the maximum percentage cannot be less than the minimum percentage.

Let’s use a somewhat offbeat example to check out this feature. Suppose you want to make sure your playlist contains an equal amount of songs by men and women performers. You might recall you can express a power search like “songs by men” or “songs by women”. So, you could combine the following two rules: <constraint min=”.5″>songs by women</constraint> <constraint min=”.5″>songs by men</constraint> In this case, since we’ve tried to get %50 in either category, and the categories are mutually exclusive, we should end up with an equal number of songs by men and women.

As in our previous example, there’s a gotcha lurking here… artists which are not yet marked by type may creep into the mix since the engine doesn’t really read rules the way a human does - neither rule explicitly rejects songs not by men or women. To guarantee this, you could add a third rule: <constraint>songs by men or songs by women</constraint> Now you should get precisely the behaviour we’re interested in.

Finally, we’ll finish up with a detail. If you impose a very tight constraint, or series of constraints, you may end up with no songs to put in your mixes. To minimize this, a constraint will, by default, exclude no more than 50 songs before disabling itself in a given mix. If you would like to alter this threshold, you can specify a different one using the cutoff attribute. Specify a cutoff of 0 to mean there is no limit.

Next time, we’ll introduce a new kind of rule!

Mixer 1.8 Preview: ConstraintsEdit

April 9th, 2007 One frequently requested feature for MusicIP Mixer has been the ability to have more control over how playlists are created. The simplest option when creating a mix is to control which songs are considered candidates for inclusion in the mix. To review, there are several options already in the mixer for this:

1. Filters - You can create a filter with any conditions expressible in the mixer. Select a filter to restrict yourself to songs matching those conditions (like songs added in the last 30 days, or songs which you’ve rated more than 3 stars). Or, you can right-click on the Mix button to apply a specific filter when you create a mix.

2. Exclusions - Exclusions take a heavier handed approach. You can create them just like filters, using any conditions supported by the mixer, but these will apply to all your mixes, regardless of any other settings. This is typically used for “blacklisting” certain songs (songs rated 1 star, spoken word songs, podcasts, whatever you don’t want to end up in a mix).

3. Genres - You can use the “Restrict mix to selected genre” option to make sure only songs matching the seed genre are included. This option is a little bit different than numbers 1 and 2, because it depends on the seed song, and isn’t just a blanket rule.

As of version 1.8, we’ve added a new feature called constraints. Constraints effectively extend the concept of exclusions to conditions which can depend on anything about the seed songs, or indeed, on a variety of other choices. Currently, the process for creating constraints requires just a little bit of XML knowledge. Rules for creating mixes live in the file recipes.xml which sits where your copy of MusicIP Mixer is installed. The outermost tag is called recipes, and inside that tag are nested recipe tags. Each recipe is a set of rules which you can apply to mixes. Once you have some recipes defined, you can select the active recipe from the Mix options panel in your preferences.

The advantage of storing these as XML is that they are easier to share - as you’ll see over time, some of the rules can get a little tricky. Let’s dig right into things and make a simple constraint. In this case, we’ll make sure that all songs in the mix are within 5 years of the seed’s original release date.

(If you don’t have many years, you might want to consider using the new feature of the Fix Tags command, to add years to your tracks.)

A basic recipe looks like this: <recipe name=”Example Recipe”>
<constraint>expression</constraint>
</recipe> In this case, only songs which match the expression will be included in your mixes whenever the Example Recipe is active. Version 1.8 of the mixer adds several new functions which are particularly useful for writing constraints. Here’s how to express our example year lock: abs(seed year - year) < 6 Note that we’ve prefixed the year keyword with the word seed, meaning we are referring to a seed song, and comparing it with all other songs in the mix. In this case, we are saying that the difference between the seed year, and the year of any song in the mix can be no more than 5. abs is a function which takes the absolute value of an expression (it makes negative numbers positive), and just makes the expression easier to write.

There’s a gotcha hiding in this rule - if your seed song has no year, then the expression seed year will evaluate to zero. This means only songs with a year between -5 and 5 will be considered in your mixes (in practice, only other songs without years would match that). This is probably overkill. What’s you’d like to say is apply this rule only if the seed song actually has a year specified. Constraints let you express these conditional expressions with an extra cond attribute. In this case, the condition is: seed year != 0 Since we are dealing with XML, we’ll need to use XML syntax to express the whole thing, which ends up looking like this: <recipe name=”Era Lock”>
<constraint cond=”seed year != 0″>abs(seed year - year) < 6 </constraint>
</recipe> Next up, we’ll explore some extra corners of the constraint system and introduce a few new features.

Customizing Your RecipesEdit

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

[7]

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

Adding Artist Images to MusicIP MixerEdit

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.

[8]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.


Mixer 1.8 Preview: ModifiersEdit

April 11th, 2007 So far, we’ve introduced rules which can restrict which songs show up in a mix by applying user customized rules which can depend on the seed songs, or on the contents of the playlist being created.

Sometimes, though, you don’t want to be so draconian - you might just want to emphasize a certain kind of song, or make some songs show up less often. To do that, you can use a new kind of rule, called a modifier.

Modifiers look a lot like constraints, except instead of providing hard limits, they provide gentle (or not so gentle) nudges. Let’s suppose you want to have songs which you’ve rated 4 or higher show up more often in mixes. Here’s one way you might do that with modifiers: <modifier weight=”2″>rating >= 4</modifier> (In a real XML file, >= would be written >= )

The weight provides a “nudge” value. You can think of it as expressing how often a matching song should show up, relative to a non matching one. In this case, songs rated four or higher would be twice as likely to show up with the modifier, as without.

You can decrease a song by using a fractional modifier: <modifier weight=”.5″>rating = 2</modifier> In this case, songs rated 2 should be half as likely to show up.

Just like constraints, you can do comparisons with seeds songs in your modifiers. One of the new methods available is version 1.8 is called overlap. This returns the number of words that two phrases have in common, ignoring words like the and a. Here’s a modifer which says if a given song’s genre has at least one word in common with the seed genre, then it should be weighted more heavily - this is a looser version of our genre locking: <modifier weight=”2″>overlap(seed genre, genre) != 0</modifier> Ok, that’s it for our brief overview of constraints and modifiers. If you look in the installation folder, you can see the source code for several examples which you can use to try out your own rules. As a reminder, the file is called recipes.xml.

If you’d like to ask questions, or share your ideas, you can talk to us on our forums. We’ll showcase more examples in future posts. Have fun!


Advanced waypoint mixesEdit

October 20th, 2006 This is the fourth post in my series about MusicIP Mixer, and I haven’t yet said anything specific about creating playlists. Partly that’s because I assume you know how to create basic mixes already (Hint: if you don’t, push the New Mix button at the top left), and partly it’s because I wanted to set up some background and get some of the less well know features exposed a bit more.

Well now it’s time to dig into a sample of an advanced playlist. There’s lots of different ways to create mixes inside MusicIP Mixer. In this post, I’m going to show you how to create one like my Valentine’s Day playlist on FIQL (as alluded to in my last post). The instructions sound a bit complicated, but once you try it out, it’s pretty simple.

Note that I’m going to be using waypoint mixes in this article. These are a premium feature, so you’re going to need to have a registration key to create mixes like this. Also, you’ll need to enable Power Tools from the Preferences dialog, so you can access the Power Tools menu.

Idea: My inspiration for this mix was to create a playlist which goes from the concept of light and day into night and darkness. In order to create a theme, I want to include “Break On Through” by The Doors as the midpoint of my playlist, when the songs turn from day into night. You know the day destroys the night
Night divides the day
Tried to run
Tried to hide
Break on through to the other side
- The Doors I think I’ll go for a two hour playlist - that leaves plenty of time spent in the light and the dark. I’ll use my own collection of 80,000 songs as the source material to build the playlist (it’s a big collection, but certainly not the biggest I’ve seen).Here are the steps to create this playlist.

  1. First I need to get my day songs together. I create an empty playlist called “Day Songs” by right-clicking in the Filters & Playlists window on the left side of the mixer, and choosing New Playlist. Next I’ll pick the songs by typing day into the search box, and dragging and dropping all songs that match to my temporary playlist. I’ll repeat this for the words light and sun. (I could use a power search to do this, but it requires a bit more typing: ?name contains "light" or name contains "day" or name contains "sun"). After filling up the playlist of candidate songs, I do a quick scan for anything that’s too removed from my theme (it looks like the sun keyword’s giving me the best set of songs), and delete it from the list. Lastly, I drag “Break On Through” over (typing break on through into the search box brings up this track).
  2. Next, I get my night songs together. I repeat the process above, only with night, evening, and dark as keywords.
  3. Now it’s time to get mixing. If I had a starting song in mind, I’d select that and “Break on through”, and do a simple waypoint mix. Since I don’t really care where I start, what I’d like to do is get a good contrast between my start and end points. There’s a few ways to do this, but I think for now I’ll just select “Break On Through” and do an Anchored Smooth Shuffle. This sorts the playlist with the first song at the top, and moves smoothly through the list. Thus the last track is more or less the farthest from the first one. Since I have a lot of songs, I can pick the end point from the bottom of the list based on whatever mood strikes me. In my case, the song I chose was “Beautiful Day” by Mellowdrone. This will give the starting point of my playlist a kind of techno vibe. Now that I know my start and end songs, I set the mix controls to 60 minutes, and make a mix from my day songs by using Power Tools/Waypoint Mix/Loose Paths. I create a new playlist to hold the result “Night and Day”. (If there was a song I really wanted in the list which got dropped, I could add it back in this step, and do another anchored smooth shuffle to put it in the right spot).
  4. Finally, I repeat the process for my night songs. The end point in this case is Sleater-Kinney’s “Night Light”. I picked this because it ends this list with a light reference with sort of loops back to the initial theme, and also the music goes in a darker direction (one alternative was a Kenny G track, but I didn’t want to go there.) This time, when I drag the songs into my “Night and Day” playlist, I’ll leave out “Break on Through”, since it’s already in the list.
  5. That’s it. Now I can just select the playlist, and press play.

And here’s the result:

Artist Track
Mellowdrone Beautiful Day
Ice Cube It Was A Good Day
Weekend Players Into The Sun
System F - Ferry Corsten BBE - Seven Days & One Week
Boards of Canada Turquoise Hexagon Sun
Small Faces All Of Our Yesterdays
The Beatles A Hard Day’s Night
Sebadoh Two Years Two Days
The Jimi Hendrix Experience I Don’t Live Today
Beck Sunday Sun
Nice Diary Of An Empty Day
The Mamas & The Papas Monday, Monday
The Monkees Saturday’s Child
The Doors Break On Through
The Rolling Stones Let’s Spend The Night Together
Van Morrison Midnight Special
Van Morrison Here Comes The night
Electric Light Orchestra Night in the City
Electric Light Orchestra Sweet is the Night
The Beatles A Hard Day’s Night
Deana Carter Girls’ Night
Eve 6 Bring The Night On
Jonathan Larson Out Tonight
The Donnas Living After Midnight
Ataris I Won’t Spend Another Night Alone
The Early November Every Night’s Another Story
Ataris The Night That The Lights Went Out In NYC
Eve 6 Not Gonna Be Alone Tonight
Sleater-Kinney Night Light

For your pleasure, I’ve included links to FIQL, a raw XSPF playlist (no song URLs though), and a mip:import link.

Try importing this into your collection, and see what it does for you. If you have to replace too many songs, you may lose the theme of night and day - but maybe you’ll find something else interesting in the process. Notice how the playlist centers around 60’s music, as a result of the track by The Doors. Some details for the hard core: When I made my original day and night lists, I had a lot of options. To reduce the list, I first used the Spice Playlist Power Tool, which removed all the duplicates. Then I sorted by genres, and removed Classical, Comedy, and Christmas songs, and songs by Various Artists. This made the list easier to view, and tweak.The anchored shuffle requires the anchor to be the first song in the list - this can be a pain if the list is large. I’m thinking being able to use the selected song as an anchor would be a good addition in a future version of the mixer.Experienced users will notice I simplified a bit in my description above. From a standard mix, you can restrict your available songs to a filte or playlist by using the “Mix Into” option, available by right-clicking on the New Mix button. Waypoint mixes, however, don’t support this yet. Instead, I disabled all songs in my collection by selected All Genres/All Artists, pressing Ctrl-A in the songs window, and right-clicking to clear the Enabled flag. I repeated this in my mix to enable only my candidate songs. If I was actually using the enabled bit for anything else, I could have stored all the songs I wanted enabled in a temporary playlist to make it easy to reset the flag (this is a good way to back up ratings also). You’ll notice a few duplicate artists in the mix - I normally use the duplicate artist filtering when making mixes, but this is another feature that still needs to be added to waypoint mixes.

Sometimes you just gotta say…Edit

November 16th, 2006 I work with smart people.

Take this example. So, I do some notes about the free music happening on our website. I write up a little blog post about it, and press the “Publish” button.

Then I remember the iTunes part, which was added an hour or so later.

THEN I go over to the desk of the guy behind it all and see this:

[9]

Well, actually what I was reeeeeally looking at was this:

[10]

Still not sure what all the fuss is about? That’s okay, I wasn’t sure either. As I peered at the stars and asked “What’s the ‘Mix’ icon doing there?“, Wendell grinned.

“Oh those? If you press it, you’ll get a mix based on that song in the mixer.”

Quick….hinge jaw back together…

“REALLY?”

Here’s what you need to do to start seein’ stars. First, purchase the premium version of the mixer (yeah, it’s 20 bucks, but after the first 20 songs become available…and there’ve been over 20 so far…it’s more than worth it without even taking into account all the other added benefits…). Next you’ll need to have a MusicIP.com account. Finally, if you’re using IE7, you’ll need to use another browser, like Firefox (it’ll be fixed soon, but right now like a lot of applications out there, this one isn’t compatible with IE7 just yet).

Once you’re all set up, here’s what you do:

  1. Activate the registration key after you purchase the Premium Mixer (Under File/Enter Registration Key… enter the key)
  2. Activate Power Tools under File/Preferences…/Power Tools)
  3. Under the new “Power Tools” option at the top of the mixer window (it’ll only appear after you have a premium key and have activated the Power Tools), go to MIP URLs/Register Protocol
  4. Sign In to your MusicIP Account and enter the same registration key on your main profile page.
  5. Once the page refreshes, you’ll see a check box that looks something like this — check the box and click Update Account.

[11]

Now, go back to the Free Music page, and hit a set of stars. MusicIP Mixer will open up, and you should see a new mix of songs from your collection that sound like that MusicIP artist. How will this new song fit within your collection? Now you know!

Like I said, I work with smart people.

Shortcuts to creating custom playlistsEdit

November 10th, 2006 In this post, I’m going to show some extra shortcuts in the Windows version of the mixer, which you can use to make creating certain kinds of playlists even easier. Following along will require the Power Tools to be enabled.

[12] For the first one, let’s just start with playing all songs by a single artist. The most obvious way is to go to the search box, and type in the artist name, say beatles. This will show all songs matching anything with the word beatles - in my case, that includes 408 songs, including an album called Bach Meets The Beatles. Since I only want the real Beatles, I can use the search selector to say Search Artists, which will restrict the search to just the artist field - 355 songs. (If I want to do this without using the mouse, I use / to enter the search box, and ctrl-down to change search modes.)

But that’s not how I usually do it myself. I just click in the Artists window, and start typing: beatl - this automatically searches down the list to the first artist matching the phrase I’ve typed so far - you can see what the phrase is right above the search window.

[13] If you are searching for a word which is in multiple artist names, you can use ctrl-n and ctrl-p to go to the next or previous hits. This will also show you artists which might include multiple names (like “Eric Clapton” vs. “B.B. King & Eric Clapton”).

This trick will work with artists, albums, or titles, and it searches just the current list, so you can do quick searches inside selections.

If I’m selecting an artist like the Beatles, where I have lots of songs, I’ll typically use the Spice Playlist power tool - this will pull out a subset of songs, and remove any duplicates, just like a regular mix does, but using only the songs in the current list, and not based on any seed. It’s important to make sure duplicate artist removal isn’t enabled when doing this, or there will only be one track in the list. If you select Ignore Mix Limits, it will make the mix as long as possible, otherwise it will use your current mix limits shown on the toolbar. In my case, this reduces the 355 songs to 223, which would last about 10 hours. Often I’ll just set the mix limit to 2 hours, since I generally want to listen to something else at that point.

Sometimes I want to do this with several artists. In this case, it’s a bit trickier, since you need to get each artist selected (you could also just make a temporary playlist, but where’s the fun in that?) Using ctrl-f brings up the Advanced Search box. There are a few things that make it “advanced” - in my case, I’ll type in beach boys and hit enter - this shows the match. I can select it, press Add, and now I have both the Beatles and the Beach Boys selected, without having to scroll all over the list. (If you don’t have lots of artists, it may be easier to scroll and ctrl-click to get multiple selections). If you are going to be adding multiple artists, hold down the shift button when you press Add, and the dialog box will remain open.

[14] If you don’t know which artists to add, try right-clicking on your intial artist, and select Similar Artists. This will bring up a list of candidates - you can use ctrl-click to choose several, then press Add to extend your selection. Or, select Related Artists - in the case of the Beatles, this will bring up George Harrison, John Lennon, Paul McCartney and Ringo Starr (assuming you have tracks by all those artists individually). The related artists feature includes members of bands or collaborations, and is not based on acoustics.

[15]

Once I have multiple artists selected, I can reenable duplicate artist filtering before I spice my playlist. For instance, if I have 3 artists selected, I can make sure the playlist alternates equally between the artists by setting the controls to not duplicate an artist within 2 tracks.


Mixer 1.9 Preview: Acoustic TweaksEdit

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.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.