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

Ableton Link integration #451

Open
Be-ing opened this issue Feb 6, 2021 · 5 comments
Open

Ableton Link integration #451

Be-ing opened this issue Feb 6, 2021 · 5 comments

Comments

@Be-ing
Copy link

Be-ing commented Feb 6, 2021

Ableton Link is a network protocol for communicating musical timing information. It would be great to bypass projectM's built in beat analysis DSP with Ableton Link to facilitate integration with other audio and video applications. Note that the Link library is licensed GPLv2+.

@revmischa
Copy link
Collaborator

Yeah that'd be awesome

@Be-ing
Copy link
Author

Be-ing commented Feb 6, 2021

The "quantum" in the Link protocol could be used to trigger preset changes on musical phrase boundaries instead of an arbitrary number of seconds.

@revmischa
Copy link
Collaborator

revmischa commented Feb 6, 2021

I'm not terribly sure but some of that could maybe be done by modifying https://github.com/projectM-visualizer/projectm/blob/master/src/libprojectM/projectM.cpp#L309
Edit: no that's not it...

@revmischa
Copy link
Collaborator

I think this is where the values get fed into the current preset for evaluation, if you read in the beat signal from Link you could synchronize time/fps I think

And I believe here for the shaders: https://github.com/projectM-visualizer/projectm/blob/master/src/libprojectM/Renderer/ShaderEngine.cpp#L444

@kblaschke
Copy link
Member

kblaschke commented Apr 7, 2022

Due to license restrictions, we cannot use any headers from the Ableton Link API in libprojectM unless we also change the license from LGPL to GPL.

What is possible though is an API function/callback mechanism that would allow applications to feed the required data into libprojectM, overriding the internal beat detection. As long as the embedding application is GPL-licensed (I put the projectMSDL rewrite under GPL, so that's a given), it could use the Ableton Link library to tretrieve the beat data and then feed it into libprojectM. Same goes for closed-source applications if someone has a commercial Ableton Link license.

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

3 participants