Time Is Flying By!¶
Well, it doesn't seem like 5 minutes have passed since I was complaining about case sensitivity in software source code and here we are over 12 months later... time for an update I feel.
My last post was made early in the pandemic after roughly 2 months of having no work. Still, it gave me some much needed time to get back into coding seriously. In the intervening period there have been times where, due to the worries about my business and the issues for it caused by COVID, I've just not felt like doing much at all which manifested itself as binging on YouTube and Twitch, still... this hasn't been without it's upsides.
I watched alot of Harris Heller's content about streaming on Twitch etc. and it's inspired me to get setup to stream again, which has in turn resulted in me learning quite a bit which is great.
So this is where I'm at...
My streaming setup has been completely revamped... I've moved from StreamLabs OBS to OBS proper (complete with a bunch of plug-ins), audio is now handled by VoiceMeeter Potato along with a bunch of VB Audio's Virtual Cables and Cantabile, my starting soon, be right back and secret stuff scenes can use visuals from WhiteCap (just clarifying the licensing situation for using WhiteCap though - I think I need a commercial license so I'm waiting to see how much they want for that), my stream helper has undergone a major metamorphosis (more on that shortly below), now I'm not using SLOBS I've switched over to Touch Portal and I'm in the process of writing my own Twitch/Discord chat/community management bot (more on him below).
The stream setup itself has been changed from display capture to window capture, to try and avoid publishing private/secret information (which has happened in the past despite having a 'secret stuff' scene), and I've tried to create a nice clean consistent look... I even have stingers and a short intro when I switch to the main 'live' scene (I like Davinci Resolve... even if my graphics card doesn't). Webcam is now a Logitech C920 which is a huge improvement over what I had before and I've increased the lighting on/around my desk to try and improve things and my stream music is now entirely StreamBeats.
I've moved from StreamLabs to StreamElements for things like alerts and overlays. Have setup some merch and loyality point redemptions within StreamElements and am in the process of setting up a Patreon page.
To support a lot of these changes my stream helper needed a serious injection of functionality. Before it was limited to updating files with clocks and various messages, now it has a music player, a scripting engine, an OBS interface, a StreamElements interface, two web servers which listen for requests from Touch Portal and DelphiB0t (it can also send to DelphiB0t), the ability to send MIDI note messages (into Cantabile to trigger various things) and listen to incoming MIDI and a system wide keyboard hook that allows me to implement hot keys. Overall, it's a huge improvement especially when it comes to processing lots of OBS requests (Touch Portal can't make use of the batching feature of the OBS Websockets plugin, whereas I can). There was a minimum set of features I wanted to support (mainly StreamElements store redemptions - so viewers can use their loyalty points to enable a webcam effect). I won't be able to fully test all of them until I stream as it's impossible to emulate the redemption of an actual item from your store (or at least I believe it is), but as best as I can tell they are all working (certainly the OBS events, MIDI events and the web requests are working). I am considering selling this but before that happens I would need to give the UI a serious overhaul... it's a bit... how shall we say... thrown together 😁
DelphiB0t is coming along nicely. I've wanted to stream some of his development but have been waiting until I got my minimum set of features in the stream helper software, now they are there I'm planning on getting some streams going. In essence, for the most part the bot connects to Twitch, Discord, StreamElements, Patreon and the desktop app. He can relay chat between Twitch and Discord, announce the current stream music in a dedicated channel. He's pretty modular, so now the core link functionality is in place, I should be able to implement the functionality I need as a collection of modules. He even has two web control panels, one for admins which uses a username/password + Google authenticator code for logins and another for Discord members which logs in using Discord. Target functionality is reaction roles, stream announcements, giveaways, server monitoring, music player, suggestion tracking. I'm also looking at the Notion API to possibly allow bug reporting directly into my Notion workspace.
So what have I learned... plenty about TypeScript and JavaScript, including quite a bit about WebSockets, Socket.IO, the Twitch, StreamElements and Patreon APIs. Delphi wise, I've crafted my own keyboard hook DLL (a pre-requisite if you want to do system wide keypress capture) and learned how to interface to the MIDI devices. I've also discovered a shocking lack of support for things like web sockets (I found a few no longer supported open source implementations, one of which I'm using but it appears a bit ropey) and other common things like Socket.IO... then I discovered the web socket components from ESEGECE and what excellent service Sergio provides. Suffice to say, my bug for coding is well and truly alive (many nights I've found myself still at the PC long after I should have been in bed pending an early morning for work) so I'm hoping to make some good progress once I get cracking on other things now work on the stream helper is mostly complete (I'm sure I'll find some features I want, but for now it's doing everything I need it to).
Coding aside, I've already mentioned Davinci Resolve... it's free, and it's awesome, I just need a better graphics card to use it properly. Serif had an offer on their Affinity suite so I now have legit design software and have I mentioned how much I dislike Windows 10... I had to upgrade and I don't like it but it was inevitable.
And that wraps up what I've been up to since I last posted.