4 ms·
Awesome work! I love the care and attention that people put into understanding these devices. I'm currently in the middle of a vintage synthesiser hacking proj
by ajxs 4y ago
Awesome work! I love the care and attention that people put into understanding these devices.
I'm currently in the middle of a vintage synthesiser hacking project as well. Last year I made a fully annotated disassembly of the Yamaha DX7 firmware, and did some other technical analysis of the synth. Since then, I've been waiting for a chance to put this knowledge to good use. I found a DX9 on a local trading site, and I'm in the process of hacking its firmware to remove the 4-operator restriction that made it such an unpopular synth.
- tomcam 4y ago> Last year I made a fully annotated disassembly of the Yamaha DX7 firmware You beast!
- colejohnson66 4y agoFound it: https://github.com/ajxs/yamaha_dx7_rom_disassembly https://github.com/ajxs/yamaha_dx7_rom_disassembly It’s extremely documented. More than I was expecting.
- NexRebular 4y agoI wonder if DX100 firmware could be hacked like that as well, it being another of the 4-op beasts too
- ajxs 4y agoUnfortunately you can't add any more operators to the DX10, however you could probably add multitimbrality! Yamaha's YM2164 sound chip at the heart of the DX100 is pretty well understood, and very similar to the later YM2414 used in the multitimbral TX81Z.
- thewebcount 4y agoAre you familiar with Dexed[0]? It’s a free, open source DX7 emulator for most major DAWs. They’ve done similar work in figuring out how the device works internally. [0] https://asb2m10.github.io/dexed/ https://asb2m10.github.io/dexed/
- ajxs 4y agoYes, both Dexed, and its authors were a great source of help and information for me in my research on the DX7!
- CamperBob2 4y agoLast year I made a fully annotated disassembly of the Yamaha DX7 firmware Jesus.
- billforsternz 4y agoI browsed through the repository as discovered by colejohnson66 downthread https://github.com/ajxs/yamaha_dx7_rom_disassembly https://github.com/ajxs/yamaha_dx7_rom_disassembly. This is an example of superb, meticulous, lovingly documented work. The kind of thing you don't see every day, congratulations. The attention to detail is really just chef's kiss, starting with a really good repository name (a small thing, but still), continuing through clear and apparently comprehensive documentation of what you did and why, then on to beautifully formatted and commented assembly language (much better than the original source code I'd wager) with coherent and consistent paragraph commenting a particular delight, and finally (and very importantly) dedication to making sure others can reproduce your results and generate a matching binary too. There are likely to be other things of beauty in there I have forgotten to highlight, it's just that good. Oh the FAQ of course, what a great FAQ. Really I am being very wordy for someone that's lost for words. BTW, I love retro computing too, this is my best attempt so far in the field https://github.com/billforsternz/retro-sargon https://github.com/billforsternz/retro-sargon. I aspire to similar standards to your good self, but I'm not there yet.
- ajxs 4y agoThank you so much for your very kind words! I really appreciate them! It was indeed a labour of love. Being able to (re)create a matching binary was my benchmark for success, to prove the accuracy of the reverse-engineering. Unfortunately it's impossible to know how well-documented the original assembly was. I've poked around in some of Yamaha's other synth firmware from the same era, and there's some reuse of code between them. That suggests there was some shared documentation, and tooling available between teams. Speaking of documentation, and naming: The placement of functions within the binary probably hints at the organisation of the project, and how things were named, however it's hard to tease out the abstractions they were working with after the fact. This was my first project in 8-bit system programming. The Hitachi 6303 manual has some suggestions to use for project documentation that were even more comprehensive. I'd love to know more about how engineers worked in this era! Also, your project looks amazing! I'll definitely give this a good look!
- avip 4y agoSuch clean and well organized work I rarely see. Painfully, I have to switch back now to my dayjob IDE.
- ajxs 4y agoThank you! I try to put the same level of care into the professional work that I do, when the company allows me to do so. It's very rarely as fun and engaging as this project is though!
- tgv 4y agoAre you telling me the DX9, my first synth all those years ago, actually had more than 4 operators? BTW, another thing that made it less popular: its keyboard. It didn't have velocity sensitity, nor aftertouch. Or is that also a ROM-upgrade away?
- ajxs 4y agoYes, the "Worst FM Synth Ever[0] is actually a DX7 in disguise. Internally it uses the same sound generation hardware as the DX7. The internal circuitry is different overall, but the main sound generation chips, DAC, and output circuitry are identical. This means that by altering the firmware it's possible to turn the DX9 into a DX7, with a few differences. As you've noted, one of them is the non-velocity sensitive keyboard. You can make it respond to velocity, and aftertouch via MIDI, but making the keyboard itself velocity, or aftertouch sensitive isn't possible unfortunately. [0] https://yamahadx9.com/DX9Worst.html https://yamahadx9.com/DX9Worst.html
- aa-jv 4y agoYou'll probably love this - a complete reverse engineering of the Virus Synthesizer DSP code, which now runs extremely well in a DSP56400 emulator .. meaning you can run the Virus code directly on your PC and get the same audio as you'd get from real hardware: https://dsp56300.wordpress.com https://dsp56300.wordpress.com Pretty astonishing bit of reverse engineering there ..