Browse Source

Small changes

master
Pete Shadbolt 10 years ago
parent
commit
293a2e87fd
2 changed files with 145 additions and 0 deletions
  1. +36
    -0
      main.ck
  2. +109
    -0
      main.py

+ 36
- 0
main.ck View File

@@ -0,0 +1,36 @@
// Effects chain
adc => Gain g => dac;
g => Gain feedback => DelayL delay => g;

// Delay parameters
10::second => delay.max;
5::second => delay.delay;
1 => feedback.gain;
1 => delay.gain;

// Create our OSC receiver
spork ~ inputEventHandler(9000);

// Loop forever
while(true) { 1::second => now; }


inputEventHandler => awd.handler;

// Event loop to deal with ADC input
fun void inputEventHandler(int port) {
OscRecv recv;
port => recv.port;
recv.listen();
recv.event( "/input, f f" ) @=> OscEvent oe;
while (true) {
oe => now;
while (oe.nextMsg() != 0) {
oe.getFloat() => g.gain;
oe.getFloat() => float a;
}
}
me.yield();
}



+ 109
- 0
main.py View File

@@ -0,0 +1,109 @@
from libs.simpleosc import *
import wx

class OSCSlider(wx.Panel):
''' A GUI slider '''
def __init__(self, parent, label, min_value=0, max_value=1, default_value=0, show_value=True, align=True):
''' Constructor '''
self.show_value=show_value
wx.Panel.__init__(self, parent)
sizer=wx.BoxSizer(wx.HORIZONTAL)
label=wx.StaticText(self, label=label, size=(100,15) if align else None)
sizer.Add(label, 0, wx.RIGHT, 10)
self.slider=wx.Slider(self, value=default_value*100, minValue=min_value*100, maxValue=max_value*100)
sizer.Add(self.slider, 1, wx.EXPAND)
if show_value:
self.indicator=wx.StaticText(self, label="--", size=(50,15))
sizer.Add(self.indicator, 0, wx.LEFT, 10)
self.SetSizerAndFit(sizer)
self.slider.Bind(wx.EVT_SCROLL, self.update)
self.update(None)

def update(self, evt):
value=self.slider.GetValue()/100.
if self.show_value: self.indicator.SetLabel("%s" % value)


class InputPanel(wx.Panel):
''' Handle the ADC input settings '''
def __init__(self, parent):
''' Constructor '''
wx.Panel.__init__(self, parent)
sizer = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self, label="Line In:")
font = label.GetFont(); font.SetWeight(wx.BOLD); label.SetFont(font)
sizer.Add(label, 0, wx.TOP|wx.BOTTOM|wx.RIGHT, 5)

self.gain = OSCSlider(self, "Gain", default_value=.5, show_value=False, align=False)
sizer.Add(self.gain, 1, wx.ALL, 5)
self.thru = OSCSlider(self, "Thru", default_value=.5, show_value=False, align=False)
sizer.Add(self.thru, 1, wx.ALL, 5)

self.button = wx.Button(self, 1, "Kill input")
sizer.Add(self.button, 0)
self.SetSizerAndFit(sizer)
self.gain.slider.Bind(wx.EVT_SCROLL, self.update)
self.thru.slider.Bind(wx.EVT_SCROLL, self.update)
self.update(None)

def update(self, evt):
""" Send OSC messages """
a=self.gain.slider.GetValue()/100.
b=self.thru.slider.GetValue()/100.
try:
sendOSCMsg("/input", [a, b])
except OSCClientError:
pass



class MainGUI(wx.Frame):
""" A simple GUI to talk to Chuck """
def __init__(self):
""" Constructor """
# Build the interface
self.app = wx.App(False)
self.build()
self.app.MainLoop()

def build(self):
""" Builds the various pieces of the GUI """
wx.Frame.__init__(self, None, title="DELAY LORD")
self.Bind(wx.EVT_CLOSE, self.quit)

# The main sizer
self.mainsizer = wx.BoxSizer(wx.VERTICAL)

self.inputPanel = InputPanel(self)
self.mainsizer.Add(self.inputPanel, 0, wx.EXPAND|wx.ALL, 5)

line=wx.StaticLine(self)
self.mainsizer.Add(line, 0, wx.EXPAND|wx.ALL, 5)

self.delayTime=OSCSlider(self, "Delay time (s)", default_value=5, max_value=10)
self.mainsizer.Add(self.delayTime, 0, wx.EXPAND|wx.ALL, 5)

self.feedback=OSCSlider(self, "Feedback", default_value=.95)
self.mainsizer.Add(self.feedback, 0, wx.EXPAND|wx.ALL, 5)

# Put things together
self.SetSizerAndFit(self.mainsizer)
self.Show()
self.SetSize((400,500))


def populate_left_panel(self):
""" Populate the left panel """
# Status boxes

def quit(self, *args):
""" Close down gracefully, and then destroy the window """
self.Destroy()


if __name__ == "__main__":
initOSCClient(ip="127.0.0.1", port=9000)
g=MainGUI()
closeOSC()

Loading…
Cancel
Save