Settings

Theme

How-to normalize home volume levels with Node-RED

blakeniemyjski.com

47 points by niemyjski 6 years ago · 28 comments

Reader

godot 6 years ago

I know this article is about Alexa/Echo, but I wish a feature like this is built into TVs :)

I have a young kid now and she's in bed by 8:30. I'd like to watch TV in the living room in the evening after her bed time. I want to watch a movie like say, Avengers. I want to listen to the dialogue instead of/in addition to reading subtitles. The problem is in most movies, you have low volume dialogues, and then there's explosions and stuff with high volume (intended effect; which is nice at the theater, but not nice with a kid sleeping in the next room). I don't want to wear headphones. So I end up with a remote in hand, keep adjusting the volume high or low on reaction as quickly as my reflex allows me to.

  • cgriswald 6 years ago

    You want dynamic range compression, which will quiet explosions and louden whispers, usually at the expense of some minor audio quality. It’s probably already in your TV, cable box, or whatever other device.

  • mikeyjk 6 years ago

    I find this an issue with nearly every TV show or movie ever made. The intro music is typically far too loud, and as you say dialogue is significantly quieter than the action scenes. I basically have to watch with the remote in my hand.

    I've considered making a bastardised IR Arduino/raspberry pi remote based on sound levels. But of course I can never muster the motivation and don't have practical experience.

    • xsmasher 6 years ago

      If your center channel speaker was broken or misconfigured, it would have exactly this effect. Most dialogue comes through the center channel. Also if one speaker was connected backward it would cancel out part of the mix.

      • mikeyjk 6 years ago

        That's interesting, thank you.

        I do suspect for some media it's just that they expect me to listen to action scenes/intro jingles louder than I want to (maybe assuming a bigger room / TV further back?)

        But I will keep that in mind - can't rule it out, my TV is pretty old, haha

  • anamexis 6 years ago

    In addition to what others have mentioned, many A/V receivers have this feature as well. It's often called something like "night mode".

  • IanCal 6 years ago

    There may already be something built in (as another commenter noted) but this is also a feature sold in soundbars, here's the page for it for sonos https://support.sonos.com/s/article/1948?language=en_US

  • Domenic_S 6 years ago

    Apple TV has this built in, called "Reduce Loud Sounds". Various external sound systems can do it, too.

    • JamesSwift 6 years ago

      I generally have the opposite problem on my AppleTV... I have to crank HBO/Netflix _way_ up to get a reasonable audio level.

  • SparkyMcUnicorn 6 years ago

    There are a bunch of different ways to do exactly this. Definitely would be nice if it was a built-in feature.

    Just have to hook up a mic to listen, and tune the audio level results so it's somewhat smart.

    For TVs that connect to your network, there might be a built-in integration, or you can keep it simple and write API calls yourself in node-red.

    If you have a dumb TV (not internet connected), then you'll probably be limited to solutions involving IR Trasmitters via MySensors[0] or EspHome[1].

    [0] https://www.mysensors.org/build/ir [1] https://esphome.io/components/remote_transmitter.html

  • lostlogin 6 years ago

    This makes me pause before going to a movies (especially when combined with the other 99 downsides). The dialogue there is normal to loud, and the loud parts are so loud it hurts. Do people want it like this?

  • detaro 6 years ago

    If you have/can use external speakers, there's devices to put in the audio line to do this if your devices can't do it.

  • strogonoff 6 years ago

    The article is not about sound level normalisation, despite the title (which confused me), but rather about automating and/or synchronizing volume levels across speakers with presets invoked based on time of day or other conditions.

    It’s also not so much about Alexa but about Node Red, I believe Alexa is just one possible source of sound in the whole system.

  • jjjensen90 6 years ago

    It's probably more of an investment than other replies to your comment, but having a receiver with at least a center channel and left/right speakers does wonders to level the volume between dialogue and other sounds. My receiver even has a dialogue setting which emphasizes the human vocal frequencies on the center channel.

RNCTX 6 years ago

It baffles me that more people have not found and found uses for Node Red. It's one of the coolest utilities that I've stumbled across in the past 5 years.

