GithubHelp home page GithubHelp logo

deep-symmetry / open-beat-control Goto Github PK

View Code? Open in Web Editor NEW
36.0 5.0 3.0 721 KB

Provides a subset of beat-link features over Open Sound Control.

License: Eclipse Public License 2.0

Clojure 100.00%
osc pioneer dj-link ableton-link puredata maxmsp

open-beat-control's Introduction

open-beat-control

Open Beat Control logo

project chat

Provides a subset of beat-link features over Open Sound Control.

🌟 This is the recommended replacement for the former standalone beat-carabiner daemon. That project is now embedded in this one as a library.

License

Background

This project is intended for people who want to use the beat-link library to integrate with Pioneer DJ equipment, but are running in a non-JVM environment (like PureData, Max, or TouchDesigner), or who need to run a lightweight headless process (that is, with no attached monitor, keyboard, and mouse for the GUI) on something like a Raspberry Pi, and thus are unable to take advantage of the features of Beat Link Trigger.

Note that if you have a Raspberry Pi 4 or newer, there are plenty of resources to run a GUI environment in a headless VNC server, and thus have the full power of Beat Link Trigger available. This is a much better solution today.

Or, if you want to build your own integration using a richer API and can write Java code, you should start by forking java-beat-control-example which will allow you to get much further.

To begin with, only a few features were supported, but over time (and based on interest and requests) more are being added when practical approaches can be identified. The Carabiner integration previously provided by beat-carabiner was an early addition, and that project has become a library shared by both this project and Beat Link Trigger itself, to solve the problem of diverging features and stale code.

Why OSC?

Open Sound Control is a strange protocol, and makes some aspects of implementing an API awkward (there is no intrinsic support for requests with responses), but it is widely supported in the kind of experimental music environments that are most likely to benefit from a project like this.

Getting Help

Zulip logo

Deep Symmetry’s projects are generously sponsored with hosting by Zulip, an open-source modern team chat app designed to keep both live and asynchronous conversations organized. Thanks to them, you can chat with our community, ask questions, get inspiration, and share your own ideas.

Installation

Install a Java runtime, and the latest open-beat-control.jar from the releases page, on your target hardware.

Java Runtime

The minimum Java version needed is 9, but a current release will perform better and have more recent security updates. We currently use Amazon Corretto 11 which is a free OpenJDK 11 distribution with long-term support.

If you are using Open Beat Control on a Raspberry Pi, we have not yet started testing this (and very much would like to hear reports from people who have), but it looks like Raspbian Buster includes OpenJDK 11 as well, so it should be a great starting point.

Usage

You can either start open-beat-control manually when you want to use it, or configure it to start when your system boots.

To start open-beat-control manually, run:

java -jar open-beat-control.jar

It will log to the terminal window in which you are running it.

🔧 You will see warnings about "illegal reflective access operations." This is normal and currently unavoidable, because several of the libraries used by Beat Link Trigger have not been updated to be compatible with the Java Module System introduced in Java 9. That may never happen; modules radically changed the rules, and the "future release" where these rules are enforced may never come.

If you instead want to run it at system startup, you will probably also want to set a log-file path, so it logs to a rotated log file in your standard system logs directory, something like:

java -jar open-beat-control.jar -L /var/log/open-beat-control.log

Other options allow you to adjust many aspects of its behavior, and there will likely be more to come.

Options

-o, --osc-port PORT        17002  Port number for OSC server
-r, --real-player                 Try to pose as a real CDJ (device #1-4)
-d, --device-number NUM           Use fixed device # (overrides -r)
-B, --bridge                      Use Carabiner to bridge to Ableton Link
-a, --ableton-master              When bridging, Ableton Link tempo wins
-b, --beat-align                  When bridging, sync to beats only, not bars
-c, --carabiner-port PORT  17000  When bridging, port # of Carabiner daemon
-l, --latency MS           20     How many milliseconds are we behind the CDJs
-L, --log-file PATH               Log to a rotated file instead of stdout
-h, --help                        Display help information and exit

For more information about these, please see the User Guide

User Guide

To learn how to communicate with Open Beat Control, and the OSC messages you can send and receive, please see the User Guide 📖.

Community

For the moment, discussion of Open Beat Control is taking place on Beat Link Trigger’s Zulip stream. If enough people start using it and discussing issues that aren’t interesting to Beat Link Trigger users, I will create a separate stream.

Funding

Open Beat Control is, and will remain, completely free and open-source. If it has helped you, taught you something, or pleased you, let us know and share some of your discoveries and code as described above. If you’d like to financially support its ongoing development, you are welcome (but by no means obligated) to donate to offset the hundreds of hours of research, development, and writing that have already been invested. Or perhaps to facilitate future efforts, tools, toys, and time to explore.

Donate using Liberapay using Liberapay, or Donate using PayPal

Compatibility

This is in no way a sanctioned implementation of the protocols. It should be clear, but:

⚠️ Use at your own risk! For example, there are reports that the XDJ-RX (and XDJ-RX2) crash when Beat Link starts, so don’t use it with one on your network. As Pioneer themselves explain, the XDJ-RX does not actually implement the protocol:

“The LINK on the RX [and RX2] is ONLY for linking to rekordbox on your computer or a router with WiFi to connect rekordbox mobile. It can not exchange LINK data with other CDJs or DJMs.”

While these techniques appear to work for us so far, there are many gaps in our knowledge, and things could change at any time with new releases of hardware or even firmware updates from Pioneer.

You should also not expect to be able to run Open Beat Control, or any project like it, on the same machine that you are running rekordbox, because they will compete over access to network ports.

Open Beat Control seems to work great with CDJ-2000 Nexus gear, and works fairly well (with less information available) with older CDJ-2000s. It has also been reported to work with XDJ-1000 gear. If you can try it with anything else, please let us know what you learn in the Beat Link Trigger Zulip stream, or if you have worked out actionable details about something that could be improved, open an Issue or submit a pull request so we can all improve our understanding together.

If something isn’t working with your hardware and you don’t yet know the details why, but are willing to learn a little and help figure it out, look at the dysentery project, which is where we are organizing the research tools and results which made programs like Open Beat Control possible.

Startup Issues

If you downloaded the .jar version and are using a recent Java distribution, double-clicking doesn’t open up the application, so open a terminal window and run it from the command line:

java -jar open-beat-control.jar

If that does not work, at least you will be able to see a detailed report of what went wrong, which can help you troubleshoot the issue.

Make sure you have a current OpenJDK distribution installed (we build releases with Amazon Corretto 11).

Licenses

Deep Symmetry

Copyright © 2019–2023 Deep Symmetry, LLC

Distributed under the Eclipse Public License either version 2.0 or (at your option) any later version. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.

Library Licenses

Used for communicating with the NFSv2 servers on players, licensed under the GNU Library General Public License, version 2.

The Kaitai Struct Java runtime

Used for parsing rekordbox exports and media analysis files, licensed under the MIT License.

Used to build the user guide, for embedding inside the application, and hosting on deepsymmetry.org. Antora is licensed under the Mozilla Public License Version 2.0 (MPL-2.0).

open-beat-control's People

Contributors

brunchboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

paulyc kokospalme

open-beat-control's Issues

Phrase information

Is your feature request related to a problem? Please describe.
Hello, would it be possible to make phrase information available to OBC? It seems like it is available in beat-link Deep-Symmetry/beat-link-trigger#119

Describe the solution you'd like
Have access to phrase information sent from players over ProDJ Link.

Describe alternatives you've considered
The only alternative I know of is to use Rekordbox with CDJ3000 and the RB-DMX1 lighting control unit. I'd like to be able to do this without being confined to Rekordbox

Additional context
N/a

osc communication help

hello first, thanks to all team members for the job you ve done on this project.

i try raspberry version seem work nice, to sync an mpclive (ableton link compatible) to xdj, if set -r -d 4 -B -a args
well got mpc tempo master but if an xdj decide to take master tempo never manage to give it back to mpclive again

i try to call osc serveur /master appoint nbplayer function
tryed many way c# c++ phyton nothing seem too work
just manage to produce a parsing error logged in terminal on sending a random upd packet to the server.

is they a way to have log file on osc server activity
incoming call, state... for investigate ?

i dont know well the protocol maybe i miss something , should someone help me to get on the way ?

thanks,
mickael

Help needed

Hello,

thank you for reading this.
I want to get beat informations from my pioneer controller.
The jar file i downloaded runs fine, finds my controller over the network and logs first informations. All of them are correct, like amount of tracks loaded, amount of artists loaded and so on. Now i want my own, self written in rust, programm to get additional informations like the beat package described in the user guide. But i really dont know how to get them. The guide speaks about configuring "Max/MSP" and "udpsend/udpreceive" but how do i use any of that? What is a Max/MSP or udpsend? My best bet was to connect via udp to port :17002, but that resulted only in crashes.

What do i have to do?
Any help would be greatly appreciated!

It would be nice to be able to set the player number.

Is your feature request related to a problem? Please describe.

Open Beat Control ( OBC ) seems to prefer to grab the next-highest player number on start - it might be useful to specifically set the player number so that it does not clash with other players' settings.

Describe the solution you'd like

jar -java obc.jar --player 3

Describe alternatives you've considered

The workaround is to always ensure that the players are online and the Link Session established prior to starting OBC. If OBC is running on a laptop or small device like a raspberry pi, it would be better to be able to "hard-code" which players get which number to prevent clashes and confusion during setup.

Additional context

I own 2 XDJs and want to start integrating Ableton Link enabled devices into my DJing - OBC seems to be the best way to do this.

OBC issue(s) when opening on Macbook Pro (Catalina)

Last login: Wed Jan 22 03:09:38 on console
positive69@PSTVMACBOOK ~ % java -jar /Users/positive69/Downloads/open-beat-control-0.1.0-Preview.jar
2020-Jan-22 21:38:40 INFO [open-beat-control.logs:87] - Open Beat Control version 0.1.0-SNAPSHOT-62-0xdec7 built Mon Jan 20 00:30:32 UTC 2020
2020-Jan-22 21:38:40 INFO [open-beat-control.logs:88] - Java version 13.0.1, Java HotSpot(TM) 64-Bit Server VM, Oracle Corporation
2020-Jan-22 21:38:40 INFO [open-beat-control.logs:89] - Operating system version Mac OS X 10.15.2
2020-Jan-22 21:38:41 INFO [open-beat-control.core:179] - Running OSC server on port 17002
2020-Jan-22 21:38:41 INFO [open-beat-control.core:190] - Waiting for Pro DJ Link devices...
2020-Jan-22 21:38:41 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:3, name:XDJ-1000MK2, address:192.168.7.197]
2020-Jan-22 21:38:41 INFO [org.deepsymmetry.beatlink.VirtualCdj:588] - Found matching network interface en0 (en0), will use address /192.168.7.254/22 [/192.168.7.255]
2020-Jan-22 21:38:41 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:4, name:XDJ-1000MK2, address:192.168.7.211]
2020-Jan-22 21:38:45 INFO [open-beat-control.core:121] - Virtual CDJ running as Player 5
2020-Jan-22 21:38:45 INFO [open-beat-control.core:121] - Virtual CDJ running as Player 5
2020-Jan-22 21:38:45 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:5, name:open-beat-control, address:192.168.7.203]
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:500] - Idle dbserver client closer shutting down.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:5, name:"open-beat-control".
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:4, name:"XDJ-1000MK2".
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:3, name:"XDJ-1000MK2".
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.CrateDigger:91] - CrateDigger starting because MetadataFinder[running:true, passive:false, loadedTracks:{}, mountedMediaSlots:[], mountedMediaDetails:[], metadataCacheFiles:{}] has.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 5 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:3, slot:USB_SLOT]
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:3, slot:CD_SLOT]
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.CrateDigger:319] - Fetching rekordbox export.pdb from player 3, slot USB_SLOT
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:4, slot:CD_SLOT]
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.CrateDigger:324] - Finished fetching export.pdb from player 3, slot USB_SLOT; received 270.3 kB in 514ms, 525.9 kB/s.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:273] - Indexed 75 Tracks.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:315] - Indexed 19 Artists.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:357] - Indexed 8 Colors.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:409] - Indexed 20 Albums.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:451] - Indexed 13 Labels.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:493] - Indexed 19 Musical Keys.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:535] - Indexed 9 Genres.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:561] - Indexed 63 Artwork Paths.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:637] - Indexed 1 playlists.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.cratedigger.Database:668] - Indexed 1 playlist folders.
2020-Jan-22 21:38:45 INFO [org.deepsymmetry.beatlink.data.CrateDigger:331] - Parsing database took 32ms, 2343 tracks/s
2020-Jan-22 21:38:46 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 5 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:46 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 21:38:46 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 21:38:46 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 21:38:46 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 21:38:46 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 21:38:46 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:1, name:"DJS-1000".
2020-Jan-22 21:38:46 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:1, name:DJS-1000, address:192.168.7.229]
2020-Jan-22 21:38:46 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:47 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:48 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 5 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:49 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:51 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 5 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:51 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:323] - Player 5 never responded with a valid rekordbox dbserver port. Won't attempt to request metadata.
2020-Jan-22 21:38:52 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 21:38:52 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:323] - Player 1 never responded with a valid rekordbox dbserver port. Won't attempt to request metadata.

Update latency value via osc message

Is your feature request related to a problem? Please describe.
Latency may vary depending on the specifics of the software and hardware being run on link, for example some hardware runs link. For any UI or app controlling Open Beat Control via OSC, it might be useful to update the latency value via an osc message, similar to the midi clock "offset" in the iOS "Link to MIDI" app.

/latency set 22
/latency get
/latency stream

Describe the solution you'd like

When I'm debugging a CDJ + Link setup, i want to be able to play a simple loop on the pioneer hardware ( metronome, basically ) and a similar loop on the Link-enabled system and align them precisely by adjusting the latency, similar to the Link to MIADI iOS app:

https://www.dropbox.com/s/lri0cr0oeiw3whw/IMG_0672.jpeg?dl=0

Describe alternatives you've considered
The only alternative is to guess the latency you need and repeatedly stop, start and test the latency to see if it sounds correct.

Crashes when Max sends osc message

From Max I'm sending "/beats stream 17005"

Then this in the console

java.nio.channels.AsynchronousCloseException
        at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
        at java.base/sun.nio.ch.DatagramChannelImpl.endWrite(DatagramChannelImpl.java:1030)
        at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:827)
        at overtone.osc.peer$chan_send.invokeStatic(peer.clj:224)
        at overtone.osc.peer$chan_send.invoke(peer.clj:216)
        at overtone.osc.peer$send_loop$fn__938.invoke(peer.clj:107)
        at overtone.osc.peer$send_loop.invokeStatic(peer.clj:102)
        at overtone.osc.peer$send_loop.invoke(peer.clj:84)
        at clojure.lang.AFn.applyToHelper(AFn.java:165)
        at clojure.lang.AFn.applyTo(AFn.java:144)
        at clojure.core$apply.invokeStatic(core.clj:665)
        at clojure.core$apply.invoke(core.clj:660)
        at overtone.osc.peer$sender_thread$fn__1005.invoke(peer.clj:212)
        at clojure.lang.AFn.run(AFn.java:22)
        at java.base/java.lang.Thread.run(Thread.java:831)
