Hi all, I got a little sick of not being able to reliably use my cheap, crappily built MIDI device under a largely unsupported operating system, so I did what any self-respecting UNIX hacker would do - wrote an over-complex reinvention of the wheel in an obscure language that only I would understand.
So, to be more specific, I've come up with a method for using MIDI mixers with xwax via PureData - and yes I'm CCing the Mixxx-devel list for this because I'd like some Mixxx developers' opinions on EQs and MIDI signals. Also because I'm not sure how much of the Linux DJ community actually subs to the xwax list. Anyway. What the design basically is is a virtual representation of your average mixer's circuit board inside the Pure Data audio programming language, with each module (crossfader, EQ, volume faders etc.) represented as a different modular patch. One overriding patch (xsession.pd) wires these all together in a basically trivial fashion creating a through path, so by turning on that patch, and wiring your I/O to PureData correctly (i.e. physical TT inputs -> xwax -> puredata -> speakers) you should be able to more or less drop in a MIDI mixer. Net result, two stereo audio channels come in, one stereo audio channel goes out, mixed. ------- The implementation Module xsessioninput is just a convenience patch that nodularizes (sic) the inputs. xsessioneq manages equalizing (funny, that!). Kinda a pain to follow because of the number of wires, but it's relatively parallel. Uses a sub-module mono_eq_splitter that allows easy changing of the actual kind of equalizer used. xsessioncf uses the standard pair-of-logarithmic-curves on its inputs to ensure that the fade retains the same audible volume. xsessionmidiman is the interesting bit. By splitting the MIDI signals in one place it should be eventually possible to abstract through the use of names the various signals, improving portability to "just modify the MIDI manager". This transmits MIDI signals to input nodes on all other patches. xsessionmonitor will eventually implement a monitor channel, haven't finished it yet. ------- Why this is relevant Well, it took me about a day to build a framework for running MIDI mixers with xwax, removing much of my current complaint with it - no feggin' mixer. It keeps to its modular 'use' in the traditional UNIX vein, much like xwax itself, and by using JACK, you can rapidly create a patch that lets you use turntables (and a mixer) both in virtual worlds, while using basically only the analogue mediums for operation. I think it's important, because frankly the existing 'adaptable MIDI mixer' applications (I'm looking at you, LiveMix) are frankly buggy as hell and generally pretty difficult to work with. This patch should allow people to drop-in an X-Session Pro into their xwax setup. And hopefully other mixers too, with a little bit of elbow grease and know-how. ------- WTF this has to do with Mixxx Mostly questions and a few tech-talk bits actually. Anyway. I've used a state variable filter in my current equalizer implementation, which is lowpass-notch-highpass. John (I think that's who I was talking to!) gave me lots of help with the filter maths, and I may be able to move to a lowpass-bandpass-highpass model which should sound a bit more neutral. The SVF filter has a very noticable colouring effect, making for boomy bass and an 'old hi-fi' sort of sound. My question to ask in this regard is I remember when Mixxx' EQ was being redesigned people were tossing around ideas like "make it like N Vestax mixer's EQ" but as yet I've yet to come up with any information as to just what any commercial DJ mixer's EQ actually behaves like. Can anyone give me any pointers in this regard? Second thing is that to turn this patch into something more portable I need some MIDI information on other MIDI devices, and short of people mailing them to me (though I would really like that, hint hint ;) I need to get some MIDI data and Mixxx has that. Where would I go about finding information on other mixers and is it documented insofar as "this channel is this"? ------- Anyway, I hope someone finds this at least interesting, if not particularly useful. What I've been talking about is attached in a tarball. Cheers, Yorick Appendix I - Bitching about the X-Session Pro What I've done is created this for an X-Session Pro. Which I believe is the worst Chinese-built piece of crap I've bought in the last five years. The faders feel awful, but the main problem with it is that, simply put, the MIDI data coming out of it is sodding busted. Channels override eachother because they were too cheap to put in a priority-queueing system, so when you turn two knobs at the same time the net result is that neither works properly. Further, the data from the crossfader has a few nasty notches along it that pop the signal from "mostly left" to "max right" for one thousandth of the crossfader's duration - this gives a very convincing emulation of a scorched Numark 1050 that's been in the possession of a scratch DJ for a, oh, half a week or so. Verdict: the X-Session works for your absolute beginner pushing buttons in the packaged copy of Torq for a week or two, but don't expect it to stand up to any sort of rigorous standards. You get what you pay for, or less. At least it's cheap. Er, wait.
xsession_puredata_a1.tar.bz2
Description: BZip2 compressed data
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________ Mixxx-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mixxx-devel
