Hi all,

I've taken Varun's GSoC work from last summer and done some surgery on it.
The result is looking promising and is just about ready to merge to trunk.

https://code.launchpad.net/~mixxxdevelopers/mixxx/features_key

I'm ready to reach out and get your feedback! Experimental builds are here:
Ubuntu and Mac:
http://builds.mixxx.org/builds/experimental-features_key/r3062/
Windows will show up here (there was a problem w/ r3062)
http://builds.mixxx.org/builds/experimental-features_key/r3064/

This introduces a new database revision, #18. Please make a backup of your
database first. Since this is ready to merge to trunk I will probably
cherry-pick this revision into trunk so we don't have to worry about
someone else creating a revision 18. But just to be safe, I would backup
your library.

New features:

* Automatic key detection on your tracks using the Queen Mary key detector
VAMP plugin. (The plugin is selectable just like for the beat detector so
we can add KeyFinder support trivially. The QM key detector was already in
our current plugin set so it made sense to turn that on first.).

* Full list of key changes is stored and a global key is calculated by the
most dominant key (the key the track was in for the longest amount of
time). We can play with other methods of calculating the global key later.
The full list of key changes is stored in the database just like the full
list of beats is for beat detection.

* New "pitch" control that allows you to change the pitch of a song
independent of its tempo/rate. This is measured in octaves of change. A
value of 1 means a full octave pitch shifted up while a value of -1 means a
full octave pitch shifted down.

* A <Key> widget in the skin that shows you the current effective key of a
deck. For example, if a track's key is C and it is pitch-shifted up by one
1/12 of an octave then the key widget shows C#.

* Key preferences pane has support for key notations. You can choose which
key notation you would like Mixxx to use for your tracks. The built-in
notations are OpenKey and Lancelot notation (A notation that I came up with
based on the Circle of Fifths). If you select a custom notation then you
can provide a custom string for each key.

* Mixxx tracks the symbolic/semantic key internally so changing key
notation is nothing but a rendering/text display change. So if you change
your notation, all key display throughout Mixxx will change. Tracks that
were analyzed when you chose the old notation will update to have the new
notation. Even tracks that had keys read from their ID3 tag will change.
(Note, this is just internal to Mixxx -- we still don't touch your file's
ID3 tags).

* In the library key column, you can enter keys in any notation Mixxx
supports. For example, you can type C# minor as either "C#m", "c", "12a"
(lancelot), or "5m" (openkey) and Mixxx will interpret that internally as
C# minor and immediately re-display the key in your chosen notation.

The Deere 1280x800 skin is the only one with test widgets. There is a
crossfader above the crossfader that controls deck 1's pitch and there is a
key display to the left of the BPM display. Please don't file any bugs
about this skin -- I know it's really crappy :).

Speaking of bugs, please file any other bugs! There are some known issues:
* SoundTouch kind of freaks out when you pitch-adjust tracks causing a
performance issue. It's related to the ReadAheadManager read-log. For now
just assume pitch shifting causes lag..
* Pitch shifting quality is not great :(. Hopefully we can tweak SoundTouch
here.
* When you first start up, the key display says "INVALID". This is just for
testing. Normally that would be the empty string.

And currently on the TODO list:
* A delegate for the key column that gives you a combo-box dropdown of keys
in your notation.
* The key column delegate should show the key in a red background if it is
not understood by Mixxx (for example, if the key is read from an ID3 tag
and Mixxx can't understand it).
* libkeyfinder in the Mixxx VAMP plugin set
* Key-based sync which will sync a track's pitch to match the target deck's
key.

Fun stuff!
RJ
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to