Rotating Space V1.0
VST plugin "Rotating Space": A 3D panner based on Head-Related Transfer Functions (HRTFs)
Rotating Space simulates a sound source which rotates around up to three arbitrarily definable axes.
You must use headphones to hear the effect. Consider the following arrangement: The stereo input signal is played with two speakers.
The distance between the speakers and between them and the listener is so that the listener sees the speakers with an angle "Input Angle".
This angle can be defined in the VST plugin via the parameter "Inp angl". If this angle is zero the speakers are at the same
position and thus the input stereo signal is mixed to a mono signal before further processing. If this angle is 180 degrees the
beginning position of the speakers (before rotating) is on the y axis - the left speaker is near to the left ear and the right
speaker is near to the right ear.

The position of the speakers in the first image is only the starting position. Over the time the virtual speakers will move around
the listener while the distance to the listener keeps constant. You can determine the way in which the speakers move: With the parameters
R axis1X, R axis1Y and R axis1Z a direction vector is defined. The speakers being in the starting position are rotated around an axis
defined by this direction vector. The rotation angle (named α1) is changed continuously over the time. Thus the speakers have a new position.
Now they are rotated by an angle α2 around an axis defined by the vector [R axis2X, R axis2Y, R axis2Z] and subsequently by an angle α3
around an axis defined by the vector [R axis3X, R axis3Y, R axis3Z]. The positions of the speakers after this third rotation are the
virtual positions at which the listener believes to hear the sound at the moment.
But the rotation angles α1, α2, α3 are changed periodically and mostly continuously over time. The angle α1 is changed periodically
with a frequency "Speed1", and the angles α2 and α3 with frequencies "Speed2" and "Speed3". If the slider for the parameter "Min1 ang"
is entirely left and the slider for "Max1 ang" is entirely right, the first rotation is continuously circular, i.e. the rotation angle
α1 changes continuously from -180° to 180° and then wraps around to -180°. Otherwise the progression of α1 depends on whether the slider "Max1 ang"
is right or left to the slider "Min1 ang". If the Max slider is right to the Min slider then the range for the angle α1 is determined
by these sliders, otherwise the extreme angle corresponding to the Max slider is increased by 360 degrees. The angle α1 changes over
time in the range defined by the extreme angles corresponding to the sliders. With the slider "ang1 wav" the wave form of this
progression can be determined. The progression of the angles α2 and α3 can be controlled absolutely analogously to the angle α1.
Apart from rotations, Rotating Space can mirror the virtual speakers at a plane defined by its normal vector
[M axis4X, M axis4Y, M axis4Z]. With an internal parameter M the amount of mirroring is controlled: If M=1, no
mirroring occurs; if M=-1, full mirroring is done and if M=0 then the virtual speakers are projected onto the
mirroring plane. When varying M from 1 to -1, the speakers will move continuously from the original position to
the entirely mirrored position. This movement is firstly thought to be on a line; but when moving the speakers in
this way, the distance to the listener would change and at M=0 the speakers would be inside the head of the listener.
Thus the position vector of the speakers
is scaled again so that the distance to the listener keeps constant. With the parameter "mir4 wav" the waveform
of the progression of M in the range from 1 to -1 can be controlled. And with the parameter "Speed4" the frequency
of this periodic progression can be controlled. You can also determine when the mirroring should be done (slider
"mir4 pos"): Before the first rotation or after the first, second or third rotation. If you don't want the mirroring
to be done, just set "Speed4" to zero.
The output signal of the Rotating Space VST plugin is the sum of the following signals:
-
The dry stereo input signal after delaying by exactly 295 samples and amplifying (or attenuating) according to the "Vol Dry" slider
-
The wet (effect) stereo signal after delaying by about 295 samples (according to the position of the virtual speakers) and amplifying (or attenuating) according to the "Vol Wet" slider
Because the distance between the virtual speakers and the listener doesn't change over time, the Doppler effect doesn't play a role as would
in a Leslie speaker. To make the listener believe the speakers being in the determined positions, Rotating Space makes use of Head-Related
Transfer Functions (HRTFs).
If you want to get impressive effects, take a look at the following suggestion for combining Rotating Space with a reverb and optionally a
phaser effect. Try an artificial reverb with an impulse response ending more or less abruptly after some time. This reverberation time
can e.g. be chosen to be half or a quarter of a dominant period time of the rotations in Rotating Space.

License agreement for Rotating Space:
The user is granted the right, free of charge, to use, copy, modify, alter, ameliorate and distribute this software,
subject to the following conditions:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Rotating Space uses the HRTFs from the slab3d project which is distributed under the
NASA Open Source Agreement.