Hi Russell,

On Sun, 2008-03-30 at 22:15 -0400, Russell Ryan wrote:
> Hi Mixxx-devel,
> 
>    My name is RJ Ryan. I'm a junior at MIT, amateur DJ, and user of 
> Mixxx. I was glad to see your name on the list of mentoring 
> organizations for GSOC. I'd really like to help out this summer and 
> beyond, and I feel like GSOC would be a good place to get started. Over 
> the past week I've been going over the code, and it's gotten me thinking 
> about various projects and features I would love to see built in to 
> Mixxx (apart from the ones on the ideas page)
> 
> I'd like some feedback as to which of these ideas are ones you would 
> consider valuable, and which are ones that aren't too important. (Some 
> are big and some are small) I think you'll find as the list goes on they 
> get more and more far-fetched. :) That will help me decide which one (or 
> ones) I'll focus on in my application.
> 
> - One main thing I see that's missing when compared with other dj'ing 
> apps is an effects panel (per channel). A simple pluggable effects tool 
> would really bring Mixxx up to speed with proprietary apps and also if 
> designed well would blaze a trail for later improvements and possibly 
> user-contributed effects (I'm thinking a DSL or scripted plugin setup 
> here). (the GSOC project I'd propose would be effects units for either 
> channel (or the main mix) with some basic effects you find on mid-level 
> mixers like flange, phase, filter, wah, tape-echo, 2xecho, etc. Also 
> possibly jet/zip like on the CDJ200.)

Effects was implemented in the form of LADSPA support last summer by a
GSoC student (Pawel). The GUI part of it wasn't finished, although he
may try to finish it some time in the next few months.

> 
> - A loop toolbox -- fine-grained control over looping, loop-in, 
> loop-cut, loop-jump, loop-exit, re-loop, etc. It would include visual 
> cues in the waveform output. I'd really love to see these features in 
> Mixxx.
> 

Looping is a great feature, but from the under-the-hood point of view,
it's going to be a big challenge. Looping is more complicated than just
seeking back to some loop point and playing again. When Mixxx seeks, the
waveform view incurs a fairly big performance penalty, which can cause
gaps in the audio when you hit the "cue" button. Looping would have the
same problem, so addressing this performance problem (and probably
others) is something that would have to be taken seriously first. It's
universally agreed that the waveform view needs to be rewritten from
scratch anyways, so perhaps that's a better summer project. It would
open up the door for some cool visual integration of the looping as
well. (It's very awkward to modify the waveform as the code exists right
now.)


> - Tempo-bend.. you already have pitch bend, but resampling so that the 
> pitch stays the same while tempo increases is something I'd like to see.
> 

We already have this when you're using "pitch-independent time stretch"
mode.

> - For usability and new user orientation, a setup wizard that helps with 
> MIDI configuration and option choices. (this is similar to the one 
> suggested under 'MIDI' on the ideas page)

The MIDI configuration/mapping project we listed on our Ideas page
already covers this to some extent.

> 
> - Mix recording feature -- I'm a bedroom dj for the most part, and I 
> like recording my mixes from time to time. The way I've done it with 
> Mixxx is routing jack into an audio recorder, but I think it'd be a nice 
> touch if you could choose to record from within Mixxx. I also notice 
> that you cannot route audio to an external mixer. Since that's also an 
> audio routing problem I imagine that sort of fix would fall under this 
> project.
> 

Already in SVN...

> - Support for more than 2 virtual decks. -- This probably isn't key 
> whatsoever, but it might be nice if Mixxx supported an arbitrary number 
> of songs/audio sources for mixing. This would help the 'live PA' type 
> DJ's more than the conventional ones.

This one's doable, but again, the waveform view is going to be a
nightmare to work with unless its rewritten. If you want to make a
contribution regardless of GSoC, it would be helpful if we could scrape
together a feature specification on the wiki for the new waveform view.
An example specification can be found here:
http://mixxx.org/wiki/doku.php/configurable_cue_behaviour

We need to take things like extra channels into account when designing
it, and I don't want us to forget things like that when someone ends up
coding it.

> 
> - 'hands-free' mode -- While this might be a little off the mark when 
> considering this is a mixing app, many people (a couple even asked on 
> IRC the past couple days) asked for a feature where they could setup a 
> playlist and have Mixxx play songs serially, doing a basic-effort job of 
> mixing them together. While not a feature a DJ would use, it could help 
> improve Mixxx's visibility / reputation if more people use it.
> 

"NEXT" mode is all we have right now, and that needs some work too (you
can get a player "stuck", I forget how). In the past, we've forgone
"auto-DJ" support in favour of cooler things. Our primary use case is
the DJ who wants do a set for a few hours in a club, and that usually
involves manning your decks/laptop for that time. Auto-DJ will be more
important for us if we start to target other potential users, like radio
DJs.

> - (oh boy) Support for control of a video system as well as a music 
> system. cue/loop video clips and so on to be output on a projector as 
> you're mixing. This probably isn't a GSOC task, but it's an interesting 
> feature from a performance point of view.
> 

There's no way this is going to happen in Mixxx, ever. It's an
interesting feature from a design point of view, because not only do you
have to be an audio programming ninja, but you also need to be a video
programming samurai. I can imagine that any sort of video DJing stuff
would involve clever synchronization of videos with the audio (see the
new Serato), and that would take quite a bit of thinking to come up with
a worthy design. Mixxx just isn't built to handle that, and it'd be more
work to add video support to Mixxx than to write a new application from
the ground up with that in mind.

> Some minor tweaks I would probably approach on my own outside of GSOC
> - fullscreen mode has always been slightly quirky on my debian box
> - AFAIK there isn't support for Torq timecoded vinyl or cd.
> 

Fullscreen's always been quirky on everyone's computers (Windows, Mac,
AND Linux! heh). Since SVG is in the cards as a GSoC project (which
would solve the fullscreen issue), I probably wouldn't hack that in.

Torq vinyls are more or less the same as Ms Pinky vinyls, neither of
which we support. If you'd like to see support for that in Mixxx, I'd
suggest adding support for it to xwax, since we borrow some of xwax's
vinyl control code: http://www.xwax.co.uk


> Now that I've listed off a bunch of lofty goals, here's what I can use 
> to help contribute: I have experience with C/C++ (over 10 years), 
> multithreaded programming, OpenGL, Qt, and scons. As for real-time 
> performance, I write 3d-game engines as a hobby, so I'm familiar with 
> that problem space :) . Essentially, looking over your codebase I felt 
> right at home. I don't have experience with PortAudio, but I'm a fast 
> learner.

Right, so although I shot down most of your ideas, you brought up many
important features that people want. If I had to suggest a new project
that's not on the ideas list, I think it might be writing a new waveform
view widget. It's one of these "gateway projects" that would open the
door for many other cool projects. That being said, we're all ears and
I'm willing to discuss any other ideas you have.

Thanks,
Albert

GSoC Mentor
Mixxx Core Developer
Level 32 Ninja


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to