Reverse-engineering my speakers' API to get reasonable volume control
91–100 of 144 posts
Re: Reverse-engineering my speakers' API to get reasonable volume control
#92Earlier quoted context omitted.
"So they don't damage users' speakers, their hearing, or generally cause annoyance." Damage speakers? Simply, not an issue unless they're one step removed from rubbish. Also, have you ever heard of output compression and clipping that would protect them? That approach is 101 electronics. Hearing is not an issue as they're driven by flea power (they're not headphones). Even hearing these pissy little speakers when run…
This is one area where I feel Apple did pretty well. My M1 Air has great sound and a solid max output level. Recently, I was given an old Sound Pop gen 2. That thing also delivers a lot of sound while also handling low input levels decently.
Apple is now about the richest company in history, so why don't others manufacturers realize this and copy their example?
It doesn't make sense why other manufacturers alienate users over unintelligible sound. The extra cost of getting it correct is negligible. Why can't they see that?
Re: Reverse-engineering my speakers' API to get reasonable volume control
#93For those considering buying speakers: (1) do it, (2) get passive ones and a separate amp. Honestly it’s such a mature market that buying these active speakers just creates e-waste. Keep the e-waste to the amp. You can get really solid speakers for $300 and a cheap amp with BT for $50-100, replacing them basically independently depending on your needs.
Re: Reverse-engineering my speakers' API to get reasonable volume control
#94This works because function.toString() in modern runtimes gives you back fully parse-able input source.
You need to make sure you don’t reference anything outside the function, but it’s generally nicer overall than JS-in-string.
Then you treat it as an IIFE. Example:
function globalJS() { document.write('hi') }
const html = `(${globalJS})()`
I use this technique for calling AppleScript-flavored-JS from NodeJS too.Re: Reverse-engineering my speakers' API to get reasonable volume control
#95So, instead of using the Spotify alexa skill, I have to use my phone and connect it via bluetooth, so I can turn down the volume on my phone in addition to using the quietest volume on the Echo.
Re: Reverse-engineering my speakers' API to get reasonable volume control
#96For those considering buying speakers: (1) do it, (2) get passive ones and a separate amp. Honestly it’s such a mature market that buying these active speakers just creates e-waste. Keep the e-waste to the amp. You can get really solid speakers for $300 and a cheap amp with BT for $50-100, replacing them basically independently depending on your needs.
Quality of active speakers are really good these days, they have matched amps and speakers from neumann, genelec etc also has active crossover which is superior than any passive setup. Mature market sure, but even companies like KEF who didn't offered or focussed much on active systems, have growing range of options now.
Also, online services built into these will die before the speakers do.
Re: Reverse-engineering my speakers' API to get reasonable volume control
#97Earlier quoted context omitted.
Quality of active speakers are really good these days, they have matched amps and speakers from neumann, genelec etc also has active crossover which is superior than any passive setup. Mature market sure, but even companies like KEF who didn't offered or focussed much on active systems, have growing range of options now.
Nobody is arguing their quality is bad, but that amps die long before speakers die. Do passive speakers even die? Also, online services built into these will die before the speakers do.
I am not sure however if your estimation is correct for all cases. The amount of killed tweeters I have seen would not have happened with an active speaker..
Re: Reverse-engineering my speakers' API to get reasonable volume control
#98> Those methods either give me a tiny slider that I can only use 10% of or about 15 steps where the jump from step 3 to step 4 takes the speakers from “a bit too quiet” to “definitely bothering the neighbors” levels. Volume controls need to be logarithmic, not linear. To a first degree approximation, everybody gets this wrong.
Volume controls also shouldn't just be a flat wideband gain - they should respect how we actually perceive sound so the timbre doesn't change as the level changes (when you turn the volume down, you are typically left with just the stuff in the vocal frequency range, and lose all the bass etc). Doing this stuff well is pretty hard (e.g. designing filters that can do that kind of volume adjustment is hard because you…
Re: Reverse-engineering my speakers' API to get reasonable volume control
#99Earlier quoted context omitted.
> Seems like the author moved from a “speakers + networked amp” setup, to a one where with active speakers where everything is built-in. Close! I moved from a "speakers + non-networked amp + streamer" setup. I'm still running separate components for nearer-field listening at my desk, where I've got KEF Q150s powered by a small Schiit pre-amp and amp.
Nice! I don't have any Schiit gear, but few months ago I started reading the founders book 'Schiit Happened'. I got halfway through (and then got distracted by other books, need to pick it back up), but can definitely recommend it for anyone interested in audio, and especially if you already have some Schiit!
Re: Reverse-engineering my speakers' API to get reasonable volume control
#100Pro-tip for embedding JS in an HTML string in a Typescript file: you can get full typecheck etc for your embedded JS snippet if you write it as a top-level function in your file, and then interpolate the function into your template. This works because function.toString() in modern runtimes gives you back fully parse-able input source. You need to make sure you don’t reference anything outside the function, but it’s g…
TIL - that is good to know. I'll probably leave the post as-is but I will use that in the future.