Hacker News new | past | comments | ask | show | jobs | submit login

There was mention of the sound becoming 'dull' at the higher octaves. This is not a limitation of the DAC as was suggested, but caused by the phase modulation algorithm aliasing badly at the top of the range. Basically the modulation causes higher harmonics to appear in the output, and if these are higher than nyquist (half the sampling rate) they reflect back into the audible range, and produce unpleasant very digital sounding artifacts.

So, the DX designers avoid this by adding keyboard scaling for the operators - as you play higher up the keyboard, sounds could reduce the amount of modulation applied, and hence reduce the level of the aliases till they were inaudible. Unfortunately if done too aggressively, this will lead to a noticeable reduction in the harmonic complexity of the tone, which is perceived as a dull tone.




Great post! I always thought that the keyboard scaling was entirely for musical purposes. Such as emulating the difference in timbre in a plucked instrument as you go up in pitch.

One of the main DX7 patents talks about adding an averaging filter in the path of the feedback mechanism. Averaging the current sample with the last one helps prevent the high-frequency aliasing. There's also a 16Khz low-pass filter on the main output.

Here's a very in-depth look at the behaviour of feedback FM: https://ristoid.net/modular/fm_variants.html


The one at the output cant really fix aliasing. At this point bad things have already folded in the normal spectrum.


Yes, you're right. I could have made that clearer. I think the filter is just there to remove harsh high frequency artefacts from the final output for the sake of the overall sound.


I know there is a bunch of new DX7 implementations on more modern hardware, i.e., the Raspberry Pi.

When implemented on modern hardware, wouldn't it be possible to run the algorithm at a higher CPU processing speed, to reduce the aliasing at the higher notes, and avoid the need for keyboard scaling and thus preserve the timbre of the higher pitched notes?


You mean, would it be possible to oversample the algorithm, run it effectively at a much higher sample rate and reduce the audibility of the aliases? Yes, it'll definitely help, but no, it's not possible to eliminate this effect, even with monstrous levels of oversampling.

The problem is that, say, a piano keyboard runs from 30Hz to 4Khz, so to get an even tone, at the top of the keyboard, you are only hearing 4 harmonics of the fundamental, whilst at the bottom, you potentially have roughly 1,000 harmonics in the audible spectrum.

Without fiddling with the voice with keyboard scaling, that same tone with 1,000 harmonics played at the top of the keyboard will generate a 4Mhz frequency, so you'd need a 2Mhz sample rate to avoid the aliases reflecting into the audible spectrum.

So that's 45x oversampling, which is a scary amount of effort to throw at the problem, to resolve the issue for this one contrived sound.

Now if you modify the above sound, and double the modulating frequency (the operator pitch) then you'll double the oversampling required, and you have basically limitless control to create higher and higher levels of harmonics to tame, so you can always fiddle with the setting to produce aliasing if you try hard enough :)




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

Search: