Open mixxxbot opened 2 years ago
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.
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 ?
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?
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 :)
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.
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.
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?
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
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.
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.
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.
Commented by: daschuer Date: 2015-11-16T11:05:24Z
@Peter: are you still working on this feature? Do you need additional help?
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);
}
}
}
};
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.