Exception in send-loop:  #error {
 :cause nil
 :via
 [{:type java.nio.channels.AsynchronousCloseException
   :message nil
   :at [java.nio.channels.spi.AbstractInterruptibleChannel end AbstractInterruptibleChannel.java 202]}]
 :trace
 [[java.nio.channels.spi.AbstractInterruptibleChannel end AbstractInterruptibleChannel.java 202]
  [sun.nio.ch.DatagramChannelImpl endWrite DatagramChannelImpl.java 1030]
  [sun.nio.ch.DatagramChannelImpl send DatagramChannelImpl.java 827]
  [overtone.osc.peer$chan_send invokeStatic peer.clj 224]
  [overtone.osc.peer$chan_send invoke peer.clj 216]
  [overtone.osc.peer$send_loop$fn__938 invoke peer.clj 107]
  [overtone.osc.peer$send_loop invokeStatic peer.clj 102]
  [overtone.osc.peer$send_loop invoke peer.clj 84]
  [clojure.lang.AFn applyToHelper AFn.java 165]
  [clojure.lang.AFn applyTo AFn.java 144]
  [clojure.core$apply invokeStatic core.clj 665]
  [clojure.core$apply invoke core.clj 660]
  [overtone.osc.peer$sender_thread$fn__1005 invoke peer.clj 212]
  [clojure.lang.AFn run AFn.java 22]
  [java.lang.Thread run Thread.java 831]]}
stacktrace:  nil

Any thoughts?

No Pro DJ Link devices found when running on Windows 10

Describe the bug
When running on Windows 10, no Pro DJ Link devices are found.

To reproduce
Steps to reproduce the behavior:

  1. Connect Pro DJ Link devices to the PC via ethernet (in this case 2 x CDJ-2000NXS2, 1x DJM-900NXS2)
  2. Run the app java -jar .\open-beat-control-0.1.1.jar
  3. The app doesn't find any devices
PS D:\Downloads> java -jar .\open-beat-control-0.1.1.jar
2021-Jan-31 20:43:15 INFO [open-beat-control.logs:86] - Open Beat Control version 0.1.1 built Mon Dec 28 23:45:36 UTC 2020
2021-Jan-31 20:43:15 INFO [open-beat-control.logs:87] - Java version 11.0.10, OpenJDK 64-Bit Server VM, AdoptOpenJDK
2021-Jan-31 20:43:15 INFO [open-beat-control.logs:88] - Operating system version Windows 10 10.0
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by clojure.lang.InjectedInvoker/0x0000000800231840 (file:/D:/Downloads/open-beat-control-0.1.1.jar) to method sun.nio.ch.DatagramSocketAdaptor.bind(java.net.SocketAddress)
WARNING: Please consider reporting this to the maintainers of clojure.lang.InjectedInvoker/0x0000000800231840
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2021-Jan-31 20:43:15 INFO [open-beat-control.core:193] - Running OSC server on port 17002
2021-Jan-31 20:43:15 INFO [open-beat-control.core:206] - Waiting for Pro DJ Link devices...

Expected behaviour
The app finds the connected devices.

Desktop (please complete the following information):

  • OS: Windows 10 2004 19041.746, x64
  • Java Version
PS D:\Downloads> java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)
  • Project Version 0.1.1

Additional context

  • Pro DJ Link is working fine when I use Rekordbox, it is able to find all the connected devices.
    • Note: I'm not running Rekordbox at the same time as Open Beat Control though.
  • I tried Carabiner as well for comparison, but that also doesn't find any connected devices:
PS D:\Downloads\Carabiner_Win_x64> .\Carabiner.exe
Starting Carabiner 1.1.5 on port tcp://127.0.0.1:17000
Link bpm: 120 Peers: 0 Connections: 0

OBC reporting "illegal reflective access operation" (and more) etc on RP4 when starting up

After opening the file open-beat-control-0.1.0-Preview.jar on my networked RP4, the following messages appear and eventually continue scrolling until it times out. I assume it has something to do with thinking Rekordbox is open via Link on the network, but all that is connected are two xdj-1000mk2s and a DJS-1000. I can more systematically test this for you if the problem isn't something obvious. Possibly related is a similar problem opening OBC on my macbook: when i run on macbook open-beat-link-control jar file txt

ps. I know this issue format is a mess. I'll clean it up later or if this is a non-issue it will be deleted and not matter. Reading up on proper issue opening formatting now. m+

when i run on RP4 open-beat-link-control jar file txt

***@PSTVPI:~/Downloads $ java -jar open-beat-control-0.1.0-Preview.jar
2020-Jan-22 20:14:52 INFO [open-beat-control.logs:87] - Open Beat Control version 0.1.0-SNAPSHOT-62-0xdec7 built Mon Jan 20 00:30:32 UTC 2020
2020-Jan-22 20:14:52 INFO [open-beat-control.logs:88] - Java version 11.0.2-BellSoft, OpenJDK Server VM, BellSoft
2020-Jan-22 20:14:52 INFO [open-beat-control.logs:89] - Operating system version Linux 4.19.75-v7l+
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by clojure.lang.InjectedInvoker/0x72aabc28 (file:/home/pi/Downloads/open-beat-control-0.1.0-Preview.jar) to method sun.nio.ch.DatagramSocketAdaptor.bind(java.net.SocketAddress)
WARNING: Please consider reporting this to the maintainers of clojure.lang.InjectedInvoker/0x72aabc28
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2020-Jan-22 20:14:52 INFO [open-beat-control.core:179] - Running OSC server on port 17002
2020-Jan-22 20:14:53 INFO [open-beat-control.core:190] - Waiting for Pro DJ Link devices...
2020-Jan-22 20:14:54 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:1, name:DJS-1000, address:192.168.7.229]
2020-Jan-22 20:14:54 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:3, name:XDJ-1000MK2, address:192.168.7.197]
2020-Jan-22 20:14:54 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:4, name:XDJ-1000MK2, address:192.168.7.211]
2020-Jan-22 20:14:54 INFO [org.deepsymmetry.beatlink.VirtualCdj:588] - Found matching network interface eth0 (eth0), will use address /192.168.7.203/22 [/192.168.7.255]
2020-Jan-22 20:14:54 INFO [open-beat-control.core:200] - Pro DJ Link Device Found: DeviceAnnouncement[device:17, name:rekordbox, address:192.168.7.246]

2020-Jan-22 20:10:58 WARN [org.deepsymmetry.beatlink.CdjStatus:585] - Received CDJ status packet with reported payload length of 292 and actual payload length of 256
2020-Jan-22 20:13:03 INFO [open-beat-control.core:121] - Virtual CDJ running as Player 5
2020-Jan-22 20:13:03 INFO [open-beat-control.core:121] - Virtual CDJ running as Player 5
2020-Jan-22 20:13:03 WARN [org.deepsymmetry.beatlink.Util:216] - Do not know any Pro DJ Link packets received on port 50002 with type 0x10.
2020-Jan-22 20:13:03 WARN [org.deepsymmetry.beatlink.VirtualCdj:343] - Ignoring unrecognized packet sent to update port.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:3, name:"XDJ-1000MK2".
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:17, name:"rekordbox".
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:354] - Recording rekordbox collection mount.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:3, slot:USB_SLOT]
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 17 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:17, slot:COLLECTION]
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.CrateDigger:91] - CrateDigger starting because MetadataFinder[running:true, passive:false, loadedTracks:{}, mountedMediaSlots:[], mountedMediaDetails:[], metadataCacheFiles:{}] has.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:4, name:"XDJ-1000MK2".
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:351] - Processing device found, number:1, name:"DJS-1000".
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:3, slot:CD_SLOT]
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.CrateDigger:319] - Fetching rekordbox export.pdb from player 3, slot USB_SLOT
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.MetadataFinder:884] - Reporting media mounted in SlotReference[player:4, slot:CD_SLOT]
2020-Jan-22 20:13:03 WARN [org.deepsymmetry.beatlink.CdjStatus:585] - Received CDJ status packet with reported payload length of 292 and actual payload length of 256
2020-Jan-22 20:13:03 ERROR [org.deepsymm
when i run on macbook open-beat-link-control jar file txt
when i run on RP4 open-beat-link-control jar file txt
when i run on macbook open-beat-link-control jar file txt

etry.beatlink.data.MetadataFinder:124] - Problem requesting metadata, returning null
java.lang.Thread.run Thread.java: 834
org.deepsymmetry.beatlink.data.MetadataFinder$7.run MetadataFinder.java: 1312
org.deepsymmetry.beatlink.data.MetadataFinder.access$500 MetadataFinder.java: 39
org.deepsymmetry.beatlink.data.MetadataFinder.requestMetadataInternal MetadataFinder.java: 122
org.deepsymmetry.beatlink.dbserver.ConnectionManager.invokeWithClientSession ConnectionManager.java: 192
org.deepsymmetry.beatlink.dbserver.ConnectionManager.allocateClient ConnectionManager.java: 116
org.deepsymmetry.beatlink.dbserver.ConnectionManager.chooseAskingPlayerNumber ConnectionManager.java: 424
java.lang.IllegalStateException: No player number available to query player 3. If such a player is present on the network, it must be using Link to play a track from our target player, so we can't steal its channel number.

2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.CrateDigger:324] - Finished fetching export.pdb from player 3, slot USB_SLOT; received 270.3 kB in 319ms, 847.4 kB/s.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:273] - Indexed 75 Tracks.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:315] - Indexed 19 Artists.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:357] - Indexed 8 Colors.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:409] - Indexed 20 Albums.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:451] - Indexed 13 Labels.
2020-Jan-22 20:13:03 WARN [org.deepsymmetry.beatlink.CdjStatus:585] - Received CDJ status packet with reported payload length of 292 and actual payload length of 256
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:493] - Indexed 19 Musical Keys.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:535] - Indexed 9 Genres.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:561] - Indexed 63 Artwork Paths.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:637] - Indexed 1 playlists.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.cratedigger.Database:668] - Indexed 1 playlist folders.
2020-Jan-22 20:13:03 INFO [org.deepsymmetry.beatlink.data.CrateDigger:331] - Parsing database took 167ms, 449 tracks/s
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.CdjStatus:585] - Received CDJ status packet with reported payload length of 292 and actual payload length of 256
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 20:13:04 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 17 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 20:13:04 INFO [org.deepsymmetry.beatlink.dbserver.ConnectionManager:308] - Player 1 doesn't answer rekordbox port queries, connection refused, not yet ready?
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.CdjStatus:585] - Received CDJ status packet with reported payload length of 292 and actual payload length of 256
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Color[r=26,g=255,b=0]
2020-Jan-22 20:13:04 WARN [org.deepsymmetry.beatlink.data.CueList:525] - Was expecting embedded color java.awt.Color[r=0,g=255,b=0] for rekordbox color code 0, but found color java.awt.Col

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.