[sdiy] Walsh bank, was: Re: [sdiy] Micro as a Linear to Exponential converter?

Magnus Danielson magnus at rubidium.dyndns.org
Sun Aug 16 10:38:06 CEST 2009


Michael O'Bannon wrote:
> 
>>
>> The great advantage of Walsh over Fourier is that coefficient 
>> multiplication turns into add or subtract.  Sinewaves you need to do 
>> multiplications all over the place (or that 
>> double-add-with-phase-shift of Hal Alles).
>>
> 
> With Walsh functions, don't you still have the final burden of adjusting 
> the amplitude each of function to get the desired mix of partials?  Is 
> there a way to do this in code without multiplication?  (I'm hoping the 
> answer is yes, but I haven't found a way yet.)

Yes, but the point is that the walsh functions produces +1/-1 results 
rather than values between +1 and -1, so multiplication does not require 
a full multiplier but a very simple op-amp setup with a CMOS switch 
which switch the gain between +1 and -1. These DCA (Digitally Controlled 
Amplifier) is controlled by the digital walsh generator and the analog 
input is the coefficient. The output of all DCAs is added to form the 
full set.

A fourier type of response using walsh generators could be achived using 
some math transforms..

x(t) is the time-representation of a waveform
X(f) is the fourier frequency representation of a waveform
X(w) is the walsh frequency representatio of a waveform

Fourier transform:
X(f) = DFT(x(t))

Inverse Fourier transform:
x(t) = IDFT(X(f))

Walsh transform:
X(w) = DWT(x(t))

Inverse Walsh transform:
x(t) = IDWT(X(w))

Consider that we want the walsh coefficients, but have the Fourier 
coefficients... then

x(t) = IDFT(X(f))
X(w) = DWT(x(t)) = DWT(IDFT(X(f))

Thus, a new linear transform is formed from Fourier coefficient to Walsh 
coefficients. This new transform can be calculated in advance and could 
be calculated in N^2 multiplications and N(N-1) additions. However, both 
DWT and IDFT can be done efficiently, so just doing the transforms can 
be used.

Just a little bit of linear transform math. Can be done in advanced in 
the processor, and the coefficients can be output through a DAC and 
regularly updated to S/Hs.

Cheers,
Magnus



More information about the Synth-diy mailing list