Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env /usr/local/bin/python
- """Copyright 2010 Phidgets Inc.
- This work is licensed under the Creative Commons Attribution 2.5 Canada License.
- To view a copy of this license, visit http://creativecommons.org/licenses/by/2.5/ca/
- """
- __author__ = 'Adam Stelmack'
- __version__ = '2.1.8'
- __date__ = 'May 17 2010'
- #Basic imports
- from ctypes import *
- import sys
- import random
- import pygame.mixer as mix;
- from threading import Timer
- #Phidget specific imports
- from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException
- from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, InputChangeEventArgs, OutputChangeEventArgs, SensorChangeEventArgs
- from Phidgets.Devices.InterfaceKit import InterfaceKit
- #setup sounds
- wraptriggers = True
- snds = []
- channels = []
- locks = []
- mix.init()
- threshold = 30
- interfaces = [326860,324254,326331]
- sndfiles = ["crack.wav","bell.wav","creak.wav","horn.wav","pong.wav","slide.wav","glass.wav","crash.wav","slap.wav","ratchet.wav","pluck.wav","thud.wav",]
- sndmap = [0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11]
- kits = [len(interfaces)];
- numsounds = 12
- mix.set_num_channels(numsounds)
- for i in range(numsounds):
- snds.append( mix.Sound("snd/"+sndfiles[i]) )
- print("sound: %i"%i)
- channels.append(mix.Channel(i));
- def interfaceKitAttached(e):
- print(e.device)
- attached = e.device
- print("InterfaceKit %i Attached!" % (attached.getSerialNum()))
- def interfaceKitDetached(e):
- detached = e.device
- print("InterfaceKit %i Detached!" % (detached.getSerialNum()))
- def interfaceKitError(e):
- try:
- source = e.device
- print("InterfaceKit %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description))
- except PhidgetException as e:
- print("Phidget Exception %i: %s" % (e.code, e.details))
- def interfaceKitSensorChanged(e):
- source = e.device
- serial = source.getSerialNum()
- devid = interfaces.index(serial)
- index = e.index
- sndid = sndmap[index]+(devid*4)
- print("SensorChanged: sensor %i on device %i sound %s"%(index, devid, sndid))
- if not channels[sndid].get_busy() and e.value > threshold:
- print("Trigger %i on interface %i, playing sound %i" %(index, devid, sndid) )
- channels[sndid].play(snds[sndid]);
- def interfaceKitInputChanged(e):
- print ("INPUT CHANGED")
- def interfaceKitOutputChanged(e):
- source = e.device
- print("InterfaceKit %i: Output %i: %s" % (source.getSerialNum(), e.index, e.state))
- #Main Program Code
- print("Opening phidget object....")
- j = 0;
- for p in interfaces:
- try:
- print("Opening %i"%(p))
- kits[j] = InterfaceKit()
- kits[j].setOnAttachHandler(interfaceKitAttached)
- # interfaceKit.setOnDetachHandler(interfaceKitDetached)
- kits[j].setOnErrorhandler(interfaceKitError)
- kits[j].setOnInputChangeHandler(interfaceKitInputChanged)
- # interfaceKit.setOnOutputChangeHandler(interfaceKitOutputChanged)
- kits[j].setOnSensorChangeHandler(interfaceKitSensorChanged)
- kits[j].openPhidget(p)
- kits[j].waitForAttach(10000)
- except PhidgetException as e:
- print("Phidget Exception %i: %s" % (e.code, e.details))
- print("Exiting....")
- exit(1)
- chr = sys.stdin.read(1)
- print("Closing...")
- try:
- interfaceKit.closePhidget()
- except PhidgetException as e:
- print("Phidget Exception %i: %s" % (e.code, e.details))
- print("Exiting....")
- exit(1)
- print("Done.")
- exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement