Set Hallstrom, Apr 24 2015:
Hi,
Is there any software that can create a negative of the sound? I'm
thinking of taking an arbitrary frequency bandwith, pick a center and
invert it, so that bass becomes high, and high becomes bass? I have the
feeling this is an impossible task due to the nature of sound.
...
Set, depending on your original signal generation there are two ideas, that I have.
If you generate the signal yourself synthetically with something like additive synthesis,
it's a matter of doing some simple calculation in your synth definition.
If you take an external signal, possibly sampled, you can try FFT. Csound and other
general purpose synthesizers offfer quite interesting and powerful FFT-based modules. With
an FFT analysis you break down a complex signal in sinoidal componenets, i.e. pure
frequencies, without overtones. In Csound you can get an array of those frequencies and
their respective volumes. This changes in realtime, so you can track the movement of the
signal. If you have such arrays, you could modify each frequency (bin), by something
like:
knewfreq = (kmycenterfreq - kold) + kmycenter
You'd need a loop applying this operation to each bin. When you create such an
analysis, you will specify the number of bins the signal should be broken down into.
Note, that there are issues with that. More bins mean less accuracy with transients. So if
you have a fine frequency resolution of a bin every Hertz, means, that the hits of drums
will sound muddy. If you don't want time stretching at the same time, I think you can
try to lessen the effect by balancing the volume of the output to the original signal.
Csound's balance opcode will take a reference signal and follow its volume (peaks and
everythng) and apply this "volume curve" to the second input signal. This will
only be a simplistc method and its results may have room for improvement. :-) I know, that
there are better ways.
I don't know of any other technique, that would get you the same result. Perhaps there
are simpler methods without the side effects of FFT. But this would work.
Ta-ta
----
Ffanci
* Homepage:
https://freeshell.de/~silvain
* Twitter:
http://twitter.com/ffanci_silvain
* GitHub:
https://github.com/fsilvain