Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time, sys, os
- import ivy
- import argparse
- from pygame import mixer
- from ivy.std_api import *
- IVY_APP_NAME = "SoundBox"
- DEFAULT_BUS = '127.0.0.1:2010'
- SOUNDS_PATH = None
- PATH_DELIMITER = None
- if sys.platform == "linux" or sys.platform == "linux2":
- #linux
- SOUNDS_PATH = "./"
- PATH_DELIMITER = "/"
- elif sys.platform == "win32":
- #windows
- SOUNDS_PATH = ".\\"
- PATH_DELIMITER = "\\"
- else :
- raise(Exeption("operating system unknown"))
- PLAY_ONCE = "soundbox play_once (.*)"
- class SoundBox:
- def __init__(self, bus=DEFAULT_BUS):
- IvyInit(IVY_APP_NAME, IVY_APP_NAME + "online", 0, lambda agent, event: None, lambda agent, event: None)
- IvyStart(bus)
- mixer.init()
- IvyBindMsg(self.on_play_once, PLAY_ONCE)
- def playSound(self, soundFile):
- sound = mixer.Sound(soundFile)
- sound.play()
- time.sleep(sound.get_length()) #TODO do not use sleep to allow stopping sound before it ends
- def on_play_once(self, agent, *arg):
- filename = arg[0]
- soundFile = PATH_DELIMITER.join([SOUNDS_PATH, filename])
- if os.path.exists("water.wav"):
- self.playSound(filename)
- def stop(self):
- IvyStop()
- if __name__ == '__main__':
- parser = argparse.ArgumentParser("SoudBox option parser", formatter_class=argparse.RawTextHelpFormatter)
- parser.add_argument('-b', '--bus', type=str, default=DEFAULT_BUS,
- help="The ivy bus address.")
- parsed_args = parser.parse_args()
- soundbox = SoundBox(parsed_args.bus)
- try:
- while True:
- time.sleep(1)
- finally:
- soundbox.stop()
Add Comment
Please, Sign In to add comment