introduction
this is the first prototype of the multiplayer performance system titled
PhopCrop. its implemented using gsrv (from Gulliki:WebHome), perl and PD and was realized as a joint venture by xdv and exStream project in may 2004. the basic idea is having a small shared space that multiple users can operate on. this space is governed by some simple laws for masses and their movement. within this space certain objects can be created, where each object has a repesentation on the graphical as well as on the aural plane. the behaviour of an object on these planes is controlled by the pseudophysics (pphysics). an object may also feed back into the pphysical system.
diagram
a diagram of the internal structure of phopcrop follows:
- simple phopcrop diagram:
installation
prerequisites
gsrv:
gsrv is an existing component from the gullibloon system. its a subscription based OSC multiplexer. checkout gsrv from the cvs and build it.
phopdata:
phopdata is a simplistic server written in perl and available in the
OSC_srv package, also from gullibloon. phopdata requires the perl OSC modules from
moocow's site.
pd: the physics, audio, graphics and interface modules are at this time all written in pd.
list of required pd extensions:
- Gem >= 0.888
- zexy
- OSC
- pmpd
- flext, dyn~
possibly other stuff too that escapes me at the moment. if something's missing you might want to have a look
here.
download
the actual pd patch.
usage
you might have to check the IP adress for the osc and phopdata server in "pd connector" and "pd creator" boxes.
- start gsrv on some machine: cd /path/to/gsrv ; ./gsrv2
- start phopdata: cd /path/to/OSC_srv ; ./phopdata.pl
- put some soundfiles into the audio folder and list them in 'files.txt' so that pd can load them.
- start pd: pd phopcrop/phopcrop.pd
- press the bang labeled "sub"
- turn on audio in pd
- click the "reset, dim, create" message and the gem window should appear
- use these keys to work the interface:
- '2' to create ouput objects with gravitiy fields
- '1', '3', '4', '5' to create generator objects
- 'a' to switch the active object
- mouse to move selected object
- 'd' to delete selected object
- 'r' to reload the sample in the selected object
a standard session would go like this: pressing the "reset, dim, create" message. the gem window appears. focus the gem window if it isnt already. press "2" and a big orange sphere should appear on the screen. if it doesnt, its time to check if the adresses for the OSC connections to gsrv and phopdata are correct and if you successfully subscribed to all relevant messages on gsrv (check this by opening "dumpOSC 5251" in a terminal and issuing "sendOSC -h localhost 5151 /subscriptions"). press the bang labelled "reset". try again pressing "2".
when you finally have the first orange sphere on the screen you need to make a second one. at this point you need to make sure that the two objects are internally linked to id's 1 and 2. this is a hack, sorry. you can check this via the output of the pd console. if it doesnt, do a reset again and start over, creating 2 output objects by pressing "2" two times. object number 2 is by arbitrary choice the output object. once the output channels are activated, you can start adding object type 1, 3 or 5 by pressing the respective keys. if 1 or 5 doesnt make a sound check if you turned on sound in pd and if the patch finds the or any soundfiles. 3 should work rightaway. now press "a" and watch how the red marker circulates among the objects on screen. start dragging the currently marked object around on the screen.
note
- when you're using it on 2 or more computers, the physics-engine may only be switched on in one of them. you can switch it off by de-clicking the right checkbox above "pd physicsserver".
- phopcrop requires a fast ethernet connection because the object movement is broadcasted explicitly. a smarter way to handle this is the most important next step in continuing this project.
module development
for now you have to check the *_objX.pd files. X is a number and corresponds to the keys you press for generating them. a good way to start is copying e.g. (audio|graph|phys)_obj3.pd to (audio|graph|phys)_obj6.pd and edit them. then you'll have to add some routing chords in the gem keyboard input-chain.
screenshots and example sounds to follow.
-- Xdv.x75 - 06 Jun 2004