Allow sending the crossfader inputs to an external mixer

Bug #970965 reported by Alban
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Wishlist
Alban

Bug Description

When one is using an external mixer with the deck outputs the samplers are not usable. A nice alternative to the deck outputs would be to allow sending mixxx's crossfader inputs to an external mixer.

Attached is a patch implementing this. The mixing could be optimized a bit but I don't known if it is really worth the code complexity. The channels naming in the preference dialog also need to be improved.

Revision history for this message
Alban (albeu) wrote :
Revision history for this message
William Good (bkgood) wrote :

Is this standard behavior in other DJ applications?

Revision history for this message
Alban (albeu) wrote :

I don't know about other DJ applications. I just felt the need for it, so I coded it :)

Now the long story: I often DJ with others sharing an external mixer. In such situation I prefer to use the deck outputs to avoid having Mixxx crossfader in the way. But this weekend I (naively) tried to use a sampler, just to remember that it can't work in such a setup. I then realized that what I shortly expected was to have the "left side" output of Mixxx sent to the mixer instead of just deck 1. So I decided to code it :)

While coding this I saw that Mixxx now have 4 decks :) This feature would also allow to use deck 3&4 without having to take more than 2 channels on the external mixer. Again very nice when sharing an external mixer.

All in all I think this would be an extremely nice feature for external mixer users, needing only 2 channels but still allowing to fully use all decks.

Changed in mixxx:
status: New → Confirmed
assignee: nobody → Alban (albeu)
Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Alban,

Thank you for your patch. I have tested it in my lp:~daschuer/mixxx/daschuers_trunk and it looks good and is definitely useful in this state

.. but there are issues with AutoDJ and L/M/R setting oft the Sampler.

In a usual set-up you will have a two chancel sound-card.
On channel for the right hardware fader input and one for the left.
In such a set-up the sampler decks are quiet with "M" setting.

Is it possible to catch the audio streams one step within the software fader?
Something like "crossfader output right and left" so we can build a chain of the software and the hardware fader.
Result: Hardware fader working, AutoDJ working, M-Setting working.

---
I have added just the words "left/center/right" to the preferences, see attached patch.

Revision history for this message
Owen Williams (ywwg) wrote :

I wonder if we should be using "left" and "right" terminology. Very often decks get swapped around, single-deck mode is enabled, or crossfaders are set to a flopped mode... In these cases "left" and "right" will cease to have meaning. In other programs and mixers I've used they just use "A" and "B".

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Owen,

we have the "Left/Center(M)/Right" terminology already with the mix-orientation for the samplers and it is related only to the sowtare fader within Mixxx. For me it is more descriptive than 1/2/3 or A/B

Does your flopped mode refer to Bug #829533 (hamster style)?
This could achieved if we add a L/M/R selector also to the decks. I think we need it anyway if we have a four deck layout.

Revision history for this message
Alban (albeu) wrote :

> Is it possible to catch the audio streams one step within the software fader?

I don't really get what you mean here. The master output is computed as R*xFaderR + M + L*xFaderL, so M is always mixed with a gain of 1. Mixing M in the L and R outputs just can't be the same.

Revision history for this message
Owen Williams (ywwg) wrote :

I don't really have an opinion on A/B versus L/M/R, I just want to make sure that we are being consistent with other products.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Alban,

I would like to be able to connect an external fader to:
outLeft = L*xFaderL+M/2
outRight = R*xFaderR+M/2

So the hardware Fader output master is (R*xFaderR + M/2) * hwXFaderR + (L*xFaderL + M/2) * hwXFaderL.
I hope it results in a fader chain with a const gain 1 for M like (R*xFaderR*hwXFaderR) + M + (L*xFaderL*hwXFaderL)

With this setup M can be used with a two chanal soundcard:
The human DJ will use the external Fader and the Auto DJ the internal fader. The not used fader has to be in center position respectively.

We might want to add a bypass or force the software fader to center position if AutoDJ is off.

Regards,

Daniel

Revision history for this message
Alban (albeu) wrote :

