(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=41069606

要在电子设备中实现最佳音质,需要仔细调整各种技术参数。 例如,更大的外壳可以更有效地发出较低频率的声音,而驱动器组件中更大的运动范围(Xmax)则可以产生更高的音量。 然而,降低 Xmax 会减少失真。 同样,较大的驱动器区域会产生更大的声音,但可能会导致失真增加。 工程解决方案可以抵消这种影响,使驱动器与周围空气的连接更加紧密,从而减少失真。 不过,向扬声器系统添加多个驱动器往往会增加复杂性和成本。 一个完美的、假设的单驱动器扬声器将由无限刚度、失重的材料组成,能够即时加速和减速,通过适当的电源控制,并通过调整尺寸来确定最大声级。 然而,实际上,由于成本、尺寸、材料可用性和复杂性的限制,必须做出妥协。 现代技术中的音频输入电平常常不足,开发人员未能考虑信号强度的变化,导致某些应用中音量不一致或增益不足。 例如,YouTube 视频的音频电平波动很大,当环境噪音水平很高时,很难通过笔记本电脑扬声器听到它们。 一些软件程序(例如 VLC)具有提高增益的设置,但即使这些选项有时也可能不够。 有时可以通过调整反馈电阻来手动实现增益的增加,但实际上不需要这样做。 作者认为,开发人员未能认识到放大原理的基础知识,假设 16 位输入包含 65536 个离散级别,而忽略了峰值音频输入覆盖不到整个范围三分之一的情况。 这些问题在收音机和高保真音响等旧技术中已基本得到解决,无需用户干预即可获得足够的增益储备。

相关文章

原文


If it’s $200 in parts then a premade item would be at least $400 and probably $500. There probably isn’t much of a market at those prices.

The bill of materials needs to come way down to sell it for much less than that. Buying the parts in hobbyist-level bulk (100 pcs) probably would only shave $100 from the final price.



Wow!

I had dreamed of physical "analog" controls as a standard feature on keyboards and input devices for various applications -- would be great productivity booster for power users.

I wish this catches on and gets mass adoption.



Same

While I wish I had the time and talent to pursue this as a hobby - and I dabbled in PCBs and DIY electronics in youth - life has other plans.

I see some sibling commenta that link to keyboards with a knobs-- that is cool - but I am imagining having access to more than one knob so I have a bank of at least 5-6 knobs, slightly smaller than the DIY project, so I can program them for multiple uses like we do for Function Keys today.

Imagine stream deck with knobs instead of buttons - and available either as a separate USB/wireless device or as a simple "nuneric keypad" / "function keys /media keys" kind of addition to keyboards



I made a SpaceMouse the other day, it was really easy, mostly just the print. It took around an hour to assemble everything, I think? It also worked very well.



Ah yeah, that's much more work and I don't think it uses the official driver, which does a lot of the heavy lifting. I think maybe start with the other one and see how you like it, since it's mostly a few minutes of soldering.



For 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.



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.



Sure from a longevity perspective, you are 100% correct and for HIfi/Home use I'd recommend the same.

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..



>The amount of killed tweeters I have seen would not have happened with an active speaker.

My 1978 (no brand) speakers are still in excellent condition, so are the 1991 Bose. Hifiberry works fine. ymmv



Yeah, my mileage is running a media technology rental in one of the biggest art universities of Europe.

And as a known electronics guy people bring their broken stuff to me for at least the last decade.

If you handle stuff correctly it will survive. But the point about reliability is to also take into account how stuff survives when it is abused.



> I am not sure however if your estimation is correct for all cases.

Apologies. Next time they'll do a 10-year study on the subject before daring to comment on a public forum, ensuring that each and every angle is covered so that le smart folks like yourself will be able to sleep at night.



No need to be bitter. I don't even know you, so I mainly said my experience is different.

Now maybe that is because I am an electronics guy and people come to me with their broken stuff and I see what actually breaks, but isn't the point of a public forum to say something and be occasionally wrong? Should I rather have stayed silent?

I don't know about you, but if some knowledgeable person corrects me, I am grateful for getting a check on my perspectives. This is the value of discussion.



You can see >30 year old Genelec 1031A all around the world in perfect working order. Their die cast aluminium models using the whole box as heatsink should be able to last even longer, theoretically.

I'd say active (especially digital active) is too much of an improvement to pass up, but if you only want to talk about waste and reliability, try to find about support and spare parts company policy. Some prestigious passive brands like Revel have some forum horror stories about lack of spare parts for 10 year old models that barely got discontinued while Genelec says https://www.genelec.com/product-warranty-lifetime

Also, as someone mentioned, advanced (thermal based) limiters saving tweeter voice coils.

Disclaimer: I am a fanboy owning a pair of 8341A.



Quality active speakers very rarely break, but one should buy them from studio gear (e)shops instead of the nearest mall. I totally agree on other gimmicks that would add single points of failure and should be kept out.



Active crossovers usually sound better than passive ones, and with active speakers the amp is generally better matched to the drivers. In addition, speaker design keeps evolving, as does people’s budgets, so it’s likely you’ll want something else in 10-20 years.

I also never had an amp fail other than by cranking it up too high with the wrong speakers.



The most expensive boxes you can afford from Canton. Or buy second hand - they will sound like new.

But speakers are something very subjective, and while I’m still delighted with the Canton I got for a discount, your ear might prefer something different. This is something where comparing in a physical store with a passionate salesperson can be worth it.



Or, imo even better, get a lasting amp as well and make the changing part (receiver) external. I have a pair of timeless speakers and amp with optical input, and AirPort Express 2 to provide Airplay capability.



Seems like the author moved from a “speakers + networked amp” setup, to a one where with active speakers where everything is built-in.

When I was buying speakers for my apartment some time ago, I was similarly considering going for the all-in-one options like this, but I’m glad I didn’t. I prefer the “dumb passive speaker + networked amp”, as it allows you to pick / replace / upgrade the separate components. Went for the KEF LS50, and for the amp Lyngdorf TDAI-1120. And that’s despite KEF having the all-in-one active version of those speakers. Very happy with my choices!



I have the “wireless” powered kef ls50 and the regular ones.

The wireless model has significantly better bass response and sounds much better to my ear.

I actually had a fault with them recently and they stopped working, I’d bought the speakers used on ebay and even had I had a warranty they were past 5 years old by the point the fault developed. Regardless, kef repaired them entirely for free. 10/10 would buy again.



KEF builds an equalizer into the radio->DAC->crossover->amplifiers chain, and the default for that is much of what you are hearing.

The other part is that they hugely overbuild the amplifier sections (at least by rating -- 280W for the mid-woofer and 100W for the tweeter.



> 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!



> 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 want to be constantly adjusting them, which means you need to be super careful with your filter state) but I have heard what it sounds like, and once you hear it you get angry at all other volume controls.



> 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).

