mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.43k stars 1.27k forks source link

Move beat grid half beat #10811

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: leontheoriginal Date: 2022-08-16T00:29:05Z Status: Confirmed Importance: Wishlist Launchpad Issue: lp1986596 Tags: beatgrid, easy


Sometimes, the beat is detected exactly a half bar off. To correct this (while another track is playing), at the moment you have to disable sync lock (if enabled), beatshift a half beat and right click the beatgrid adjust button. This also won't work when a loop is active as the beatjump control will move the loop boundaries instead, so you have to exit the loop before, making the procedure even more complicated. There is already an option to move the grid itself, but this is not helpful as it is only intended for small corrections, no big, exact offsets. It would be very helpful to have an option to offset the grid with a single click/tap (similar to doubling/halving BPM or using beatjump).

MetriSomesh commented 1 year ago

I wanted to work on this issue, but I don't understand how to test that the beat is a half bar off

ronso0 commented 1 year ago

The request is about adding a ControlObject (for push buttons) to trigger the action manually, not about improving the (external) beat detection algorithms.

This requires some discussion how and where to expose this control in the GUI.

MetriSomesh commented 1 year ago

I meant I wanted to test the issue to understand it more efficiently. I know that he has mentioned to add a ControlObject like beatjump.

ronso0 commented 1 year ago

Just analyze a track and manually set the detected beat grid 1/2 beat off?

MetriSomesh commented 1 year ago

yeah I understood thank you very much. Where should I open the discussion for where and how to setup the ControlObject?

ronso0 commented 1 year ago

This is the place. Do you have an IDE set up? If yes, simply look into how the existing beatgrid actions are working, beats_translate_later beats_translate_earlier, and if it's possible to get the (local?¹) BPM / beat distance. Thinking about it, this CO probably only makes sense for (constant) beat grids.

VARUN-009 commented 1 year ago

I wanna work on this issue. Please assign this to me and since I'm new to this repo so I request you to please guide me through.

daschuer commented 1 year ago

We do not use the issue assign feature. What do you like to know?

neopostmodern commented 1 year ago

Slightly different use case: in my usage Mixxx detects beatgrid off by half a beat 20–30% of the time and it would be more precise (and more convenient) if there was a GUI way to move the grid half a beat than trying to align by hand. 90% of the time I use the (manual) adjust beatgrid functionality is for shifting half a beat.

ronso0 commented 1 year ago

@neopostmodern Which beat analyzer do you use? Is just a certain genre affected?

Swiftb0y commented 1 year ago

fyi, my music is also affected from this, mostly house music since the offbeat high-pitch percussion throws of the qm analyzer. As such, I'm very much in favor of including a bandaid feature for this.

neopostmodern commented 1 year ago

@ronso0 Queen Mary, Assume constant tempo, Fast analysis disabled Techno/house/downtempo with 90–125BPM As @Swiftb0y writes, it's probably the off-beat percussion

i-oliva commented 6 months ago

This happens to me on half of the songs indeed

compruteru commented 4 months ago

Just throwing in my two cents here, as i don't remember which other sw combo used to cause the beat to be off by half in my mixxx usage/experience, maybe it was MIK, maybe it was RB... but, either way:

If anyone does implement this: Suggest: It is intuitive for a 'Right Click' of the beat-grid adjust button to perform an adjustment of this nature (a half-bar move of the beatgrid in whichever direction button is Rclicked). Currently a Lclick moves it by a single granular amount (i just zoomed all the way on the track waveform and counted 101 clicks until the bar lined up on my hotcue again..) Not sure how this looks from the code side, but i'm thinking about checking out the github and seeing how things are lain-out in my spare time, perhaps... IDK.).

not sure what a 'Rclick' ControlObject implies, but i would assume a copy of the BeatGrid Adjust Left/Right CO's could be copied, and simply edited so as multiplied by 50, where the trigger is able to determine a left or right click?

side-thought: Does a ControlObject (button) have a R/L click detect upon activation? anyone have the code snippet handy?

Regards

Edit: To Clarify, what i'm proposing above is a Rclick functionality to be added to the BeatGrid-SHIFT buttons ('adjust beats earlier', 'adjust beats later') for a supplemental functionality to the original left and right granular beatgrid shift.

The OP appears to be using the Rclick of the 'Adjust BeatGrid' button (which a Lclick sets the beatgrid instantly to where it's currently at, Rclick does it while both are playing)

In understanding that, My interpretation is that the OP has a track playing, and By EAR, has manually made a second track to play in sync with the first, where he then Rclicks the Adjust BeatGrid button so that it sets the beatgrid to the same point as where the other tracks beatgrid is flowing/scrolling)

DJ's Oldschool: This is the DJ's way of adjusting a beat-grid manually: By EAR. Newschool: Visually:, you could simply navigate to a spot where a beat is clearly visible (Spin the Vinyl, or drag the waveform with the mouse) until it's lined up, and the Lclick the Adjust BeatGrid button to set the beatgrid.

Another possible solution to this: Scenario: DJ Disables the Sync on the current deck, then Rclick+Hold functionality for the Sync button to: Adjust/Set/Align the current track to the 'other' 'playing' track, no matter where the current tracks beatgrid currently exists.

(Right Click would typically indicate a Shift+buttonpush for midi map devices, etc.)