Exemple #1
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self,signature=version,names='clicker',container=3,ordinal=ordinal)
        self.domain = piw.clockdomain_ctl()
        accent = wav_resource('accent.wav')
        beat = wav_resource('beat.wav')

        self[1] = bundles.Output(1,True,names='audio output')
        self.output = bundles.Splitter(self.domain, self[1])
        self.clicker = loop_native.clicker(self.output.cookie(),self.domain,accent,beat)
        self.input = bundles.ScalarInput(self.clicker.cookie(), self.domain, signals=(1,2))

        self[2] = atom.Atom()
        self[2][1] = atom.Atom(domain=domain.Aniso(),policy=self.input.policy(1,False),names='running input')
        self[2][2] = atom.Atom(domain=domain.Aniso(),policy=self.input.policy(2,False),names='bar beat input')

        self.add_verb2(1,'play([],None)',self.__play,status_action=self.__status)
        self.add_verb2(2,'play([un],None)',self.__unplay,status_action=self.__status)
        self.add_verb2(3,'play([toggle],None)',self.__toggle,status_action=self.__status)
        
        self[4]=bundles.Output(1,False,names='status output')
        self.light_output=bundles.Splitter(self.domain,self[4])
        self.lights=piw.lightsource(piw.change_nb(),0,self.light_output.cookie())
        self.lights.set_size(1)
        self.lights.set_status(1,const.status_inactive)
        self.__playstate = node.Server(value=piw.makebool(True,0),change=self.__playchanged)
        self.set_private(self.__playstate)
        self.__playing=False
Exemple #2
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self,
                             signature=version,
                             names='labeler',
                             ordinal=ordinal)

        self.domain = piw.clockdomain_ctl()

        self[1] = atom.Atom(
            domain=domain.Aniso(hints=(logic.make_term('continuous'), )),
            names='controller output',
            policy=atom.readonly_policy())

        self[2] = atom.Atom(domain=domain.String(),
                            init='Label',
                            names='label category',
                            policy=atom.default_policy(self.__set_category))
        self[3] = atom.Atom(domain=domain.String(),
                            init='',
                            names='label',
                            policy=atom.default_policy(self.__set_label))

        self.ctl_functor = piw.functor_backend(1, True)
        self.ctl_input = bundles.VectorInput(self.ctl_functor.cookie(),
                                             self.domain,
                                             signals=(1, ))
        self[4] = atom.Atom(domain=domain.Aniso(),
                            policy=self.ctl_input.vector_policy(1, False),
                            names='controller input')
        self.ctl_functor.set_functor(
            piw.pathnull(0),
            utils.make_change_nb(
                piw.slowchange(utils.changify(self.__controller_input))))

        self.__ctl = []
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self,
                             signature=version,
                             names='midi program chooser',
                             ordinal=ordinal)

        self.domain = piw.clockdomain_ctl()

        self[1] = atom.Atom(names='outputs')
        self[1][1] = bundles.Output(1,
                                    False,
                                    names='light output',
                                    protocols='revconnect')
        self[1][2] = bundles.Output(2, False, names='midi output')
        self.output = bundles.Splitter(self.domain, self[1][1], self[1][2])

        self.chooser = midi_native.midi_pgm_chooser(self.output.cookie(),
                                                    self.domain)

        self.input = bundles.VectorInput(self.chooser.cookie(),
                                         self.domain,
                                         signals=(
                                             1,
                                             2,
                                         ))

        self[2] = atom.Atom(names='inputs')
        self[2][1] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.vector_policy(1, False),
                               names='key input')
        self[2][2] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.vector_policy(2, False),
                               names='controller input')

        self[3] = atom.Atom(domain=domain.Bool(),
                            init=False,
                            policy=atom.default_policy(self.__bankview),
                            names='bank view')
        self[4] = atom.Atom(domain=domain.BoundedInt(0, 127),
                            init=0,
                            policy=atom.default_policy(self.__program),
                            names='program')
        self[5] = atom.Atom(domain=domain.BoundedInt(0, 16),
                            init=1,
                            policy=atom.default_policy(self.__channel),
                            names='midi channel')
        self[6] = atom.Atom(domain=domain.BoundedInt(0, 127),
                            init=0,
                            policy=atom.default_policy(self.__window),
                            names='window')
        self[7] = atom.Atom(domain=domain.BoundedInt(0, 127),
                            init=0,
                            policy=atom.default_policy(self.__bank),
                            names='bank')

        self.add_verb2(1, 'reset([],None)', callback=self.__reset)
        self.add_verb2(2, 'up([],None)', callback=self.__up)
        self.add_verb2(3, 'down([],None)', callback=self.__down)
Exemple #4
0
    def __init__(self, address, ordinal):
        
        agent.Agent.__init__(self,names='midi converter',signature=version,container=100,ordinal=ordinal)

        self.__domain = piw.clockdomain_ctl()

        self.__state = AgentState(self.__agent_state_loaded)
        self.set_private(self.__state)

        # the MIDI stream output
        self[1]=bundles.Output(1,False,names="midi output")
        self.__output = bundles.Splitter(self.__domain, self[1])

        self.__observer = MappingObserver(self.__state,self)
        self.__channel_delegate = MidiChannelDelegate(self)
        self.__midi_from_belcanto = piw.midi_from_belcanto(self.__output.cookie(), self.__domain)
        self.__midi_converter = piw.midi_converter(self.__observer, self.__channel_delegate, self.__domain, self.__midi_from_belcanto, self.__get_title())
 
        self.parameter_list = inputparameter.List(self.__midi_converter,self.__midi_converter.clock_domain(),self.verb_container())

        # velocity detector, reads pressure input (signal 1) and generates a note on velocity (signal 4), passes thru all other signals in bundle
        self.__kvelo = piw.velocitydetect(self.__midi_from_belcanto.cookie(),1,4)

        # Inputs for generating keyboard driven MIDI signals
        # MIDI controllers are merged down with signals from keys (driven by pressure)
        self.__kinpt = bundles.VectorInput(self.__kvelo.cookie(),self.__domain,signals=(1,2,3,5,6,7,8,9,10,11,12,13))
        self[2] = atom.Atom()
        self[2][1] = atom.Atom(domain=domain.Aniso(),policy=self.__kinpt.vector_policy(1,False),names='pressure input')
        self[2][2] = atom.Atom(domain=domain.Aniso(),policy=self.__kinpt.merge_nodefault_policy(2,False),names='frequency input')

         # input to set the MIDI channel
        self[3] = atom.Atom(domain=domain.BoundedInt(0,16),init=0,names="midi channel",policy=atom.default_policy(self.set_midi_channel))

        # inputs to control the velocity curve
        self[4] = atom.Atom()
        self[4][1] = atom.Atom(domain=domain.BoundedInt(1,1000),init=4,names="velocity sample",policy=atom.default_policy(self.__set_samples))
        self[4][2] = atom.Atom(domain=domain.BoundedFloat(0.1,10),init=4,names="velocity curve",policy=atom.default_policy(self.__set_curve))
        self[4][3] = atom.Atom(domain=domain.BoundedFloat(0.1,10),init=4,names="velocity scale",policy=atom.default_policy(self.__set_scale))

        # bank change
        self[5]=atom.Atom(domain=domain.BoundedFloat(1,128),init=1,names="midi bank", policy=atom.default_policy(self.__set_bank_change))
        # program change
        self[6]=atom.Atom(domain=domain.BoundedFloat(1,128),init=1,names="midi program", policy=atom.default_policy(self.__set_program_change))

        # inputs to set the minimum and maximum MIDI channel when in poly mode
        self[7] = atom.Atom(domain=domain.BoundedInt(1,16),init=1,names="minimum channel",policy=atom.default_policy(self.set_min_channel))
        self[8] = atom.Atom(domain=domain.BoundedInt(1,16),init=16,names="maximum channel",policy=atom.default_policy(self.set_max_channel))

        # parameter mapping
        self[12] = self.parameter_list

        self.set_midi_channel(0)
Exemple #5
0
    def __init__(self,address,ordinal):
        self.domain = piw.clockdomain_ctl()
        vc = atom.VerbContainer(clock_domain=self.domain)

        self.finder = talker.TalkerFinder()

        agent.Agent.__init__(self,signature=version,names='arranger', protocols='bind', container=(9,'agent',vc), ordinal=ordinal)

        self[1] = self.verb_container()

        self.model = arranger_native.model(self.domain)

        self.light_output = bundles.Output(1,False,names='light output',protocols='revconnect')
        self.light_splitter = bundles.Splitter(self.domain, self.light_output)
        self.light_convertor = piw.lightconvertor(True,self.light_splitter.cookie())
        self.view = arranger_native.view(self.model,self.light_convertor.cookie())

        self.ctlr_fb = piw.functor_backend(1,True)
        self.ctlr_fb.set_functor(piw.pathnull(0),self.view.control())
        self.ctlr_input = bundles.ScalarInput(self.ctlr_fb.cookie(),self.domain,signals=(1,))
        self[2] = atom.Atom(domain=domain.Aniso(),policy=self.ctlr_input.policy(1,False),names='controller input')

        self.kinput = bundles.VectorInput(self.view.cookie(),self.domain,signals=(1,2,3,5))
        self[3] = atom.Atom(names='key inputs')
        self[3][1] = atom.Atom(domain=domain.BoundedFloat(0,1),policy=self.kinput.vector_policy(1,False),names='pressure input',protocols='nostage')
        self[3][2] = atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.kinput.merge_policy(2,False),names='roll input',protocols='nostage')
        self[3][3] = atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.kinput.merge_policy(3,False),names='yaw input',protocols='nostage')
        self[3][5] = atom.Atom(domain=domain.Aniso(), policy=self.kinput.vector_policy(5,False),names='key input')
        self[3][4] = self.light_output

        self.cinput = bundles.ScalarInput(self.model.cookie(),self.domain,signals=(1,2))
        self.cinput.add_upstream(self.verb_container().clock)
        self[4] = atom.Atom(names='metronome inputs')
        self[4][1] = atom.Atom(domain=domain.Aniso(), policy=self.cinput.nodefault_policy(1,False),names='song beat input')
        self[4][2] = atom.Atom(domain=domain.Aniso(), policy=self.cinput.nodefault_policy(2,False),names='running input')

        self[5] = collection.Collection(creator=self.__createtarget,wrecker=self.__wrecktarget,names="row",inst_creator=self.__createtarget_inst,inst_wrecker=self.__wrecktarget_inst,protocols='hidden-connection explicit')

        self[7] = Parameters(self)

        self.__eventlist = EventList(self)
        self.__playstop = node.Server(change=self.__play_change)
        self.__playstop[1] = self.__eventlist
        
        self.set_private(self.__playstop)

        self.add_verb2(1,'play([],None)',create_action=self.__play,clock=True)
        self.add_verb2(2,'play([un],None)',create_action=self.__unplay,clock=True)
        self.add_verb2(3,'cancel([],None,role(None,[numeric]),option(called,[numeric]))',self.__cancel_verb)
        self.add_verb2(4,'clear([],None)',self.__clear_verb)
        self.add_verb2(5,'do([],None,role(None,[abstract]),role(when,[numeric]),option(called,[numeric]))', self.__do_verb)
        self.model.playstop_set(piw.make_change_nb(utils.slowchange(self.__play_set)))
Exemple #6
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self,
                             names='controller',
                             signature=version,
                             ordinal=ordinal,
                             protocols='controller')

        self.domain = piw.clockdomain_ctl()

        self[4] = ConnectorList(self)

        self[3] = bundles.Output(1,
                                 False,
                                 names='light output',
                                 protocols='revconnect')
        self.lights = bundles.Splitter(self.domain, self[3])
        self.lightconvertor = piw.lightconvertor(False, self.lights.cookie())
        self.controller = Controller0(self, self.lightconvertor.cookie(),
                                      utils.pack_str(1, 2, 3, 4, 5, 6))
        self.clone = piw.clone(True)
        self.clone.set_output(1, self.controller.event_cookie())
        self.input = bundles.VectorInput(self.clone.cookie(),
                                         self.domain,
                                         signals=(1, 2, 3, 4, 5, 6))

        self[1] = atom.Atom(names='inputs')
        self[1][2] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                               policy=self.input.vector_policy(3, False),
                               names='pressure input')
        self[1][3] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.vector_policy(4, False),
                               names='roll input')
        self[1][4] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.vector_policy(5, False),
                               names='yaw input')
        self[1][5] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.vector_policy(6, False),
                               names='strip position input')
        self[1][6] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.vector_policy(1, False),
                               names='key input')
        self[1][7] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.merge_nodefault_policy(
                                   2, False),
                               names='controller input')

        self.add_verb2(1, 'create([],None,role(None,[mass([connector])]))',
                       self.__create_connector)
        self.add_verb2(2, 'create([un],None,role(None,[mass([connector])]))',
                       self.__uncreate_connector)
Exemple #7
0
    def __init__(self, key, fast, text, index):
        self.__key = key
        self.__index = index

        self.__fastdata = piw.fastdata(0)
        piw.tsd_fastdata(self.__fastdata)
        self.__fastdata.set_upstream(fast)

        atom.Atom.__init__(self,
                           domain=domain.Aniso(),
                           policy=policy.FastReadOnlyPolicy(),
                           names='action',
                           ordinal=index)

        self.get_policy().set_source(self.__fastdata)
        self.status_input = bundles.VectorInput(
            self.__key.key_aggregator.get_output(self.__index),
            self.__key.agent.domain,
            signals=(1, ))
        self.set_property_string('help', text)

        self[1] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                            policy=self.status_input.vector_policy(
                                1, False, clocked=False),
                            names='status input',
                            protocols='nostage')
Exemple #8
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self,
                             names='midi output',
                             signature=version,
                             container=3)
        self.set_property_long('cordinal', ordinal)

        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*', 0))
        self[1] = OutputMidiPort(self.domain)

        # midi input vector, merge down multiple MIDI input streams
        self.input = bundles.VectorInput(self[1].cookie(),
                                         self.domain,
                                         signals=(1, ))
        self[2] = atom.Atom(domain=domain.Aniso(),
                            names="midi input",
                            policy=self.input.vector_policy(1, False))

        # self[3] is verb container

        # choose verb for choosing an output MIDI port
        self.add_verb2(
            1,
            'choose([],None,role(None,[ideal([~server,midiport]),singular]))',
            self.__chooseport)

        self.set_ordinal(ordinal)
Exemple #9
0
    def __init__(self, address, ordinal):
        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*',0))

        agent.Agent.__init__(self, signature=version, names='stringer',protocols='bind set',container=(5,'stringer',atom.VerbContainer(clock_domain=self.domain)),ordinal=ordinal)
        
        self[1] = atom.Atom(names='outputs')
        self[1][1] = bundles.Output(1,False, names='controller output', continuous=True)
        self[1][2] = bundles.Output(2,False,names='pressure output', protocols='')
        self[1][3] = bundles.Output(3,False,names='roll output', protocols='')
        self[1][4] = bundles.Output(4,False,names='yaw output', protocols='')
        self[1][5] = bundles.Output(5,False,names='key output', protocols='')

        self.output = bundles.Splitter(self.domain,self[1][2],self[1][3],self[1][4],self[1][5])
        self.coutput = bundles.Splitter(self.domain,self[1][1])

        # stringer
        self.stringer = piw.stringer(self.output.cookie())

        # clone controller input to copy it to an output and the stringer
        self.cclone = piw.clone(True) 
        self.cclone.set_output(1,self.coutput.cookie())

        self.ctl_input = bundles.VectorInput(self.cclone.cookie(),self.domain,signals=(1,))
        self.data_input = bundles.VectorInput(self.stringer.data_cookie(),self.domain,signals=(2,3,4,5))

        self[4]=atom.Atom(names='inputs')
        self[4][1]=atom.Atom(domain=domain.Aniso(),policy=self.ctl_input.vector_policy(1,False),names='controller input')
        self[4][2]=atom.Atom(domain=domain.BoundedFloat(0,1),policy=self.data_input.merge_policy(2,False),names='pressure input',protocols='nostage')
        self[4][3]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.data_input.merge_policy(3,False),names='roll input',protocols='nostage')
        self[4][4]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.data_input.merge_policy(4,False),names='yaw input',protocols='nostage')
        self[4][5]=atom.Atom(domain=domain.Aniso(),policy=self.data_input.vector_policy(5,False), names='key input')

        # self[5] is the verb container

        # enable, to deactivate the stringer
        self[6] = atom.Atom(domain=domain.Bool(),init=True,names="enable",policy=atom.default_policy(self.__enable))

        # status output to drive the talker lights
        self[7]=bundles.Output(1,False,names='status output')
        self.light_output=bundles.Splitter(self.domain,self[7])
        self.lights=piw.lightsource(piw.change_nb(),0,self.light_output.cookie())
        self.lights.set_size(1)
        self.__set_lights(self[6].get_value())

        # toggle enable verb, has status action to ensure the status output will be connected to a talker
        self.add_verb2(1,'enable([toggle],None)',callback=self.__toggle_enable,status_action=self.__status)
Exemple #10
0
    def __init__(self, connector):
        self.__connector = connector
        self.__monitor = None

        atom.Atom.__init__(self,
                           domain=domain.Aniso(),
                           names='control output',
                           policy=policy.FastReadOnlyPolicy(),
                           protocols="connect-static output nostage")
Exemple #11
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self, signature=version, names='scaler',protocols='bind set',icon='plg_simple/scaler.png',container=5,ordinal=ordinal)
        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*',0))

        self.__fixed = False
        self.set_private(node.Server(value=piw.makebool(False,0),change=self.__changefix))

        self[1] = atom.Atom()
        self[1][1] = bundles.Output(1,False,names='activation output', protocols='')
        self[1][2] = bundles.Output(2,False,names='pressure output', protocols='')
        self[1][3] = bundles.Output(3,False,names='roll output', protocols='')
        self[1][4] = bundles.Output(4,False,names='yaw output', protocols='')
        self[1][5] = bundles.Output(5,False,names='scale note output', protocols='')
        self[1][6] = bundles.Output(6,False,names='frequency output', protocols='')

        self.ctl = piw.scaler_controller()
        self.ctl_input = bundles.VectorInput(self.ctl.cookie(),self.domain,signals=(1,))

        self.output = bundles.Splitter(self.domain,*self[1].values())
        self.filter = piw.scaler(self.ctl,self.output.cookie(),cubic())
        self.input = bundles.VectorInput(self.filter.cookie(), self.domain,signals=(1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17))
        self.input.correlator.clocksink().add_upstream(self.ctl_input.correlator.clocksink())

        self[4]=atom.Atom()

        self[4][1]=atom.Atom(domain=domain.BoundedFloat(0,1),policy=self.input.merge_policy(1,False),names='activation input')
        self[4][2]=atom.Atom(domain=domain.BoundedFloat(0,1),policy=self.input.vector_policy(2,False),names='pressure input')
        self[4][3]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.input.merge_policy(3,False),names='roll input')
        self[4][4]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.input.merge_policy(4,False),names='yaw input')

        th=(T('inc',1),T('biginc',1),T('control','updown'))
        bh=(T('inc',1),T('biginc',1),T('control','updown'))
        sh=(T('choices','[0,2,4,5,7,9,11,12]','[0,1,2,3,4,5,6,7,8,9,10,11,12]','[0,2,4,6,8,10,12]','[0,2,3,5,7,8,10,12]','[0,3,5,6,7,10,12]', '[0,2,3,6,7,8,11,12]','[0,3,5,7,10,12]','[0,2,4,7,9,12]'), T('control','selector'))
        self[4][5]=atom.Atom(domain=domain.BoundedFloat(0,12,hints=th),policy=self.input.merge_policy(5,False),names='tonic input',protocols='bind set',container=(None,'tonic',self.verb_container()))
        self[4][6]=atom.Atom(domain=domain.BoundedFloat(-20,20,hints=bh),policy=self.input.merge_policy(6,False),names='base note input',protocols='bind')


        self[4][7]=atom.Atom(domain=domain.String(hints=sh),init='[0,2,4,5,7,9,11,12]',policy=self.input.merge_policy(7,False),names='scale input',protocols='bind set',container=(None,'scale',self.verb_container()))
        self[4][8]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.input.merge_policy(9,policy.LopassStreamPolicy(200,0.6)),names='k pitch bend input')
        self[4][9]=atom.Atom(domain=domain.BoundedFloat(-1,1),policy=self.input.merge_policy(10,False),names='global pitch bend input')
        self[4][10]=atom.Atom(domain=domain.BoundedFloat(0,72),init=1,policy=self.input.merge_policy(11,False),names='k bend range input',protocols='bind')
        self[4][11]=atom.Atom(domain=domain.BoundedFloat(0,72),init=12,policy=self.input.merge_policy(12,False),names='global bend range input',protocols='bind')
        self[4][12]=atom.Atom(domain=domain.Aniso(),policy=self.ctl_input.vector_policy(1,False),names='controller input')
        self[4][13]=atom.Atom(domain=domain.Bool(),policy=self.input.merge_policy(14,False),names='override',protocols='bind')
        self[4][14]=atom.Atom(domain=domain.BoundedFloat(-1,9,hints=th),init=3,policy=self.input.merge_policy(15,False),names='octave input',protocols='bind',container=(None,'octave',self.verb_container()))
        self[4][15]=atom.Atom(domain=domain.BoundedInt(1,4),init=2,policy=atom.default_policy(self.__set_curve),names='curve',protocols='bind')
        self[4][16]=atom.Atom(domain=domain.BoundedFloat(0,1000),policy=self.input.merge_nodefault_policy(16,False),names='key input')
        self[4][17]=atom.Atom(domain=domain.BoundedFloat(-10,10,hints=th),init=0,policy=self.input.merge_policy(17,False),names='relative octave input',protocols='bind')

        self.add_verb2(3,'choose([],None,role(none,[ideal([None,scale]),singular]))',callback=self.__tune_scale)
        self.add_verb2(5,'fix([],None)',callback=self.__fix)
        self.add_verb2(6,'fix([un],None)',callback=self.__unfix)

        self[4][5].add_verb2(1,'set([],~a,role(None,[instance(~self)]),role(to,[ideal([None,note]),singular]))',callback=self.__tune_tonic)
        self[4][7].add_verb2(2,'set([],~a,role(None,[instance(~self)]),role(to,[ideal([None,scale]),singular]))',callback=self.__tune_scale)
Exemple #12
0
    def __init__(self,names,ordinal,dom,remove,keys):
        self.kbd_keys = keys
        agent.Agent.__init__(self,names=names,ordinal=ordinal,signature=version,subsystem='kbd',volatile=True,container=102,protocols='browse is_subsys')

        self.remover=remove

        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*',0))

        self[1] = bundles.Output(1,False,names='activation output')
        self[2] = bundles.Output(2,False,names='pressure output')
        self[3] = bundles.Output(3,False,names='roll output')
        self[4] = bundles.Output(4,False,names='yaw output')

        self[5] = bundles.Output(1,False,names='strip position output',ordinal=1)

        self[7] = bundles.Output(1,False,names='breath output')
        self[10] = bundles.Output(2,False,names='absolute strip output',ordinal=1)

        self[12] = bundles.Output(1,False,names='pedal output',ordinal=1)
        self[13] = bundles.Output(1,False,names='pedal output',ordinal=2)
        self[14] = bundles.Output(1,False,names='pedal output',ordinal=3)
        self[15] = bundles.Output(1,False,names='pedal output',ordinal=4)

        self.led_backend = piw.functor_backend(1,True)
        self.status_mixer = piw.statusmixer(self.led_backend.cookie())
        self.led_input = bundles.VectorInput(self.status_mixer.cookie(),self.domain,signals=(1,))
        self[8] = atom.Atom(names='light input',protocols='revconnect',policy=self.led_input.vector_policy(1,False,False,auto_slot=True),domain=domain.Aniso())

        self[100] = VirtualKey(self.kbd_keys)

        self.koutput = bundles.Splitter(self.domain,self[1],self[2],self[3],self[4])
        self.kpoly = piw.polyctl(10,self.koutput.cookie(),False,5)
        self.s1output = bundles.Splitter(self.domain,self[5],self[10])
        self.boutput = bundles.Splitter(self.domain,self[7])
        self.poutput1 = bundles.Splitter(self.domain,self[12])
        self.poutput2 = bundles.Splitter(self.domain,self[13])
        self.poutput3 = bundles.Splitter(self.domain,self[14])
        self.poutput4 = bundles.Splitter(self.domain,self[15])

        self.kclone=piw.sclone()
        self.kclone.set_filtered_output(1,self.kpoly.cookie(),piw.first_filter(1))
        self.kclone.set_filtered_output(2,self.s1output.cookie(),piw.first_filter(2))
        self.kclone.set_filtered_output(5,self.boutput.cookie(),piw.first_filter(5)) 
        self.kclone.set_filtered_output(6,self.poutput1.cookie(),piw.first_filter(6))
        self.kclone.set_filtered_output(7,self.poutput2.cookie(),piw.first_filter(7))
        self.kclone.set_filtered_output(8,self.poutput3.cookie(),piw.first_filter(8))
        self.kclone.set_filtered_output(9,self.poutput4.cookie(),piw.first_filter(9))

        self[9] = atom.Atom(names='controller output',domain=domain.Aniso(),init=self.courses())

        self.add_verb2(4,'maximise([],None,role(None,[mass([pedal])]))',self.__maximise)
        self.add_verb2(5,'minimise([],none,role(None,[mass([pedal])]))',self.__minimise)

        self.__timestamp = piw.tsd_time()
        self.update()
Exemple #13
0
    def __init__(self, agent, index):
        self.agent = agent
        self.index = index

        atom.Atom.__init__(self,
                           names=self.get_names(),
                           ordinal=index,
                           protocols='remove nostage')

        self.__input = self.get_vector_input()
        if self.__input:
            self[1] = atom.Atom(domain=domain.Aniso(),
                                policy=self.__input.vector_policy(1, False),
                                names='audio input',
                                protocols='nostage')
            self[2] = atom.Atom(domain=domain.Aniso(),
                                policy=self.__input.merge_nodefault_policy(
                                    2, False, callback=self.channel_changed),
                                names='controller input')
Exemple #14
0
    def __init__(self,agent,index):
        self.agent = agent
        self.__fastdata = bundles.FastSender()
        collection.Collection.__init__(self,domain=domain.Aniso(),policy=policy.FastReadOnlyPolicy(),creator=self.__create,wrecker=self.__wreck,ordinal=index,names='row',protocols='hidden-connection remove explicit')
        self.get_policy().set_source(self.__fastdata)
        self.get_policy().set_clock(self.agent.model.get_clock())

        self.set_private(node.static(_1=node.Server(change=self.__changetarget)))
        self.target = self.get_private()[1]

        if index is not None:
            self.__changetarget(piw.makelong(index-1,0))
Exemple #15
0
    def __init__(self, fast, text, index):
        self.__index = index

        self.__fastdata = piw.fastdata(0)
        piw.tsd_fastdata(self.__fastdata)
        self.__fastdata.set_upstream(fast)
        atom.Atom.__init__(self,
                           domain=domain.Aniso(),
                           policy=policy.FastReadOnlyPolicy())
        self.get_policy().set_source(self.__fastdata)
        self.set_private(
            node.Server(value=piw.makestring(text, 0), change=self.__change))
Exemple #16
0
 def __init__(self, k, delegate, clockdomain):
     self.__delegate = delegate
     self.__input = bundles.VectorInput(self.__delegate.parameter_input(k),
                                        clockdomain,
                                        signals=(1, ))
     self.__index = k
     atom.Atom.__init__(self,
                        domain=domain.Aniso(),
                        policy=self.__input.vector_policy(1, False),
                        names='parameter',
                        protocols='input explicit',
                        ordinal=k)
Exemple #17
0
    def __setup(self):
        first_aniso = None

        for (k, v) in self.__monitors.items():
            if not v.domain().iso():
                if first_aniso is None:
                    first_aniso = k

        if first_aniso is not None:
            self.set_domain(self.__monitors[first_aniso].domain())
            return

        self.set_domain(domain.Aniso())
Exemple #18
0
    def __init__(self, address, ordinal):

        agent.Agent.__init__(self,
                             names='midi clock',
                             signature=version,
                             container=100,
                             ordinal=ordinal)

        self.domain = piw.clockdomain_ctl()

        # the MIDI stream output
        self[1] = bundles.Output(1, False, names="midi output")
        self.output = bundles.Splitter(self.domain, self[1])

        self.midi_clock = midi_native.midi_clock(self.output.cookie(),
                                                 self.domain)

        # the inputs from the metronome
        self.input = bundles.ScalarInput(self.midi_clock.cookie(),
                                         self.domain,
                                         signals=(1, 2, 3))

        self[2] = atom.Atom(names='metronome inputs')
        self[2][1] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.policy(1, False),
                               names='running input')
        self[2][2] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.policy(2, False),
                               names='song beat input')
        self[2][3] = atom.Atom(domain=domain.BoundedFloat(0, 100000),
                               init=120,
                               policy=self.input.policy(3, False),
                               names="tempo input")

        h = (T('inc', 0.5), T('biginc', 10), T('control', 'updown'))
        self[3] = atom.Atom(domain=domain.BoundedFloat(-500, 500, hints=h),
                            init=0,
                            policy=atom.default_policy(self.__set_delay),
                            names="delay")
Exemple #19
0
 def __init__(self,osc):
     atom.Atom.__init__(self,policy=policy.FastReadOnlyPolicy(),domain=domain.Aniso(),protocols='nostage')
     self.__send_queue = piw.fastdata(0)
     self.__recv_queue = piw.fastdata(0)
     piw.tsd_fastdata(self.__send_queue)
     piw.tsd_fastdata(self.__recv_queue)
     self.send_channel = None
     self.__monitor = Monitor(self.__recv_queue,osc,self)
     self.get_policy().set_source(self.__send_queue)
     self.__osc = osc
     self.__name = ''
     self.have_target = False
     self.have_widget = False
Exemple #20
0
    def __init__(self,agent,row=None):
        self.__agent = agent
        self.__fastdata = bundles.FastSender()
        atom.Atom.__init__(self,domain=domain.Aniso(),policy=policy.FastReadOnlyPolicy())
        self.get_policy().set_source(self.__fastdata)
        self.get_policy().set_clock(self.__agent.model.get_clock())

        self.set_private(node.static(_1=node.Server(change=self.__changetarget),_2=node.Server(value=piw.makelong(1,0),change=self.__changerefs)))
        self.target = self.get_private()[1]
        self.refs = self.get_private()[2]

        if row is not None:
            self.__changetarget(piw.makelong(row,0))
Exemple #21
0
    def __init__(self, signal, iso, continuous=False, **kwds):
        assert 'domain' not in kwds
        self.signal = signal
        self.iso = iso

        if continuous:
            self.hints = (logic.make_term('continuous'),)
        else:
            self.hints = ()

        if iso:
            dom = domain.Null(hints=self.hints)
        else:
            dom = domain.Aniso(hints=self.hints)

        atom.Atom.__init__(self, policy=BundleOutputPolicy(), domain=dom, **kwds)
Exemple #22
0
 def __init__(self, scheduler, index):
     atom.Atom.__init__(self,
                        domain=domain.Aniso(),
                        policy=policy.FastReadOnlyPolicy(),
                        protocols='timeline')
     self.event = piw.event(scheduler.scheduler, False,
                            utils.changify(self.__enable_changed))
     self.__private = node.Server()
     self.__private[1] = node.Server(value=piw.makestring('', 0),
                                     change=self.__change_schema)
     self.__private[2] = node.Server(value=piw.makebool(False, 0),
                                     change=self.__change_enabled)
     self.scheduler = scheduler
     self.set_private(self.__private)
     self.get_policy().set_source(self.event.fastdata())
     self.index = index
Exemple #23
0
    def __init__(self,usbname,ordinal,dom,remove):
        agent.Agent.__init__(self,names='keyboard pico',ordinal=ordinal,signature=version,subsystem='kbd',volatile=True,container=102,protocols='is_subsys')

        self.usbname=usbname
        self.remover=remove

        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*',0))

        self[1] = bundles.Output(1,False, names='activation output')
        self[2] = bundles.Output(2,False, names='pressure output')
        self[3] = bundles.Output(3,False, names='roll output')
        self[4] = bundles.Output(4,False, names='yaw output')

        self[5] = bundles.Output(1,False, names='strip position output')
        self[6] = bundles.Output(1,False, names='breath output')
        self[8] = bundles.Output(2,False, names='absolute strip output')
        
        self.led_backend = piw.functor_backend(1,True)
        self.status_mixer = piw.statusmixer(self.led_backend.cookie())
        self.led_input = bundles.VectorInput(self.status_mixer.cookie(),self.domain,signals=(1,))
        self[7] = atom.Atom(names='light input',protocols='revconnect',policy=self.led_input.vector_policy(1,False,False,auto_slot=True),domain=domain.Aniso())

        self.koutput = bundles.Splitter(self.domain,self[1],self[2],self[3],self[4])
        self.kpoly = piw.polyctl(10,self.koutput.cookie(),False,5)
        self.soutput = bundles.Splitter(self.domain,self[5],self[8])
        self.boutput = bundles.Splitter(self.domain,self[6])

        self.kclone=piw.sclone()
        self.kclone.set_filtered_output(1,self.kpoly.cookie(),piw.first_filter(1))
        self.kclone.set_filtered_output(2,self.soutput.cookie(),piw.first_filter(2))
        self.kclone.set_filtered_output(3,self.boutput.cookie(),piw.first_filter(3))
        self.keyboard=pkbd_native.bundle(usbname,self.kclone.cookie(),utils.notify(self.dead),utils.changify(self.signal))

        self[100] = VirtualKey()
        #self[102] = vc

        self[251] = atom.Atom(domain=domain.BoundedFloat(0,1), init=self.keyboard.get_threshold1(), protocols='input output', names='soft threshold', policy=atom.default_policy(self.keyboard.set_threshold1))
        self[249] = atom.Atom(domain=domain.BoundedFloat(0,1), init=self.keyboard.get_threshold2(), protocols='input output', names='hard threshold', policy=atom.default_policy(self.keyboard.set_threshold2))
        self[240] = atom.Atom(domain=domain.BoundedFloat(0,1), init=self.keyboard.get_roll_axis_window(), protocols='input output', names='roll axis window', policy=atom.default_policy(self.keyboard.set_roll_axis_window))
        self[241] = atom.Atom(domain=domain.BoundedFloat(0,1), init=self.keyboard.get_yaw_axis_window(), protocols='input output', names='yaw axis window', policy=atom.default_policy(self.keyboard.set_yaw_axis_window))
        self[242] = atom.Atom(domain=domain.Bool(), init=False, protocols='input output nostage', names='k logging', policy=atom.default_policy(self.keyboard.enable_key_logging))

        f=self.keyboard.led_functor()
        self.led_backend.set_functor(piw.pathnull(0),f)

        self[9] = atom.Atom(names='controller output',domain=domain.Aniso(),init=self.__courses())
Exemple #24
0
    def __init__(self, controller, index, tag):
        atom.Atom.__init__(self,
                           domain=domain.Aniso(),
                           policy=policy.FastReadOnlyPolicy())
        self.set_private(
            node.Server(value=piw.makestring(tag, 0), change=self.__change))

        self.set_latency(controller.controller.latency)
        self.get_policy().set_clock(controller.controller.clock)

        self.controller = controller
        self.index = index
        self.control = None
        self.opened = async .Deferred()
        self.monitor = Monitor(self.__ready, self.__reset)
        self.factory = None
        self.control = None
        self.target_domain = None
Exemple #25
0
    def __init__(self, scope, index, output_peer, outer):
        self.__output_peer = output_peer
        self.__index = index
        self.__scope = scope
        self.__monitors = {}

        self.__output_peer[self.__index] = RigOutput(
            self,
            ordinal=index,
            scope=self.__output_peer.scope(),
            outer=not outer)
        policy = RigInputPolicy(self.__scope, self.__output_peer[self.__index])

        atom.Atom.__init__(self,
                           ordinal=index,
                           domain=domain.Aniso(),
                           policy=policy,
                           protocols='remove')
        self.set_connection_scope(scope)
Exemple #26
0
    def __setup(self):
        first_iso = None
        first_aniso = None

        for (k, v) in self.__inputs.items():
            if v.domain().iso():
                if first_iso is None:
                    first_iso = k
            else:
                if first_aniso is None:
                    first_aniso = k

        if first_iso is not None:
            self.set_domain(self.__inputs[first_iso].domain())
            return

        if first_aniso is not None:
            self.set_domain(self.__inputs[first_aniso].domain())
            return

        self.set_domain(domain.Aniso())
Exemple #27
0
    def __init__(self, master, ordinal, scope, outer):
        atom.Atom.__init__(self,
                           ordinal=ordinal,
                           policy=RigOutputPolicy(),
                           protocols='remove')
        self.set_connection_scope(scope)

        self.__inputs = {}
        self.__master = master
        self.__monitors = {}
        self.__scope = scope

        self.__clockdom = piw.clockdomain_ctl()
        self.__clockdom.set_source(piw.makestring('*', 0))
        self.__clock = piw.clocksink()
        self.__clockdom.sink(self.__clock,
                             "%s rig output" % ("outer" if outer else "inner"))
        self.__output = self.get_policy().data_node()
        self.__output.set_clock(self.__clock)

        self.set_domain(domain.Aniso())
Exemple #28
0
    def __init__(self,
                 finder,
                 trigger,
                 status_cookie,
                 names='action',
                 ordinal=None,
                 protocols=None):
        p = protocols + ' nostage hidden-connection explicit' if protocols else 'nostage hidden-connection explicit'
        atom.Atom.__init__(self,
                           domain=domain.String(),
                           policy=atom.default_policy(self.__change),
                           names='action',
                           protocols=p,
                           ordinal=ordinal)
        self.__finder = finder
        self.__domain = piw.clockdomain_ctl()
        self.__domain.set_source(piw.makestring('*', 0))
        self.__loading = False
        self.__active_phrase_operation = False
        self.__pending_set_phrase = None
        self.__pending_clear_phrase = False
        self.__pending_redo = False

        if status_cookie:
            self.status_input = bundles.VectorInput(status_cookie,
                                                    self.__domain,
                                                    signals=(1, ))
            self[1] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                                policy=self.status_input.vector_policy(
                                    1, False, clocked=False),
                                names='status input',
                                protocols='nostage hidden-connection explicit')
        self[2] = atom.Atom(domain=domain.Aniso(),
                            policy=policy.FastReadOnlyPolicy(),
                            names='trigger output',
                            protocols='hidden-connection explicit')
        self[2].get_policy().set_source(trigger)

        # prevent running coroutines from being garbage collected
        self.__running = []
Exemple #29
0
    def __init__(self, address, ordinal):
        self.domain = piw.clockdomain_ctl()
        self.domain.set_source(piw.makestring('*', 0))

        agent.Agent.__init__(
            self,
            signature=version,
            names='fingerer',
            protocols='bind set',
            container=(5, 'fingerer',
                       atom.VerbContainer(clock_domain=self.domain)),
            ordinal=ordinal)

        self.__maximum = 0.1
        self.__threshold = 0.0
        self.__breath_threshold = 0.001

        self[1] = atom.Atom(names='outputs')
        self[1][1] = bundles.Output(1,
                                    False,
                                    names='pressure output',
                                    protocols='')
        self[1][2] = bundles.Output(2,
                                    False,
                                    names='roll output',
                                    protocols='')
        self[1][3] = bundles.Output(3, False, names='yaw output', protocols='')
        self[1][4] = bundles.Output(4, False, names='key output', protocols='')
        self[1][5] = bundles.Output(5,
                                    False,
                                    names='modifier output',
                                    protocols='')

        self.output = bundles.Splitter(self.domain, *self[1].values())
        self.finger = finger_native.cfinger(self.domain, self.output.cookie())
        self.input = bundles.VectorInput(self.finger.cookie(),
                                         self.domain,
                                         signals=(1, 2, 3, 4, 5))

        self[5] = Fingering(self.__change_fingering)

        self.current_fingering = finger_native.fingering()

        self.__set_fingering(self[5].default_fingering(),
                             self.current_fingering)
        self.current_fingering.set_range(self.__threshold, self.__maximum)
        self.current_fingering.set_breath_threshold(self.__breath_threshold)
        self.finger.set_fingering(self.current_fingering)

        self[4] = atom.Atom(names='inputs')
        self[4][1] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                               policy=self.input.merge_policy(1, False),
                               names='pressure input',
                               init=1.0)
        self[4][2] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.merge_policy(2, False),
                               names='roll input')
        self[4][3] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.merge_policy(3, False),
                               names='yaw input')
        self[4][4] = atom.Atom(domain=domain.Aniso(),
                               policy=self.input.vector_policy(4, False),
                               names='key input')
        self[4][5] = atom.Atom(domain=domain.BoundedFloat(-1, 1),
                               policy=self.input.local_policy(5, False),
                               names='breath input',
                               init=1.0)

        self[6] = atom.Atom(names='key parameter')
        self[6][1] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                               names='maximum',
                               policy=atom.default_policy(
                                   self.__change_maximum),
                               init=self.__maximum)
        self[6][2] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                               names='threshold',
                               policy=atom.default_policy(
                                   self.__change_threshold),
                               init=self.__threshold)

        self[7] = atom.Atom(names='breath parameter')
        self[7][1] = atom.Atom(domain=domain.BoundedFloat(0, 1),
                               names='activation threshold',
                               policy=atom.default_policy(
                                   self.__change_breath_threshold),
                               init=self.__breath_threshold)
Exemple #30
0
    def __init__(self, address, ordinal):
        agent.Agent.__init__(self, signature=version, names='t3d output', ordinal=ordinal)

        self.domain = piw.clockdomain_ctl()

        self.domain.set_source(piw.makestring('*',0))

        self.t3d_output = t3d_output(self.domain, "localhost", 3123);
        self.output = self.t3d_output.create_output("", True, 0)
        self.input = bundles.VectorInput(self.output, self.domain, signals=(IN_KEY,IN_PRESSURE,IN_ROLL,IN_YAW,IN_FREQ))

		# related inputs for a key
        self[1] = atom.Atom(names="inputs")
        self[1][1] = atom.Atom(domain=domain.Aniso(), policy=self.input.vector_policy(IN_KEY,False), names='key input')
        self[1][2] = atom.Atom(domain=domain.BoundedFloat(0,1), policy=self.input.vector_policy(IN_PRESSURE,False), names='pressure input')
        self[1][3] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.input.vector_policy(IN_ROLL,False), names='roll input')
        self[1][4] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.input.vector_policy(IN_YAW,False), names='yaw input')

        self[1][5] = atom.Atom(names='frequency input', domain=domain.BoundedFloat(1,96000), policy=self.input.vector_policy(IN_FREQ,False))


		# breath output
        self.breath_output = self.t3d_output.create_output("breath",False,1)
        self.breath_input = bundles.VectorInput(self.breath_output, self.domain,signals=(1,))
        self[1][6] = atom.Atom(domain=domain.BoundedFloat(0,1), policy=self.breath_input.vector_policy(1,False), names='breath input')

        # outputs for strips
        self.absstrip1_output = self.t3d_output.create_output("strip1",False,4)
        self.absstrip1_input = bundles.VectorInput(self.absstrip1_output, self.domain,signals=(1,))
        self[1][7] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.absstrip1_input.vector_policy(1,False), names='absolute strip input', ordinal=1)
        self.absstrip2_output = self.t3d_output.create_output("strip2",False,5)
        self.absstrip2_input = bundles.VectorInput(self.absstrip2_output, self.domain,signals=(1,))
        self[1][8] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.absstrip2_input.vector_policy(1,False), names='absolute strip input', ordinal=2)
        self.strippos1_output = self.t3d_output.create_output("d_strip1",False,2)
        self.strippos1_input = bundles.VectorInput(self.strippos1_output, self.domain,signals=(1,))
        self[1][9] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.strippos1_input.vector_policy(1,False), names='strip position input', ordinal=1)
        self.strippos2_output = self.t3d_output.create_output("d_strip2",False,3)
        self.strippos2_input = bundles.VectorInput(self.strippos2_output, self.domain,signals=(1,))
        self[1][10] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.strippos2_input.vector_policy(1,False), names='strip position input', ordinal=2)

        self.p1_output = self.t3d_output.create_output("pedal1",False,6)
        self.p1_input = bundles.VectorInput(self.p1_output, self.domain,signals=(1,))
        self[1][11] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.p1_input.vector_policy(1,False), names='pedal input', ordinal=1)

        self.p2_output = self.t3d_output.create_output("pedal2",False,7)
        self.p2_input = bundles.VectorInput(self.p2_output, self.domain,signals=(1,))
        self[1][12] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.p2_input.vector_policy(1,False), names='pedal input', ordinal=2)        

        self.p3_output = self.t3d_output.create_output("pedal3",False,8)
        self.p3_input = bundles.VectorInput(self.p3_output, self.domain,signals=(1,)) 
        self[1][13] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.p3_input.vector_policy(1,False), names='pedal input', ordinal=3)
                
        self.p4_output = self.t3d_output.create_output("pedal4",False,9)
        self.p4_input = bundles.VectorInput(self.p4_output, self.domain,signals=(1,))
        self[1][14] = atom.Atom(domain=domain.BoundedFloat(-1,1), policy=self.p4_input.vector_policy(1,False), names='pedal input', ordinal=4)        

        self[2] = atom.Atom(names="host")
        self[2][1] = atom.Atom(domain=domain.String(), init='localhost', names='name', policy=atom.default_policy(self.__set_host));
        self[2][2] = atom.Atom(domain=domain.BoundedInt(1,9999), init=3123, names='port', policy=atom.default_policy(self.__set_port), )

        self[3] = atom.Atom(domain=domain.BoundedInt(1,2000), init=250, policy=atom.default_policy(self.__set_data_freq), names='data frequency')

        self[5] = atom.Atom(domain=domain.BoundedInt(1,16), init=16, policy=atom.default_policy(self.__set_max_voice_count), names='max voice count')
        self[6] = atom.Atom(domain=domain.Bool(),init=False,policy=atom.default_policy(self.__set_kyma_mode),names='kyma')
   
        self.ctlr_fb = piw.functor_backend(1,True)
        self.ctlr_fb.set_functor(piw.pathnull(0),self.t3d_output.control())
        self.ctlr_input = bundles.ScalarInput(self.ctlr_fb.cookie(),self.domain,signals=(IN_CONTROL,))
        self[7] = atom.Atom(domain=domain.Aniso(),policy=self.ctlr_input.policy(IN_CONTROL,False),names='controller input')
 
        self[8] = atom.Atom(domain=domain.Bool(),init=False,policy=atom.default_policy(self.__set_continuous_mode),names='continuous')
  
        self.t3d_output.connect(self[2][1].get_value(), self[2][2].get_value())