Esempio n. 1
0
    def __init__(self, server, destport=10024, srcport=11111, debug=False, **kwargs):
        """Class initialiser."""
        self.timeout = self.settable['timeout'] = 500
        self.server = self.settable['server'] = server
        self.destport = self.settable['destport'] = destport
        # add built-in custom command shortcuts
        self.shortcuts.update({
            '/': 'osc',
        })
        # add built-in custom command aliases
        kwargs.setdefault('use_ipython', True)
        super().__init__(**kwargs)
        self.aliases.update({
            'mute': 'osc /lr/mix/on 0',
            'unmute': 'osc /lr/mix/on 1',
            'mainvol': '/lr/mix/fader',
        })
        self.srcport = srcport
        self.debug = debug
        self.osc_commands = parse_commands()
        self.osc_command_names = sorted([cmd.address.lstrip('/')
                                         for cmd in self.osc_commands.values()])
        self.queue = queue.Queue()
        self.osc = ServerThread(self.srcport)
        self.osc.add_method(None, None, self.osc_recv)

        # hooks
        self.register_preloop_hook(self.start_osc_server)
        self.register_postloop_hook(self.stop_osc_server)
Esempio n. 2
0
    def __init__(self,
                 incoming,
                 outgoing,
                 sparseOutput=None,
                 config={},
                 device_source='Muse',
                 software_source='muselsl',
                 debug_outputs=True,
                 verbose=False):
        self.incoming = incoming
        self.outgoing = outgoing
        self.eeg_chunk_length = 12
        self.threshold = 30
        self.conc_level = 50
        self.inc = 2

        self._osc_server = ServerThread(incoming['port'])
        print('OSC server initialized at port {}.'.format(incoming['port']))

        if not isinstance(self.outgoing, tuple):
            self.outgoing = [self.outgoing]
        self._output_threads = []
        for out in self.outgoing:
            self._output_threads.append(Address(out['address'], out['port']))
        print('OSC client initialized at {}:{}.'.format(
            out['address'], out['port']))

        self._init_processing(config)

        self.incremented_value = 50
Esempio n. 3
0
t = 0


def print_diff():
    global t, error, bpm
    if t == 0:
        t = time()
        return
    if bpm != seq.bpm:
        bpm = seq.bpm
        error = 0
        t = time()
        return
    nt = time()
    error += 60. / bpm - (nt - t)
    t = nt
    print("Cumulated error: %s%.3f ms (%5.2f" %
          (' ' if str(error)[0] != '-' else '', round(1000000 * error) / 1000,
           abs(100 * error / (60. / bpm))) + "%) at " + str(bpm) + " bpm")


sequencer_monitor = ServerThread(port=9900)
sequencer_monitor.add_method('/tic', None, print_diff)
sequencer_monitor.start()

seq.send(':/Sequencer/Sequence/Enable', 'metronom')

seq.play()

seq.start()
Esempio n. 4
0
    def __init__(self,
                 incoming,
                 outgoing,
                 sparseOutput=None,
                 config={},
                 device_source='Muse',
                 software_source='muselsl',
                 debug_outputs=True,
                 verbose=False):

        self.incoming = incoming
        self.outgoing = outgoing
        self.sparseOutput = sparseOutput
        self.device_source = device_source
        self.software_source = software_source
        self.debug_outputs = debug_outputs
        self.verbose = verbose
        self.eeg_chunk_length = 12

        # 1. Initialize inlet
        if isinstance(self.incoming, str):  # LSL inlet
            print('Looking for the {} stream...'.format(incoming))
            self._stream = resolve_byprop('type', incoming, timeout=2)

            if len(self._stream) == 0:
                raise (RuntimeError('Can\'t find {} stream.'.format(incoming)))
            print('Aquiring data from the \'{}\' stream...'.format(incoming))

            self._inlet = StreamInlet(self._stream[0],
                                      max_chunklen=self.eeg_chunk_length)
            self._info_in = self._inlet.info()

        else:  # OSC port
            if USE_LIBLO:
                self._osc_server = ServerThread(incoming['port'])
                print('OSC server initialized at port {}.'.format(
                    incoming['port']))
            else:
                self._dispatcher = dispatcher.Dispatcher()
                print('python-osc dispatcher initialized.')

        # 2. Initialize outlets
        if not isinstance(self.outgoing, tuple):
            self.outgoing = [self.outgoing]
        self._output_threads = []
        for out in self.outgoing:

            if isinstance(out, str):  # LSL outlet
                raise NotImplementedError

            elif isinstance(out, dict):  # OSC port
                if USE_LIBLO:
                    self._output_threads.append(
                        Address(out['address'], out['port']))
                else:
                    raise NotImplementedError
#                    self._client = udp_client.SimpleUDPClient(
#                            outgoing['address'], outgoing['port'])
                print('OSC client initialized at {}:{}.'.format(
                    out['address'], out['port']))

        if (self.sparseOutput != None):
            if not isinstance(self.sparseOutput, tuple):
                self.sparseOutput = [self.sparseOutput]
            self._sparseOutput_threads = []
            for out in self.sparseOutput:
                if isinstance(out, str):  # LSL outlet
                    raise NotImplementedError

                elif isinstance(out, dict):  # OSC port
                    if USE_LIBLO:
                        self._sparseOutput_threads.append(
                            Address(out['address'], out['port']))
                    else:
                        raise NotImplementedError
                    print('OSC sparse output client initialized at {}:{}.'.
                          format(out['address'], out['port']))

        # 3. Initialize internal buffers and variables
        self._init_processing(config)