deep-symmetry / carabiner Goto Github PK
View Code? Open in Web Editor NEWA loose connector for interacting with Ableton Link
License: GNU General Public License v2.0
A loose connector for interacting with Ableton Link
License: GNU General Public License v2.0
When starting Carabiner most of the time it jumps itself to whatever bpm the other device is working at, but sometimes it forces the partner to jump to 120bpm. I don't know whether this is part of the protocol. or a bug with my partner application (Desktop MPC).
Is there some way to debug the link, or an explanation on why this might happen
On what Visual C++ Version was this tested? I tried the software with the 2015 version and the 2017 version, but always got the error message that needed .dll-files don't exist, even though they exist.
I've been trying different .dll Files etc. but nothing seems to solve the problem
Description
Hello, I'm developing a program on ESP32 that connects to a carabiner instance running on a computer in the network.
But I'm facing an issue : carabiner's server socket is bound on localhost, and is unreachable from another device. I think it should listen to 0.0.0.0 (any address)
Potential solution
Would it be possible to add a command line parameter, in order to replace the default IP, and not only the port ?
Thanks for the good work !
Hi,
I have read through the documentation but couldn't find any information on this.
My goal is to let Ableton Link be the master tempo to control a DJM's effect unit BPM in sync and quantized on all four channels but also when USB is selected as the input source. I usually have four tracks in my Ableton set which I feed accordingly to my DJM mixer into channels 1-4. As far as I know, Carabiner can only act as one virtual player and therefore only control the effect units BPM of that particular deck number. Further, it seems to me that a Pro DJ Link is only engaged when Line or Digital is selected as the input source.
Regards
Christian
Hey!
I have been using the beat-link-trigger up until now because it supports translation of the dj link to midi but it requires carrying an expensive laptop just to act as a translator...
Is there any chance that the link to midi functionality could be ported to carabiner so this simple link->midi clock translation can run on a headless and cheap device? The idea is that we would specify the midi device (usb midi interface), midi start and midi start behavior and the player to watch as startup parameters of the carabiner and all it would do would be syncing a connected midi device same like beat-link-trigger does but without the gui and other stuff we don't need for this use case.
Thanks!
Marek
Hello,
When i try to install the .dmg on my Macbook it shows me the errormessage: "filesystem not found".
Can someone help me out?
I installed the Beat Link Trigger.jar via Terminal and connected my CDJ's, but i cant run Carabiner.
Regards
Henrik
I think this should be working now, I updated the cmake configuration to do it, and it worked on my Big Sur mac, but the results from the GitHub CI build seem to still only include x86_64
code.
It turns out that if commands get written close enough after one another on Carabiner’s socket, they get read as a single message, which causes parse errors like:
Failed to parse bpm: 127.4239501953125beat-at-time 355485494024 4.0
So I guess we need something to separate commands. To do this in a backwards compatible way, don’t require them, but allow them (and split on them). Probably newline? And add a new command that Beat Link Trigger can use to test if this is allowed before using it?
Will a windows version be available? if so when?
Continuing my adventures with LinkToPy and Carabiner... I have an example program which toggles between two/multiple tempos, it tracks the differences between AbletonLink time and CPU time and schedules tempo change to happen on the downbeat of a bar.
I used the time_at_beat()
and beat_at_time()
calls to calculate the desired times, however I am seeing that sometimes the callbacks do not complete in a timely manner (ie > 1.0s), risking the integrity of the scheduling. If I re-call the function the callback appears to complete quickly.
https://github.com/mungewell/LinkToPy/blob/examples/example/toggle_bpm.py#L115
How quickly should these respond, what's a sensible maximum/timeout value?
My onscreen debug gives
Tempo change scheduled for beat: 5364.000000 @ 229185.327975 (now 229193.939212)
Tempo set to: 90.000000 (beat: 5363.983610 @ 229193.947327)
Tempo change scheduled for beat: 5380.000000 @ 229194.042372 (now 229204.595869)
Tempo set to: 110.000000 (beat: 5379.998919 @ 229204.606412)
Tempo change scheduled for beat: 5396.000000 @ 229204.689938 (now 229213.334753)
Tempo set to: 90.000000 (beat: 5395.995767 @ 229213.342822)
TimeAtBeat slow response!
Tempo change scheduled for beat: 5412.000000 @ 229214.431901 (now 229223.997288)
Tempo set to: 110.000000 (beat: 5412.012508 @ 229224.006812)
Tempo change scheduled for beat: 5428.000000 @ 229224.083124 (now 229232.715028)
Tempo set to: 90.000000 (beat: 5427.975556 @ 229232.722845)
I am running on Xubuntu, with Carabiner 1.1.6.
When building using CMake
, libatomic
is not linked.
xartrick@sylvanas:~/dev/carabiner/build$ cmake --build .
[..]
[ 71%] Linking CXX executable bin/Carabiner
/usr/bin/ld: CMakeFiles/Carabiner.dir/carabiner.cpp.o: in function `std::__atomic_base<unsigned long>::is_lock_free() const':
carabiner.cpp:(.text._ZNKSt13__atomic_baseImE12is_lock_freeEv[_ZNKSt13__atomic_baseImE12is_lock_freeEv]+0x19): undefined reference to `__atomic_is_lock_free'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/Carabiner.dir/build.make:100: bin/Carabiner] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/Carabiner.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
Building
on README.md
;Add atomic
to target_link_libraries
in CMakeLists.txt
.
master
Working to overcome some issues with Desktop MPC. It can peer with a Ableton Link session and correctly gets/sets/tracks tempo, however it is missing the start/stop capabilities. It does output MMC messages, and I wrote a small Python script to receive these and issue the AbletonLink Stop/Start.
I added the appropriate commands to 'Link-to-Py' here:
bdyetton/LinkToPy#1
However the bug I am seeing is that the peer (SoundBrenner Metronome app) waits for 2nd bar before starting/producing clicks. This is probably a lack of my know how, rather than a bug... but trying to understand. I have not measured if there is a time delay/offset between MPC and SB once they are both playing, but seems OK at a glance.
When starting a stopped session (ie 'Playing: false') is there something else other than issuing the start-playing
message with a time stamp? At present I am using the time stamp from the previous status message/callback, I guess it is better to correct this with the increase in local time since that occurred.
At the moment of pressing the 'play' button, are there other commands which should be sent to make this moment in time the downbeat?
I am using the prebuilt 1.1.6 release on Windows 10. MPC v2.10 running on the same machine. WiFi link to SoundBrenner app on Android.
I get the following error in syslog after a few seconds having Carabiner and Bitwig synchronized. The Peers value flicks beteween 0 and 1 and then it segfaults:
Mar 18 16:08:46 ovitus kernel: Carabiner_Linux[4654]: segfault at 0 ip 000055608e00d696 sp 00007f9df5ddb410 error 4 cpu 12 in Carabiner_Linux_x64[55608de00000+2d7000]
Mar 18 16:08:46 ovitus kernel: Code: 95 c0 c9 c3 55 48 89 e5 48 83 ec 10 48 89 7d f8 48 8b 45 f8 48 89 c7 e8 dc 34 00 00 c9 c3 55 48 89 e5 48 89 7d f8 48 8b 45 f8 <48> 8b 00 5d c3 90 55 48 89 e5 48 89 7d f8 48 8b 45 f8 48 83 c0 08
Hi,
Thanks for the great software!
I'm having issues with the Windows version of the latest release (v1.1.0). Previous versions available here run fine, however, the latest version comes up with a "Failed to parse beat time" error message (screenshot attached).
I've noticed that the file size of the Zip and exe. have dropped considerably since from the previous version also. Maybe the latest build didn't work properly?
I've had a go at building an executable from the source code myself but I'm encountering problems there also (most likely due to my limited experience with this sort of thing).
Any help is appreciated. Although version 1.0.0 works fine for me so no biggie :)
Hi, following your instructions i can only get 7% compiliation in Powershell using MinGW and/or MSYS.
If i get a stable release of gflags i get 12%. I began a thread @ stackoverflow here:
There are screenshots there in the original question.
Please help.
Thanks Robbie
Describe the bug
I tried downloading 1.1.3
and v0.1.4-SNAPSHOT
and both crash on start with the following output:
dyld: lazy symbol binding failed: Symbol not found: ____chkstk_darwin
Referenced from: /Applications/Carabiner (which was built for Mac OS X 10.15)
Expected in: /usr/lib/libSystem.B.dylib
dyld: lazy symbol binding faileddyld: Symbol not found: ____chks: Symbol not found: ____chkstk_dtk_darwin
Referenced from: /Aparwin
Referenced from: /Applicplications/Carabiner (which was ations/Carabiner (which was builbuilt for Mac OS X 10.15)
Expet for Mac OS X 10.15)
Expectedcted in: /usr/lib/libSystem.B.dy in: /usr/lib/libSystem.B.dylib
lib
dyld: Symbol not found: ____chkstk_darwin
Referenced from: /Applications/Carabiner (which was built for Mac OS X 10.15)
Expected in: /usr/lib/libSystem.B.dylib
Abort trap: 6
When I build from source I get a binary that works. I realise that my OS version is pretty old so perhaps you don't support it.
Desktop (please complete the following information):
macOS 10.13.6
openjdk version "13.0.2" 2020-01-14
1.1.3
Thanks for carabiner! I'm trying to get it working with https://github.com/tidalcycles/tidal, a haskell-based thing. I get the bpm fine but I'm struggling to work out the meaning of the 'start' parameter so that I can get the phase right. If I telnet into carabiner, I see that if I change the bpm, then the value in the start parameter also changes:
bpm 120
status { :peers 1 :bpm 120.000000 :start 15578165470 :beat 43.826974 }
bpm 130
status { :peers 1 :bpm 130.000000 :start 15580539346 :beat 61.756445 }
bpm 110
status { :peers 1 :bpm 110.000000 :start 15574531192 :beat 71.633537 }
If I decrease the bpm, then the start point goes back in time. Is that because it's telling me the time that it would have been after the current number of beats if the bpm had been the new value all along?
I'm guessing so, but as I'm getting funny behaviour out of my calculations, I thought I'd check that my (linux mint) system isn't behaving strangely..
Thanks for this great little tool!
I've been playing around a bit and noticed that if I force-beat-at-time via Carabiner the link session skips as expected - but if I do this from another app the session skips but Carabiner doesn't send me a status message to reflect the change.
Is a status update supposed to be sent in this instance?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.