Skip to content

Comment on Libfmsynth: a C library which implements an FM synthesizer

Comments

Pretty awesome, I've always wanted to make something like this myself, but listening to the demo on SoundCloud I don't think I would never even get close to this :-)

One question I have is how difficult it would be to adapt a soft synth like this to also be able to produce the kinds of sounds you would get from a SID (from the C64 etc). My understanding of waveform synth is very limited, but it has always struck me how different all synthesizers (hardware and software) always sounded so different from SID chiptunes. Probably there's some analog effects going on there that are hard to reproduce mathematically?

Probably there's some analog effects going on there that are hard to reproduce mathematically?

Yes, exactly. The SID chip is a pretty complex analog synthesizer and it was made using less-than-perfect manufacturing processes, making some chips sound better than others. The SID has very nice analog filters that are not trivial to emulate with digital signal processing. Additionally, there were lots of ugly tricks that abused the SID chip, such as making sounds by emitting a "all ones" full-blast signal and then cranking the volume of the mixer circuit up and down to produce a fake pcm sound.

My best understanding is that a "normal" audio synthesizer (such as this one I believe) is doing computation at the same rate as audio output rate (typically 44 or 48 kHz). SID software emulators run internally at a much higher sample rate (hundreds of kHz) in order to emulate the analog circuitry.

The sid is not a complex analog synth, it's a digital 3 poly 8 bit synth with a single analog Filter at the end of the chain. As of synthesizer architecture the sid is extremely simple and genius in design, like a skateboard many tricks are possible with a simple thing.

The complexity (emulation-wise) comes from the fact that it has analog circuitry and has manufacturing imperfections. It's not complex compared to a analog modular synth setup, of course.

Emulating it digitally is not just a matter of replicating the functionality of the circuitry, but also taking in account all the analog phenomena. It's much easier to model something like a Yamaha-style FM chip you can find in AdLib or early SoundBlaster cards.

yes of course, to approximate the analog filter in digital you need to calculate some nonlinearities, and could aswell go so far as simulate electric circuitry to such detail that you would need a supercomputer to run it. But that's not the complexity of the synth architecture (which is low on the sid), but the default complexity of simulating anything analog.

The Paula (amiga chip) e.g. cannot reproduce a classical scale, because of limited bit precission [1], producing chracteristic harmonies.

For the SID, there's probably just not enough engineering going into emulation, as enthusiast prefer the original experience anyway.

[1] you might enjoy the talk Elements of chip music by Linus Akesson: <https://www.linusakesson.net/music/elements/index.php>

The sid is quite well emulated: https://en.wikipedia.org/wiki/ReSID

The SID chip uses subtractive synthesis, whereas this synth uses frequency modulation. They are very different and as such it's very hard to get the FM synth to sound close to the SID chip.

I wouldnt call the sid being subtractive synthesis, just because theres a multimode filter at the end, afterall it got hardsync and ringmod, which are additive.

I've only heard of additive referring to synthesis through summing series of sine waves. Ring mod and hard sync are pretty common in subtractive synths (my Minilogue has both for example).

Additive would generate sounds without any sort of time series "filter", and would attenuate the sine series before generating them.

It doesn't make much sense to call a synth either additive or subtractive if it contains both methods.

Even if I could build a synth, I couldn't properly program it, so I wouldn't know what features to have built to begin with.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.