# Spectral Attractors

FREE Device!! Spectral Attractors uses a physics simulation and a phase vocoder.

If you do choose to pay, any money will be donated to good causes, feel free to contact me about where I am sending the money and if you have any suggestions.

Promo: https://www.youtube.com/watch?v=cVI0pU7TGzg

Walkthrough: https://youtu.be/6YW9P36tP3Y

The phase vocoder sounds whatever spectral content is in the current “state”. The “state” is attracted to up to 4 other spectral “states” called “attractors”, which attract the state via the physics simulation with two different modes:

(1) FFT Mode: physics simulation is in 12288 dimensions (a bit higher CPU as a result) in which every FFT frequency bin amplitude, phase value and previous frame value for both left and right channels is a dimension, which results in a complex soundscape and combination of spectrums.

(2) 2D Mode: physics simulation is in 2 dimensions, in which attractors are spread out on a 2D plane based on their spectral differences. The sounding “state” then depends on how close it is to the attractors in a 2D space, resulting in spectra closer to the original attractor states. This mode also includes an option for either interpolating or crossfading based on distance to attractors.

Attractor states are selected by taking “snapshots” of audio in a buffer, which can either be a dropped sample or recorded live from routing audio from another track in Live. Additionally there are parameters for controlling the physics dynamics and real time frequency domain pitch shifting.

TO INSTALL: drop the unzipped folder into this folder: ableton/user library/presets/instruments/max instruments. For some users when extracting/unzipping the files, it creates some extra subfolders. In that case, delete all the extra stuff, leaving just the device folder (In this case "Spectral Attractors")

** UPDATES **

(v1.0.1)

- Fixed issue when loading first time in live, right channel would have a buzzy saw-like sound.

- Added feature to randomize attractor states from a randomly selected position in the sample

** IMPORTANT **

It’s best to use the newest version of Live, however, it may work on older versions but hasn’t really been tested (especially the presets may not load correctly on older versions)

Has not been substantially tested, so lemme know if there is anything wrong and check here again for updates in case!

CPU will change a lot depending on physics speed, # of attractors and if in FFT or 2D mode.

If you need to reach out to me for any reason: dillonbastan@gmail.com

Or on social medias: DillonBastan

Since this device is free, consider donating some money to a good cause ;)

Long Walkthrough video:

** If still confused about how it works **

(I wrote this as a response to a comment in youtube, hope it helps!):

So I'll explain a bit: first what we are hearing is a phase vocoder in stereo. In order to have it working, we need some values from an FFT: the magnitudes and phases of each frequency bin (in this case 2048 values each), and also the phases from one previous FFT frame (another 2048 values) and actually another set of those values for a second channel (to make stereo). In total that is 12288 values that I am using to create a phase vocoder.

So an attractor is actually just those 12288 values that were at whatever position in the sample you selected when you created the attractor. Then I run a physics simulation of gravitational attraction, and the attractors are different points in the simulation that a moving point is attracted to. The moving point is actually the sound that we hear. The way this works can be in two different modes:

FFT mode: The physics simulation takes place in 12288 dimensions (versus say the usual 3D or 2D), where the attractor points are literally the 12288 values that make up each attractor. The moving point is also in 12288 dimensions, and so its coordinates are the 12288 values needed for a phase vocoder (so whatever position it is in is sonified by the phase vocoder). This mode allows for very diverse movements as the position and dynamics can vary in all of those dimensions and create a rich stereo field as every frequency bin's magnitude and phase values for both the left and right channels are independent dimensions!

2D mode: The physics simulation takes place in 2 dimensions. The positions of the attractors are still determined by the 12288 values, but it is reduced to 2D based on each attractor's relevant distance to each other and then projected into 2D space via some trigonometry. Then the moving point is also 2D and attracted to the attractor points (again, now in 2D based on their distances) just like in FFT mode. However, since the moving point is in 2D (only 2 values), we don't have the 12288 values needed for the phase vocoder. So to get them I give 2 more options, interpolate or crossfade.

Crossfade simply checks how for the moving point is from an attractor, and fades in the volume for those attractor values based on distance. So in those mode, the attractor is heard just as it sounded in the position of the sample, and therefore may sound "colder" cuz it doesn't have the crazy stereo modulation like FFT mode. Yet maybe you'd want the sound more like the original sample or whatever reason.. so it's there

Interpolation: This one uses an interpolation algorithm based on the moving point's relative distance to each attractor, and then interpolates the 12288 values accordingly. This allows for a richer stereo sound, as the FFT values aren't faded in, but is an interpolation between the attractor values. However, it won't have near the complex dynamics of the FFT mode, yet it will save a lot of CPU and perhaps the 2D dynamics are more desirable. Hope that helps!

You can also donate to me via paypal if you'd like to: ndivuyo@gmail.com

More: dillonbastan.com