-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Full Ableton Link support #10999
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
base: main
Are you sure you want to change the base?
Full Ableton Link support #10999
Conversation
|
Awesome! <3 |
|
Please finish merging this! I'm probably going to try bulding this branch tomorrow. I would use ableton link a lot. |
daschuer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this nice PR
Here some comments:
67bb0c2 to
a2bf288
Compare
af87be3 to
958b49a
Compare
|
Any updates on this? Super excited by Link support in Mixxx |
|
Try the builds of this PR - it should work in general. |
|
Pretty cool, I've tested it and tempo sync seems to work pretty well! Two things:
Also I think this would be a prime candidate for bar detection if/when Mixxx finally gets it (#4489). |
7812f3e to
da63a02
Compare
|
I updated this PR to my local development state. |
|
Any Mac Builds I can test? This is soo cool! |
Check the GitHub Actions builds: https://github.com/mixxxdj/mixxx/actions/runs/4558513041 |
|
Is there an ETA on this ? |
|
You can download a build of this PR now. General availability depends much on testing on different platforms with different sound driver configurations. It's developed under Windows11 with ASIO sounddriver. I would be happy if users of other OSes would execute the Ableton Link test plan: https://github.com/Ableton/link/blob/master/TEST-PLAN.md |
|
I compiled git version on linux but mixxx doesnt seem to send changes. |
|
The Link button just enables Link. You need to set a Sync Leader by the Crown button as well. And a sync in Ableton Link only happens if you change BPM or phase, just enable Link changes nothing. |
|
It works now but is possible to use it without syncing the bpm between the players? |
|
One deck must be the Sync-Leader, otherwise it is not clear wich Mixxx deck Link should sync to. But the other decks do not have to have Sync enabled. |
|
Testing it out, Link seems to be working but perhaps with bugs? Link worked the first time, from commandLine, 1st try: Windows threw a "application hung" error when I exited Mixxx (from the X button). Not a big deal, but worth fixing. See screenshot. Then after restarting in PowerShell instead of from commandLine... 2nd try: Logs attached. BUT the console output from try 1 has more lines than the mixxx.log.1 file? As if it stopped writing to the log? Same for try 3 from powershell; Mixxx wasnt playing but it was linked still when I pressed X, and it crashed on exit; and the log is incomplete. So both the lines of powershell that are savable (not all of it... my Starlight puts out a LOT of data and windows scrolls it away, and my tee function isnt working?) and the 3rd mixxx.log file are also attached for that one. It does not crash on exit every time. first try tuuli - mixxx.log.1.txt Screenshot of end of console crash on try 1 Windows PowerShell Mixxx - 3rd try.txt exit crash Cheers! EDIT: crash-exit reproducible and seems to be tied to the Link status:
|
|
@tuulikauri The Logs do not contain any information about the crash. Could you please create a Backtrace of such a crash, as described here: https://github.com/mixxxdj/mixxx/wiki/Creating-Backtraces#windows-using-x64dbg |
|
Done, sort of. The debugger keeps pausing Mixxx every second which makes it difficult to test the Link - so I switched from hitting F9 (Debug-run) to Execute Till Return (Pass all Exceptions). I ran it again and instead of just
With the debugger running Link behaves weird...
On exiting the first time:
2nd time with Do Not Break:
I tried again without the debugger; had to restart Ableton for Link to work, when I left it Link'd and quit Mixxx it didnt crash this time...? 3rd time in debugger:
If anyone has additional instructions I can follow, maybe there's some other settings I need to enable for a more effective stack trace of the crash? Though I suspect getting it reliably crashing again outside the debugger is a good first step, and then replicating those steps in the debugger. Any other ideas or questions let me know, thanks all! |
|
The first log contains some access violations related to COs: This PR adds only 2 ControllObjects, for the Link button and the number of linked peers. It seems that one of these COs is accessed after it is no longer existing in the memory. |
d69bf11 to
349695c
Compare
c73dba8 to
cd1a363
Compare
91008cb to
e7612a6
Compare
… namespace with a detailed expalantion as comment
018e196 to
247abde
Compare
|
@tuulikauri Please test again if the hung/crash at shutdown still occurs, I hope it is fixed now. |
Tested the Windows x64 artifact, it seems to be working fine. Changing tempo in Ableton Live (running locally on same machine running Mixxx) changes the Tempo Leaders tempo, and vise-versa, which is as-expected. Exiting Mixxx while Link is active no longer crashes Mixxx as it exits. Thanks so much! |
|
Just built it on manjaro linux, had to: to get the build to work, other dependancies etc I already had. I don't see a Link button at all up top. I'm in the right theme/skin. I do see this in terminal when running mixxx, so maybe it's failing to render the link button? Idk. In Program OpenGL status: "ES OpenGL ES 3.2 NVIDIA 580.119.02 (NVIDIA GeForce RTX 4070/PCIe/SSE2)" I did double check I built the JoergAtGithub version and not the official 2.7 alpha ;) The basics of the program seem to work fine, but I don't see a link button. I am however on a real time 6.17.5 kernel right now, if anything changes when i reboot to a non real time kernel I'll mention it. Only downloaded and started using Mixxx yesterday. It's awesome (not that I can really judge as a day 2 djing noob). |
|
I am on Late Night, Pale Moon skin. I have not built the normal main branch yet, I just used the manjaro repo mixxx release for the main branch. I only mentioned the openGL messages incase they were a sign of the "Link" button not rendering or something. |
|
6.12 LTS kernel Manjaro I don't know what's going on but i think it might be a me/mysystem problem, I build only what I absolutely must (like 3 programs) so I'm probably doing something wrong. Right now, I just want to get back to learning to dj so I'm going to go back to the official repo version which works perfectly. I'll probably come back and figure this out later. Official one spams this error nonstop while running to terminal: Build file creation print out in terminal from the link version, there's a lot of stuff it didn't find, but are they actually necessary? why did it compile at all without that stuff if it was critical to it working properly? For the official one the same output was: |
5353d89 to
75d676e
Compare
Based on the old PR #3783 from @spensbot, I created a new PR with Ableton Link support for Main.

The LINK-Button enables/disables the Link session. The number right to it shows the number of connected Link peers.
It syncronizes Tempo and Beat-Position (Phase). In Ableton Link all peers are equal, there is no leader. Therefore syncronization is always bidirectional.
In this Implementation, it syncs the Mixxx-Sync-Leader with the other peers. Means, it works only if the Crown-Button for a deck and the new LINK-Button are active.
I tested this with the official LinkHut-App of the Ableton Link package and with the Android App "G-Stomper Rythm", which is a free Drummachine, but with advertizing. A very cool Ableton Link software is also the music visualisation and lighting software from spensbot: https://captivatesynth.com/
Test Plan
Any Ableton Link software, should pass the following test plan:
https://github.com/Ableton/link/blob/master/TEST-PLAN.md
To install the official Linkhut reference tools used in the test plan, you can use VCPKG:
./vcpkg install ableton[hut,hutsilent]Closes #8650