Add Fader Start feature that allows to start a track from its last cue-point by moving the corresponding line-fader up or the crossfader to the side of the deck

Bug #661917 reported by Sean M. Pappalardo
22
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Mixxx
Confirmed
Wishlist
Unassigned

Bug Description

We should add a fader start feature to each deck's volume faders as well as the cross-fader and make it toggleable on each deck individually. (Fader-start is where the deck will start playing when the volume fader is moved up from 0 and will cue when moved to 0. Same on the cross-fader.) But default it to off so we don't surprise anyone.

The SCS.1m script currently does this (and it takes affect for any other controllers connected to the same virtual decks) but it should be program-wide instead of in script.

Revision history for this message
Phillip Whelan (pwhelan) wrote : Re: [Bug 661917] [NEW] Add fader start feature with toggle

This sound to me like another feature that is very specific to a certain
style of mixing. I personally am in favor of making Mixxx the most
customizable DJ mixing program on earth, but enabling it by default could be
very confusing, especially to DJs who already know how to mix.

A much better idea would be to design a way for scripts to do program wide
behaviour and also add a GUI that could easily enable and disable all these
behaviours. This same mechanism could handle fader start, quantization, soft
takeover and a myriad of other custom behaviours. If we also made it easy
and appealing to add, configure, enable and disable these features it could
be a real win.

To make it even easier on people, on Window and Mac OS X we could make part
of the installation procedure ask the user what such behaviours they would
like to enable. On Linux we could do it on the first run. That way we also
make sure we don't suprise anybody.

description: updated
jus (jus)
summary: - Add fader start feature with toggle
+ Add Fader Start feature that allows to start a track from its last cue-
+ point by moving the corresponding line-fader up or the crossfader to the
+ side of the deck
Revision history for this message
Peter G. Marczis (marczis) wrote :

Hello,
I'm willing to add this feature. Some questions to clarify:

"Add Fader Start feature that allows to start a track from its last cue-point by moving the corresponding line-fader up or the crossfader to the side of the deck"

I think that it should start from the actual position not from the last cue-point. What do you think ?
So if you want to switch deck and back, then it would still proceed in the track by step by step. I don't know if I'm clear so I mean that you set DECK B to a cue point, you pull the crossfader DECK B start to play, then you pull back the crossfader DECK B Stops, and when you repeat DECK B would go from the point it finished last time. Or it could be a parameter too... but I don't know which one is more useful in real life ?

Changed in mixxx:
assignee: nobody → Peter G. Marczis (marczis)
Revision history for this message
Daniel Schürmann (daschuer) wrote :

Yes, a start from the current position is what the user might expect.

How will you issue N-Decks?

Just stopping a deck by Crossfader sound weird, for a manual mixing use case.
May be move it back to cue for a Mixing in the same sample again might useful.

It might make sense in combination with https://bugs.launchpad.net/mixxx/+bug/1187258

What are the use cases we have?

Revision history for this message
Peter G. Marczis (marczis) wrote :

I'm okay with re-cue the track you leave with the cross-fader. Both thing will open up some new ways of mixxxing for me :)

tags: added: autodj
Revision history for this message
Chloé AVRILLON (chloe-avrillon) wrote :

This is not a good Idea. Some controllers like the Reloop Beatpad have the Fader Start logic implemented : opening the level fader of the controller, sends a play button event to the software when you activate the faderstart with SHIFT+Load button.

More over, it's not so difficult to emulate it in javascript.

Revision history for this message
Chloé AVRILLON (chloe-avrillon) wrote :

I am working about the Numrk Mixtrack (pro) 3 mapping, and I have implemented the faderstart in javascript without any problem.
http://mixxx.org/forums/viewtopic.php?f=7&t=7286&start=60#p26551

May be we could explain how to implement faderstart in the Mixxx scripting tutorial.

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

It would be great, if we could add such features an things like spin down break and spin up start to the mixxx C++ domain. This will allow to access it via skin, an offers the same experience throughout all mappings.

@Chloé: what would be the ideal control interface for this. So that we can enable rlthis feature for skins as well?

Revision history for this message
Owen Williams (ywwg) wrote :
Revision history for this message
Chloé AVRILLON (chloe-avrillon) wrote :

The ideal control is not complicated :
Faderstart is a toggle function, usually attached on controllers to the "load deck" button. On controllers it is ideally toggled with shift+load. On my beatpad it is hardcoded by the firmware and when it is activated the load button is flashing. Hopefully it is not incompatible with a implementation on the software side.
We already have such switches in Mixxx : quantize, slip mode, etc... One more should not be a big deal.

From the code perspective, Faderstart is just one feature added : line fader to zero, stop playing /line fader increasing, start playing if the track was stopped.

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

Cool, I have just read in the DDJ-T1 manual and it looks like a nice feature.
I think the crossfader should work as well.

So if one has fun to adopt this bug, here some possibles steps.

TODO:
* add a new class src/engine/faderstartcontrol.cpp similar to cuecontrol.cpp
* cuecontrol.cpp contains some patterns you can reuse.
* add a ControlPushButton(ConfigKey(m_group, "fader_start"));
* add ControlobjectSlaves for volume xfader and orientation and what else is required.
* connect them to a new slotFaderchanged
* change play and goto_cueandstop as desired.

tags: added: easy
removed: fader play relay start
Revision history for this message
Daniel Schürmann (daschuer) wrote :

By the way: On a for deck setup it makes sense to start only cued tracks.
This will help do accidentally restart already played tracks.
So my comment at #3 is outdated.

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

@Peter: are you still working on this feature? Do you need additional help?

Revision history for this message
Chloé AVRILLON (chloe-avrillon) wrote :

I put here my parts of script mapping implementing the faderstart "emulation", it can help, it is a bit modified in order to make it "algorithm" like :

Init :
_____
decks.D1.faderstart = false;
decks.D2.faderstart = false;

On Load button :
________________
NumarkMixtrack3.LoadButton = function(channel, control, value, status, group) {
    var decknum = script.deckFromGroup(group);
    var deck = NumarkMixtrack3.decks["D" + decknum];
    if (value == DOWN) {
        if (!deck.shifted) {
            //Load the track normally
           deck.faderstart = false;
           engine.setValue(group, 'LoadSelectedTrack', true);
        } else {
            //SHIFT + Load = fader start activated
   if (deck.faderstart) {
    deck.faderstart = false;
   } else {
    deck.faderstart = true;
    engine.setValue(group, 'LoadSelectedTrack', true);
   }
        }
   }
};

On eject track button :
______________________
deck.faderstart = false;
engine.setValue(group, 'eject', true);

On volume change (atached to line fader) :
NumarkMixtrack3.OnVolumeChange = function(value, group, control) {
    var decknum = parseInt(group.substring(8,9));
    var deck = NumarkMixtrack3.decks["D" + decknum];
    var delta = value - deck.lastfadervalue;

    if (deck.faderstart) {
        if (value===0) {
            engine.setValue(group, "play", 0);
        } else {
            if (delta>0) {
                engine.setValue(group, "play", 1);
            }
        }
    }
};

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

@Peter: I have just freed this bug up for other contributors. If you are still working on it, please reassign.

Changed in mixxx:
assignee: Peter G. Marczis (marczis) → nobody
tags: added: hackathon
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/5587

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.