by Nasca Octavian Paul http://www.paulnasca.com
This is an experimental audio effect which is based on autoconvolution. The idea is to take the input audio and convolve it with itself.
Using simple auto-convolution has two drawbacks:
- stronger frequencies are amplified more (because the magnitudes are squared)
- all notes tends to appear all over the place (over the length of resulting audio, resulting a dissonant mix)
In order to minimize these drawbacks I am using these ideas:
- extract the frequency envelope from the input signal, do the autoconvolution of the whitened signal and apply the extracted envelope. By doing this the overall magnitudes of the input signal are preserved.
- use partitioned autoconvolution (by dividing the signal into blocks) and limiting the number of adjacent blocks (partitions) which are used in convolution. This also reduces the memory usage allowing using this effect on very long audio.
Here are some examples using one minute excerpts from different songs:
- simple autoconvolution, this is the simple autoconvolution; notice that the most frequencies are damped and all notes appear all over the places
- simple autoconvolution envelope preservation, this is the simple autoconvolution too but the overall frequency envelope is preserved; much better than the previous one but still, all notes appear all over the places
The next demos are made using partitioned autoconvolution where the spread of the signal is limited and the overall frequency envelope is preserved.
- limiting the spread to 1 second; the spread is limited to 1 seconds
- limiting the spread to 5 seconds; the spread is limited to 5 seconds
- using Era - Tara Shahti Mantra
- limiting the spread to 15 seconds;
- limiting the spread to 3 seconds;
- limiting the spread to half second; notice that if the spread is too low (less than one second) it sounds more like a 2x sound stretch
- using Enya - Athair Ar Neamh
- limiting the spread to 15 seconds;
- limiting the spread to 3 seconds;
- limiting the spread to 15 seconds without envelope preservation;
- limiting the spread to 3 seconds without envelope preservation;
More processed songs with this effect are available at mixcloud.
To run this software you need Python with Scipy installed. For command-line options, run "autoconvolution.py --help".
The most important commandline options are:
-
"-k" - preserve frequency envelope
-
"-K" - two aligned files are generated: one w/o envelope preservation and the other with frequency envelope preservation. These can be mixed using Audacity or any audio mixer.
-
the spread limiting is set by multiplying the "block size" ("-b") with "limit blocks" ("-l"); example for : autoconvolution.py -b 5 -l 3 -k -o output.wav input.mp3 This sets the block size to 5 seconds and limit blocks to 3 so the spread is 5**3=15 seconds.
You can read the .py source code for more details :)