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)
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
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()
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)