[HN Gopher] Show HN: Automate your studio - mute a mixer channel...
       ___________________________________________________________________
        
       Show HN: Automate your studio - mute a mixer channel to turn your
       PTZ camera
        
       Seamlessly automate your audio-visual setup! This open-source
       framework uses the Open Sound Control protocol to integrate audio
       mixer consoles, OBS, PTZ cameras, and more. Perfect for live
       production enthusiasts, streamers, and tech tinkerers.  I have made
       it originally to meet our needs, then opensourced it: We needed to
       move a PTZ cam based on the stage/pulpit mute states on our X32,
       but it is capable for way more. Let me know what do you guys think!
       Cheers!
        
       Author : kcsaba2
       Score  : 81 points
       Date   : 2024-12-02 18:12 UTC (7 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | moepstar wrote:
       | > We needed to move a PTZ cam based on the stage/pulpit mute
       | states on our X32, but it is capable for way more.
       | 
       | PTZ - pan/tilt/zoom camera, that much I understood. The rest?
       | Uh... can I get an ELI5 please?
       | 
       | Even though I'm clearly not in the target demographic, I'm eager
       | to learn more..
       | 
       | Edit: ok, clicked through to GitHub, now I (kinda) got what it's
       | for :)
        
         | kxrm wrote:
         | That's kind of the challenge of using jargon and industry
         | specific acronyms. Creators should use plain language to
         | describe their product as much as they can, even if your
         | intended audience should be aware, it is a good way to practice
         | improving your communication skills.
        
         | smitelli wrote:
         | The X32 is a series of audio mixing consoles[1] to combine the
         | signals from multiple microphones and/or musical instruments to
         | a venue's speakers or to a recording/streaming apparatus.
         | 
         | In this case, there are multiple points of interest on the
         | stage which are sometimes used, and sometimes not. When an area
         | of the stage is unused, the microphone(s) at that location are
         | manually muted to eliminate unwanted noise. The remaining
         | unmuted microphone is at a location of interest, which is also
         | the logical thing for a motorized camera to point toward and
         | zoom onto at that moment.
         | 
         | This project uses the muted/unmuted states of microphones as a
         | cue for camera movement, although it takes some upfront work to
         | set it up. It also could cause trouble for looser or more
         | improvisational shows where such rigidity might actually get in
         | the way.
         | 
         | [1]:
         | https://www.behringer.com/series.html?category=R-BEHRINGER-X...
        
           | mrandish wrote:
           | Thanks for explaining! Just posting to add a link to OSC
           | (Open Sound Control)
           | https://en.wikipedia.org/wiki/Open_Sound_Control
        
           | brudgers wrote:
           | Just to clarify, the x32 mixers are digital mixers (not
           | analog). So they have non-trivial computing power (for some
           | definitions of "non-trivial"), reasonable amounts of onboard
           | storage/memory, and network connectivity.
           | 
           | This allows them to be programmed as general purpose
           | computers.
        
           | kcsaba2 wrote:
           | Excellent and precise explanation, thank you:)
        
           | LeifCarrotson wrote:
           | That's interesting, I'd assumed that they were using the
           | controls for inactive channels on their console to literally
           | jog the camera like they'd pushed the button on the remote.
           | If a few controls on the last 3 of 32 channels happened to
           | line up in an inverted T configuration or something like
           | that, you'd relabel the buttons up/down/left/right and
           | instead of muting/unmuting they'd be bound to those
           | functions.
           | 
           | I understand how the automation of "point at stored location
           | when something happens there" could be useful on some sets,
           | but it also looks like you could do the jog button automation
           | with this toolkit. Vary the speed of the movement with a
           | volume slider, use fade in and fade out to smooth out the
           | motion...
           | 
           | To paraphrase Malsow, I suppose it is tempting, when the only
           | tool you have is a customizeable digital mixing console, to
           | treat every problem as if it were an audio channel!
        
       | benji-york wrote:
       | Very nice! The ability to get novel interactions out of connected
       | devices is something I think we're just starting to bloom.
        
       | srameshc wrote:
       | Unrelated, I have an old Axiom midi controller that I'd like to
       | reprogram to use with GarageBand. I'm not sure where to start,
       | but I'm thinking of using Go or Rust. Do you have any pointers on
       | how to get started?
        
         | aspenmayer wrote:
         | You can't use it as native MIDI in GarageBand?
        
       | blahlabs wrote:
       | Is there a reason to use this over Bitfocus Companion?
        
         | kcsaba2 wrote:
         | Hi! Yes, as far as I see it is a control board, that needs
         | someone to operate it. And thats the reason, my tool automates
         | the camera movement.
         | 
         | By the way, we do have a custom keyboard as well, which is
         | basically a separation of concerns/simplified interface for
         | OBS, which is intimidating for most of our crew. But they can
         | handle 10 buttons with nice labels.
         | 
         | For example they have one button that toggles the camera view
         | and the projector view.
         | 
         | Also I scripted OBS to manage camera positions with the scene
         | "Pulpit", "Stage", "Pulpit wide", "Sitting": so they can
         | manually override the automated thing in 1% of the time, but
         | 99% of the time the automation is enough.
         | 
         | Also I have scripted OBS to manage the stream lifecycle based
         | on which scene is active. So: - they can bring up the "Starting
         | soon" scene that would start streaming but not the recording -
         | they can bring up the "Break" scene that would pause(!) the
         | recording but not the stream - they can bring up the "Finished"
         | scene that would stop all with a nice fade out and "thank you
         | for joining" text, etc.
         | 
         | So a control pad can work together with this tool.
        
       | ssfrr wrote:
       | OSC (Open Sound Control) is just awesome. It's basically a
       | lightweight protocol on top of UDP packets. It's not hard to roll
       | your own implementation if there isn't one for your platform.
       | It's lacking a lot of features you'd need for a scalable system,
       | but when you just need a few systems to send realtime messages to
       | each other, it's tough to beat.
       | 
       | I've used it a lot for the original designed use-case (sending
       | parameter updates between controllers and music synths), but also
       | a bunch of other things (sending tracking information from a
       | python computer vision script to a Unity scene).
        
         | gsck wrote:
         | Yeah really is a cool protocol. I use it with my Behringer X
         | Touch Compact to control the grandMA3 onPC software to get
         | physical playbacks.
         | 
         | X Touch MIDI goes into a piece of software called open stage
         | control https://openstagecontrol.ammd.net/ which runs
         | https://github.com/xxpasixx/pam-osc which then translates the
         | MIDI messages to the correct OSC commands to send to grandMA3.
         | Then on the grandMA3 side there is a lua plugin that sends OSC
         | commands back out to open stage control to set fader positions
         | and LED status.
        
         | _spduchamp wrote:
         | I love the ease and flexibilty OSC, but like a lot of lazy
         | artsy coders, I hard code my IPs in my microcontrollers, and
         | bring my own wifi router so that all my stuff just works on
         | stage, but every time I boot this stuff, it's always a bit of a
         | gamble. Interchangeability and interoperability is just not a
         | thing when building this way.
         | 
         | I kinda dig this concept of O2
         | (https://rbdannenberg.github.io/o2/) layered over OSC for easy
         | interoperability, but it also seems like a lot of work, and I'd
         | rather spend my time making music.
         | 
         | I'm not a fan of MIDI, but it does kind of blow my mind when
         | things just work. Having OSC be as plug-n-play as MIDI would be
         | awesome!
        
       | kasperkamperman wrote:
       | I did an explainer on OSC to explain the concepts. Indeed I think
       | its the easiest network protocol to just hook different things
       | together: https://www.youtube.com/watch?v=0uOR2idKvrM
        
         | kcsaba2 wrote:
         | Good job, thanks for sharing!
        
       | pbhjpbhj wrote:
       | Could you have some sort of tee, so instead of dedicating a
       | channel you multiplexed a second extra-audible signal (outside
       | the audible range) onto the same channel? Or perhaps send a
       | really low frequency signal over the cable sheath??
       | 
       | Just spitballing.
        
         | kcsaba2 wrote:
         | For my tool i don't really think that's possible as of now,
         | through OSC you don't get the audio signal (afaik), maximum the
         | level at some precision.
         | 
         | Also general audio stuff is from 20-20khz, so you don't really
         | have headroom to super(or sub?) impose another signal into it
         | frequency wise, as it would be audible. (Unless you sacrifice
         | some parts with a high/low cut on the original signal.)
         | 
         | Although you could have 48khz sampling rate on most audio gear,
         | so you could do time-multiplexing if you are really desperate,
         | but then all signals need processing before becoming
         | useful/noiseless.
         | 
         | About the cable sheath, of course you can do anything with
         | custom circuits, but general audio stuff will not help you in
         | that as far as i know.
         | 
         | If you ask it because of controlling the cam with a mute status
         | felt out-of-place for you, then: no it's not wasting any
         | channels. As someone above already explained very precisely
         | above, the thing is you don't want to have live and unused
         | microphones on your setup, due to feedback, extra noise, etc.
         | 
         | So if the speaker is speaking, the band is muted, if the band
         | is playing the speaker is muted. And this can be used (in our
         | case, not always for everyone), to track where the event is
         | happening, and the camera can turn at the right position based
         | on this. Therefore we, in our usecase could eliminate an extra
         | step for someone to manage the camera by hand.
         | 
         | By the way, many consoles have extra buttons/knobs that are
         | assignable to random stuff, so through OSC i could query their
         | states as well and i could set up camera movement with those as
         | well if i wanted to.
        
         | mschuster91 wrote:
         | For cameras, you absolutely can - all you need is a Blackmagic
         | Design Arduino shield [1] to embed control in the return SDI
         | feed. Not sure if there is an SDI extractor though...
         | 
         | [1]
         | https://documents.blackmagicdesign.com/UserManuals/ShieldFor...
        
       | nzoschke wrote:
       | Starred!
       | 
       | I've been playing with hooking up a MIDI controller to my OBSBot
       | Tail Air PTZ camera and OBS.
       | 
       | The config and filters and triggers looks similar to my
       | prototypes.
       | 
       | I've been wondering if there's any sort of prior art or standards
       | here from other domains like lighting consoles or workflow
       | systems.
        
         | kcsaba2 wrote:
         | Thank you so much.
         | 
         | If I understand your prior-art question, I think there is a
         | few: - the OSC protocol for audio gear and some other studio
         | equipment. - In the lighting world I heard DMX is king - OBS
         | has a very extensive Websocket client
         | 
         | For PTZ cameras I'm not sure, our old PTZ camera needs HTTP
         | GET-s to weird urls (RPC).
         | 
         | Thanks again for starring!
        
       | atmanactive wrote:
       | I'm curious, did you ever come across Chataigne?
       | 
       | https://github.com/benkuper/Chataigne
        
         | emmanueloga_ wrote:
         | This looks similar to https://ossia.io/
         | 
         | Interestingly, both seem to be projects from French developers,
         | and they look very similar.
        
           | jcelerier wrote:
           | (ossia dev here) yes, we have quite a community mainly due to
           | having a big push in funding in media and specificially music
           | & audio research labs in the 80s / 90s with places like
           | IRCAM, GRAME, SCRIME etc. :)
           | 
           | Also see IanniX (https://www.iannix.org/fr/) which is another
           | OSC sequencer from french developers & researchers and Open
           | Stage Control: https://openstagecontrol.ammd.net/ (yes, also
           | french ;p)
           | 
           | @op: ossia has some support for PTZ cameras (mainly through
           | NDI) and MIDI/HTTP/WS/etc..., I'd be curious to know if it
           | would fit your bill. Definitely hooking some MIDI control to
           | a PTZ movement should be a matter of a few clicks at most but
           | I don't have a PTZ camera plugged in right now to make a
           | small video.
        
         | kcsaba2 wrote:
         | If I'd have, I might have not developed this:)) It's very hard
         | to define what this thing is, and it's even harder to search
         | for it. (In both my and this case). Also that name is very
         | weird for me as a non-french:)
         | 
         | I have started to mess around with Chataigne, it seems
         | promising, but this far I'm getting stuck at trivial steps
         | (matching a regexp, converting a "contains" to bool, etc).
         | We'll see how I progress with support:)
         | 
         | But that guy is clearly brilliant just like Chataigne.
         | 
         | Thanks for mentioning!
        
         | kcsaba2 wrote:
         | Oh man, what did you did to me. Ive got obsessed with it. Thank
         | you, kind of (spent two days knee deep into it).
        
           | atmanactive wrote:
           | I'm glad I was able to expand your horizons.
        
       | donatj wrote:
       | The amount of neat things my synth friends do, including
       | controlling lighting, with control voltage has me dreaming of a
       | world where knobs and levers and UIs generally were way more
       | customizable than we have now.
        
       ___________________________________________________________________
       (page generated 2024-12-09 23:01 UTC)