Q3osc: works

From CCRMA Wiki
Jump to: navigation, search

nous sommes tous Fernando...

quintet_caps_400.png

nous sommes tous Fernando... by Robert Hamilton is an improvisatory work written for the Stanford Laptop Orchestra (SLOrk) using q3osc and ChucK. Four performers control avatars in a virtual environment, firing sound-projectiles which bounce or home-in on individual performers, creating sound events with every bounce/collision with a surface of the environment. Virtual sound sources are laid out in a "+," represented by hemispherical structures in the virtual environment, with hemispherical speakers in the real-world laid out in a similar configuration. Spatialization is correlated between virtual and real-environments, with various aspects of each sound-event (frequency, timbre, duration) mapped to various axis and relationships in the virtual environment. Additionally, each of the four performers has real-time control over one of four super-sets of global parameters controlling respectively Projectile-Speed, Homing-Speed, Client-Speed, and Gravity. These commands are bound to the keyboard (1-5) in increasing increments (0/10, 100, 500, 1000, 3000) and can be triggered at any time during the performance to affect all performers.

Performers are encouraged to think of the work as a collaborative improvisation and to explore the environment searching for new performative gestures and sounds.

Some ideas:

  • Repetitive/canonic gestures can be performed by firing multiple projectiles without moving or changing the view angle.
  • All projectiles can be destroyed by toggling off either the plasma persist toggle (Y), the bfg persist toggle (U), the plasma homing persist toggle (i) or the bfg homing persist toggle (O).
  • Homing projectiles create interesting auditory gestures. Changing the speed of homing projectiles (Client #3 - keys 1-5) can have interesting effects.


Media

YouTube Video: http://www.youtube.com/watch?v=a3aZx0eWpx0


Program Notes

nous sommes tous Fernando... for 16 laptops and q3osc Robert Hamilton

Deep underground, located beneath the CCRMA courtyard lies a super-secret musical warfare laboratory funded by the United States Military, developed in conjunction with Guitar Center and Sweetwater.com. While details about the project are scarce to none, local legends usually mention high-powerd futuristic plasma weapons... and lizards.

nous sommes tous Fernando... by Robert Hamilton is an improvisatory work written for the Stanford Laptop Orchestra (SLOrk) using q3osc and ChucK. Performers control avatars in a virtual environment, firing sound-projectiles which bounce or home-in on individual performers, creating sound events with every bounce/collision with a surface of the environment. Virtual sound sources are represented by hemispherical structures in the virtual environment, with hemispherical speakers in the real-world laid out in a similar configuration. Spatialization is correlated between virtual and real-environments, with various aspects of each sound-event (frequency, timbre, duration) mapped to various axis and relationships in the virtual environment. For more information: https://cm-wiki.stanford.edu/wiki/Q3osc


Files

q3osc Installer: q3osc.zip

q3osc install dir: install

Quintet ChucK script: quintet.ck

Large composite of screen-caps: quintet_caps.png


Instructions

speakers.png

nous sommes tous Fernando... was designed to be run using five slork hemispherical speakers arranged in a + shape with one speaker in the center and 1 speaker on each of the ends of the +. Each user sits at a slork station next to a hemispherical speaker. The center speaker is left un-manned and is connected to a subwoofer. Each physical speaker location has a unique number from 0-4 with 0 being the center speaker, being respectively - on a clock face - 1 being 12 o'clock, 2 being 3 o'clock, 3 being 6 o'clock, and 4 being 9 o'clock. These id's are used to identify each user's station to the software for correlation between virtual speaker placements and physical speaker placements (see diagram => ). All performers should be facing inwards towards the center speaker so that they can make eye and gestural contact with one another.

One computer running the q3osc game-server should be running and connected to the local network (preferably over ethernet for now). Currently q3osc has only been successfully compiled in linux so the server should be running linux (Fedora 8 works nicely). The server can be connected to a video projector to project an overall view of the environment to the audience. In this regard, when the server is started it can either be run as a client server (where the game itself appears on the screen of the server), or as a dedicated server, where a separate machine can login as a game client and be used with the projector. A fifth performer of the piece should be controlling this "spectator" client, "filming" the performance for display on the projector.

Clients launch q3osc by opening an OS X terminal window and by launching the q3osc shell-script, passing in 3 parameters: and integer 1-4 for the speaker location at which they're sitting, an integer for the speaker-radius for which sounds will occur, and the ip-address of the game server. For example, the call below will launch q3osc, load the dirt_dome.bsp map (set by default), connect to the server 10.0.1.189, and will launch ChucK with parameters "-c8 quintet.ck:3:900" where quintet is the name of the ChucK script, -c8 sets multi-channel output to 8 channels, 3 specifies the speaker-set location (see diagram) and 900 sets the speaker-radius.

shabushabu:~ slork$ q3osc 3 900 10.0.1.189


After the client is loaded into the game engine and the virtual-environment appears on-screen, the client should press fn+F1, F2, F3 or F4, matching the F# to the Speaker-set number they entered at the command line. With the above example, the client would press fn+F3. This loads a specific configuration file for that client, giving each client specific controls over different global game parameters.

	Player 1:	 fn+F1    	/bind F1 "exec pspeed.cfg"
	Player 2:	 fn+F2    	/bind F2 "exec gspeed.cfg"
	Player 3:	 fn+F3    	/bind F3 "exec hspeed.cfg"
	Player 4:	 fn+F4    	/bind F4 "exec gravity.cfg"

Additional points:

  • Each client should make sure a multi-channel interface is connected as default sound source in Mac OS X.
  • A mouse can be used with the laptop to make control of the system more natural.
  • When in the game engine, pressing the ~ key brings down the quake-terminal and returns Mouse-focus to the operating system.
  • Things like hot-corners on a mac should be disabled
  • Sound from the game client itself can be either completely disabled or set to the lowest possible setting, adding a bit of ambient noise for each client (note: these sounds are not spatialized but add an interesting element to the performance.


Installation

  • download q3osc.zip and unzip the archive.
  • run the ./install.sh shell script to install the q3osc mod of OpenArena, the q3osc maps and custom config files. Follow instructions listed in the terminal window at the end of the shell script.


Run the program(s)

A custom bash script is installed by the installation process to the ~/slork/scripts/ directory:

TO LAUNCH:

Type "fernando" to launch bash script in /Users/slork/slork/scripts/

	"fernando <user-number: 1-20> <sounding-radius: ~900> <host-ip: 10.0.1.200>"

e.g.:
 
 	shabushabu:~ slork$ fernando3 900 10.0.1.189
 
 		- calls "chuck -c8 /Users/slork/slork/users/rob/q3osc/fernando.ck:3:900
 		- launches /Applications/OpenArena and connects to ip address 10.0.1.189 on default port 27660
 		- exec's a specific config file for each performer based on their user number:
 			1:	pspeed.cfg
 			2:	gspeed.cfg
 			3:	hspeed.cfg
 			4:	gravity.cfg
 
 example call: /Applications/OpenArena.app/Contents/MacOS/ioquake3.ub connect 10.0.1.189:27660



In-Game Controls

Key-Commands 


Settings are stored in q3config.cfg file located in ~/slork/Application\ Support/OpenArena/ccrma/

(w) 		move forwards
(s)		move backwards
(a)		strafe left
(b)		strafe right
(SPACE)		jump
(c)		crouch 
(SHIFT)		run

(L)		give more plasma ammo

(8)		select plasma gun
(9)		select bfg 

(b)		toggle Plasma Bounce on/off
(n)		toggle BFG Bounce on/off
(y)		toggle Plasma Persist on/off 

(h)		toggle Homing on/off
(p)		toggle Parent Homing on/off
(j)		toggle Parent Homing Only on/off
(u)		toggle BFG Homing on/off
(i)		toggle Plasma Homing Persist on/off
(o)		toggle BFG Homing Persist on/off 

(v)		toggle client weapon damage on/off 

(')		Take snapshot (saves to ~/slork/Library/Application\ Support/OpenArena/ccrma/screenshots/) 
Global Parameter Controls:

Each client uses number keys 1-5 to control different global attributes of the game world:

(1)		Set Plasma speed to 10			/bind 1 rcon g_plasma_speed 10	
(2)		Set Plasma speed to 100			/bind 2 rcon g_plasma_speed 100	
(3)		Set Plasma speed to 500			/bind 3 rcon g_plasma_speed 500
(4)		Set Plasma speed to 1000			/bind 4 rcon g_plasma_speed 1000
(5)		Set Plasma speed to 3000			/bind 5 rcon g_plasma_speed 3000

(1)		Set Homing speed to 10			  /bind 1 rcon g_homing_speed 10			 
(2)		Set Homing speed to 100			  /bind 2 rcon g_homing_speed 100
(3)		Set Homing speed to 500			  /bind 3 rcon g_homing_speed 500
(4)		Set Homing speed to 1000		/bind 4 rcon g_homing_speed 1000
(5)		Set Homing speed to 3000		/bind 5 rcon g_homing_speed 3000

(1)		Set client speed to 10			          /bind 1 rcon g_speed 10
(2)		Set client speed to 100			  /bind 2 rcon g_speed 100
(3)		Set client speed to 500			  /bind 3 rcon g_speed 500
(4)		Set client speed to 1000			  /bind 4 rcon g_speed 1000
(5)		Set client speed to 3000 			  /bind 5 rcon g_speed 3000

(1)		Set world gravity to 10			  /bind 1 rcon g_gravity 10
(2)		Set world gravity to 100			  /bind 2 rcon g_gravity 100
(3)		Set world gravity to 500			  /bind 3 rcon g_gravity 500
(4)		Set world gravity to 1000			  /bind 4 rcon g_gravity 1000
(5)		Set world gravity to 3000			  /bind 5 rcon g_gravity 3000