4 ms·
Reverse-engineering the Yamaha DX7 synthesizer's sound chip from die photos (2021)
- deleted 3y ago[deleted]
- aamargulies 3y agoGrey Matter Response reverse-engineered the DX7 with a logic probe to create their E! product: https://www.muzines.co.uk/articles/grey-matter-response-e/2082 https://www.muzines.co.uk/articles/grey-matter-response-e/20... E! was so good that Yamaha suspected them of industrial espionage. A logic probe.
- ajxs 3y agoReverse-engineering a binary is hard enough in 202x with modern tooling. Doing what they did back in the 80s is truly impressive!
- fsckboy 3y agonot pointing any fingers at all, except to point out that if you engaged in industrial espionage you would undoubtedly then come up with a plausible cover story and hope nobody probed the logic of it too much
- ShadowBanThis01 3y agoI see what you did there, and raise you an octave.
- mmastrac 3y agoKen, if you have some spare bandwidth I have some high-res decap photos from the chip in the Casio SK-1! I worked on trying to reverse engineer the instruction set from that chip, but most of the code is in a mask ROM that probably needs some debug wires to extract.
- nobleach 3y agoThe demo song from that thing will forever live rent-free in my head. Sometimes I sing it to myself, and then pretend I've switched the lead instrument to a sample. (hi, hi hi hi, hi hi hi, hi hi hi hi hi....)
- ajxs 3y agoThere's a zip file here with the Casio SK-1 ROM: https://dbwbp.com/index.php/9-misc/37-synth-eprom-dumps https://dbwbp.com/index.php/9-misc/37-synth-eprom-dumps Maybe this could help. Is there some mask ROM on the CPU that isn't included here?
- mmastrac 3y agoCorrect. Those have been available for ages, but there's a mask ROM on the CPU that is undumpable, at least at this time. I have a huge collection of datasheets and I was unable to even figure out what the instruction set was.
- userbinator 3y agoIt's likely to be something Japanese, and I know there's been plenty of obscure architectures from them over the years. OKI is known to have made the CPU for Casio, so have you ruled out OKI nX-8?
- mmastrac 3y agoScanning through my old datasheets I have one from the MSM65512 which probably means I considered that but it's been a while. I should have kept a devlog. I found an old email to someone that suggests I thought it was an nX/4. This is a lower-res version of the decapped chip. https://upload.wikimedia.org/wikipedia/commons/4/44/Oki_m6283_metal.jpg https://upload.wikimedia.org/wikipedia/commons/4/44/Oki_m628...
- kens 3y agoThanks. Much as I'd like to reverse-engineer the Casio SK-1 chip, I'm trying to stay focused on my current projects.
- helpfulContrib 3y agoI'm reminded of the folks working on getting the Motorola M56k DSP emulator working so well that it can boot the firmware for many popular digital-analog synthesizers directly, and pretty much produce word-compatible output from factory patches .. astonishing stuff.
- dvas 3y agoThis is great! What a lovely read. Reminds me back of my teenage years mesmerised by software/hardware synths, daws and everything and anything related to audio tech. Hours spent trying to understand different waves, oscillations, LFOs, modulation, AM, FM and so on and so forth. I could go on all day. Great memories. Anyhow, would be interesting to go down a rabbit hole reading up on the waveform representation for the DX7. Now that I remember, I will go ahead and look for SH-101.
- fsckboy 3y agoDX-7 was digital FM synthesis, so while it uses waveforms to modulate other waveforms (digitally at least), and waveforms come out the other end, it's not based on typical "analog synth" waveforms the way the SH-101 is.
- jacquesm 3y agoHere are all the other articles and their previous HN discussions: https://hn.algolia.com/?q=righto.com+yamaha+dx7 https://hn.algolia.com/?q=righto.com+yamaha+dx7
- showerst 3y agoThanks Ken, that was the best rickroll I've seen in years.
- ajxs 3y agoI wrote the article mentioned by Ken: https://ajxs.me/blog/Yamaha_DX7_Technical_Analysis.html https://ajxs.me/blog/Yamaha_DX7_Technical_Analysis.html I've unwittingly become a bit of a Yamaha FM Synth historian! Here are some other contributions to reverse-engineering the DX7: A fully documented disassembly of the DX7 ROM: https://github.com/ajxs/yamaha_dx7_rom_disassembly https://github.com/ajxs/yamaha_dx7_rom_disassembly A new firmware ROM that makes the DX9 function more like a DX7: https://github.com/ajxs/yamaha_dx97 https://github.com/ajxs/yamaha_dx97
- djaychela 3y agoThanks for this. I've got a dx9 I paid very little for and the lack of velocity sensitivity has always annoyed me about it. I shall give the firmware a go!
- ajxs 3y agoI edited my post to say "more like" a DX7. Unfortunately velocity sensitivity can't be added because the physical keyboard doesn't support it. The firmware does add velocity sensitivity to incoming MIDI data though!
- fsckboy 3y agoisn't velocity sensitivity simply two electrical connections ("buttons pushed") that get made at slightly different points in the arc of a keypress, and the time difference between them is measured to use speed as a proxy for how hard/loud the key is pressed? (that was both a question and to explain the mechanism to people not familiar ;) I wonder if it would be simple ot add a sensor to measure that across the keyboard, and then have it do double duty as aftertouch (aftertouch is an effect that measures if you "wiggle" a key after you've pressed it down) Then his DX9 could be better than the DX7 :)
- oolonthegreat 3y agoi would also think it is achieved by piezo's, though maybe thats specific to drum stuff?
- jim-jim-jim 3y agoI am unfamiliar with low-level workings like this, so forgive me if I'm talking out of my ass, but received wisdom from places like KVR Audio suggests that on modern machines, fixed point decimal math tends to be slower than just using floats because the integer registers are already clogged with routine operations like incrementing loops, etc. But some claim that anything that needs a phase accumulator as a wavetable index, like FM, still benefits from being kept as integers due to the expense of converting a floating point accumulator to an int address. FM doesn't have much arithmetic relative to its reads. I wonder how true this still is. I've been having fun simply assuming it is, and these teardown articles and the other HN discussions around them have been very helpful.
- raphlinus 3y agoI am very familiar with such low level workings. On a modern, fast machine, the amount of computation required by FM synthesis is so small compared with the machine's throughput that it just doesn't matter. Yes, on modern chips float math will generally be faster than fixed point. This is not so much because the integer units get clogged, as that there's a huge amount of chip area and optimization that goes into the float units (often SIMD, and a lot of FM synthesis can benefit from this, though feedback creates data dependencies). For example, multiply-and-add is usually one cycle in float, but would always be two separate instructions in integers. My recollection is that older ARM chips have a special issue with latency of data dependencies originating from the float unit (NEON, which is optimized for SIMD vector operations) to the integer unit. I suspect this is no longer the case, or is less of an issue.
- o11c 3y ago> For example, multiply-and-add is usually one cycle in float, but would always be two separate instructions in integers. Unless the multiply is by a constant 2, 4, or 8, in which case you can use `lea`.
- dvas 3y agoGot me curious regarding ARM latency, wonder if that was related to particular instructions which added more latency or transfers between the registers/memory subsystem internals. Also on the off-chance that you remember, did you inline intrinsics or let the compiler auto-optimize? Interesting to test out on the ARM Mac, and see if different dependency chains show significant latency penalties / in with reorder buffer.
- ShadowBanThis01 3y agoThis is really informative, and the simple FM-synthesis demo confirmed my guess as to what the term meant (since I could never be bothered to look it up). Fun! Is there a highly-regarded software (or hardware + software) emulator for the DX7?
- throwaway2046 3y ago> Is there a highly-regarded software (or hardware + software) emulator for the DX7? Dexed is probably what you're looking for, although there are others here: https://github.com/nodiscc/awesome-linuxaudio#synthesizers---fm https://github.com/nodiscc/awesome-linuxaudio#synthesizers--...
- ShadowBanThis01 3y agoCool, thanks! I wonder how many of those can run well on a Raspberry Pi.
- duniel 3y agoI would recommend Plogue's OPS7, they have put considerable amounts of time and effort into reverse engineering the original chips. The interface is a little clunky but it sounds fantastic. https://www.plogue.com/products/chipsynth-ops7.html https://www.plogue.com/products/chipsynth-ops7.html Edit: a YouTube video about the reverse engineering process from David at Plogue: https://www.youtube.com/watch?v=XJ97iXQrqzw https://www.youtube.com/watch?v=XJ97iXQrqzw