Building a custom DJ software

It's all about the equipment

Moderators: Mr Awesomer, JesseMiner, CafeSavoy

Locked
Message
Author
mr. e
Posts: 51
Joined: Wed Feb 06, 2008 8:01 pm

Building a custom DJ software

#1 Post by mr. e » Thu Aug 20, 2009 8:31 am

Hi everybody,
I'm currently building a custom DJ software we'll probably use in our new studio (which currently only has the usual two-deck CD player and a two channel mixer that also has two USB sound interfaces - i.e. digital in for the mixer).

Here's a mockup of what I'm planning to do:
Image

What I already have is:
- playback (although I plan to switch to a different audio player in the backend which has high quality pitching) with multiple devices
- fast and powerful search, scaling up to at least 200k songs using an full-fledged text indexer, can search in comments only etc.
- a different but similar UI (two players on bottom, additional "shortlist")

Obviously, the UI is designed with a particular "workflow" in mind:
- One song always should be running, which is what the top player takes care of. The pitching control is only relevant for use in classes.
- Below that, there is the current playlist of songs, which in particular holds the next song the top player is going to play when it's finished.
- There is a big search box, which is used for locating songs on the system and USB devices
- Clicking songs in the search box will make them play on the DJ headphones, double click or drag them to the playlist above to queue for playback.

Especially since I wouldn't call me a "DJ", these are my questions for you:
- would this work for you?
- would you actually LIKE it?
- what is missing?
- what could be improved?
- do you need/use CUE points?

mr. e
Posts: 51
Joined: Wed Feb 06, 2008 8:01 pm

#2 Post by mr. e » Thu Aug 20, 2009 8:55 am

P.S. yes, it deliberately doesn't include any "library" management.
I figure that is not something you'd do while DJing. So it should be fine to do that with a separate app. Anyway it's something I'd add later.
As for the software design, I'll go with a separate task that does the actual playback that can run at a higher priority than the UI, so the UI can crash or freeze or anything and there should be still some music playing for some time (until the end of the playlist) to give the DJ a chance to restart the UI and have a glitch-free party.
And the search will e.g. allow you to search for "lindyhop slow" and it will return results that have this in the title, album, comment or play list name. So if you put playlists somewhere with such names they can be easily accessed through the search. You could also do "django lindyhop slow" to search for Django songs in your slow lindyhop playlists. or "Django mr.e 19.8.2009" to search for Django in the set you dj'd yesterday.
Nothing much to learn there (that is at least the idea), just throw in whatever you search for...
User management will be another major thing though, especially for use in classes, and when non-swing-dancers want to use the system.

User avatar
dogpossum
Posts: 299
Joined: Thu Apr 10, 2003 10:42 pm
Location: Sydney, Australia
Contact:

#3 Post by dogpossum » Thu Aug 20, 2009 5:10 pm

It looks interesting.
When I'm DJing I quite like being able to list my library by bpm or artist so I can see all the songs listed in 'order'. In other words, I like the itunes library layout because it means I can just click the top heading (eg 'bpm' or 'artist' or 'year') and have the songs reordered according to that category.

I also use this feature when I'm checking my working playlist. If I want to know how many or what sort of songs I've already played by a particular artist, I click on the 'artist' tab so the list reorders alphabetically to group artists.

I use this way of searching in addition to keyword searches, where I type in words (like slow lindy hop) and then have _only_ those songs with those keywords appear. The first search option is useful for me because it allows for serendipity - it lets me stumble over songs in a particular bpm range (for example).

I'm not sure if your player has both these options, but these are two things I find invaluable when I'm DJing.

straycat
Posts: 264
Joined: Tue Apr 10, 2007 11:11 am
Location: Durham, UK

#4 Post by straycat » Fri Aug 21, 2009 1:21 am

My opinion is definitely coloured by the software I currently use (Megaseg), but I do like this approach, and I'd certainly be interested in using it if I didn't have something that worked in a very similar way.

Personally, I'd favor more vertical space in the lists - so I think I'd want the views to be side-by-side, occupying the full height, rather than one above the other taking up the full width.

Will the search work on BPM? In my current program, if I type a number into the search box, it interprets it as BPM, and returns all tracks within +/- 5bpm of the speed I entered, which is incredibly handy.

Would it work for me... if I weren't already completely sold on Megaseg, I think I would. Certainly while I was looking for DJ software, I realised that what I needed was something like this.

Would I like it? Impossible to tell - it would depend on how well the interface was thought through and implemented. This looks promising, but I can't say more than that.

CUE points.... yes. I do use them (not to mention end points) - they're very handy for cutting out verbal intros, extraneous applause etc etc etc, and I often find myself setting them up / adjusting them mid-set. Point of fact, I'd love to be able to configure them as fades on a per song basis - to fade out applause, for example. I haven't yet found anything which will let me do that.

Other useful things - I find it very handy to be able to see a history of exactly when how often I've played a particular track.

I'd like to be able to turn the preview on / off. While the ability to preview the way you describe is essential, there are times when one wants to manipulate a playlist without tracks blaring through the headphones.

Hope this is helpful, anyway. Overall, it looks promising - good luck with it!

mr. e
Posts: 51
Joined: Wed Feb 06, 2008 8:01 pm

#5 Post by mr. e » Mon Aug 24, 2009 2:13 am

Thank you for the feedback!
On applications with a configurable screen layout, I'm of course interested in screenshots, too.

Some notes:
  • reordering (search) results: yes, definitely is useful. But there is an issue with allowing "fuzzy" searches (which will return much more results than intended): a fuzzy search is great as long as the results are ordered in decreasing match quality. Reordering might make really bad results clutter the list. Fuzzy searches means that when typing "ela fitzgerald" it will still return results by "ella fitzgerald" etc. I need to find a balance here, e.g. hiding results below a certain score, or only sorting the top-x results when the column sort buttons are used.
  • search by BPM and year: I have that already, but it's not too useful due to BPM data being rather unreliable in my database.
  • I also need static search filters. e.g. to hide all "salsa" music or "overplayed".
  • vertical layout for lists. Since I'm trying to fit song title, artist, album, bpm, year, maybe some other information there, I don't think having the lists side-by-side will work well. Unless I make the fonts rather small, and IMHO large fonts are quite nice to have, too. I do agree that it's useful for reordering longer sets, I'm considering a fold button that minimizes/maximizes the search box to maximize usable screen size.
  • cue points: well, there are at least two types of cue points. One type that is quite static, marking the lead-in and lead-out of a song as you described. In classes, on-the-fly cue points (as supported by many dj cd players) are also useful, marking e.g. the beginning of a part in a choreography that you are working on, allowing to easily re-start at a known position in the middle of a song.
  • fadein fadeout: nice to have, but probably V2. This might require me to have another player running in the background to do the crossfading (with lead-in and lead-out points), and that in turn might decrease stability/reliability if not done the right way. Except if my player backend can actually do that on its own already.
  • history: nice to have, also maybe V2. What I need to think about for this is how to handle classes and multiple users. It's fine as long as you only DJ and its your own laptop. Also the question arises on how to make this information not clutter the screen to much - context menu?
    As described earlier, I want to throw in previous-playlists into the search interface, so you could after a set save it as "mr. e set friday xx" and then use this in searching. But that needs some UI thoughts for the search box, too.
  • preview mute button: yes. Also probably needs a volume control since it might not be going over the main mixer.
  • (unplayed) playlist length: this information definitely needs to go somewhere. So you know when you are already overtime and don't need to find extra songs to play except if you throw out some already in your list. ;-)
Thank you for all your feedback. Let's see where this project takes me. I'll of course also try to incorporate all feedback by our local DJs with some priority.

straycat
Posts: 264
Joined: Tue Apr 10, 2007 11:11 am
Location: Durham, UK

#6 Post by straycat » Mon Aug 24, 2009 8:29 am

mr. e wrote:vertical layout for lists. Since I'm trying to fit song title, artist, album, bpm, year, maybe some other information there, I don't think having the lists side-by-side will work well. Unless I make the fonts rather small, and IMHO large fonts are quite nice to have, too. I do agree that it's useful for reordering longer sets, I'm considering a fold button that minimizes/maximizes the search box to maximize usable screen size.
Yeah - it's a slightly strange one, this. What Megaseg does is allow you to toggle between displaying track info on one, two or three lines, so the width restrictions aren't such a big deal (just as well, as they waste a lot of horizontal space putting buttons in on either side of the display). Of course - this loses you some of the advantages of going for a vertical layout in the first place... but I still find it much nicer to use than the one-above-the-other approach. I believe this is because I have trouble quickly scanning long lines, and prefer my information more compact.

I'll have a think about this when I'm next DJing (tonight)

Oh - another handy thing they do is to place a marker by each track that's already in your current playlist (white), or that you've played during this set (red). Can be useful.

mr. e
Posts: 51
Joined: Wed Feb 06, 2008 8:01 pm

#7 Post by mr. e » Fri Aug 28, 2009 1:47 am

straycat wrote: Oh - another handy thing they do is to place a marker by each track that's already in your current playlist (white), or that you've played during this set (red). Can be useful.
Yeah, I had that on my To-Do list already. IMHO a must have. I'll also want to add a marker when a very similar title is already on the playlist, so you don't e.g. play two versions of the same song without realizing that too easily.

Locked