Hacker News new | past | comments | ask | show | jobs | submit login
Yamaha DX7 chip reverse-engineering, part V: the output circuitry (righto.com)
156 points by picture on Feb 4, 2022 | hide | past | favorite | 51 comments



Author here if there are any questions about my latest DX7 post.


I just wanted to thank you for this.

I ‘grew up’ on the YM2612 due to the Genesis being my childhood console.

As a rapper/producer these days - I’m always reaching back there when composing Beats - with the self-imposed limitations included, of course. Some prouducers still prefer an MPC2000 over a DAW.


Have you interacted with the folks at Plogue making the OPS7 emulator? They seem to be obsessed with reverse engineering to get bit-level hardware accuracy (but with a logic analyzer).


What do you think about the dexed softsynth [0]? It's supposedly the closest modeled softsynth to the DX7 in existence.

0: https://asb2m10.github.io/dexed/


It's not bad, but I've heard that the person who started it is a jerk who constantly posts self-serving comments on HN, and always seems to pop up on threads about the DX7.


When I started doing my research into the DX7 I pored over Dexed's source code to understand how its emulation worked. It was really amazing to discover what an interesting legacy its source code has! The bulk of Dexed's code is derived from Raph Levien's (hi Raph!) Music Synthesizer For Android (msfa). However there's additional code derived from Steffen Ohrendorf's ppplay[0], which in turn builds upon different people's research, reverse-engineering, and experimentation going back decades. Going through it, I really felt like I was looking at something organic built not just from, but upon the passion, and dedication of so many different talented people, over many years. Very cool!

[0] https://github.com/stohrendorf/ppplay


Hi Anthony!

Yes, I'm really pleased with the way it started as an individual project and turned into a collaboration. And I think it's likely that Ken's detailed and excellent investigative work will find its way into further code improvements.


Maybe the closest free plugin, but it's not on the level of accuracy as Plogue's Chipsynth OPS7, which is bit-accurate. The author has an interesting video here, with more to come hopefully: https://www.youtube.com/watch?v=XJ97iXQrqzw


Thank you so much for doing these, my childhood is complete!


None yet, reading with great interest. Really, I just want to echo the many, "THANK YOU!!" sentiments related to your work out there.



It looks like someone submitted it there.


I love your work and your site, thank you.


Thanks for this! Will you be dissecting the M1? ;)


Will you donate an electron microscope? ;)


They are most likely referring to the Korg M1, not the Apple M1. Similar vintage as the DX7, so probably no electron microscope needed.


I wasn't planning on looking at either M1 :-)


How about the D-50? ;-)


I'm trying to avoid taking on more projects. The DX7 has a second custom chip, so if I look at that one too, I'll be busy for a while...


Ah yes, that possibility exists as well. Good call.


Have you tried out the korg Opsix?


No, I'm more on the chip side of things than the synth side so I haven't tried out much.


Why are there two store-and-hold circuits? Is it for smoothing the output waveform?

I was thinking it could be to produce a stereo output using a single chip by alternating between left/right [0]. But the output is summed and as far as I know, the 1/4" jack is mono.

[0] My first CD player, the Sony CDP-101 did this. It only had a single DAC so there was a 11µs delay between left + right channels. While I loved it, any $60 Walmart player has better sound these days.


One theory is that it reduces intermodulation distortion since any particular signal only changes half as much. Another theory is that it was to support stereo, but as you say, the DX7 is mono. I did some Fourier analysis to see if it reduced artifacts from the time-domain multiplexing, but the effect was small. TL;DR: I don't know.


It would be interesting to have this design on an FPGA that has a built-in DAC. I could see a very general purpose midi keyboard that has an interface that would allow switching between multiple different simulated synthesizers.


There have been a handful of products that have tried to be an FPGA for analog circuits, but unfortunately those applications are far, far more sensitive to signal integrity issues, so it's harder to just abstract away all the intermediate fabric that connects up your function blocks the way you can with a digital circuit.

This post explains further: https://electronics.stackexchange.com/a/25529

