> module Datadirt where > import Stream > import Pattern > import Control.Applicative Define the OSC message. Each datum has: o An OSC type: S (string), F(float) or I (int) o A unique name o And a default value, prefixed by "Just" or if there is no default, "Nothing". > datadirt :: OscShape > datadirt = OscShape {path = "/trigger", > params = [ S "sound" Nothing, > F "speed" (Just 1), > F "shape" (Just 0), > F "pan" (Just 0), > F "panTo" (Just 0), > F "volume" (Just 1), > S "envName" (Just "none"), > F "anafeelS" (Just 0), > F "anafeelF" (Just 0), > F "accellerate" (Just 0), > S "vowel" (Just ""), > S "scale" (Just ""), > F "loops" (Just 1), > F "duration" (Just 0), > F "delay" (Just 0), > F "delay2" (Just 0), > F "cutoff" (Just 0), > F "resonance" (Just 0) > ], > timestamp = True > } Make some methods for setting particular parameters > sound = makeS datadirt "sound" > speed = makeF datadirt "speed" > shape = makeF datadirt "shape" > pan = makeF datadirt "pan" > panTo = makeF datadirt "panTo" > volume = makeF datadirt "volume" > envName = makeS datadirt "envName" > anafeelS = makeF datadirt "anafeelS" > anafeelF = makeF datadirt "anafeelF" > accellerate = makeF datadirt "accellerate" > vowel = makeS datadirt "vowel" > scaleName = makeS datadirt "scaleName" > loops = makeF datadirt "loops" > duration = makeF datadirt "duration" > delay = makeF datadirt "delay" > delay2 = makeF datadirt "delay2" > cutoff = makeF datadirt "cutoff" > resonance = makeF datadirt "resonance" > offset = makeT datadirt Give the port number and your OscShape, and get back an MVar to put your Osc patterns in. > datadirtStream client server name = stream client server name "127.0.0.1" 7770 datadirt