aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/scripts/sendrecv.py
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/py/scripts/sendrecv.py')
-rw-r--r--externals/grill/py/scripts/sendrecv.py180
1 files changed, 0 insertions, 180 deletions
diff --git a/externals/grill/py/scripts/sendrecv.py b/externals/grill/py/scripts/sendrecv.py
deleted file mode 100644
index 9d873bae..00000000
--- a/externals/grill/py/scripts/sendrecv.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# py/pyext - python script objects for PD and MaxMSP
-#
-# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org)
-# For information on usage and redistribution, and for a DISCLAIMER OF ALL
-# WARRANTIES, see the file, "license.txt," in this distribution.
-#
-
-"""This is an example script for the py/pyext object's send/receive functionality.
-
-You can:
-- bind
-
-
-There are several classes exposing py/pyext features:
-- ex1: A class receiving messages and sending them out again
-- ex2: A class receiving messages and putting them out to an outlet
-- ex3: Do some PD scripting
-
-"""
-
-try:
- import pyext
-except:
- print "ERROR: This script must be loaded by the PD/Max pyext external"
-
-
-from time import sleep
-
-#################################################################
-
-def recv_gl(arg):
- """This is a global receive function, it has no access to class members."""
- print "GLOBAL",arg
-
-class ex1(pyext._class):
- """Example of a class which receives and sends messages
-
- It has two creation arguments: a receiver and a sender name.
- There are no inlets and outlets.
- Python functions (one global function, one class method) are bound to PD's or Max/MSP's receive symbols.
- The class method sends the received messages out again.
- """
-
-
- # no inlets and outlets
- _inlets=1
- _outlets=0
-
- recvname=""
- sendname=""
-
- def recv(self,*arg):
- """This is a class-local receive function, which has access to class members."""
-
- # print some stuff
- print "CLASS",self.recvname,arg
-
- # send data to specified send address
- self._send(self.sendname,arg)
-
-
- def __init__(self,*args):
- """Class constructor"""
-
- # store sender/receiver names
- if len(args) >= 1: self.recvname = args[0]
- if len(args) >= 2: self.sendname = args[1]
-
- self.bind_1()
-
- def bind_1(self):
- # bind functions to receiver names
- # both are called upon message
- self._bind(self.recvname,self.recv)
- self._bind(self.recvname,recv_gl)
-
- def unbind_1(self):
- self._unbind(self.recvname,self.recv)
- self._unbind(self.recvname,recv_gl)
-
- def __del__(self):
- """Class destructor"""
-
- # unbinding is automatically done at destruction
- pass
-
-
-#################################################################
-
-class ex2(pyext._class):
- """Example of a class which receives a message and forwards it to an outlet
-
- It has one creation argument: the receiver name.
- """
-
-
- # define inlets and outlets
- _inlets=0
- _outlets=1
-
- recvname=""
-
- def recv(self,*arg):
- """This is a class-local receive function"""
-
- # send received data to outlet
- self._outlet(1,arg)
-
-
- def __init__(self,rname):
- """Class constructor"""
-
- # store receiver names
- self.recvname = rname
-
- # bind function to receiver name
- self._bind(self.recvname,self.recv)
-
-
-#################################################################
-
-from math import pi
-from cmath import exp
-from random import random,randint
-
-class ex3(pyext._class):
- """Example of a class which does some object manipulation by scripting"""
-
-
- # define inlets and outlets
- _inlets=1
- _outlets=0
-
- def __init__(self):
- """Class constructor"""
-
- # called scripting method should run on its own thread
- if self._isthreaded:
- print "Threading is on"
- self._detach(1)
-
- def bang_1(self):
- """Do some scripting - PD only!"""
-
- num = 12 # number of objects
- ori = complex(150,180) # origin
- rad = 100 # radius
- l = range(num) # initialize list
-
- # make flower
- self._tocanvas("obj",ori.real,ori.imag,"bng",20,250,50,0,"empty","yeah","empty",0,-6,64,8,-24198,-1,-1)
- for i in xrange(num):
- l[i] = ori+rad*exp(complex(0,i*2*pi/num))
- self._tocanvas("obj",l[i].real,l[i].imag,"bng",15,250,50,0,"empty","yeah"+str(i),"empty",0,-6,64,8,0,-1,-1)
- self._tocanvas("connect",6,0,7+i,0)
-
- # blink
- for i in range(10):
- self._send("yeah","bang")
- sleep(1./(i+1))
-
- # move objects around
- for i in xrange(200):
- ix = randint(0,num-1)
- l[ix] = ori+rad*complex(2*random()-1,2*random()-1)
- self._send("yeah"+str(ix),"pos",l[ix].real,l[ix].imag)
- sleep(0.02)
-
- # now delete
- # this is not well-done... from time to time an object remains
- self._tocanvas("editmode",1)
- for i in xrange(num):
- self._tocanvas("mouse",l[i].real,l[i].imag,0,0)
- self._tocanvas("cut")
-
- self._tocanvas("mouse",ori.real+1,ori.imag+1,0,0)
- self._tocanvas("cut")
-
- self._tocanvas("editmode",0)
-