Here's an example [0] of some of the many considerations that come into play when laying out even a conventional PCB that handles analog signals, from which it's not hard to imagine how much more of issue basically all of that stuff would be when happening inside a single chip package— particularly when part of the point of analog circuits for audio processing is often to achieve the aesthetically interesting effects that happen when components are overdriven, oscillating or feeding back, in breakdown, etc. Not hard to see why modern programmable effects pedals just have a high speed DAC and do everything in discretized space.

[0]: https://resources.altium.com/p/pcb-design-rules-analog-circu...


I just bought the parts for this FPGA 6op fm synth - https://www.futur3soundz.com/xfm2 for about $100.

It sounds amazing, simple build. The author, Rene Caballos is a dsp guru who wrote Z3TA+ and a bunch of other softsynths. The same board can also run another synth, https://www.futur3soundz.com/da-blog/xva1


Sure, but this is known to be easy to emulate in software. The FPGA isn't really necessary.


It’s nice if you want a portable (size of a cigarette pack) hardware fm synth with megahertz sample rate oscillators (no aliasing), with built in effects


For the same reason that dynamite can be used to dig holes in your garden, yes, an FPGA can be used to simulate a DX7.

If you're going for a "no aliasing" simulation then you're not after the DX7 sound anyway (which has fairly heavy aliasing), and you might as well just wire up some bandlimited FM in software. I still don't see how using an FPGA helps you, except that it lets you throw money at a problem instead of having to learn signal processing theory.

I'm not trying to pooh-pooh FPGAs, it's just that CPUs have a ton of processing power these days, and we have tons of signal processing techniques to deal with aliasing other than just cranking the sample rate up to infinity. The amount of processing power it requires for bandlimited synthesis is a function of sample rate, if you keep the other design parameters fixed. Low sample rates are inefficient because your filters get really large--so you oversample. Likewise, at high sample rates (megahertz is well beyond "high") it gets easier and easier to deal with aliasing, and at some point, you're just churning through more data without reducing the aliasing (because at some point it's below the noise floor anyway).


Ah, I agree that simulation of DX7 quirks with FPGA makes little sense. But they are an interesting choice for a very portable high quality FM synth (not a specific emulation) vs other similar sized options. Here is some more rationale - https://www.futur3soundz.com/xfm-index


My experience implementing FM in software is that CPUs are just so wicked fast, because FM is super easy to implement in SIMD. I implemented FM synthesis using SSE and when I measured the performance, I found out that the oscillators were memory-bound or close to it. You could compile a few operators into a function and work on small buffers in L1 cache, and and it just wouldn't show up on the CPU usage monitor.


Yeah to be honest he could have probably implemented this as an iOS app for max portability. Wouldn’t get latency down to 1ms like with the FPGA synth but otherwise would have been fine


Not exactly the same, but here's an FPGA emulation of a Hammond organ

https://github.com/keyboardpartner/HX3


My first real interest in computing came from my Uncle showing me his DX7. It made such cool synths as well what I thought at the time was a decent piano sound especially in the early 80s. A Huge bulky instrument it also had a midi interface too which was new (yikes) at the time.


HN loves the DX7.


I mean, why not? It's not the first but one of the first FM synths and the one that definitely made the biggest splash. Affordable and versatile so it became a staple in studios, music classes and with home players as well.

The sound chip YM2612 is also what elevated video game audio when it was still in its' infancy to something more akin to "real" sounding instruments.

Historically it's been very influential since the 80s so it's no wonder it's struck a chord with people now in their 30s, 40s and older.


IMO the YM2612 was neat but shortly after it appeared, we started getting multichannel PCM-based (or ADPCM) sound chips which were much more flexible and had more naturalistic sounds.


I originally wanted to reply to this comment saying _"The age of MIDI music in games wasn't that short, was it?"_. I thought I'd look it up first, and you're right. It looks like by around 1994 most computer games were using PCM music. It looks like the Sega Mega Drive with its FM chip was released in 1988. The first Sound Blaster card with an integral FM synth was released in 1989. General MIDI was only standardised in 1991. So I guess it didn't last as long as I thought.

