[request] 3-way/single crossfader feature

Asked by Michael

Hi there!

Nearly 15 years ago I used the Red Sound Infader and absolutely loved it, with it's 3 crossfaders for low/mid/high frequencies. Here is a link:
http://pro-music-news.com/html/08/e91207re.htm

In fact I miss it so much, that I decided to build a MIDI controller with the 'Tri-Fader' feature on my own. Obviously I would prefer to use it with Mixxx. But before I start buying the parts for the hardware device, I want to clarify how complicated it will be to implement such a feature software-wise?
I have very little programming experience, but am willing to try this task on my own. That is assuming nobody else, with better skills, is interested in doing this.

List of features to be implemented:

- 3 crossfaders (instead of just 1). One for low, one for mid and one for high frequencies.
- 1 button to switch between single and tri-crossfader mode.
- possibility for MIDI controller mapping

Could anyone please give me an estimation of the amount of work it might take?
Is it generally possible, or reasonable?
Which files or modules will I have to touch and where should I start?

In summary, it would be nice if someone could give me some kind of roadmap for this project!

I've already downloaded the source code and setup the IDE. So this part is done and I'm ready to start.

Thanks in advance for your help!
Michael

Question information

Language:
English Edit question
Status:
Solved
For:
Mixxx Edit question
Assignee:
No assignee Edit question
Solved by:
Daniel Schürmann
Solved:
Last query:
Last reply:

This question was reopened

Revision history for this message
Be (be.ing) said :
#1

This could be accomplished with a controller mapping by mapping each fader to increase the EQ knob for one deck and decrease the corresponding EQ knob for the other deck at the same time. You'll probably need to write a custom JavaScript mapping for this. Refer to the controller mapping documentation:
https://mixxx.org/wiki/doku.php/start#controller_mapping_documentation

You do not need to learn C++ or modify the Mixxx source code.

Revision history for this message
Michael (ehmic) said :
#2

Thanks Be (be.ing) for your help!
Yes, your solution is something I already considered, but it has some drawbacks in my opinion.

The crossfader gets useless this way and has to stay in the middle, doesn't it?
And what if I need to adjust the frequencies of one track via the knobs? Is it still possible, without unpredicted/unwanted behaviour, at the latest when fading? Mode switching between 1 and 3 crossfaders would also not be possible this way.
I would rather prefer a clean solution.

Revision history for this message
Be (be.ing) said :
#3

The crossfader would still be valuable for manipulating the deck volumes with that setup.

If you want frequency crossfaders with that setup, you cannot also have detailed control of the frequencies per deck. This is not so much a limitation of Mixxx as it is a limitation of finite range potentiometers. Alternatively, you could get a controller with infinite encoders surrounded by LED rings such as a MIDI Fighter Twister and map some encoders to act like crossfaders and others to be normal deck EQ knobs. The tradeoff is that you would not be able to feel the position of the EQs without looking at the controller or the computer screen.

Revision history for this message
Best Daniel Schürmann (daschuer) said :
#4

A high Res picture is here:
http://photobucket.com/gallery/user/marreone/media/bWVkaWFJZDoxMjU4MTIzMA==/?ref=

If you want to model exactly this you are back in the C++ domain.

We already have a hook for Left and Right Bus Effects, but only accessible via Shade.
We may consider to add a EQ Rack there as well an make them accessible via EQ preferences.
The normal xfader becomes than a kind of gain and we need 3 additional COs for your effect.

Not a big deal.

Do you have C++ knowledge?

A good start id to investigate the EQ preferences page.
https://github.com/mixxxdj/mixxx/blob/master/src/preferences/dialog/dlgprefeq.cpp
and this one for general hint:
https://www.mixxx.org/wiki/doku.php/bugfix_workflow

Or just ask.

Revision history for this message
Michael (ehmic) said :
#5

@Be

Thank you for your explanation! I just can't help myself... the mapping solution wouldn't feel right to me... more like a 'workaround'. Hope you understand that!
I would rather prefer the C++ solution.

@Daniel Schürmann

Thank you, too! The Photobucket link took a while to open.... and yes, exactly this 'Tri Faders' feature is what I want to model!

I have some (little) C++ knowledge .... adapted a board game in the past (~75% complete) and recently tried to enhance Clementines EQ with some additional bands for Tinnitus therapy.... nothing too serious so far, but I'm willing to learn!

Sounds like you already have a good idea how it could work. That leaves me optimistic.

Will check the link to the source code now and see if I can get an overview.

Where would be the right place to 'just ask'?

Revision history for this message
Daniel Schürmann (daschuer) said :
#6

Here or at our mixxx-devel mailing list https://sourceforge.net/projects/mixxx/lists/mixxx-devel

Revision history for this message
Michael (ehmic) said :
#7

Ok, noted - thank you both again for your efforts!

Revision history for this message
Michael (ehmic) said :
#8

Just finished building a preliminary version of the MIDI controller with 3 faders and gave Be's suggestion from post #1 a try.
Although controlling the EQ knobs on both decks works fine , there is a major flaw in this solution.
When using the EQ knobs (instead of the fader) to fade to deck 1, it is impossible to listen (preview) deck 2 via headphones any more. Deck2 is silent, naturally, because all EQ knobs are down.
So unless there is a way to bypass the EQ output for the headphones, this solution will not work for me.

And I'm not so familiar with the Bus effects, but I got the impression that Daniel's suggestion in post #4, adding a separate EQ Rack effect per Deck, would involve the very same problem?

Revision history for this message
Daniel Schürmann (daschuer) said :
#9

No, it works because the R/L effect hooks are post fader.

These effects are used in Shade skin. Using group_[BusRight]_enable, so you may be able to adopt your skript to this.

After https://github.com/mixxxdj/mixxx/pull/1254 is merged we have also an other hidden dedicated effect rack for such EQ Fader.
[MasterEffectRack_EffectUnit_Effect1]

So we may consider a combobox below the xFader, which routes the xfader position in a special way to this effect rack.

It would also be real cool if we could skript this routing.
If we now have also transport effects, we can really make cool transitions using the xfader sliders.

Also auto DJ will benefit from this a lot.

Revision history for this message
Michael (ehmic) said :
#10

Yes! Finally! The scripting took me a while, but now I have a solution which works like a charm!
Thank you soooo much!!!

I can use either Bessel4 / Bessel8 LV-Mix EQ, or LinkwitzRiley8 EQ.
All of them do the job.
For now I focused on Mixxx 2.0.0, but think I will adapt the scripts later, when the beta arrives.

Also like your combobox idea for routing!
Wouldn't it be even possible to do this graphically, via bezier-curves in a graph or similar?
I mean, in the way like some VST EQs do this.
Then we would be able to 'paint' transitions 'on the fly', either with mouse, or with touchpad controllers..
Coloured curves could represent different transitions for faders, or effects... and so on...
This also would make it easier for people, who have little to no programming skills, to create their own routing.

Anyway, I'm so happy ( at least for now :D ) and want to thank the whole team, for making such a nice piece of software available on linux!

Revision history for this message
Michael (ehmic) said :
#11

solved

Revision history for this message
Michael (ehmic) said :
#12

Thanks Daniel Schürmann, that solved my question.

Revision history for this message
Daniel Schürmann (daschuer) said :
#13

There is no blocking reason for other than this is a LOT of work.

I can think of extend the solution in the xfader preferences pane. Here the real gain calculation code is used to paint the visualisation.

So the user can write his transition script first and will see than the results.