[sdiy] Micro as a Linear to Exponential converter?

cheater cheater cheater00 at gmail.com
Fri Aug 14 13:44:08 CEST 2009


I thought the Matrix had shitty slow modulation

On Fri, Aug 14, 2009 at 12:35 PM, Tom Wiltshire<tom at electricdruid.net> wrote:
> Fair enough. That is pretty trivial.
>
> Your original point was that the hard part is avoiding quantisation,
> resolution error, and aliasing, and that's definitely true.
>
> The biggest trouble with stuff like this is that once you've gone down this
> road, it's hard to know where to stop. Say you've built a digital
> exponential convertor as suggested. Now you want to feed a vibrato LFO to
> your oscillators. You *could* use another A/D input to sample an analog LFO,
> add that to your frequency control word (note & frac in Antti's code) and
> bingo! But then again, wouldn't it be easier to do the LFO in the MCU
> directly and avoid the A/D conversion?
> After all, you could easily have loads more LFO waveshapes, and you could
> easily do LFO frequency mod, and MIDI sync, and, and.
> What about a pitch envelope? That'd be just as simple, right? Well, yeah, it
> would...
>
> This (pretty convincing) logic leads you along a path at the end of which
> you find yourself with all your modulations done digitally, and only
> emerging into the analog world at the final DAC which drives CVs for the
> Oscs, VCF and VCA. And then you have to sit down and write software for
> something akin to Oberheim's Matrix Modulation.
>
> Or is it only me who gets carried away like this?
>
> T.
>
>
> On 14 Aug 2009, at 12:10, Antti Huovilainen wrote:
>
>> On Fri, 14 Aug 2009, Tom Wiltshire wrote:
>>
>>> I'd just like to agree with Colin's outlined scheme above. I've done
>>> similar things. Antti's comment that "the code part is trivial" is a bit
>>> misleading, IMO.
>>
>> I meant that when you have the generic MCU thing working, the exponential
>> conversion (read: interpolated table lookup) itself truly is trivial. You
>> can just write it all in C. MCUs are plenty fast nowadays.
>>
>> Example code below:
>>
>> unsigned short noteTable[128];
>>
>> // note = 0..126, frac = 0..65535 (equivalent to 0..0.99999)
>> unsigned short expo(short note, unsigned short frac)
>> {
>>  long  l1, l2, f, y;
>>  f = frac;
>>  l1 = noteTable[note];
>>  l2 = noteTable[note+1];
>>  y = l1 * 65536L + (l2-l1)*frac;
>>  return (unsigned short) (y >> 16);
>> }
>>
>> Antti
>>
>> "No boom today. Boom tomorrow. There's always a boom tomorrow"
>>  -- Lt. Cmdr. Ivanova
>>
>
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>




More information about the Synth-diy mailing list