Proof of concept OBS plugin

I wanted to show what tracks are playing on my Twitch and Mixcloud streams. Looking at solutions out there, I could not find anything that meets my needs.

My setup is rather complicated, using 4x SC6000Ms, two Technics turntables all connected to a Pioneer DJMV10.

I often will mix 4 tracks concurrently, and wanted to show all 4 loaded tracks. Also, given that my mixer is not Denon, means that I had to figure out how to read data from it, and did so via a custom node app on a raspberry Pi that reads the midi data and pumps out events via web sockets.

Here is a demo;

5 Likes

Does this work over wifi or ethernet only? I’ve been looking for a solution like this for the mixstream.

Currently Ethernet. I have wifi turned off on the devices as well as all other services.

Any plans to make it open source?

I take it that you used the StageLinQ decode from icedream to get the data? That thread ended up getting split into two parts due to its popularity.

I use Now Playing 2 by Triode which runs on all the major softwares but doesn’t give beat info.

1 Like

I am using Triode’s fork. An engineer by the name of Omar made some great changes recently.

1 Like

Considering it, yes. :slight_smile:

Hoping to get it stable and have an Orange Pi5b in order, given that the Raspberry Pi 3b I am running gets bogged down with the flood of midi data when actuating multiple knobs.

1 Like

This is interesting. What do I need to do this? I have a similar setup, and stream on twitch (4 SC5000s, 2 1200s, and a V10). Would like to be able to display track names like you did in the video.

Are you using sync?

Gentlemen, I already asked to use streaming like in VDj a long time ago… instead denon added Christmas lights control which slows down all equipment… checked on P4 and SC 6000

Currently, it’s not ready for release. There are a lot of working parts that I need to work on to get it installable.

Do you have experience with OBS, linux and basic programming in JavaScript?

OBS yes. Linux and Java not so much, but I could figure it out with some guidance.

I made some progress this week:

  • Deck indicators now sync to deck color preference
  • Showing artwork
  • New layout with deck indicators being opaque when they are not playing.
  • Tons of under the hood changes like simplifying websocket messages and creating a global persistent configuration file that everything uses.

@tonelab77 here’s what I have working under the hood:

  • All 4 SC decks connected to a 1Gbe switch
  • Orange Pi5B (running DietPi) connected to the Network Switch and the to the DJMV10 MIDI out using a USB to Midi Adapter (https://www.amazon.com/TENINYU-Synthesizer-Microphone-Instrument-Converter/dp/B07L8KFYBK/ref=sr_1_5?keywords=midi+to+usb+cable&qid=1687456486&sr=8-5)
  • I have an external SSD with a copy of the database feeding the app at the moment because I don’t trust that the SC decks are powerful enough to send the image data. They are taxed enough by doing their regular jobs :frowning:
  • Four different JavaScript contexts are running concurrently to enable this all to function, which makes starting it all cumbersome atm:
    1. Websocket Server
    1. UI Layer (A React JS app)
    1. Midi receiver
    1. Implementation of an OSS version of StageLinq

I plan to continue refining this codebase, but first want to work on getting an RGB LED Matrix (Display to my right) synchronized with the Beat via web sockets. :smiley:

9 Likes

I’ve always wanted to do this but it’s just been out of my capability. Amazing work if you do.

I just use Hue. Although Philips Hue works within Engine, I have four Play Bars and they all do the same thing as SoundSwitch can only output the same colour to all Hue fixtures. I get around that by using https://lightbeat.io/ which allows individual control and works as a free open-source visualiser for me.

1 Like

Pretty awesome man! Thanks for all the info. I’ll be watching this thread for updates. One question: how do you get the overlay into the streaming computer?

That’s done via OBS. The UI part is a relatively simple React JS app. =)

Thanks for this! I didn’t know that Lightbeat was a thing.

Currently, the screen to my right uses a Behringer UCA202 as a sound card and I have some CPP code that reads the line in (connected to the mixer). It paints the data on the screen, which is the waveform itself. I also do a bit of processing to paint the spectrum analyzer on the bottom.

For anyone interested: It’s driven by a Raspberry Pi 3b (ancient by today’s standards), running DietPi and the core library driving the display is Henner Zeller’s “RPi RGB LED Matrix” library: GitHub - hzeller/rpi-rgb-led-matrix: Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

For the Websocket stuff, I’ll try to give this guy a shot: GitHub - dhbaird/easywsclient: A short and sweet WebSocket client for C++

1 Like

For anyone interested, here’s some recent changes:

  • Artwork now rotates using CSS3 transforms.
  • Changed default artwork to be an icon of vinyl.
  • Deck that has been designated “master” is now labeled “Primary” on screen.

Current improvement backlog::

  • Virtual deck locations are wrong: Decks 1 & 2 are on the right hand side of the screen (my left), but are overlayed near decks 3 & 4.
  • Volume indicators are still not functioning properly. :frowning:
  • Deck box heights need to be increased a bit.
6 Likes

Loving your work. I’ve been following this closely.

1 Like

Thank you. It’s certainly a work in progress and I’m personally curious to see where all of this goes :sweat_smile:. I have grand plans to integrate beat info with external devices like the LED Matrix screen to my right.

I have a proof of concept working on my test bench. Need to get it stabilized and hope to have it working by mid July

1 Like