6 ms·
Yes, another DX7 post. Author here if there are any questions :-)
by kens 5y ago
Yes, another DX7 post. Author here if there are any questions :-)
- jacquesm 5y agoKeep them coming :)
- DoctorNick 5y agoAre you working on an FPGA re-implementation? Basically everything with a DX7 chip in it is insanely priced (especially the PLG cards for the Yamaha MU-series, those are >$400), so this would be awesome to have.
- mbf1 5y agoI do wonder if it's feasible just to use some cheap off the shelf (COTS) general purpose ARM cpus like in Rasperry Pi computers and some code to perform the same calculations that Yamaha did in an ASIC in 1980's in real time. Even PIC microcontrollers today have a decent amount of computation for a couple cents. Being latency sensitive here is definitely key.
- DoctorNick 5y agoSomeone ported an emulator to the teensy: https://github.com/dcoredump/MicroDexed https://github.com/dcoredump/MicroDexed
- ajxs 5y agoIt certainly is. The Korg Volca FM is implemented in this fashion, just to name one. From memory it uses an ARM Cortex-M chip for both the UI, and DSP. Many other modern synthesisers use COTS general purpose chips for DSP these days. At some point around the late 90s synths made the transition from being built around custom ASICs to using COTS DSP processor chips. It's hard to pin down exactly when this became standard. The Roland JP8000 (1996) used custom ASICs for signal processing, the Access Virus (1997) used a COTS DSP processor, from memory (Something from NXP?). The Korg MS2000 (2000) had a COTS DSP processor too. These days you can apparently achieve comparable performance with Cortex-M chips.
- bsedlm 5y agoI have a question (from part one); it's a clarification question. > The digital implementation of frequency modulation starts with a lookup table that holds a digitized sine wave. > The next step is to modulate the output by adding a modulation signal to the index. In those paragraphs, you're saying that you start with a table of sine-function values. This table has (for the sake of example) 4096 different values. I suppose in real life there may be many more. then you read this table by incrementing an index between 1 and 4096. this happens many times per second and every time you increment the index by one unit. This will output a sine wave at a specific frequency determined by how quickly you increment this index (i.e. how often the table is read out). So far alright, if you're adding 1 to the index 40960 times every second you'll a sine wave with a 10hz frequency (is this correct?) but then, instead of adding 1 to the index 40960 times per second, you add 100 every single one of those 40.1k reads of the table? and this generates a sine with a frequency of 1000hz!? this is quite frankly very surprising to me. The kind of thing I don't see myself coming up with easily; referring to the fact that it's possible to change the output frequency just by jumping around the table (instead of reading it all out one by one jump the index by 100 table entries) while keeping the number of times per second the table is read the same. Finally, if the index increments themselves are read out from another sine wavetable, you get FM modulation... this is more reasonable but it depends on the previous very surprising (to me) way to change the frequency of a sine wave. thanks for the great write-ups.
- kens 5y agoYes, that's essentially how it works. You might think that jumping through the sine table in large steps would make your waveform too irregular. But that's what happens with any digital audio. E.g. a CD has music at 44kHz, so a 4400 Hz tone only gives you 10 points from a sine wave which would seem very irregular. But a low-pass filter smooths things out, so you end up with a nice smooth sine wave. (Look up Nyquist frequency if you want more details.) One additional thing about the DX7 index is that you can think of the index as having 10 fractional bits, so you have much more accuracy in the increments. Otherwise, the frequency resolution is pretty bad because the frequency changes in big jumps when the index step changes by 1.
- 5y ago
- throw_m239339 5y agoNo question, just fascinating article, although I'm not an electrical engineer nor I'd be able to program these chips.
- cush 5y agoIs the idea this will soon yield a VST/emulator?
- deleted 5y ago[deleted]
- jacquesm 5y agoThat has already been done (see: Dexed), think of this as the last steps in documenting what exactly it is that the DX7 actually does internally. You can then use that to: - verify that the emulators indeed get it all correct - test your assumptions about how you thought it worked - maybe program it to do things it wasn't strictly speaking meant to do
- monocasa 5y agoWhat's the expected clock rate for the logic? I think I missed that for context. The output is probably latched into the DAC at tens of khz, but there's so much bit serial stuff and time shared logic like the oscillators that it's much higher internally? Does it reach mhz?
- jacquesm 5y ago3142144 Hz 4 times the DAC frequency. Or, actually, 49096 * 16 * 4 http://yates.ca/dx7/Schematics%20&%20PCBs/DX7%20Schematic%20Tiled.pdf http://yates.ca/dx7/Schematics%20&%20PCBs/DX7%20Schematic%20... Top right of the diagram.
- edb_123 5y agoVery good and deeply interesting work! As the owner of the later model, I have to ask: would you consider doing the same with a DX7II, if they are dissimilar enough at this level to warrant doing do?
- kens 5y agoMy plan is to look at the DX7's other custom chip (the EPS), but I probably won't look at another synthesizer since I have too many other projects.
- weatherlight 5y agoWhat's your favorite FM synth? :P
- kens 5y agoStrangely enough, I'm not a synth guy, so I don't have favorites to recommend :-)
- weatherlight 5y agothats amazing
- ajxs 5y agoNot the author, but I'll answer as someone who has owned many of Yamaha's classic FM synths. Without a doubt I think that the original DX7 Mk1 is the most interesting. The latter 6-operator FM synths such as the DX7 Mk2, or the SY77/99 were definitely more advanced, and had a 'cleaner' sound, but they don't capture the same classic gritty quality of the original.
- lariati 5y agoIMO FM8 is the best by a mile. To me, you give up a little in basically sound quality(and that is probably debatable or depends on your taste) for a massively improved programming interface. You can't go back to a hardware interface after that unless you just want to stick with presets.
- skinpop 5y agoThe Buchla 258 oscillator has amazing fm that sounds alive.
- EarlKing 5y agoAre you by chance in touch with the gentlemen behind DexEd[1]? I've been using the Windows port of it and some instruments don't sound right, so I imagine there are some details DexEd doesn't quite have right yet. -- [1] https://asb2m10.github.io/dexed/ https://asb2m10.github.io/dexed/
- kens 5y agoNo, I haven't been involved with DexEd. Hopefully, though, some of my analysis of the chip will improve the accuracy of emulators.
- ajxs 5y agoI posted in the last DX7 chip thread about Dexed's interesting history. I know that at least one of the original developers frequents this forum. Dexed is a fantastic emulation. I remember Raph Levien mentioning that one of the most elusive details of the DX7's implementation that contributes to its signature sound is its quirky attack envelope stage. Also, one of the biggest remaining mysteries about the DX7 is the source of its trademark 'harsh' quality. It has a much harsher, warmer, and more distorted quality than any of Yamaha's other FM synths. Even decapsulating the OPS chip hasn't thus far definitively revealed the source.