Deep-Symmetry / open-beat-control

Provides a subset of beat-link features over Open Sound Control.
Eclipse Public License 2.0
41 stars 3 forks source link

Help needed #14

Closed JonasFocke01 closed 1 year ago

JonasFocke01 commented 1 year ago

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!

brunchboy commented 1 year ago

Hello, Jonas! Opening project issues is not the most effective way of looking for people to help you explore whether this project will work for you. I’d encourage you instead to create an account for the Deep Symmetry Zulip chat, and ask users there (probably in the Other Projects stream) if they have time to help explore things with you.

That said, I will try to help orient you a bit with respect to your questions. If you want to talk to Open Beat Control from Rust, you will need to find or write a Rust library that can communicate using the Open Sound Control protocol (OSC), because that is the purpose of Open Beat Control: to support people who want to use OSC to interact with Pioneer networks.

Max/MSP is a product that many artists use to build interactive systems using protocols like MIDI and OSC. If you don’t own it, then it’s not going to be helpful to you. But if you do, then Open Beat Control can integrate Pioneer gear into your Max/MSP projects. (If you like the idea of a visual, data-flow based programming environment for projects like this but don’t want to buy Max, note that PureData is a free, open-source successor, created by the original developer of Max.)

But OSC is supported in many different language ecosystems, so you may be able to use it directly from Rust. I have never used Rust or looked at what its libraries and ecosystem are like, though, so I don’t know where you would find OSC support in that community.

Alternately, you could ignore OSC and Open Beat Control completely, and simply build your own Rust implementation of the Pioneer protocols, the way I did for the Java/JVM Language ecosystem. The protocol analysis that I published has helped several people do that in multiple languages already, but I have not heard of any Rust implementations yet.

brunchboy commented 1 year ago

I did google around a bit after work, and found that there is indeed a Rust library for working with OSC, called rosc. It seems rather low-level though, and as far as I can tell, only offers support for building and decoding OSC packets. You would need to do all the UDP networking yourself.

However, at the opposite extreme, there is also a Rust package called nannou which is much more full-featured; it looks like it is trying to fill the same niche as Max/MSP and PureData for the Rust community. It uses rosc internally, but adds all the networking code needed so you can send and receive OSC with a few lines of code. If you do want to work with Open Beat Control in Rust, this would probably be a good starting point.

JonasFocke01 commented 1 year ago

Thank you for this well tought out answers! I will definetely look into the points you mentioned and thank you for the Tipp with the Deep Symmetry Zulip chat! Do i can somehow support this package when i find out things in the future?