3D Spatialization of Sound is a Linux/X11 port of the 3D spatializer library from the CRC.
Version:3D Spatialization of Sound is a Linux/X11 port of the 3D spatializer library from the CRC. This program creates "directional" stereo sound from mono source. CRC folks told me I shouldn't have raised the sampling frequency without adjusting other stuff.
Operating System: Linux
Oh well. This was a proof-of-concept type project anyway. I think to get correct 3D effect, you need to drop sampling rate back to 11025.
To Build the X11 implementation:
2. cp audio-filter /usr/local/bin
3. mpg123 -m -s some_music.mp3 | audio-filter | aplay -S -s 44100 -f s16l -
audio-filter is implemented as a filter, it reads signed 16 bit mono input at 44100 khz from stdin, and outputs signed 16 bit stereo, 44100 khz output to stdout. You can replace mpg123 with any sound source generating signed 16 bit 44100 khz mono signal. "aplay" is a sound player utility which comes with ALSA linux sound driver. You can use "play" from the sox package, or "ampctl", or any other sound player that would read 44100 khz, signed 16 bit stereo raw data from stdin. For "sox" play script, you would replace "aplay" command line with "play -c 2 -f s -r 44100 -s w -t raw -"
If everything is good, a 640x480 window will come up, with some cryptic writing on the top, a filled circle with an arrow pointing right, and a empty circle slightly to the right of the circle with arrow.
NOTE, that just like in the original Windows implementation, the axis's are reversed. The arrow on the "head" is pointing "forward". So, in the default startup configuration, the sound is located in front of the listener. Moving the sound source "up" moves it to the left of the listener, and "down", to the right. You can visualize this well if you turn your monitor 90 degrees counter
The filled circle with an arrow is your "head"
The empty circle is the "sound source"
You can move the "sound source" around by clicking the mouse at any position in the window, or by clicking on the "sound source" circle, and dragging it to the desired position. Soundfield will be dynamically updated as you do this.
You can move the "head" by moving the mouse to desired position, and right-clicking. The "head" icon will move to the new position and soundfield will be updated.