I have blogged about this topic before. My tool chain these days consists of iTunes, Quicktags and beaTunes. I use beaTunes to clean up typos and unintended differences in names, especially in stuff I download from my music blog aggregator. I also use the key detection and then switch the keys to camelot notation by sorting by key in Traktor, selecting all songs with the same key and then hitting edit to change the keys for all of the songs at once. I have also been laboring to get my entire library rated, with rating 5 and 4 being those that I intent to play frequently. The rating 3 is for tracks that I do not really care for, but that others might like. Rating 2 and 1 tracks I could essentially flat out delete, but I keep them around mostly to keep albums complete. Still have about 4.5k to go. I have a smart playlist which always throws about 1GB of the unrated tracks on my iPhone and I go through them when I am waiting for the bus for example. New tracks coming in go into a recently added tracks smart playlist and I try to quickly rate them, since I am a lot more specific about the new tracks I add than I was on the past, so the chance I find rating 4 or 5 tracks in the newly added ones are much higher.
The next step is tagging. I have a play list for all the untagged rating 4 and 5 songs that are not yet tagged. I have all my smart playlist to read tags in a playlist directory "categories". As you may may notice in the screenshot below, I also check if the song is inside the "Set Filter" smart playlist. This is actually another smart playlist that I normally have set to a playlist with all my rating 4 and 5 songs. More on this later on.
Here is where Quicktags comes into play. There are still a few issues and limitations, but I hope they will get worked out one day. I use the grouping ID3 field to add tags to songs and create playlist from these tags. Basically I have tags like "Chillout", "Power track", "Energy builder" etc. While a song is playing I can hit a hotkey combo and add any relevant tags. I usually use iTunes DJ to randomly play songs from this playlist. The nice thing with using iTunes DJ over just the smart playlist, is that the song keeps playing, even though since the song is now tagged it automatically gets removed from the smart playlist. Once the songs are tagged I can create smart play lists that use "contains" to group the different tags:
Now when I am putting together a set, I can just start dropping tracks into a new playlist I call "unordered set". As you have seen I am always using the "Set Filter" playlist as an additional filter. As stated above it usually just points to another playlist with all my rating 4 and 5 tracks. However once I have all the songs I want to play in my set in a new "unordered set" playlist and it comes time to create my final ordered playlist I change the "Set Filter" smart playlist to use my "unordered set" playlist instead. I will give the new playlist a descriptive name to identify the playlist (usually the name of the event). Then when I look at my tag smart playlist (like "Chillout"), I only see songs from the "unordered set" playlist. Since I usually DJ at parties where I have to change the style a couple of times per night, this way I can then just grab groups of tracks per tag and drop them into my final set playlist, order them and keep grabbing tracks. In order to make sure I do not forget a track, I have yet another smart playlist that lists all the songs that are not in my "final set" but are in the "unordered set" playlist. Of course I could also simply remove any track I move over to the "final set" playlist out of my "unordered set" playlist, but when I find I want to start over in the sorting but not in the track selection, I would have a problem.