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

Support Ableton Link via SuperDirt instead of Carabiner? #185

Closed
jarmitage opened this issue Mar 16, 2020 · 5 comments
Closed

Support Ableton Link via SuperDirt instead of Carabiner? #185

jarmitage opened this issue Mar 16, 2020 · 5 comments

Comments

@jarmitage
Copy link

SuperCollider 3.11.0 supports Ableton Link: https://github.com/supercollider/supercollider/releases/tag/Version-3.11.0

Currently Tidal supports Ableton Link via a separate tool called Carabiner: https://forum.toplap.org/t/link-support-preview/418/16

Would it now be more streamlined/maintainable for Tidal users to access Ableton Link via SuperDirt?

@yaxu
Copy link
Collaborator

yaxu commented Mar 16, 2020

Yes I think so.
It would be a generally useful thing for tidal to be able to follow supercollider's tempo clock. Then I guess link support would follow from that 'for free'.
I've had mixed results with carabiner, and would be more in favour of putting time (ha) into getting sync with supercollider right

@jarmitage
Copy link
Author

I am not sure how SuperDirt currently does scheduling, but it appears to not use TempoClock, which LinkClock is based on

@telephon
Copy link
Contributor

All the timing is done by tidal, superdirt just uses the timestamps that tidal produces. It is a bit difficult to tell how these timestamps could be processed to fit on the link clock.

@jamshark70
Copy link

The devil is in the details of course. How will Tidal sync to SC's LinkClock? You can't assume LinkClock will be strictly monotonic because it's constantly making micro-adjustments to match other peers on the network -- so you couldn't use the network to identify a starting time and then let Tidal run under its own power. You'd have to slave Tidal to SC's clock, using some kind of constantly-running network messaging that also absorbs and compensates for network jitter...

... which is all the stuff that Link is already doing for you, better than you could rearchitect it for yourself. (I say that having tried and partially failed to write my own network sync for SC. It is harder than you think.)

My opinion is that you won't actually save any effort this way.

It would be easier to import the Link library directly into Tidal, and get rid of carabiner that way.

@yaxu
Copy link
Collaborator

yaxu commented Jun 3, 2020

Good points @jamshark70. I'll close this for now.
Unfortunately Haskell <> C++ is quite hard. I always find c++ building a dark art in itself, and the functional model doesn't map well to C++. I see there is a code generator that's maintained though https://github.com/wavewave/fficxx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants