I dusted off the openmp branch to do some more tests. (Keeping it out of the main branch for now since I couldn’t figure out where it can be assumed it will be available on macos, and if not the best way to recommend installing it…)
Here’s the python script running with the omp branch of pippi – the basic time domain implementation used is here.
from pippi import dsp, fx
sources = {
'mahler': 'sounds/mahler.wav',
'esp': 'sounds/esp.wav',
'wn11a': 'sounds/sources-20170-11.wav',
'wn11b': 'sounds/rocks-20170-11.wav',
'wn15a': 'sounds/sources-20170-15.wav',
'wn15b': 'sounds/rocks-20170-15.wav',
}
pairs = [
('mahler', 'esp'),
('wn11a', 'wn11b'),
('wn15a', 'wn15b'),
('mahler', 'wn11b'),
('esp', 'wn11b'),
]
for s, i in pairs:
src = dsp.read(sources[s])
imp = dsp.read(sources[i])
print('FTT', s, i)
out = src.convolve(imp)
out.write('outputs/%s-%s-fft.wav' % (s, i))
print('TD', s, i)
out = fx.fir(src, imp)
out.write('outputs/%s-%s-td.wav' % (s, i))
I enabled indexes on this directory and put all the source sounds and outputs here to make them easy to grab: https://hecanjog.com/conv/
So, incredibly to me, there is one outlier – the one single-threaded time domain render I did yesterday doesn’t have the noisy output! I haven’t tried the single threaded version with the other sources yet.
This is probably the most audible example of the distortion – I realized I had the original convolutions and all their inputs from the parts I used on this record so that made it easy to go back and find outputs I liked to test the inputs again with the FFT. All the outputs in the conv/outputs directory are fresh runs from today except the one single-threaded output from yesterday.
So this was one I liked a lot – the two input sounds are: https://hecanjog.com/conv/sounds/rocks-20170-15.wav and https://hecanjog.com/conv/sounds/sources-20170-15.wav
This is the parallelized time domain output with the nice distortion which kicks in about 6 seconds in: https://hecanjog.com/conv/outputs/wn15a-wn15b-td.wav
This is the (still nice but undistorted) FFT output: https://hecanjog.com/conv/outputs/wn15a-wn15b-fft.wav
I’m really scratching my head about the single-threaded time domain render without distortion. I didn’t parallelize my FIR for quite a while and I remember hearing that sparkly distortion in early renders too.
I haven’t really sat down to speculate where the noise is coming from or how the parallelized version could be exacerbating that but I just wanted to share these in the meantime!
I really want to investigate this further because I love the way the distortion/sparkle sounds. It would be really cool to be able to combine the speed of the FFT with an optionally distorted output similar to these, or find some way to recreate something like it!