|
----------------------------------------------------------------------------
YgMaxTools for Ygdrasil VR scripting environment
Requires CAVElib and OSC library
Alpha 0.1a
----------------------------------------------------------------------------
Created by Paul Hertz for the Center for Art and Technology,
Northwestern University, with support from the Center for
Interdisciplinary Studies in the Arts, Northwestern University, and the
Electronic Visualization Lab, University of Illinois at Chicago.
The Ygdrasil nodes to interface with MaxMSP were written by Joseph
Tremonti, at EVL, in 2002.
Nathan Wolek provided invaluable support and code.
RESTRICTIONS AND COPYRIGHTS
----------------------------------------------------------------------------
This software is provided freely to anyone who wants to use it for any
purposes except sale of the said software. Future releases may have
stronger restrictions such as the Gnu Public License, but in general, I
plan to release it with as few restrictions as possible. Note that parts
of the software are copyrighted, as are many of the MaxMSP plug-ins,
although they are all freely available.
QUICK START
----------------------------------------------------------------------------
See the ygSimAutoMax patch and the bufspat~ and sigspat~ starter files.
Using OSC and otudp, you can use the ygAutoMax patches for sound
spatialization without VR at all, if you want. It's just a question of
sending the right message by OSC/otudp.
INSTRUCTIONS
----------------------------------------------------------------------------
Externals For MaxMSP (files to install in MaxMSP Externals and Help folders)
Obtain OSC from http://cnmat.cnmat.berkeley.edu/Max/ You will also
need the otudp external from the same site. Get the OSC library while
you're at it, too--you will need it to compile the Ygdrasil nodes.
Bufspat~ and sigspat~ make use of Nathan Wolek's cppan~ and gverb~
externals. Nathan has given me permission to bundle them with the
distribution. You can find other great software by Nathan at
http://www.nathanwolek.com/. Thanks again, Nathan.
I have also used Adam Florin's regexp regular expression parser. It is
not included in the distribution, but you can download it from
http://www.cycling74.com/share/florin/.
The file plugins.sit contains the sound spatialization abstractions
developed by Paul Hertz. Put these in your MaxMSP Externals and Help
folders. The abstractions in the "autoloader" directory could go
there, too.
For VR installation you will need:
OpenGL Performer (http://www.sgi.com/)
The last free Linux version will work with Ygdrasil 1.3, later
versions of Yg require the commercially available versions 2.5 or 3.0.
CAVELib (http://www.vrco.com)
Required to compile source code and run Yg.
Ygdrasil
see http://www.evl.uic.edu/yg/about.html for information
Yg 0.1.7 can be downloaded at http://resumbrae.com/yg/
OSC Library (http://cnmat.cnmat.berkeley.edu/Max/)
Library for OSC protocol and otudp communications, required
to compile Yg nodes in maxtools.tar.gz.
FILE LISTING
----------------------------------------------------------------------------
This may vary depending on the means of distribution. The tar.gz files
in the yg directory are part of all distributions.
The maxmsp directory (maxmsp.sit in the online distribution) contains
the autoloader patches, which are a good starting point, especially if
you are more concerned with VR than with DSP.
Plugins.sit contains the abstractions and externals used for sound
spatialization. They may not all be present in online distributions. I
have indicated above how to obtain OSC, otudp, and regexp.
yg:
MAXDEMO
shell script for launching yg
maxtools.tar.gz
source and compiled code (for Redhat Linux, Ygdrasil 1.3,
CAVELib) for yg nodes that communicate with MaxMSP: maxLink,
maxReceive, maxSound, maxSend. All are works in progress.
MaxReceive in particular is untested. MaxSend and maxSound are
fairly stable as of now. MaxLink's features are likely to be
incorporated into a future, yet unamed utility node for
complete wand and user tracking.
OSC.tar.gz
The OSC libraries used by maxtools. The most current version of
these files is available through CNMAT, at UC-Berkeley. Not
part of the online distribution.
vrdemo.tar.gz
scene files for the demo (autoMax_demo)
maxmsp.sit
----------
maxmsp:
extra_aifs:
long sounds, not included in online distribution
vr-examples:
autoloader:
abstractions:
Copies of MaxMSP files required by ygAutoMax, ygSimAutoMax,
and ygAutoMaxDemo.
agogo.aif
ahkey.aif
aifloader abstraction
art:
some graphics
blat.aif
block.aif
blockscape optional file used by ygSimAutoMax, sound settings
blockscape2 optional file, sound settings
burp.aif
burpscape optional file, sound settings
cbox abstraction
chirp2.aif
clicker abstraction
creatures optional file used by ygSimAutoMax, sound settings
delbufs required file, external storage for settings
dragger abstraction
forteA1.aif
gull.aif
howlet.aif
localToWorld abstraction
makebufs required file, external storage for settings
mondo optional file, sound settings
scenefiles:
autoMax_scene Yg scene script from vrdemo.tar.gz
catpath.txt Catmull-Rom coordinates used in scene script
MAXDEMO shell script to launch the scene
User included in autoMax_scene
settings_tog2.pct
simNavPanel abstraction, the navigation panel
smooch.aif
snare.aif
spritetrack abstraction
status4 abstraction, the sound interface
statusline abstraction, used by status4
statuslineblue abstraction, used by status4
timpB1.aif
vox.aif
vrtrack abstraction
ygAutoMax starter file for automated sound services
ygAutoMax_readme.pdf
ygAutoMaxDemo demo based on starter file, uses files in yg:vrdemo.tar.gz
ygSimAutoMax demo that does not require Ygdrasil
bufStarterKit starter kit for using bufspat~ object (spatialize buffered sound)
clicker abstraction
MaxMSP_urls.txt
misc: directory with old stuff
monkeyface interface for playing with some bufspat~ parameters
sigStarterKit starter kit for sigspat~ (spatialize a signal)
simNavigation simulated navigation demo
simpleFM~
simpleYgSound very basic example of communication with Yg
synthtest another demo of signal spatialization
test: directory with old stuff
vrmsg abstraction
YgSound.pdf might be something like a manual
plugins.sit
-----------
MaxMSP 4.2 externals:
nw:
cpPan~
gverb~
osc_vr:
ahkey.aiff
angle
bassf4.aiff
bufmonk~
bufspat~
filter_set
forteA1.aiff
ile_aye.aif
interval_bang
old:
sound_monkey
t_m
tune_monkey
ptinrect
saucer~
sigmonk~
sigspat~
simDistance
snare.aiff
square_bbox
timpB1.aiff
twoTapEcho
vector_map
wetDryMix
xferfunc
otudp:
OpenSoundControl
OSC-route
otudp
regexp:
regexp
MaxMSP 4.2 help:
nw-help:
cpPan~.help
gverb~.help
osc_vr-help:
bufspat~.help
sigspat~.help
otudp_help:
OpenSoundControl.help
OSC-route.help
otudp.help
regexp-help:
regexp.help
BUGS AND OTHER ISSUES
----------------------------------------------------------------------------
In OSX, otudp/OSC cannot function with overdrive on. This throws timing
off any time to make use of the user interface. As long as you are using
MaxMSP as a sound server for Ygdrasil or any other application
communicating by osc/otudp, there don't seem to be any serious problems.
Nevertheless, accurate timing is a real issue.
Latency, especially with VR refresh rates varying and many sounds, is
probably going to be an issue, but I have not done enough testing yet.
Handling 16 sounds with updates every 33 milliseconds works well on a
667MHz G4. 30 to 40 sounds seems doable.
FUTURE
----------------------------------------------------------------------------
Here are few items from the long to do list:
MaxMSP:
Develop version for 4 speakers (in the works)
Develop version for 8 speakers (not yet)
Use audio signals for timing and synchronization
Use Jitter/OpenGL graphics for graphical UI, instead of LCD.
Serious latency issues arise once CPU gets up around 50%,
Jitter may prove more robust.
Improve stereo tracking algorithm
Track position inside the near bound, where sound traverses
the space between the ears.
Better tracking of rapidly moving sound (Doppler unlikely!)
Provide low impact front/back spatialization for stereo (not
particularly relevant for quad). I.e., provide front/back
audio cues without resorting to Head Related Transfer Functions.
Provide low impact vertical displacement cues (not particularly
relevant for eight speaker system). Something besides HRTF's.
New version of sigspat~ (more in line with bufspat~)
Record spatial movements for playback (step time and real time)
Yg:
Provide a robust interface for MaxMSP to communicate with Yg. We do
pretty well the other way, Yg to MaxMSP. At the moment the
maxReceive node does work in a limited way (possibly all we need),
but is mostly undocumented and incomplete. Working examples will
have to wait for the next release.
Track wand and user orientation. We already track position (with maxLink).
|
|