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.

Attachment: 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

Reply via email to