Guest User

Untitled

a guest
May 20th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. import time, sys, os
  2. import ivy
  3. import argparse
  4. from pygame import mixer
  5. from ivy.std_api import *
  6.  
  7. IVY_APP_NAME = "SoundBox"
  8. DEFAULT_BUS = '127.0.0.1:2010'
  9.  
  10. SOUNDS_PATH = None
  11. PATH_DELIMITER = None
  12.  
  13. if sys.platform == "linux" or sys.platform == "linux2":
  14. #linux
  15. SOUNDS_PATH = "./"
  16. PATH_DELIMITER = "/"
  17. elif sys.platform == "win32":
  18. #windows
  19. SOUNDS_PATH = ".\\"
  20. PATH_DELIMITER = "\\"
  21. else :
  22. raise(Exeption("operating system unknown"))
  23.  
  24.  
  25.  
  26.  
  27. PLAY_ONCE = "soundbox play_once (.*)"
  28.  
  29. class SoundBox:
  30. def __init__(self, bus=DEFAULT_BUS):
  31. IvyInit(IVY_APP_NAME, IVY_APP_NAME + "online", 0, lambda agent, event: None, lambda agent, event: None)
  32. IvyStart(bus)
  33. mixer.init()
  34. IvyBindMsg(self.on_play_once, PLAY_ONCE)
  35.  
  36. def playSound(self, soundFile):
  37. sound = mixer.Sound(soundFile)
  38. sound.play()
  39. time.sleep(sound.get_length()) #TODO do not use sleep to allow stopping sound before it ends
  40.  
  41. def on_play_once(self, agent, *arg):
  42. filename = arg[0]
  43. soundFile = PATH_DELIMITER.join([SOUNDS_PATH, filename])
  44. if os.path.exists("water.wav"):
  45. self.playSound(filename)
  46.  
  47. def stop(self):
  48. IvyStop()
  49.  
  50. if __name__ == '__main__':
  51. parser = argparse.ArgumentParser("SoudBox option parser", formatter_class=argparse.RawTextHelpFormatter)
  52. parser.add_argument('-b', '--bus', type=str, default=DEFAULT_BUS,
  53. help="The ivy bus address.")
  54. parsed_args = parser.parse_args()
  55.  
  56. soundbox = SoundBox(parsed_args.bus)
  57. try:
  58. while True:
  59. time.sleep(1)
  60. finally:
  61. soundbox.stop()
Add Comment
Please, Sign In to add comment