In a sane world there would be no more Zapiers and IFTTT because of it, at the very least.

  • johntash 6 years ago

    I've been using Node Red for automation using home assistant (instead of their built-in automation) and generally like it.

    I'd like to use it more like IFTTT, but haven't really found any good uses so far since I was never a fan of IFTTT and connecting all my various accounts to one service. Do you have any examples of what you use it for?

    • RNCTX 6 years ago

      I co-founded a disaster relief non-profit in 2017, so in that context, web scraping of sites/services without APIs is an obvious one.

      Imagine the day after a hurricane has passed, needing to go find information before everyone else (even before the govt). Well, you can scan Twitter accounts who are posting videos and pics within a certain radius, scan for open local facebook groups with pic and video posts, scan instagram accounts for pics and videos (no api available for instagram), scan for public security camera feeds within a radius, etc. Being able to automate that makes your data gathering infinitely more effective. Doing it manually has an upper limit of what all you can check every hour, particularly when you get busy with other things.

      RSS-Bridge is a scraping framework specifically for this purpose, that allows you to quickly write up scraping scripts and serve them as RSS feeds.

      Of course scraping is all fine and good, but getting the data you find into a central database is where the magic happens. Even if you automate the scraping, you're going to have to centralize the data and serve your own API to it, or build a simple site to render it all, and have it in a store that allows it to be effectively queried. So how much time would it take to build scrapers for 5-7 different sites, plus database schema and database queries to store the data you get from them, plus a manually constructed API to serve the data from your database back out, plus a UI to render it all? For one dev that's a project of a few days at least, but you don't have a few days. The whole thing, from the standpoint of a rapid-response NGO, is gonna be over in a week when the FEMA and Red Cross trucks get deployed. You need to be able to do all of this quickly.

      With Node Red you can build all that in a couple of hours, rather than a couple of days.

      Being able to quickly integrate 3rd party API data and 3rd party libs with minimal custom code is a huge benefit too, in the same sort of activity. Node Red has a script that auto-generates nodes for Swagger API definitions, so you don't have to read docs and write integration functions to tie in third party data to a particular set of business logic, you just drag and drop it and pluck out the parts of the response objects you need.

      For example, I built a rudimentary UPC scanning capable inventory system, also in about two hours. It went like...

      Page with camera access button, quantity box, and submit button -> vanilla JS UPC reading library -> screenshot to base64 on the image for UI rendering -> Kroger product data API to fetch pricing info -> Postgres query for the returned item, if it exists increment by qty, if it does not exist create it with qty.

      Now someone can scan donated items with their phone. Sure, it has rudimentary (at best) error handling and you have to explain that to the person doing the scanning, but if you're on a time limit and need something right now it can be done.

      How long would it take to write all that by hand? Surely more than 2 hours. Re-creating oauth boilerplate for API authentication alone would probably take a good chunk of the first hour, whereas with Node Red you just fill a form with the headers and it's done.

  • lukifer 6 years ago

    It's got the AppleScript problem: incredibly close to pro-sumer zero-code development, but in practice still requires some prior tech knowledge.

    I'd love to see pre-packaged Node-RED binaries for Mac and Windows. Requiring an install via Terminal / package manager is going to lose a lot of potential users right at the start.

    That said, I absolutely adore Node-RED. It's the most powerful and intuitive GUI-based development system I've ever seen, without sacrificing the ability to go down to the metal when it's needed.

    • RNCTX 6 years ago

      I think their biggest oversight was not having all of the core programming functions that we take for granted (loops in particular). They have core nodes for if/else and breaks, but you have to go find a third party implementation for while/for loops.

      There's a third party set of nodes called "action flows" that does a pretty good job of implementing for/while loops, but it's not trivial to just install and use, you have to learn its conventions to use it properly.

      I gotta think most developers would install it, poke around for awhile, see that there's no obvious way to implement a loop, and throw it away when they don't find one.

  • slightwinder 6 years ago

    Yeah, thats no surprise. IFTTT&Zapier are very simple, accessable, well integrated and work in the cloud. Selfhosted solutions can't even remotly compare on those areas. They have other benefits, but for most people those are not important enough.

rcarmo 6 years ago

I've been using Node-RED for a few years now, and I can automate my LG TV's volume (handy for when the kids punch it up for cartoons) and control it via Siri (which is wired into Node-RED).

One of the medium-complexity things I do with it is check the iOS App Store prices for apps I'm interested to get notifications when they're discounted, but all my home automation runs on it, and this post has links to most of the series:

https://taoofmac.com/space/blog/2019/01/13/1900

I also maintain my own Node-RED docker images for ARM and Intel:

https://github.com/insightfulsystems/node-red

SparkyMcUnicorn 6 years ago

I've been doing a lot with Home Assistant lately, and lots of things that play nicely like node-red.

Does anyone have a set up to manage music service playback to media players like Google Home (or I guess it's Nest now) speakers?

It would be fantastic to start playing music via Spotify from the dashboard, or based on events and node-red flows. Not sure if the new forked-daapd integration will help me out here, but last time I tried to work with MPD specifically (unrelated project) I ran into walls left and right trying to get something working.

  • niemyjskiOP 6 years ago

    You can kind of do this with the mini-media-player and Spotify card. I guess I need to do a write up on this. It doesn't work the greatest unless you have audio groups setup. You could define a scene with the speakers and playlist you want to play as well.

tunesmith 6 years ago

And then you have devices like the seemingly-cool Sonos One, that has two different internal volume levels, one for Alexa, and one for the music, and they're wildly different. And there doesn't appear to be any way to normalize them. Maybe you could use this to hack it by adjusting volume levels immediately before and after any music is played.

andrepd 6 years ago

I don't get the fixation on wiretapping one's home for marginal convenience gains.

  • function_seven 6 years ago

    This blog post happens to use Echos to play the music. That's not the interesting part, though. Home Assistant and Node-RED are the cool bits, and they're completely local network services; no wiretapping required.

    I've done a lot of automation using HA and Zigbee and Tasmota devices, and it's been awesome. I have no cloud I rely on for anything. When my Internet service goes down seemingly every night at 12:30am, I'm glad I can still control lights, alarms, etc.

    • niemyjskiOP 6 years ago

      You can also use a slightly modified version of these sub flows to mute all Alexas of which I do. I try to do everything local behind a firewall. There is just somethings like Spotify / speakers / mic that is really hard to do / very few products that work local only.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection