Sampler in ChucK
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.8KB

  1. from libs.simpleosc import *
  2. import wx
  3. class OSCSlider(wx.Panel):
  4. ''' A GUI slider '''
  5. def __init__(self, parent, label, min_value=0, max_value=100, default_value=0):
  6. ''' Constructor '''
  7. wx.Panel.__init__(self, parent)
  8. sizer=wx.BoxSizer(wx.HORIZONTAL)
  9. self.indicator=wx.StaticText(self, label=label)
  10. sizer.Add(self.indicator, 0, wx.RIGHT, 10)
  11. self.slider=wx.Slider(self, value=default_value, minValue=min_value, maxValue=max_value)
  12. sizer.Add(self.slider, 1, wx.EXPAND)
  13. self.SetSizerAndFit(sizer)
  14. self.slider.Bind(wx.EVT_SCROLL, self.update)
  15. def update(self, evt):
  16. """ Send OSC messages """
  17. value=float(self.slider.GetValue())
  18. sendOSCMsg("/test", [value])
  19. class MainGUI(wx.Frame):
  20. """ A simple GUI to talk to Chuck """
  21. def __init__(self):
  22. """ Constructor """
  23. # Build the interface
  24. self.app = wx.App(False)
  25. self.build()
  26. self.app.MainLoop()
  27. def build(self):
  28. """ Builds the various pieces of the GUI """
  29. wx.Frame.__init__(self, None, title="Controls", size=(500,100))
  30. self.Bind(wx.EVT_CLOSE, self.quit)
  31. # The main sizer
  32. self.mainsizer = wx.BoxSizer(wx.HORIZONTAL)
  33. self.slider=OSCSlider(self, "Input gain", default_value=50)
  34. self.mainsizer.Add(self.slider, 1, wx.ALL, 5)
  35. # Put things together
  36. self.SetSizerAndFit(self.mainsizer)
  37. self.Show()
  38. self.SetSize((700,500))
  39. def populate_left_panel(self):
  40. """ Populate the left panel """
  41. # Status boxes
  42. def quit(self, *args):
  43. """ Close down gracefully, and then destroy the window """
  44. self.Destroy()
  45. if __name__ == "__main__":
  46. initOSCClient(ip="127.0.0.1", port=9000)
  47. g=MainGUI()
  48. closeOSC()