thank you for the input!
Since my setup is a circular one, I think there would be a rough edge between the first led and the last led using these methods, but that is partly because I am still having problems articulating what I am trying to achieve. I realize my wave-table example is incorrect in a circular setup at least.
I am trying to recreate something I do in max/msp which works very well:
Each channel has its own LFO but with the same waveshape (which can be changed dynamically). The phases of the LFOs are different, so led0 would be at the beginning of the waveform, with the other channels being evenly spaced out over the waveform (this can also easily be changed depending on the number of channels).
The wavetable is then continously scanned, so that each channel goes through the whole wave, but at different offsets. This produces quite nice fadepatterns.
So, trying again with a similar wave table as in my previous attempt:
{0 200 400 600 800 1000 1200 1400 1600 1800 2000 1800 1600 1400 1200 1000 800 600 400 200}
This table has 20 elements, and I want to use 4 channels.
So channel0 would start at wavetable[0], channel1 at wavetable[5], channel2 at wavetable[10],channel3 at wavetable[15].
Then the program would continuously scan through the wavetable, applying the offsets to each channel, producing a sequence of array positions following this pattern:
0 5 10 15
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
6 11 16 0
etc
Of course this would look rough with 20 elements, but when you get 100 elements it looks quite smooth.
An obvious problem with this method is that if I want to have many different waveshapes it quickly fills up the memory. I guess I could use the same array and fill it using different equations, but I have to see if this would cause a delay when changing between the wavetables.
A very optimistic/unrealistic alternative would be to store the wavetables in progmem on the tlc5940, and then recall them when needed, but as far as I have understood the progmem, when you recall something it is immediately output, so I wouldn´t be able to somehow copy it over to an array?
hc