The amp I'm upgrading from was interesting in this regard. In addition to the main volume knob, it had a loudness knob. The manual actually recommended keeping the volume knob fixed most of the time and using the loudness knob to set the listening level throughout the day.

From the manual:

> 1. Set the LOUDNESS control to the FLAT position.

> 2. Rotate the VOLUME control on the front panel (or press VOLUME +/– on the remote control) to set the sound output level to the loudest listening level that you would listen to.

> 3. Rotate the LOUDNESS control counterclockwise until the desired volume is obtained.



Amazing. This is probably the correct way do make amp controls. I'd say the volume should be a multi turn trim potentiometer in the back of the device so you don't have to brief your guests on correct operation.



My cheap Behringer NU1000DSP that I use as a subwoofer amp can do that to some extent with its dynamic EQ, and you can set it up via USB with a PC app which is a huge step up from some crummy little LCD and buttons.



Even friggen Apple, who seem to have a rep for caring about such things. I'd say I'd need at least 5 more levels between off and the lowest volume on my iPhone. It's way too loud to use in a quiet room. I have to try to cover the speaker.



Yep. I was always using only the low end of the volume slider and having the same problem as OP that the steps were too coarse. So for Musium, I added a logarithmic volume control with a step size of 1 dB. That difference is on the border of being perceivable in the range I usually listen at, which is fine enough in practice.

https://docs.ruuda.nl/musium/loudness/



Pro-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 generally nicer overall than JS-in-string.

Then you treat it as an IIFE. Example:

    function globalJS() { document.write('hi') }
    const html = ``
I use this technique for calling AppleScript-flavored-JS from NodeJS too.


Funnily, I had a backend function that used `window`, which was then sent to frontend in this way. I think the project's tsconfig `lib` included `dom` for it to work.

Overall a nice technique!



> This works because function.toString() in modern runtimes gives you back fully parse-able input source.

TIL - that is good to know. I'll probably leave the post as-is but I will use that in the future.



I know it is tangential, but this about his old system caught my attention:
  With that system, I could set the amplifier’s analog volume knob such that the max volume out of the streamer corresponded to my actual maximum preferred listening volume, giving me access to the full range of Spotify or AirPlay’s volume controls.