Still, I grew up in the 90s, and this kind of MIDI music in games was ubiquitous, and instantly recognisable to anyone in my generation. Even though it didn't last long. It had a huge impact.



This is unbelieveably cool! The MIDI collection looks a lot like my own personal MIDI collection that I downloaded 25 years ago from FTP sites!


Very cool! The interface is great, nice work!


So, depends on how you count the “age of MIDI”. Majority of Nintendo 64 games used a MIDI pipeline… you’d take MIDI and a sound bank, convert it to some proprietary format, and drop it into your game. By “PCM” I just mean sampled instruments. That includes stuff like SoundBlaster and Roland SoundCanvas.

FM was only a short slice of MIDI music in games. A lot of that was Genesis / Mega Drive.


The same thing happened in the pro synth world.

When the DX7 came out in 1983, people were wowed by the decent piano sound, for example, which was something analog synths never did well. There were lots of sounds like that - bells, xylophone etc.

Then sample based keyboards started to get more affordable, and RAM and ROM got cheaper.

Eventually in 1988 came the Korg M1. Megabytes of samples in ROM let it do a perfect piano sound, along with a horde of other great sounds, natural and unnatural. The M1 became the best-selling synth in history and the world's fascination with FM finally faded.


I think by 1988 the world was well and truly suffering from "DX7 preset fatigue". To quote Philip Oakey from Human League:

"They get really bland after a while. And when we get into what I call the DX Sound Hunt, it drives me up the wall. Someone in the studio will say, ‘Okay! Let’s have a bell sound.’ Then we start going through the 128 sounds on our DX —we have the Sycologic MX1 expander board— and playing every one, including the whistle, the train, and the bombs. If we find something we like, it has probably turned up on 50 records that have been made over the past few years..." [0]

I was wondering whether the Korg M1 was really what turned the tide against the digital synth revolution that the DX7 kicked off, and whether it really was the first of its kind. I looked up Yamaha's synth chronology[1], and it really seems like Yamaha didn't produce anything between 1983-1990 that wasn't an FM synth. I'm actually very surprised. My internal chronology was off. I had thought Yamaha had started making PCM-based synths before that!

[0] https://meganlavengood.com/the-yamaha-dx7-in-synthesizer-his... [1] https://usa.yamaha.com/products/contents/music_production/sy...


Korg M1 was definitely the most popular. The Roland D-50 appeared around the same time, but it wasn’t as popular as the D-50. By 1992 you had a wide selection of samplers and romplers available.

Presets on the M1, D-50, Wavestation, JV-1080, etc all got used to death. A lot of the PCM samples were recycled from popular samples on older synths, dating back to systems like the Fairlight or Synclavier. Everyone had samples of the Jupiter, Moog, Synclavier, Fairlight, DX7, TB-303 and TR-808/909.


That was one the cool mistery of those romplers to me (my first one was a JV-1010): they had the PCM tech that would allow them to sample real instruments like the brochures said, so strings, woodwinds a pianos were awesome, I could understand why. But what machines did they get to sample for the synth presets?


A guilty pleasure of mine is that genre of YouTube videos showing where famous songs used the Korg M1's presets. It was absolutely all over the music of the 90s! When I was younger I unfortunately didn't pay these early romplers their due out of sheer snobbery. These days I'd love to play around with them.


I watched the same videos, and ended up purchasing a small number of 1990s romplers in rackmount format, as well as a Yamaha FM module. It turned out to be a good investment—the patches often don’t sound realistic but they sound good, they’re very easy to use, and it’s easy to find a patch that I like. More modern synthesizers, softsynths, and DAWs seem like they have a ton of garbage, unusable patches with a million effects on them to show off how powerful their sound processing engine is.

The Yamaha FM module was actually my first hardware purchsae, and I thought I would love it a lot more—it’s pretty limited.


I know next to nothing about musical keyboards but know about the DX7. In the 80s it was a rock star in its own right. MTV and the big DX7 label on the back of the keyboard made it as recognizable as members of the band using it. For that era, it was the Porsche 911 of keyboards.


HN Loves Ken Sherriff. His work is absolutely amazing.




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

Search: