[sdiy] Re: FPGA 2-OP FM MIDI Polysynth
Scott Nordlund
gsn10 at hotmail.com
Mon May 4 19:18:51 CEST 2009
> Veronica Merryfield mentioned an interesting idea - to allow sound generators with a
> phase modulation input to be incommitted to any specific structure and use a patching
> program to "connect" them in various ways. This way N-operator could be done
> depending on the robustness of the patching mechanics. Not being a person experienced
> in FM, I don't know at what value it begins to become silly to increase N.
In this case it might be preferable to have multiple phase modulation inputs per operator (summed together) to allow for feedback and more interesting routings.
>>If you have the DSP power for multiplies, my tip would be: use 4-op
>>Phase Modulation synthesis with derived waveforms (like the TX81Z)
>>with log tables, and use the multipliers for analog style envelopes,
>>good subtractive filters and effects (FM sounds generally takes very
>>well to a touch of chorus and delay, and some sounds really come to
>>life with a bit of overdrive). Make it multitimbral, and voilà, it
>>might be the only synthesizer you ever need.
Well the log tables are used for envelopes, so if multipliers are used then the log won't be necessary (as far as I know, anyway).
exp([linear envelope] + [log(sin)]) is equivalent to [exponential envelope] * [sin], right?
And this is the problem, since "exponential envelope" ends up working backwards for the attack.
Imagine a linear envelope through an exponential function- the decay/release portions are fine because an exponential decay is what you'd ordinarily hear in acoustic phenomena or analog synthesizers. The attack portion, however, becomes exponential growth, as opposed to the rising exponential decay (or linear, I guess, though I haven't found any that work this way). For long attacks it sounds unnatural, like something playing backwards. In the DX7 (or Casio VZ), this can be partly worked around by setting the initial level to 50 (out of 99), since it's pretty much inaudible below this anyway. I some cases though I found myself using an additional envelope stage to make it sound more reasonable. This is fine on the VZ (8 stage envelopes) but rather hurts on a DX7 (4 stage envelopes).
Well as far as I can tell this presents a slightly difficult situation, since the lousy attacks are a by-product of the log math that makes the implementation more efficient. The best solution that I can think of would be to generate envelopes via a difference equation (with a threshold to advance to the next stage). This does require a multiply, but if this were fed into a log table, the scaling could still be performed without a multiply. I wonder how the Synergy phase shift method would compare...
I'd appreciate if someone would verify that this makes sense, because I always worry that I'm going off into some nonsensical speculative daydream.
_________________________________________________________________
Hotmail® has a new way to see what's up with your friends.
http://windowslive.com/Tutorial/Hotmail/WhatsNew?ocid=TXT_TAGLM_WL_HM_Tutorial_WhatsNew1_052009
More information about the Synth-diy
mailing list