Hello Mixxx,

Ok, first the short synopsis of my idea: I want to be able to record my
transitions, and have auto-dj mix between songs and recorded transitions.
My initial questions would be: First, does this already exist? If not, is
there some inherent problem explaining why this doesn't already exist?

-----------------------------------------------------------------------------------------------------------
Idea
-----------------------------------------------------------------------------------------------------------

The idea is that computers and ai may not (yet) be able to match human
creativity in music, but they can perfectly reproduce something that a
human has already done (even better: a computer can do it infinitely many
times, will never forget how to do it, AND can "remember" infinitely many
transitions - all of which are impossible for human DJs).  Furthermore,
songs can be represented as graph nodes, while mixes can be graph edges
(with orthogonal ratings such as smoothness, harmony, energy level, etc
(more on this later)) . Given enough crowdsourced edges (ie with enough DJs
recording and rating transitions), auto-dj would be able to handle song
requests during a live mix by applying graph search algorithms (with
heuristics based on the ratings) in order to smoothly transition from the
current song to the requested song (either directly or through connecting
song-nodes).

In this way, I fully believe auto-dj can absolutely reproduce anything a
human DJ can do.  World-ranked EDM DJs know that what they do in a "live"
performance is not difficult:
http://deadmau5.tumblr.com/post/25690507284/we-all-hit-play, even if
they're adverse to admitting it. It might seem like I'm suggesting human
DJs are obsolete... Well, in many ways they are. I think that what human
DJs are doing NOW is something that can be easily replaced with automation,
allowing the live human to do even MORE on top of that (thereby extending
the computer science idea of abstractions and blackboxes to music).
 The possibilities here are quite profound - I could continue for days on
this subject - but in an effort to keep this concise, I'll leave it with
the tantalizing thought that the live human DJ is now free to further
express his or her musical talent through *anything* else (eg adding
complex effects, playing live instruments, sampling extra sounds).

Oh, and from the lay user's perspective? Imagine your "favorites" playlist
mixed as if by one of the world's best DJs.

-----------------------------------------------------------------------------------------------------------
Implementation
-----------------------------------------------------------------------------------------------------------

Myself and others have been mulling this idea around for ~6 months, and
it's gotten to the point where that itch needs to be scratched. Although I
could do this external to Mixxx (record midi messages sent from my
controller to Mixxx via jack midi routing, then reproduce them when I
wanted), it would be better in multiple respects for the implementation to
be within Mixxx itself. I have in mind three general steps to take in terms
of the mechanism by which auto-dj records and subsequently plays back
transitions:

1. Record transitions via audio binary.
This can be adapted from Mixxx's built-in recording setup: when the record
button is pressed, record the current deck states as metadata linked to the
transition sample. Auto-dj, also informed of the connections between songs
and transitions, would then simply make a decision as to where it wants to
go next based on the current song and active heuristic.

2. Record which, when, where, and how controls are tweaked during
transitions.
This takes way less memory, as the control data size is << the transition
audio file size. Plus, now we can get into interesting things like seeing
the actual controls move / now the DJ can add effects simultaneous to
auto-dj's transitions.

3. Present control tweaks in a human readable format.
That the recording can now be modified, extended, and even generated only
begins to describe the possibilities this presents:
"There are known knowns; there are things we know that we know.
There are known unknowns; that is to say there are things that, we now know
we don't know.
But there are also unknown unknowns – there are things we do not know we
don't know."
Quote from https://en.wikipedia.org/wiki/There_are_known_knowns

-----------------------------------------------------------------------------------------------------------
Working Status
-----------------------------------------------------------------------------------------------------------

Right now, I'm working on step 1. I plan on adding code to
src/recording/enginerecord.* which will signal when the record button is
pressed for start and stop.  However, I'm having troubles including an
additional file I've named mixrecord: How do you make sure the new file
gets compiled properly? After running scons, I can't find mixrecord.o in
lin64_build.

On the other hand, I have also drafted up some SQL schema additions for
storing the transition metadata: http://pastebin.com/raw.php?i=FDkGktDK.
The idea is that a "mix" is a recorded transition which has at at least 2
"mix points" (the start and end of the mix), while mix points have deck and
master states which capture the control values at a given mix point.

Let me know if you have any questions, answers or suggestions; I am new to
cpp and qt (but not new to programming).

-Kane
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
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