Granular Shifting Effect?

I’ve been playing a lot with my Bastl MicroGranny 2 recently, and I began wondering the other day (as this is all a mystery, to me):

How does this synthesis method and/or effect work, in theory or principle? I am pretty good with subtractive, wavetable, sampling, additive, and mildly familiar with vector synthesis, although that makes less sense, the more I try to figure out how to implement it in Audulus. I guess that would need a simulated joystick, and I don’t know how one would do that. I suppose that is not the main point, though.

My main question being, is it possible to do granular in A3/beta4? If so, can anyone demonstrate with an example, or point me to resources that will make it clear? Also, if you know the answer to the vector synthesis question, you get double the points! I hope you all are having a great weekend! :blush:

I believe that it should be possible to do some granular processing using the memory node in A4. Vector synthesis is just a four way cross-fade between four different sound sources. If you picture the four sounds at the ends of an X and Y axis then any point on the graph represents a specific mix of the four sounds. Tracing a path on the graph using a joystick or other modulation source represents a dynamic cross fade.

1 Like

Herte’s a crossfade module you can play with. The four sound inputs are labeled A, B, C, D and the x and y axis inputs go from 0 to 1. See this for a diagram: Vector synthesis - Wikipedia

Vector synth.audulus (5.6 KB)

(You’ll have to provide your own joystick and sound sources lol) Using some LFO’s or envelopes can get some interesting effects as well.

1 Like

How exactly did you map the cross fades for the (1, -1), (-1, -1), (-1, 1), and the (1, 1) coordinates? Is it just a matter of moving it all so that 0-0.5 ~= -1-0, and 0.5-1 ~= 0-1?

I spent a long time pondering this yesterday, but it’s a lot to try and process, since each coordinate extreme given should silence all of the 3 other possible fades, and I was not exactly sure how many fade nodes, and how to wire them in order to get that result.

Thanks for the info about the granular effect, too! :slightly_smiling_face:

I originally set the crossfade up so that the scale for each of the two axes was -1 to 1, but decided to stick with the de facto Audulus standard of 0 to 1 for modulation. On the x axis 0 is 100% C and 1 is 100% D. Similarly on the y axis 0 is 100% B and 1 is 100% A. The center point of the graph is 0.5, 0.5. This allows easy modulation using MIDI controlled knobs or standard LFOs and Envelopes.

My current design has nulls at 0,0 0,1 1,1 and 1,0 (the four corners) and 100% of the individual sources at 0.5,0 0.5,1 0,0.5 and 1,0.5. At 0.5,0.5 the four sources are equally blended. I don’t believe this is correct. I think the corners should be a blend between the two axes (A and D or C and B foe example. Guess I need to rethink the maths. Stay tuned.

1 Like

Here’s the new and improved model. This one still scales the axes from 0 to 1 but now the corners are working as I think they should. It’s still not perfect in one respect. At the corners you have 100% of both axes (e.g. A and C) whereas I think it should be 50% of each and in the middle you have 50% of each source (A, B, C, D) instead of 25%. I think it’s better than V1.0 though. I still need to refine the equations a bit.
Vector synth V2.0.audulus (6.5 KB)


Here’s a different approach for the 2x2 matrix (road tested) –

The idea here is to set up a “clean” matrix where A/B/C/D are in the corners, isolated. Then you control the joystick or modulation by limiting it to do your bidding (for ex., not go all the way to the corners).

Set up the grid as xfades (I think lerp would be best here? or cos/sin…):

X axis controls:
1: A-B
2: C-D

Then Y axis xfades 1 to 2.

Then for the joystick, if you don’t want it going all the way to the corners, limit it to the radius of a circle with a, for ex., .5 radius to touch the edges of the matrix square. (And you can do cool modulation stuff, too – for ex., lissajous, 2D rotation matrix, etc. to move around the matrix).

Of course decide on your scaling range for the matrix ahead of time (-1 to 1 or 0 to 1).

Oh, and regarding granular, for beta4 I’d also point out the poly tools – can make as many voices as your system can handle. Memory node + poly should add up to some lush granular beds!


An elegant solution and much cleaner than mine. For some reason I got stuck on having the sources on the axes rather than in the corners but of course it’s really all the same (after a 45 degree rotation of the axes). Given that the modulation range in Audulus is typically 0-1 I don’t see a problem allowing the corners but it would be easy enough to limit them if desired.
Vector synth V3.0.audulus (4.6 KB)