Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Modern systems largely sacrifice consistent latency for more throughput and more energy efficiency. This leads to modern systems being able to do much more, but also having frequent little responsiveness hiccups and occasional larger hiccups. If you want to do a smaller job consistently, a simpler embedded system architecture is still the way to go. This is especially true when doing any kind of low-level signal generation, whether it be audio, video, or control.

As for the sound, I don't think Yamaha's implementation of "FM" [1] has been comprehensively reverse-engineered in the way that, say, the Commodore SID has. There are a lot of little quirks and edge cases to take into account when considering the full operational ranges of the various chips. Even MAME's implementation is allegedly distinguishable even after 20 years of tweaking and testing against hundreds of games, and I imagine most VSTs are using significantly less mature code.

[1] I recall reading that the actual implementation is phase modulation because directly doing FM in the digital domain would put quantization error in the frequency domain, i.e. notes would be off-pitch instead of having noise.



Comparing difficulty between FM and SID is a bit apples to oranges. The SID has analog variance in its filter, and no two are exactly the same, so a pure DSP implementation has to do rather heavy math to approximate the filter. As a result most people lean on a handful of SID emulation cores because otherwise their emulation is just wrong.

OTOH the things that tend to differentiate implementations of Yamaha's FM are the sample rates, bit depths, and envelopes used, plus any output distortion(YM2612 for example has a well known distortion in its implementation that adds a harsher edge). The core algorithms they use are something a high school student could pick up and do something with, and emulation quality issues are more a matter of it being easy to write an emulation that gets it 98% correct without covering the last steps, since those are details that really need error-for-error reproduction of the original ASICs and boards, including any timing issues - things which frustrate emulator writers everywhere.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: