{"id":13432290,"url":"https://github.com/Deep-Symmetry/open-beat-control","last_synced_at":"2025-03-16T23:31:05.571Z","repository":{"id":39759210,"uuid":"217953383","full_name":"Deep-Symmetry/open-beat-control","owner":"Deep-Symmetry","description":"Provides a subset of beat-link features over Open Sound Control.","archived":false,"fork":false,"pushed_at":"2024-07-08T12:35:16.000Z","size":723,"stargazers_count":42,"open_issues_count":6,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-27T11:50:25.272Z","etag":null,"topics":["ableton-link","dj-link","maxmsp","osc","pioneer","puredata"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Deep-Symmetry.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Deep-Symmetry","liberapay":"deep-symmetry","custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=LG5NLFL5T372W\u0026source=url"}},"created_at":"2019-10-28T02:47:39.000Z","updated_at":"2024-10-09T18:21:08.000Z","dependencies_parsed_at":"2023-02-08T20:31:05.928Z","dependency_job_id":"8691dd74-fd11-4680-ba1d-b46078fa9481","html_url":"https://github.com/Deep-Symmetry/open-beat-control","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deep-Symmetry%2Fopen-beat-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deep-Symmetry%2Fopen-beat-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deep-Symmetry%2Fopen-beat-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deep-Symmetry%2Fopen-beat-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Deep-Symmetry","download_url":"https://codeload.github.com/Deep-Symmetry/open-beat-control/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243949873,"owners_count":20373653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ableton-link","dj-link","maxmsp","osc","pioneer","puredata"],"created_at":"2024-07-31T02:01:10.063Z","updated_at":"2025-03-16T23:31:05.223Z","avatar_url":"https://github.com/Deep-Symmetry.png","language":"Clojure","funding_links":["https://github.com/sponsors/Deep-Symmetry","https://liberapay.com/deep-symmetry","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=LG5NLFL5T372W\u0026source=url","https://liberapay.com/deep-symmetry/donate","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M7EXPEX7CZN8Q"],"categories":["Clojure"],"sub_categories":[],"readme":"# open-beat-control\n\n\u003cimg align=\"right\" alt=\"Open Beat Control logo\"\n src=\"doc/modules/ROOT/assets/images/OBC-logo-padded-left.png\" width=\"275\" height=\"250\"\u003e\n\n[![project chat](https://img.shields.io/badge/chat-on%20zulip-brightgreen)](https://deep-symmetry.zulipchat.com/#narrow/stream/275322-beat-link-trigger)\n\nProvides a subset of\n[beat-link](https://github.com/Deep-Symmetry/beat-link#beat-link)\nfeatures over [Open Sound\nControl](https://en.wikipedia.org/wiki/Open_Sound_Control).\n\n\u003e :star2: This is the recommended replacement for the former\n\u003e standalone `beat-carabiner` daemon. That project is now embedded in\n\u003e this one as a library.\n\n[![License](https://img.shields.io/github/license/Deep-Symmetry/open-beat-control)](#licenses)\n\n\n## Background\n\nThis project is intended for people who want to use the beat-link\nlibrary to integrate with Pioneer DJ equipment, but are running in a\nnon-JVM environment (like [PureData](https://puredata.info),\n[Max](https://cycling74.com/products/max/), or [TouchDesigner](https://derivative.ca)),\nor who need to run a\nlightweight headless process (that is, with no attached monitor,\nkeyboard, and mouse for the GUI) on something like a Raspberry Pi, and\nthus are unable to take advantage of the features of [Beat Link\nTrigger](https://github.com/Deep-Symmetry/beat-link-trigger#beat-link-trigger).\n\n\u003e Note that if you have a Raspberry Pi 4 or newer, there are plenty of resources\n\u003e to run a GUI environment in a headless VNC server, and thus have the full\n\u003e power of Beat Link Trigger available. This is a much better solution today.\n\u003e \n\u003e Or, if you want to build your own integration using a richer API and can\n\u003e write Java code, you should start by forking\n\u003e [java-beat-control-example](https://github.com/Deep-Symmetry/java-beat-control-example)\n\u003e which will allow you to get much further. \n\nTo begin with, only a few features were supported, but over time (and\nbased on interest and requests) more are being added when practical\napproaches can be identified. The\n[Carabiner](https://github.com/brunchboy/carabiner#carabiner)\nintegration previously provided by\n[beat-carabiner](https://github.com/Deep-Symmetry/beat-carabiner#beat-carabiner)\nwas an early addition, and that project has become a library shared by\nboth this project and Beat Link Trigger itself, to solve the problem\nof diverging features and stale code.\n\n### Why OSC?\n\nOpen Sound Control is a strange protocol, and makes some aspects of\nimplementing an API awkward (there is no intrinsic support for\nrequests with responses), but it is widely supported in the kind of\nexperimental music environments that are most likely to benefit from a\nproject like this.\n\n## Getting Help\n\n\u003ca href=\"http://zulip.com\"\u003e\u003cimg align=\"right\" alt=\"Zulip logo\"\n src=\"doc/modules/ROOT/assets/images/zulip-icon-circle.svg\"\n width=\"128\" height=\"128\"\u003e\u003c/a\u003e\n\nDeep Symmetry\u0026rsquo;s projects are generously sponsored with hosting\nby \u003ca href=\"https://zulip.com\"\u003eZulip\u003c/a\u003e, an open-source modern team\nchat app designed to keep both live and asynchronous conversations\norganized. Thanks to them, you can \u003ca\nhref=\"https://deep-symmetry.zulipchat.com/#narrow/stream/275322-beat-link-trigger\"\u003echat\nwith our community\u003c/a\u003e, ask questions, get inspiration, and share your\nown ideas.\n\n## Installation\n\nInstall a Java runtime, and the latest `open-beat-control.jar` from\nthe\n[releases](https://github.com/Deep-Symmetry/open-beat-control/releases)\npage, on your target hardware.\n\n### Java Runtime\n\nThe minimum Java version needed is 9, but a current release will\nperform better and have more recent security updates. We currently use\n[Amazon Corretto\n11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html)\nwhich is a free OpenJDK 11 distribution with long-term support.\n\nIf you are using Open Beat Control on a Raspberry Pi, we have not yet\nstarted testing this (and very much would like to hear reports from\npeople who have), but it looks like [Raspbian\nBuster](https://www.raspberrypi.org/downloads/raspbian/) includes\nOpenJDK 11 as well, so it should be a great starting point.\n\n## Usage\n\nYou can either start open-beat-control manually when you want to use\nit, or configure it to start when your system boots.\n\nTo start open-beat-control manually, run:\n\n    java -jar open-beat-control.jar\n\nIt will log to the terminal window in which you are running it.\n\n\u003e :wrench: You will see warnings about \"illegal reflective access\n\u003e operations.\" This is normal and currently unavoidable, because\n\u003e several of the libraries used by Beat Link Trigger have not been\n\u003e updated to be compatible with the Java Module System introduced in\n\u003e Java 9. That may never happen; modules radically changed the rules,\n\u003e and the \"future release\" where these rules are enforced may never\n\u003e come.\n\n\nIf you instead want to run it at system startup, you will probably\nalso want to set a log-file path, so it logs to a rotated log file in\nyour standard system logs directory, something like:\n\n    java -jar open-beat-control.jar -L /var/log/open-beat-control.log\n\nOther options allow you to adjust many aspects of its behavior, and\nthere will likely be more to come.\n\n### Options\n\n    -o, --osc-port PORT        17002  Port number for OSC server\n    -r, --real-player                 Try to pose as a real CDJ (device #1-4)\n    -d, --device-number NUM           Use fixed device # (overrides -r)\n    -B, --bridge                      Use Carabiner to bridge to Ableton Link\n    -a, --ableton-master              When bridging, Ableton Link tempo wins\n    -b, --beat-align                  When bridging, sync to beats only, not bars\n    -c, --carabiner-port PORT  17000  When bridging, port # of Carabiner daemon\n    -l, --latency MS           20     How many milliseconds are we behind the CDJs\n    -L, --log-file PATH               Log to a rotated file instead of stdout\n    -h, --help                        Display help information and exit\n\nFor more information about these, please see the [User\nGuide](https://obc-guide.deepsymmetry.org/open-beat-control/README#startup)\n\n## User Guide\n\nTo learn how to communicate with Open Beat Control, and the OSC\nmessages you can send and receive, please see the\n[User Guide :book:](https://obc-guide.deepsymmetry.org/).\n\n### Community\n\nFor the moment, discussion of Open Beat Control is taking place on\n[Beat Link Trigger\u0026rsquo;s Zulip\nstream](https://deep-symmetry.zulipchat.com/#narrow/stream/275322-beat-link-trigger).\nIf enough people start using it and discussing issues that aren\u0026rsquo;t\ninteresting to Beat Link Trigger users, I will create a separate\nstream.\n\n## Funding\n\nOpen Beat Control is, and will remain, completely free and\nopen-source. If it has helped you, taught you something, or pleased\nyou, let us know and share some of your discoveries and code as\ndescribed above. If you\u0026rsquo;d like to financially support its\nongoing development, you are welcome (but by no means obligated) to\ndonate to offset the hundreds of hours of research, development, and\nwriting that have already been invested. Or perhaps to facilitate\nfuture efforts, tools, toys, and time to explore.\n\n\u003ca href=\"https://liberapay.com/deep-symmetry/donate\"\u003e\u003cimg style=\"vertical-align:middle\" alt=\"Donate using Liberapay\"\n    src=\"https://liberapay.com/assets/widgets/donate.svg\"\u003e\u003c/a\u003e using Liberapay, or\n\u003ca href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M7EXPEX7CZN8Q\"\u003e\u003cimg\n    style=\"vertical-align:middle\" alt=\"Donate\"\n    src=\"https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif\"\u003e\u003c/a\u003e using PayPal\n\n## Compatibility\n\nThis is in no way a sanctioned implementation of the protocols. It should be clear, but:\n\n\u003e :warning: Use at your own risk! For example, there are reports that\n\u003e the XDJ-RX (and XDJ-RX2) crash when Beat Link starts, so don\u0026rsquo;t\n\u003e use it with one on your network. As Pioneer themselves\n\u003e [explain](https://forums.pioneerdj.com/hc/en-us/community/posts/203113059-xdj-rx-as-single-deck-on-pro-dj-link-),\n\u003e the XDJ-RX does not actually implement the protocol:\n\u003e\n\u003e \u0026ldquo;The LINK on the RX [and RX2] is ONLY for linking to rekordbox\n\u003e on your computer or a router with WiFi to connect rekordbox mobile.\n\u003e It can not exchange LINK data with other CDJs or DJMs.\u0026rdquo;\n\nWhile these techniques appear to work for us so far, there are many\ngaps in our knowledge, and things could change at any time with new\nreleases of hardware or even firmware updates from Pioneer.\n\nYou should also not expect to be able to run Open Beat Control, or any\nproject like it, on the same machine that you are running rekordbox,\nbecause they will compete over access to network ports.\n\nOpen Beat Control seems to work great with CDJ-2000 Nexus gear, and\nworks fairly well (with less information available) with older\nCDJ-2000s. It has also been reported to work with XDJ-1000 gear. If\nyou can try it with anything else, *please* let us know what you learn\nin the [Beat Link Trigger Zulip\nstream](https://deep-symmetry.zulipchat.com/#narrow/stream/275322-beat-link-trigger),\nor if you have worked out actionable details about something that\ncould be improved, [open an\nIssue](https://github.com/Deep-Symmetry/open-beat-control/issues) or\nsubmit a pull request so we can all improve our understanding\ntogether.\n\nIf something isn\u0026rsquo;t working with your hardware and you don\u0026rsquo;t yet know\nthe details why, but are willing to learn a little and help figure it\nout, look at the\n[dysentery project](https://github.com/Deep-Symmetry/dysentery#dysentery),\nwhich is where we are organizing the research tools and results which\nmade programs like Open Beat Control possible.\n\n## Startup Issues\n\nIf you downloaded the `.jar` version and are using a recent Java\ndistribution, double-clicking doesn\u0026rsquo;t open up the application,\nso open a terminal window and run it from the command line:\n\n    java -jar open-beat-control.jar\n\nIf that does not work, at least you will be able to see a detailed\nreport of what went wrong, which can help you troubleshoot the issue.\n\nMake sure you have a current OpenJDK distribution installed (we build\nreleases with [Amazon Corretto\n11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html)).\n\n## Licenses\n\n\u003ca href=\"http://deepsymmetry.org\"\u003e\u003cimg align=\"right\" alt=\"Deep Symmetry\"\n src=\"doc/modules/ROOT/assets/images/DS-logo-github.png\" width=\"250\" height=\"150\"\u003e\u003c/a\u003e\n\nCopyright © 2019–2023 [Deep Symmetry, LLC](https://deepsymmetry.org)\n\nDistributed under the Eclipse Public License either version 2.0 or (at\nyour option) any later version. By using this software in any fashion,\nyou are agreeing to be bound by the terms of this license. You must\nnot remove this notice, or any other, from this software.\n\n### Library Licenses\n\n#### [Remote Tea](https://sourceforge.net/projects/remotetea/)\n\nUsed for communicating with the NFSv2 servers on players, licensed\n under the [GNU Library General Public License, version\n 2](https://opensource.org/licenses/LGPL-2.0).\n\n#### The [Kaitai Struct](http://kaitai.io) Java runtime\n\nUsed for parsing rekordbox exports and media analysis files, licensed\nunder the [MIT License](https://opensource.org/licenses/MIT).\n\n#### [Antora](https://antora.org)\n\nUsed to build the [user guide](https://obc-guide.deepsymmetry.org/),\nfor embedding inside the application, and hosting on\n[deepsymmetry.org](https://deepsymmetry.org). Antora is licensed under\nthe [Mozilla Public License Version\n2.0](https://www.mozilla.org/en-US/MPL/2.0/) (MPL-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeep-Symmetry%2Fopen-beat-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDeep-Symmetry%2Fopen-beat-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDeep-Symmetry%2Fopen-beat-control/lists"}