I’ve had a lot of people ask about how I get the `Now Playing` on my Twitch to work with Serato. There are a couple of solutions, including Serato’s new Twitch extension but most of them rely on using Serato’s “Live Playlist” functionality. While that may be all fine and well for some people, I find myself getting caught up in everything else I have to take care of as a streamer as I’m gearing up for my weekly stream and often-times I’ll forget to start my live playlist, or forget to update it to be public, or forget to hit the button in Serato, or ….
I started down the path of writing my own bot which would read directly from Serato’s encoded history file, having not found a solution that I liked and ultimately as I was working through that there was an update to the Now-Playing-Serato app which did exactly what I needed. This app runs in the background and watches for changes to your serato history database, then writes the currently playing track to a text file. Because it’s not possible to know when you’ve actually cross-faded or fader mixed into the next track it also allows you to specify an amount of time a track must be playing before it’s reported as the currently playing track. 95% of the time, this get’s you “close enough” and while it’s far from perfect – in my opinion it works far better than the live playlist solutions because, if you’re like me – you have a tendency to run long loop mixes between your big trance songs and if a song is looping it doesn’t count as “Now Playing” until the loop is exited.
Simply download the installer for Mac or PC and install the application – since I’m on a Mac, the screenshots will be for that version but the functionality should be the same between both versions.
Once the application is installed, if you run it you will find a new icon in your taskbar. If you click this icon and select “Settings” you will be greeted with a dialog box that allows you to configure the background app. Now if you are used to using Serato Live Playlists, you can certainly set up this application to use that as it’s source and it will function much like the Twitch Extension mentioned earlier. However, if you don’t want to use the Live Playlists, you can configure it for “Local” Track Retrieval Mode and point it to where you have Serato installed on your system.
The next step is to tell it where to write the track information when it detects a change in the currently playing track (behind the scenes this means that first a new track was loaded into a deck and then that track has entered the “PLAYING” state and is not in a loop (caveat: it detects looping by determine how much time has elapsed since the timecode where the song has started playing and the current timecode, so if you have a loop that is longer than the delay discussed below you may end up having your song switch “early”). You’ll want to make sure this file is written to someplace where OBS will be able to read the information, because we’ll use a browser source later on to actually get that information into OBS and style it however you’d like. Alternatively, you can select to have the Artist and Song written on separate lines if you’re going for a visual effect like ASOT.
If you’d like to get really fancy (like me) you can write the file to a cloud drive or network drive so if you have other bots (like a live tracklist bot for your discord) and they’re not running on the same computer you’re DJing from (don’t do that, that’s bad mm’kay?). You can also choose to have the song title enclosed in quotes or add prefixes and suffixes as you see fit. You’ll notice that I have a write delay of 45s which means until 45s have elapsed from the beginning of where I started playing the track to the current track timecode, the app will not update my text file; allowing plenty of time for most mixes.
Now we’re done with the tough part! Let’s get that track information into OBS and onto your stream!
So, my streaming setup may be a little more involved because I don’t stream from the same computer I DJ from and I capture audio using an NDI source instead of another sound capture device, here’s a diagram of my setup; but for your setup if you do everything from a single computer or if you stream via an audio capture card, it should work roughly the same.
In my case, I’m running a very stripped down vanilla version of OBS on my Serato DJ computer as an NDI host to pass along audio (and this overlay) to my streaming PC, so if you’re only running a single OBS instance, you’ll do this on that PC. Again, you’ll want to make sure the now playing app is writing to a file where OBS can read it.
In your OBS, you’ll want to create a new Text Source in your sources. Select a font and then select the “Read from file” checkbox. I usually also leave the “Enable Antialiasing” box checked as well as it tends to look a little crisper. Scroll down and in the “Text File” box, browse to the file where the Now Playing app is writing track information. You should immediately see the current track information in the preview window.
You can then add additional elements to style it however you’d like, and if you’re really crafty you can use a browser source to create a nice container for your now playing text to appear in. For my streams I keep it relatively simple and simply use a “Color Source” to give it a nice solid background so it’s simple to read on my streams.
And that’s all there is to it!
Hope you guys found this useful information, I may record a YouTube tutorial in the future if enough people want one, but feel free to ask questions in the comments or join my discord and let’s chat!