Tune Mover


Pete's Odd Tune Organisation App.

The Readme below is a little out of date, but is correct. Below that are some details of odd additions.

Download here.


This is all under the GPL, mainly as it includes many GPL/LGPL'd bits and it would be a chore to pull them apart.

Additional things you may have to do to get the app working

Odd message involving DSOUND.DLL
Install a recent version of DirectX from http://www.microsoft.com/windows/directx/

Odd message involving MSVCP60.DLL
You probably have an older version of windows. Use this file to install the needed DLL's.

Mini User Guide

NB: Aim of this release

This release if definitely transitional. I've come to the point where there's a great deal of sticky kludge in the app, and many things that should be exposed to users and friendly hackers arn't. This may take a little while.

So in the interim, I'm releasing this version to get changes to the UI and BPM algorithm out there, to collect feedback and evil mp3's. Many things, especially UI and speed, are not indicative of where I'd like the app to be.

A Quick History

Tune Mover originally started life as a tune moving app with features to help me organise my mp3's into appropriate folders. (this functionality is still included, see below). It's since grown and mutated into a testbed for some of my mp3 related ideas, mainly in the realm of BPM measurement. This release is intended to let me get feedback on the BPM algorithm, as well as to get some recent UI changes out into the wild.

Usage Guide

First time notes

First time you run the app a directory browser will appear. Point the app at a directory of tunes. Don't worry the app won't touch your tunes unless you tell it too. Now you have a list of tunes.

If you have a base directory that you put all your tunes under it's a good idea to use the Tree->Select DIrectory... menu option and select a directory. You should then have a tree representation with yellow icons in the left pane.

Now we have our two directories selected we can look around the UI.

Parts of the UI

There are four main parts to the UI. Working from top left to bottom right.

Universal Controls

The UI can be in one of a number of modes at any time. To start with I'll describe the controls that work in any mode.

The mouse can be used to select songs in the main view (they will play automatically) and the seek within a playing song on the main play bar.

Most of the keyboard is devoted to selecting a folder using the tree view. If you look at the left view and see a folder you want to select, just press the key it's marked with and it'll be selected.

Other keys are as follows.

Key Action
Space Bar Play/Pause
Up Arrow Previous Song
Down Arrow Next Song
Ctrl + Tab Switch Mode
Tab Show or Hide the Tree View
Ctrl + F Find songs. Currently this always searches your full tree.
Ctrl + S Incremental Search.
Hit Ctrl+S and start typing part of a song name.
Ctrl+S again jumps to the next song that matches the current search string.
Delete Mark the current song for deletion.
Ctrl + T View the currently selected tree directory in the main view
Ctrl + B Used for the BPM clicker.
This has no real purpose, it's just here for debugging purposes.
It's currently not based off the audio clock, so it may be 1% or so off.

Tune Mover Mode

This mode is designed for sorting a new directory of incoming tunes. To help with this task the list can be arranged in a few different ways (see the Tunes menu for some options). If the tunes are not named according to a regular scheme the "group by similar names" option is useful.

Key Action
Enter Mark song to be moved to the directory selected in the tree.
Shift + Enter As above but don't move to next unassigned tune.
Backspace Clear the intended move for the current song.
Right Arrow Fast Forward
Shift+Right Arrow Jump Forward 10s.
Left Arrow Fast Reverse (kinda)
Shift+Left Arrow Jump Back 10s.

BPM Measurement and Analysis Mode

This mode is used to test automatic BPM analysis methods I've been working on. Expanding column widths will let you see the rough names I've given the various algorithms that are run over the stripes.

Key Action
Left + Right Arrow Rotate thru the BPM's to select one.
Enter Mark the song for BPM tag saving.
Shift + Enter Mark the song for BPM tag saving, and don't jump to the next unmarked tune.
Ctrl + 1 Mark the song for BPM tag saving using ½ the selected BPM
Ctrl + 2 Mark the song for BPM tag saving using double the selected BPM
Ctrl + Enter Does a Tune Mover mode enter.
Shift+Left Arrow Jump Back 10s.

Personal Props

Jess my better half, and A.C. van Rijn for testing and support.

Code Props

MAD - the GPL'd mp3 decoder used in this app.
FFTW - the fft libarary that I use in some parts of the app.
ActiveState Perl - Used to do the similar name sorting.

Mini User Guide (v0.3)

This is just a quick update to describe the cross-fading beat-locked seek feature.

I haven't put in any real effort towards optimisation.

If you have questions or comments this:


is a good place.

Stuff that works, or doesn't

Other notes

Mini User Guide (v0.1)

Last updated with Release 0.1

What does it do?

This app lets you take a folder of unsorted items and quickly distribute them into your arranged directory stucture.

First Time Setup

At first startup you will be prompted to choose a few directories.

  1. A directory to be the base of the tree you're moving files to.
  2. A directory of songs that need to be moved into the tree.

You should now have a tree on the left and a list of mp3's on the right.

Ignore warnings about losing stored moves, we haven't decided on any moves yet.

Playing a song

Click on a song in the right pane. Playback should start. Playback control is currently:

Key Action
Space Bar Play/Pause
Up Arrow Previous Song
Down Arrow Next Song
Right Arrow Fast Forward
Shift+Right Arrow Jump Forward 10s.
Left Arrow Fast Reverse (kinda)
Shift+Left Arrow Jump Back 10s.

Song frequency, playtime and bitrate are displayed. (This part of the app needs work!)

Setting Up Moves

The next step is to set where the song will go. The majority of the keyboard is used to navigate around the tree. Using the keys shown in the tree view selects folders, opening them to reveal subfolders if appropriate.

If there are subfolders they too will have keys assigned you can use to select folders.

This probably sounds confusing, but if you fire up the app and experiment, things will become clear quite quickly.

The following keys are used in relation to where songs go:

Key Action
Return Mark Song to be moved to the directory selected on the left.
Delete Mark Song for recycling. (see below).
Backspace Clear Song's mark.

NOTE: No songs are actuallly moved or deleted during this phase. That's what the big 'Do Moves!' button is for.

By default all songs marked for deletion are recycled. You can set a folder to send all unwanted tunes to in the menus.

Doing Moves

The moves only happen when you press the big button. At the moment the windows shell actually does all the moving/deleting, so you'll see some very familar dialogs of there's a file name collision.


The Menus' not polished. There's many disable items in there. Most options should be self explanatory.

Current Possible Problems

The apps ignoring me

As a general rule of thumb, if the app ever seems to be ignoring you, click in the right pane. I know this is lame.

What's next?

In no particular order

Where to go for help

Project Home Page:


Help Forum:



Flat Feet Pete

Release Notes

Release 0.1.3

* Reads in beats per minute from acid, traktor or standard tags.
* Reads and displays the Traktor stripe tag.
* Bar-Locked seek option.

Release 0.1.2

* Added a perl based grouping function. It uses activestate's perl extension.

Release 0.1.1

* Rest of tree collapses when you open a branch.
* Moves not forgotten if move is cancelled.

Release 0.1d

Basic version of this doc.

Release 0.1

First release. More of a prototype than anything else.

Hastily arranged shots.