Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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 #5587

Open
mixxxbot opened this issue Aug 22, 2022 · 14 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: Pegasus-RPG
Date: 2010-10-16T21:44:12Z
Status: Confirmed
Importance: Wishlist
Launchpad Issue: lp661917
Tags: autodj, cue, easy, hackathon


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: pwhelan
Date: 2010-10-17T11:44:26Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: marczis
Date: 2014-07-17T08:36:49Z


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 ?

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2014-07-17T09:01:02Z


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?

@mixxxbot
Copy link
Collaborator Author

Commented by: marczis
Date: 2014-07-17T09:14:14Z


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

@mixxxbot
Copy link
Collaborator Author

Commented by: DJChloe
Date: 2015-11-06T13:00:54Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: DJChloe
Date: 2015-11-15T13:17:44Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-11-15T15:55:17Z


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?

@mixxxbot
Copy link
Collaborator Author

Commented by: ywwg
Date: 2015-11-15T17:55:03Z


We do have some controller actions in c++: https://github.com/mixxxdj/mixxx/blob/master/src/controllers/controllerengine.cpp

@mixxxbot
Copy link
Collaborator Author

Commented by: DJChloe
Date: 2015-11-16T09:33:56Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-11-16T10:58:09Z


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.  

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-11-16T11:04:35Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-11-16T11:05:24Z


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

@mixxxbot
Copy link
Collaborator Author

Commented by: DJChloe
Date: 2015-11-16T11:39:11Z


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);
            }
        }
    }
};

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2016-02-24T12:21:54Z


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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant