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

option to preselect loop- and beatjump-length #7886

Closed
mixxxbot opened this issue Aug 22, 2022 · 21 comments
Closed

option to preselect loop- and beatjump-length #7886

mixxxbot opened this issue Aug 22, 2022 · 21 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: switch-2
Date: 2015-03-07T04:30:07Z
Status: Fix Released
Importance: Wishlist
Launchpad Issue: lp1429331
Tags: looping, midi, skin, usability


It would be awesome to have the possibility to preselect an amount of beats ( 4, 8, 16, etc.), to use it as loop length or at least as beatjump-length. In my work-flow (with Traktor Pro) I'm using different sizes of beatjumps, in Mixxx I can only map one persistent beatjump-length to one specific button on my DJ-Controller. So its impossible to use different lengths. I guess I could manage to create a working controller-script, but this way i cant see the preselected length. Please correct me if I'm wrong.

Im participating at such an project for the first time and i don't speak English natively, so please be patient <3
@mixxxbot
Copy link
Collaborator Author

Commented by: ywwg
Date: 2015-03-07T13:34:12Z


This type of function is probably best implemented in javascript for your particular controller

@mixxxbot
Copy link
Collaborator Author

Commented by: ywwg
Date: 2015-03-07T14:34:43Z


We might be able to implement some notion of a "create default loop" control and a "default loop size" that can be changed with a controller.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-03-12T13:30:06Z


A number of controllers have this feature and at least the Traktor Kontrol X1 has separate encoders for each deck. I think a default loop size setting per deck would be helpful so this does not need to be reimplemented for each controller. It wouldn't necessarily need scripting, just mapping a signal to adjusting the default loop size and another to setting a loop.

Some controllers (Traktor Kontrol X1 comes to mind) have a way to display the selected loop length on the controller. On such devices, displaying the loop length could be implemented in a controller script by sending a signal back to the controller.

@mixxxbot
Copy link
Collaborator Author

Commented by: switch-2
Date: 2015-03-12T16:49:20Z


@owen: yes :) thats what i would like to see, with a mark at the selected loop-size in GUI. In my particular case, it's important to have this feature for beatjumping. Either with a control like "beatjump default loop-size forward / backward! (in this case beatjumping is linked to "default loop-size") or with the possibility to choose "default beatjump size" too (to make it independent).

btw: I'm about to build a custom controller (with brain V2) and I need the described feature desperately. But I don't like to build the layout for Traktor Pro since Mixxx&Linux are far to awesome. This would be a very useful thing, some controllers are already designed for this and I'm not the only one who'll get used to it, so I think it's a good idea to spend some effort to make this real.

@mixxxbot
Copy link
Collaborator Author

Commented by: ywwg
Date: 2015-03-12T17:34:33Z


You could actually write this in javascript pretty easily by maintaining an internal variable for loop length, mutating it with an encoder, and then a button that triggers the correct Control Object based on the variable. Or in the meantime you can pick your own default loop length of 4 or 8 or whatever and just bind it directly to the button.

Sorry that we can't put a "rush" on specific features, I'll see if I can get to it since this would be fun

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-03-13T14:40:11Z


Sure it would be easy for you or me to do this in JavaScript, but any use of JavaScript would be an obstacle to less tech savvy users with no programming experience who just want to map their controller. This is a useful and common enough function that I think it is worth Mixxx handling natively. Particularly with the new and improved mapping GUI, it would be advantageous if utilizing this functionality of controllers did not require any JavaScript.

Controllers aside, this would be a nice functionality to have integrated into Mixxx's GUI and default keyboard mapping for everyone.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-03-13T14:46:12Z


Regarding keyboard mapping, I propose that double/halve default loop length controls would be activated by pressing Shift plus the keys currently set to doubling/halving the currently set loop. Also, set 4-bar loop would be replaced by setting a loop of the selected length.

@mixxxbot
Copy link
Collaborator Author

Commented by: ywwg
Date: 2015-03-13T17:13:40Z


Right, my point is that if you urgently need this feature, I recommend writing it in javascript for now and then when it gets officially added you can use the official feature.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-03-13T18:50:46Z


@be:
I do not fully understand the proposed changes.
Would you mind to describe the feature in terms of new CO objects and what will happen if their value changed.
Thank you.

@mixxxbot
Copy link
Collaborator Author

Commented by: switch-2
Date: 2015-03-13T23:56:15Z


