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

cheater cheater cheater00 at gmail.com
Sun Aug 16 14:13:18 CEST 2009


The problem with massive synthesis schemes such as additive, walsh,
fourier, etc are that people take the wrong approach to the interface.
They take an interface that works for a monophonic synth, with a
single waveform, and try to apply it to 1000 waveforms at the same
time, and fail. A much better alternative is to approach the problem
in a fashion that is more suited to massive sets of data:

a) probabilistic: there's a probability that an event will happen, and
the process is re-calculated every time a certain partial does
something, e.g. has a discontinuity as in walsh or has a positive
0-crossing as with additive sine-based

b) populational: game of life for example; Each partial corresponds to
one cell on the game of life. it evolves nicely and there's no problem
doing something interesting. GOL is very well understood by now and
you have good parameters describing its behavior such as 'population
density' or 'dynamics'. More density = more partials = lusher tone.
More dynamics = more and faster animation. You can also go on and do
GOL that is not discrete 0-1 based but instead each cell has a shade
from 0 to 65535, for example. There are many other approaches that let
you analyze a population and come up with some interesting numbers
that can be later fed back into that population's parameters (so for
example into walsh parameters). Some such approaches are deterministic
like GOL (determinism means you can repeat the sound - non-determinism
means you can't - pick your poison)

c) massively-parallel: take two Walsh bank based waveforms, for each
partial in the walsh bank multiply it by the same partial in the other
bank. Maybe even shuffle the order of the partials in the 2nd bank
around a bit to make it more interesting.

e) microcode: write a simple code that accesses the properties of a
single walsh partial and its neighbors. You get access to the usual
math functions found in C. You output modifiers to the walsh
coefficients. Such tiny scripts can then be layered and called
'filters', especially if they have constantly-controllable parameters.

f) global extrapolation: you change something on one partial, and the
program extrapolates for you and modifies all partials. For example,
if you modify the time-delay of the kth partial by +5, the other
partials could get delayed by +5^(n/k) where n is the index of the nth
partial in question. Of course other functions that take (n, k,
amount) can be devised that can be more interesting.

And so on. That is just stuff I came up with in about 4 minutes. I'm
sure someone smart can do better.

D.

On Sun, Aug 16, 2009 at 11:23 AM, Tom Wiltshire<tom at electricdruid.net> wrote:
>
> On 16 Aug 2009, at 09:38, Magnus Danielson wrote:
>
>> x(t) = IDFT(X(f))
>> X(w) = DWT(x(t)) = DWT(IDFT(X(f))
>
> If I'm going to calculate X(t) from X(f) using the IDFT, I think I'll output
> those samples directly, rather than add additional stages of DWT and then
> Walsh function calculation.
>
> Whilst this is probably a control processor that doing these sums (e.g. need
> not be every sample in real time) it doesn't seem efficient - transform from
> frequency domain to time domain back to frequency domain to time domain
> again! Phew!
>
> I'm still not convinced that there's any real gains to be had from Walsh
> synthesis as opposed to Fourier. Sine waves are too damn hard to calculate,
> so you finish up doing a lookup, and the multiplies that everyone is trying
> to avoid is a series of one-cycle MACs, one for each harmonic. One ADD takes
> as long as one MAC.
> So it boils down to whether you can calculate a Walsh function quicker than
> you can lookup a sine value from a table. Not a lot in it, I'd have thought.
>
> And both Fourier and Walsh synthesis have the same control problem - how do
> you easily shape the dynamic evolution of many harmonics/functions over
> time? After all, I don't want to spend my *whole* life setting up envelope
> generator parameters...
>
> Don't get me wrong - I'd love it if Walsh provided an easy, efficient way to
> generate arbitrary waves, but I don't see it yet.
>
> T.
>
>
>
> _______________________________________________
> 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