[sdiy] Re: FPGA 2-OP FM MIDI Polysynth

Scott Gravenhorst music.maker at gte.net
Mon May 4 20:43:30 CEST 2009


Veronica Merryfield <veronica.merryfield at shaw.ca> wrote:
>
>On 4-May-09, at 10:18 AM, Scott Nordlund wrote:
>
>>
>>> 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.
>
>My suggestion is to have each unit with a fixed frequency input, an  
>envelope and an input from another unit. The unit is just a sine  
>oscillator followed by an amplitude modulation stage controlled by an  
>envelope and perhaps another input. This is followed by an accumulator  
>where the output of this and other units can be gathered to provide an  
>input to other units.
>
>I think this provides the most flexible arrangement allowing for FM  
>and additive synthesis to work together, enabling one or more units to  
>modulate one or more other units including feedback paths.

Thanks - one thing I really like about this is the mixture of both FM and additive
methods.

[...]

>> 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.
>
>I further proposed for the envelopes that multiple linear stages are  
>used. Linear stages are much easier to implement digitally and provide  
>the user the facility to create exponent curve approximations through  
>the use of multiple linear stages. If the user interacts with software  
>rather than the raw data, the software can make this task simple. The  
>envelope mechanics also need a sustain point or the ability to loop  
>until the release. The looping allows for volume of frequency effects  
>(vibrator, tremolo, etc) normally associated with LFO on an analog  
>synth.
>
>Veronica

I've yet to do personal discovery in this area, but I do understand that an ADSR is a
simple basic example of an EG and not an ultimate EG (though I find it very useful).
 I've only touched on the idea of exponential EG curves and have experimented only
with expo release for an ADSR.  My own implementation of exponential release used a
single multiplier to implement half of a single pole IIR lowpass filter, but in a
multiplier rich environment, I don't believe this will necessarily be bad - we shall see.



Thank you Veronica, very good and fun information.


-- ScottG
________________________________________________________________________
-- Scott Gravenhorst
-- FPGA MIDI Synthesizer Information: home1.gte.net/res0658s/FPGA_synth/
-- FatMan: home1.gte.net/res0658s/fatman/
-- NonFatMan: home1.gte.net/res0658s/electronics/
-- When the going gets tough, the tough use the command line.




More information about the Synth-diy mailing list