Fools Paradise : YgMaxTools  

  back
     
 
----------------------------------------------------------------------------
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).