First: thanks a lot for hear me!

I've just learned some Java-basics, but it should be enough to create a script which will do the job. But it's impossible to put out the value of the variable(loop-/beatjump-size) in GUI using this script, am i right? Anyway, this would be enough if i can rely on a better solution in future.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-06-04T20:50:08Z


Daniel, here is what I propose for control objects:
Deprecate beatloop_X_, beatlooproll_X_, loop_move_X_, and beatjump_X_ controls.

Add:
loop_length
loop_move_length
beatjump_length
Each of these would be positive numbers representing a number of beats. Setting loop_length would change the length of the loop if it set (whether the loop is enabled or not).

deprecate loop_toggle and make loop_enabled read/write. Setting loop_enabled to 1 would set a loop of loop_length beats from the play position. Setting loop_enabled to 0 would disable the loop.

loop_roll_mode: 0=normal loop mode, 1=rolling loop mode
loop_move: -1=move loop loop_move_length beats backwards, 1=move loop loop_move_length beats forwards
beatjump: -1=jump beatjump_length beats backwards, 1=jump beatjump_length beats forwards

In the skins, replace the numbered buttons and + and - sign buttons for setting loops with a display of loop_length with up/down arrows that would double/halve loop_length.

switch-2: Correct, you could not show that variable in the GUI. You could print it to debugging output, represent it on your controller somehow (mine has LED rings around the encoders, so that's how I show it), or you'd have to keep track of it in your mind.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2015-06-04T22:16:48Z


Ah yes thank you I understand.

It would be nice, if we are able to still support the legacy GUI and controller buttons, with the new interface and without the need for a script. Will it be possible?

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2015-06-04T22:33:51Z


How would any of what I proposed break backwards compatibility with old mappings? The only existing control that I propose changing the behavior of is loop_enabled, which is currently read-only so mappings don't set it and the behavior of scripts wouldn't change when reading loop_enabled. Everything else I propose is adding a new control. Keep the old controls for at least one release but mark them as deprecated on the wiki (which I still get an error when I try to edit btw).

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2016-12-07T16:50:46Z


Owen, will you be able to implement this for 2.1? If not, I'll do it.

@mixxxbot
Copy link
Collaborator Author

Commented by: radusuciu
Date: 2016-12-29T18:56:11Z


Would love to have access to the loop_move_length and beatjump_length COs proposed above! I kinda like the current loop setup in Deere however, with number grid and loop halve/double buttons on the end.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2016-12-29T19:41:31Z


Would love to have access to the loop_move_length and beatjump_length COs proposed above!

Doesn't seem like anyone's currently making that happen, so if you want to contribute that, please do.

I kinda like the current loop setup in Deere however, with number grid and loop halve/double buttons on the end.

IMO this is cluttered and takes up way too much space. Part of the reason I think this would be good for all users is that the skin UIs could be cleaned up.

@mixxxbot
Copy link
Collaborator Author

Commented by: radusuciu
Date: 2016-12-29T19:58:21Z


Also, I've noticed that changing the beatjump length or loop_move length on one deck is mirrored to another. Is this behaviour desirable?

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2016-12-29T20:14:50Z


Yeah, I've noticed that too. IMO that is a bug and not desirable. It does that because Deere defines its own ControlObject for those which is shared across all decks. I think the selected lengths should be specific to each deck.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2017-01-07T19:01:28Z


Elaborating on proposal in comment mixxxdj/mixxx#4920:
* When loop_move_size is 0, moving the loop forward/backward would move it by 1 beat, except if loop_size < 1, in which case move the loop by loop_size. This is how I have mapped the loop encoder on the Hercules P32, and I find it to be intuitive while mixing. If I need to move the loop more than 1 beat, then I turn the encoder multiple times.
* Skins should not show the loop_move_size and its default value should be 0, as the behavior described above will be sufficient for most (if not all) use cases.
* Skins should show: loop size, double/half loop size, loop move forward/backward; beatjump size, double/half beatjump size, beatjump forward/backward. Ideally the numeric displays on skins would allow users to click on them and manually type in a value.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2017-02-15T10:20:11Z


#1187

@mixxxbot
Copy link
Collaborator Author

Issue closed with status Fix Released.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@mixxxbot mixxxbot added this to the 2.1.0 milestone Aug 24, 2022
@ronso0 ronso0 added skins and removed skin labels Jun 6, 2023
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

2 participants