Hi, About 5 years ago I wrote about 80% of the code you're asking for here. It used to reside in a folder called macro/ or something. I suspect it's been deleted from the tree now due to being unfinished/unmaintained but it must live in the repository somewhere, RJ or someone would be able to tell you.
It took a pretty lax attitude to memory management and it definitely won't compile without some modifications but it's probably a useful reference or starting point. The code can (as in could 5 years ago): * Record signals from multiple ControlObjects * Compress large sets of recordings from analogue controls into an approximate set of linear segments * Store the recording as a lua script which is then hand tunable outside Mixxx * Play back the recording Adam On 17 December 2012 20:55, <wolfbi...@gmail.com> wrote: > 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 ------------------------------------------------------------------------------ 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