Assuming an analog input, this might result in a noticable quality reduction at low volumes.


Tangential fun fact: amps have a fixed gain, because it's hard to make a variable gain without distortion [1]. The volume knob doesn't control amplification, in fact it controls an attenuation stage, because it's easier to make variable attenuation with low distortion.

[1] that's why there were so many different "classes" of amps, they're all making different tradeoffs about how they're doing the amplification.



According to Claude, the attenuation stage is before the power amp stage. Does that mean worse SNR whether the volume is controlled using the volume control or via the input?

(Ignoring the additional quantization issue with a scaled digital input.)



You could put the attenuation stage after the power amp stage but it would require big beefy resistors that could absorb a lot of power. They'd get hot and the whole thing would be very inefficient.

But hey, very low distortion.



Reducing excessively before the DAC and high gain after the DAC is far more likely to result in quality reduction, due to quantization error. Having reasonable levels before the DAC and just the right amount of gain after the DAC (e.g., via an amplifier's attenuator setting) is the best possible scenario. So TFA's prior setup may have been superior in this regard, depending on how the digital volume control on the new speakers is implemented (i.e., before the DAC, or as a VCA after the DAC).

Where this breaks down is if the analog signal path (after the DAC) consists of something noisy after the attenuator. Passive attenuation (like built into an amp, or the master fader of a mixer, etc.) won't add noise, but something active like an outboard EQ would. The attenuation to set desired max level must be completely last (before power amp) to avoid noise.



We really don't want to be touching the digital signal. The state of the art is to change the DAC reference level, putting the DAC output at the sweet spot for the analog stage for any given ultimate output level.



In this case, I was using the optical out from a WiiM mini into a Yamaha amp. I don't know much about digital audio, but I know that I was able to control the volume of the WiiM's digital output with that setup.

On the other hand, I use a Schiit Asgard at my desk, where I have it connected to my Mac via USB-C. In that setup, I have no control over the volume level going in to the Asgard. MacOS just disables the software volume control when I'm using that audio output.



I think for a WiiM mini to control the volume on the digital output, it would need to scale down every sample. This is probably fine over some range (it has a 24 bit output, so putting the volume at two thirds, would still result in 16 bits, the same as CD). But I'm curious what would happen at very low volumes, e.g. if you're down to only 4 bits.



While I’m all for physical controls, especially ones that self-adjust to reflect the state of the remote device at all times, I wonder if the author just doesn’t know you can finely adjust volume in iOS control center by force/long pressing and then dragging.



This is a great point! When I'm using AirPlay, that feature is really useful. I'm more often using Spotify Connect though, where I'm limited to either using the physical volume buttons on my phone, the small slider in the desktop app, or the slider that's many clicks in to the Spotify mobile app.

In reality though, this project is more about the fun of it than about it being a really pressing need.



You're correct, TIL!

That's really helpful to know. At this point though, I'm excited enough to build a volume knob that I'll probably still do it.

edit: After trying this out it a bit, it's definitely an improvement over the small sliders and a huge improvement over the stepped volume changes from the buttons, but I'm still left wishing I could make use of more than ~10% of the slider's full range.



spotify has so many user hostile practices that I am completely mystified why the majority of the population seems to prefer them in a world where youtube music exists.



The only competitor that I've given a fair shot is Apple Music. I'm not thrilled with either. Between those two, Spotify wins solely for Spotify Connect. I much prefer the way it works to AirPlay.

I haven't really tried YouTube Music, but I'll give it a go. I've been meaning to try out Tidal too but haven't yet.



They’re not increasing my subscription to give me stuff I never asked for.

On an actual technical side, I can stream to multiple devices concurrently, the interface is cleaner and it supports a local music library.



What the hell browser makers... Make it so that file:// URLS are extremely locked down and doesn't have enough rights to even fetch files in the same directory (or even itself), yet grant localhost URLs full permissions...

There's a reason why local web applications aren't a collection of HTML and JS files, and are instead full copies of the Chromium browser.



The difference is that file:// URLs can be opened by your grandparent opening a .html file that they downloaded, whereas http://localhost requires you to actually set up a web server.

Imagine double-clicking a malicious page.html and suddenly your entire Documents folder can be fetched and manipulated by JavaScript. Yikes.

But to your latter point, yeah, there’s no reason sandboxed web apps couldn’t be given better file:// permissions.



This drives me nuts.