I think I start to understand what you want, but that sound overly complicated to me. I don't think the M samplers are a very big deal, just use L or R if you can't afford the extra channel. Regarding the auto DJ it might a better idea to look into just making it use the decks faders instead of the cross fader.

Revision history for this message
Alban (albeu) wrote :

Here is a new version of the patch with the master gain working again :)

jus (jus)
Changed in mixxx:
importance: Undecided → Wishlist
status: Confirmed → In Progress
Revision history for this message
Alban (albeu) wrote :

Updated version of the patch that apply to the current trunk

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Fix from https://github.com/mixxxdj/mixxx/pull/66 commited to 8ccc10bdd6f94fe9c1713ca70a129c764a46317f
1.12.0-alpha-pre (build master r3547)
Thank you Alban

Changed in mixxx:
milestone: none → 1.12.0
status: In Progress → Fix Committed
Revision history for this message
Jan-Philip Gehrcke (jgehrcke) wrote :

Coming from https://bugs.launchpad.net/mixxx/+bug/1325414.

When I set

deck A -> VMS 2 channels 1+2 and
deck B -> VMS 2 channels 3+4

then the crossfader and headphone cueing work as expected using the controller, however I cannot hear samplers.

When I set

left -> VMS 2 channels 1+2 and
right -> VMS 2 channels 3+4

then I can hear samplers (if I set them to left or right, not to middle), and the crossfader works as expected. However, headphone cueing using the controller does not work, I only have "master" on the headphone, i.e. if I have a channel fader at 0, then I do not hear that channel on the headphones, no matter if I press the corresponding cue botton or not.

How can I get everything, i.e. proper crossfader behavior, sampler output, and headphone cueing?

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Does the VMS2 Cross fader slider control the Mixxx slider as well?
You may provide a drawing of the desired signal flow.

Revision history for this message
Jan-Philip Gehrcke (jgehrcke) wrote :

> Does the VMS2 Cross fader slider control the Mixxx slider as well?

Yes, it does.

I am not sure if a drawing helps here, because it would not describe the symptoms. I'll try to present the situation and symptoms in simple words again:

Situation 1: headphone cue signal works, no chance to get samplers to the VMS2
================================================================
- no master, no headphone, no left, no center, no right
- deck A -> VMS 2 channels 1+2 and
- deck B -> VMS 2 channels 3+4
- the crossfader to the right (deck B), no hamster.
- both channel faders at 0 (down)

I have my headphone and my master attached to the VMS2 (i.e. it is doing its own channel mix).

Now I press "CUE" on the controller for the left channel (deck A). The MIDI signal is transmitted properly, the CUE button in the GUI is set to "on". And I hear that channel on the headphones, great. Means: the audio signal for deck A (left) actually arrives at the VMS2. In this situation, cueing of both, left or right channel, does not depend on the crossfader or channel fader position, as it should be.

Situation 2: headphone cue signal broken, and I can get samplers to the VMS2
==============================================================
- no master, no headphone, no center, no deck A, no deck B
- left -> VMS 2 channels 1+2 and
- left -> VMS 2 channels 3+4

In this situation the headphone cue signal is gone. There is no cue/preview signal for e.g. the left side with either the left channel fader being set to 0 *or* the crossfader being set to the right. In this situation, the audio signal for both left and right "cue" or "preview" corresponds *directly* to the channel fader and crossfader setting, i.e. whatever you hear on the headphone is already on master. No preview possible. There seems to be nothing left for the VMS2 to be played on the headphones if crossfader or channel fader say so.

Looks like the VMS2 simply does not retrieve any signal on e.g. "left" in case of left channel fader being set to 0 *or* the crossfader being set to the right, so there is nothing for it to preview. This seems to be fundamentally different when I assign deck A in the hardware config: in this case, the signal arrives at for the VMS2 to preview, even if the faders mute it.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

OK, I am starting to understand.
A solution depends on how the audio signal routing and the midi signal works inside the VMS2.

Here some possible solutions:

1) User Mixxx's mixing engine (in 1.12 it is a 24 bit bit perfect engine, so not that bad :-))
* Configure VMS2 left channel for Master and the right channel for headphone.
* Disable VMS2's Mixing engine:
 a) * Setup the VMS2 in a way that the sliders are decoupled from VMS2 Mixing engine and only emitting MIDI signals.
 b) * Move VMS2 cross fader left and set left volume to max
     * Permanent EnablePFL for the right channel on the VMS2

2) Use VMS2's mixing engine (Situation 2) + Mixxx cueing
* Remove the midi Mappings for Volume sliders and cross faders
* Set Volume slider in Mixxx to max and cross fader to center
* Use the PC Sound card for headphones.
This way you can still individual cue decks and samplers and use preview deck.

3) Use VMS2's mixing engine (Situation 2) + VMS2 cueing
* Remove the midi Mappings for Volume sliders, cross faders and PFL buttons.
* Set Volume slider in Mixxx to max and cross fader to center
* Configure PFL buttons on the VMS2 to listen to the left or right channel. like you have probably done
in the two deck setup (Situation 2)

I am really curious to read if some solution are suitable and why the others are not.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

I have just filed Bug #1326660 for the center orientation issue.

Revision history for this message
Jan-Philip Gehrcke (jgehrcke) wrote :

Thanks Daniel for thinking through the issue and for making those different proposals. They all make sense, however I am just a beginner to DJing so I am not sure which one of them is most practical.

When thinking about these scenarios I came up with another possible solution quite close to your proposal (1). In this case we do not use the VMS2 for and sound signal processing, just for MIDI signal emission. I think this implicates maximum practical value:
- use Mixxx's mixing engine
- set master to a USB sound device different from those in the VMS2 (I have spare Behringer UCA202)
- attach amplifier to that Behringer UCA202
- set headphone to notebook's internal sound device, attach headphone right to the notebook
- don't worry about any "signal routing" issue with the VMS2, just use its MIDI signals for controlling Mixxx.

Does that sound reasonable, too?

A "disadvantage" with that approach would be that significant parts of the hardware within the VMS2 stay unused.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Yes, that is reasonable and since the multi sound-card patch this should be work nice.

There are actually two minor disadvantages:
* An other USB port is occupied
* There is a little CPU overhead for handle two soundcards

I am just wandering if it is possible to configure the VMS2 for 1a?

Which OS do you use?
The best option for for me using two soundcards in hardware preferences is:
Multi-Soundcard Sync = Experimental (no delay)
This works like a charm for Linux.
What is your experience?

Revision history for this message
Jan-Philip Gehrcke (jgehrcke) wrote :

Hey Daniel!

> I am just wandering if it is possible to configure the VMS2 for 1a?

Not entirely. There is a modus in which the equalizer knobs can be deactivated (they call the two modi "pre EQ" and "post EQ"). There is however no documented way to let the faders only emit a MIDI signal, they seem to be always active.

> Which OS do you use?

I am using Linux (Ubuntu 14.04).

> The best option for me using two soundcards in hardware preferences is:
> Multi-Soundcard Sync = Experimental (no delay)
> This works like a charm for Linux.

I have tried that, it indeed works great in the sense that I did not observe any issue during hours of tests :)

> What is your experience?

My current experience is quite good. I am now using three sound devices at the same time (feels a bit like an overkill by I think I need all of them):
- master -> Behringer USB audio -> amplifier/PA
- headphones -> internal sound device (so that cuing *and* the preview deck work)
- deck A -> VMS2, channels 1+2
- deck B -> VMS2, channels 3+4

In summary, the VMS2 in this setup is only for MIDI signal emission and for VU meter monitoring. Indeed, I am sending the audio to the VMS2 via deckA/B setting *only* in order to be able to use the nice VU meter.

With three sound devices in use and a "normal" mixing performance I produces a 15-minute system load average of 0.7 on a machine with two CPU cores, i.e. while this is a significant CPU load, this is still far from critical (that is a notebook from 2009, with an Intel 2.66 GHz P8800).

RJ Skerry-Ryan (rryan)
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/6338

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.