예제 #1
0
 def restoreSettings(self, mainWindowHandler):
     mainWindowHandler.midiInputChannel = self.settings.value('midiInputChannel').toInt()[0]
     if not mainWindowHandler.midiInputChannel:
         self.midiInputChannel = 1
     self.midiOutputChannel = self.settings.value('midiOutputChannel').toInt()[0]
     if not mainWindowHandler.midiOutputChannel:
         mainWindowHandler.midiOutputChannel = 1
     
     registryInputDeviceList = []    
     for inputDeviceHash in self.settings.value('midiInputDevices', []).toList():
         inputDeviceHash = str(inputDeviceHash.toString())
         for deviceWidget, index in self.midiInputDevicesDict.iteritems():
             deviceName = midi.get_device_info(index)[1]
             deviceHash = hashlib.md5(deviceName).hexdigest()
             if deviceHash == inputDeviceHash:
                 deviceWidget.setChecked(True)
                 self.windowHandler.midiInputSelect(self, deviceWidget)
                 registryInputDeviceList.append(deviceHash)            
     self.settings.setValue('midiInputDevices', registryInputDeviceList) 
     #update the registry so unplugged devices aren't 
     #reselected when plugged back in at some later time
     outputDeviceHash = str(self.settings.value('midiOutputDevice').toString())
     registryOutputDevice = None
     for deviceWidget, index in self.midiOutputDevicesDict.iteritems():
             deviceName = midi.get_device_info(index)[1]
             deviceHash = hashlib.md5(deviceName).hexdigest()
             if deviceHash == outputDeviceHash:
                 deviceWidget.setChecked(True)
                 self.windowHandler.midiOutputSelect(self, deviceWidget)
                 registryOutputDevice = deviceHash
     self.settings.setValue('midiOutputDevice', registryOutputDevice)
예제 #2
0
    def __init__(self):
        if sequencer.running:
            sequencer.stop()

        BUTTON_S = BUTTON_W, BUTTON_H = (310, 27)
        SPACE = 5
        ypos = SPACE

        midi_in = 'Midi In: None'
        if midi.m_in:
            name = pm.get_device_info(midi.m_in.device_id)[1]
            midi_in = 'Midi In: {}'.format(name)
        self.midi_in_button = ActionButton((SPACE, ypos),
                                           BUTTON_S,
                                           midi_in,
                                           True, True)
        self.channel_counter = Counter((SPACE * 2 + BUTTON_W, ypos),
                                       BUTTON_H,
                                       'Channel', 1, 16, start=midi.in_channel)

        ypos += SPACE + BUTTON_H
        midi_out = 'Midi Out: None'
        if midi.out:
            name = pm.get_device_info(midi.out.device_id)[1]
            midi_out = 'Midi Out: {}'.format(name)
        self.midi_out_button = ActionButton((SPACE, ypos),
                                            BUTTON_S,
                                            midi_out,
                                            True, True)

        ypos += SPACE + BUTTON_H
        self.bpm_counter = Counter((SPACE, ypos),
                                   BUTTON_H,
                                   'BPM', 20, 320,
                                   start=sequencer.project['bpm'])
예제 #3
0
	def get_device(self, dev_name):
		for i in xrange(0, midi.get_count()):
			name = midi.get_device_info(i)[1]
			print midi.get_device_info(i)
			if name == dev_name:
				if midi.get_device_info(i)[3]: #Checking if output device
					return midi.Output(i)
예제 #4
0
    def get_midi(self):
        buffer1 = []
        buffer2 = []
        cm = bpy.context.scene.cm_pg

        if self.is_pygame_init and self.midi_input is not None:
            # messages are formatted this way: [[message type, note / parameter ID, velocity
            # / parameter value, ?], TimeStamp]
            buffer1 = pgm.Input.read(self.midi_input, self.num_packets)
            if len(buffer1) > 0:
                cm.midi_buffer["buffer1"] = [b[0] for b in buffer1]
                if cm.midi_debug:
                    print('Dev 1: ' + str(pgm.get_device_info(0)))
                    print(str(cm.midi_buffer["buffer1"]))

            if self.midi_input2 is not None:
                buffer2 = pgm.Input.read(self.midi_input2, self.num_packets)
                if len(buffer2) > 0:
                    cm.midi_buffer["buffer2"] = [b[0] for b in buffer2]
                    if cm.midi_debug:
                        print('Dev 2: ' + str(pgm.get_device_info(1)))
                        print(str(cm.midi_buffer["buffer2"]))

            return [cm.midi_buffer["buffer1"], cm.midi_buffer["buffer2"]]
        else:
            return None
예제 #5
0
 def get_device(self, dev_name):
     for i in xrange(0, midi.get_count()):
         name = midi.get_device_info(i)[1]
         print midi.get_device_info(i)
         if name == dev_name:
             if midi.get_device_info(i)[3]:  #Checking if output device
                 return midi.Output(i)
예제 #6
0
 def __getDeviceId(self, midiport):
     n_device = pm.get_count()
     foundId = -1
     for id in range(n_device):
         if int(pm.get_device_info(id)[1] == midiport) & \
                 int(pm.get_device_info(id)[3] == 1):
             foundId = id
     return foundId
예제 #7
0
 def __getDeviceId(self, midiport):
     n_device = pm.get_count()
     foundId = -1
     for id in range(n_device):
         if int(pm.get_device_info(id)[1] == midiport.encode()) & \
                 int(pm.get_device_info(id)[3] == 1):
             foundId = id
     return foundId
예제 #8
0
def display_devices():
    '''
    Displays all available MIDI devices seen by mido
    '''
    midi = pygame.midi
    midi.init()
    print 'List of available MIDI devices:'
    print '(interf, name, input, output, opened)'
    for dev in xrange(0, midi.get_count()):
        print midi.get_device_info(dev)
    quit()
예제 #9
0
def construct_input(type='MK-449C USB MIDI Keyboard'):
	pm.init()
	n_device = pm.get_count()
	in_id = -1
	for id in range(n_device):
		if int(pm.get_device_info(id)[1]==type) & int(pm.get_device_info(id)[2]==1):
			in_id = id
			print "input: "+type
#	if in_id == -1:
#		print "desired input: "+type+ " not available"

	eingang = pm.Input(in_id)
	return eingang
예제 #10
0
 def close(self):
     sequencer.project['bpm'] = self.bpm_counter.value
     midi.in_channel = self.channel_counter.value
     in_name = None
     out_name = None
     if midi.m_in:
         in_name = pm.get_device_info(midi.m_in.device_id)[1]
     if midi.out:
         out_name = pm.get_device_info(midi.out.device_id)[1]
     config_dict = {'midi_out': out_name,
                    'midi_in': in_name,
                    'midi_in_channel': midi.in_channel}
     stream = file('config.yml', 'w')
     yaml.dump(config_dict, stream)
예제 #11
0
파일: midi.py 프로젝트: skpzk/pysynth
    def get_input_devices(self):
        """
        Queries midi interface for available devices.
        Checks that they are input devices (third element in return tuple corresponds to input flag, 1 if input else 0).
        Returns a dict of the form {device_name: device_id}, device_id = -1 corresponds to no device.
        """
        input_devices = {}

        for i in range(midi.get_count()):
            if midi.get_device_info(i)[2] == 1:
                input_devices[midi.get_device_info(i)[1].decode('utf-8')] = i
        input_devices['None'] = -1

        return input_devices
예제 #12
0
def construct_output(type='SimpleSynth virtual input',instrument=1):
# this constructs an output 
	pygame.init()
	pm.init()
	pm.init()
	n_device = pm.get_count()
	out_id = -1
	for id in range(n_device):
		if int(pm.get_device_info(id)[1]==type) & int(pm.get_device_info(id)[3]==1):
			out_id = id
			ausgang = pm.Output(out_id,0)
			ausgang.set_instrument(instrument)
			print "output: "+type
			return ausgang
	print "output: "+type+" not available"
def parse_args():
	if '-l' in sys.argv or '-d' in sys.argv or '-t' in sys.argv:
		testMode = False

		if '-t' in sys.argv: testMode = True	

		if '-l' in sys.argv:
			list_devices()
	
		if '-d' in sys.argv:
			i = sys.argv.index('-d')
			if len(sys.argv)>i+1:
				# get devices list
				devices_t = sys.argv[i+1].split(',')
				devices = []
				for i in range(0,len(devices_t)):
					device = int(devices_t[i])
					# if device exists add it to list
					if device_exists(device):
						devices.append(device)
						print("Using midi device: %s" % (midi.get_device_info(device)[1]))
					else:
						print("Seems like the device #%d does not exist. Is it plugged in?" % device)
						return
				if testMode:
					print("Running in test mode. No server was opened and your midi signals will be printed.")
					test_mode(devices)
				else: start(devices)
			else:
				print("Please specify the number of midi-in device(s)")
				return

	else:
		print("Command line arguments:\n-l			Print out a list of midi-devices\n-d [device numbers]	Comma seperated list of device numbers to use. E.g. '2,3' (no spaces!)\-t			Run in test mode")
예제 #14
0
 def close(self):
     sequencer.project['bpm'] = self.bpm_counter.value
     midi.in_channel = self.channel_counter.value
     in_name = None
     out_name = None
     if midi.m_in:
         in_name = pm.get_device_info(midi.m_in.device_id)[1]
     if midi.out:
         out_name = pm.get_device_info(midi.out.device_id)[1]
     config_dict = {
         'midi_out': out_name,
         'midi_in': in_name,
         'midi_in_channel': midi.in_channel
     }
     stream = file('config.yml', 'w')
     yaml.dump(config_dict, stream)
예제 #15
0
파일: midi.py 프로젝트: NFJones/pyWave
def midi_info():
    """
    midi is an instance of pygame.midi

    Returns a dictionary containing info
        about the systems MIDI devices.
    The dictionary contains:
        'count' - number of devices.
        'def_in' - default input.
        'def_out' - default output.
        'devices' - a list of device info.
    """

    info = {}
    #Store info.
    info.keys().append('count')
    info['count'] = midi.get_count()

    info.keys().append('def_in')
    info['def_in'] = midi.get_default_input_id()

    info.keys().append('def_out')
    info['def_out'] = midi.get_default_output_id()

    devices = []
    for i in range(0, midi.get_count()):
        devices.append(midi.get_device_info(i))

    info.keys().append('devices')
    info['devices'] = devices

    return info
def getInputDevices():
    for i in xrange(midi.get_count()):
        info = midi.get_device_info(i)
        (unusedInterface, name, isInput,
         unusedIsOutput, unusedOpened) = info
        if isInput:
            yield i, name
예제 #17
0
 def midiInputSelect(self, mainWindowInstance, device):
     deviceIndex = mainWindowInstance.midiInputDevicesDict[device]
     if not device.isChecked():
         try:
             self.midiSelectedInputDevicesDict.pop(deviceIndex).close()
             device.setChecked(False)
         except midi.MidiException as e:
             QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
         except:
             QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
             mainWindowInstance.midiInputDevicesDict.pop(device)
             mainWindowInstance.ui.midiInputDevicesMenu.removeAction(device)
     else:
         try:
             self.midiSelectedInputDevicesDict[deviceIndex] = midi.Input(deviceIndex)
         except midi.MidiException as e:
             QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
         except:
             QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
             mainWindowInstance.midiInputDevicesDict.pop(device)
             mainWindowInstance.ui.midiInputDevicesMenu.removeAction(device)
             
         
     deviceNameList = []
     for deviceIndex in self.midiSelectedInputDevicesDict.keys():
         deviceNameList.append(hashlib.md5(midi.get_device_info(deviceIndex)[1]).hexdigest())            
     mainWindowInstance.settings.setValue('midiInputDevices', deviceNameList)
예제 #18
0
파일: mido_pygame.py 프로젝트: rbinkys/mido
def get_device(device_id):
    midi.init()

    keys = ['interface', 'name', 'is_input', 'is_output', 'opened']
    info = dict(zip(keys, midi.get_device_info(device_id)))
    info['device_id'] = device_id
    return info
예제 #19
0
파일: mido_pygame.py 프로젝트: rbinkys/mido
def get_device(device_id):
    midi.init()
    
    keys = ['interface', 'name', 'is_input', 'is_output', 'opened']
    info = dict(zip(keys, midi.get_device_info(device_id)))
    info['device_id'] = device_id
    return info
예제 #20
0
    def getMIDIDevices(self):
        midiOutputDevices = []
        midiInputDevices = []
        for index in xrange(0, midi.get_count()):
            device = midi.get_device_info(index)
            deviceName = device[1]
            if device[3] == 1 and device[4] == 0: #if the device is an output and not opened
                setattr(self, deviceName, QtGui.QAction(QtGui.QIcon(''), deviceName, self))
                deviceWidget = getattr(self, deviceName)
                deviceWidget.setCheckable(True)
                midiOutputDevices.append(deviceWidget)
                self.midiOutputDevicesDict[deviceWidget] = index
            elif device[2] == 1 and device[4] == 0: #if devices is an input and not opened
                deviceName = device[1]
                setattr(self, deviceName, QtGui.QAction(QtGui.QIcon(''), deviceName, self))
                deviceWidget = getattr(self, deviceName)
                deviceWidget.setCheckable(True)
                midiInputDevices.append(deviceWidget)
                self.midiInputDevicesDict[deviceWidget] = index
                
        if midiOutputDevices:
            self.ui.midiOutputDevicesMenu = self.ui.menubar.addMenu("&Midi Output Device")
            self.ui.midiOutputDevicesMenu.addActions(midiOutputDevices)
        if midiInputDevices:
            self.ui.midiInputDevicesMenu = self.ui.menubar.addMenu("&Midi Input Devices")
            self.ui.midiInputDevicesMenu.addActions(midiInputDevices)
        
        for device in midiOutputDevices:
            outputFunction = partial(self.windowHandler.midiOutputSelect, mainWindowInstance=self, device=device)
            device.triggered.connect(outputFunction)

        for device in midiInputDevices:
            inputFunction = partial(self.windowHandler.midiInputSelect, mainWindowInstance=self, device=device)
            device.triggered.connect(inputFunction)
예제 #21
0
def input_device_ids():
    device_ids = []
    for device_id in range(midi.get_count()):
        info = midi.get_device_info(device_id)
        if info[IN] == 1:
            device_ids.append(device_id)
    return device_ids
예제 #22
0
    def run(self):
        pygame.midi.init()
        self.device_id = midi.get_default_input_id()
        
        if self.device_id == NO_DEVICE_FOUND:
            raise NoPianoDetectedException('Device not detected.')
        
        self.midiObject = midi.Input(self.device_id)
        
        pygame.init()
        self._resize_surface((WIDTH, HEIGHT))
        clock = pygame.time.Clock()
        
        if DEBUG_TRACE:
            interface, name, is_input, is_output, is_open = midi.get_device_info(self.device_id)
            print('Device Interface: ', interface)
            print('Device Name: ', name)
            print('Device IsInput: ', is_input == 1)
            print('Device IsOutput: ', is_output == 1)
            print('Device Open: ', is_open == 1)

        self._game = GameModes.PressNext((WIDTH, HEIGHT))
        
        while(True):
            clock.tick(MAX_FRAMES_PER_SECOND)
            self._event_handler()
            
        self.midiObject.close()
        midi.quit()
예제 #23
0
    def __init__(self, debug=False):
        print('Using Pygame MIDI interface')
        self.debug = debug

        midi.init()

        self.midi_input = None
        for device_id in range(midi.get_count()):
            interf, name, is_input, is_output, opened = midi.get_device_info(
                device_id)
            interf = interf.decode('utf-8')
            name = name.decode('utf-8')
            imode = 'input' if is_input else 'output' if is_output else 'none'
            iopen = '(open)' if opened else ''

            if self.debug:
                print(f'{interf} / {name} ({imode}) {iopen}')

            if name in known_devices and is_input:
                self.midi_input = midi.Input(device_id)
                self.midi_input.name = f'{name} ({imode})'
                print(f'Using midi input device {name}')
                break

        self.binds = {}
        self.running = True
        self.done = False
예제 #24
0
    def midiOutputSelect(self, mainWindowInstance, device):
        deviceIndex = mainWindowInstance.midiOutputDevicesDict[device]

        for outputDevice in mainWindowInstance.midiOutputDevicesDict.keys():
            if outputDevice != device:
                outputDevice.setChecked(False)
            else:
                if outputDevice.isChecked():
                    try:
                        self.midiSelectedOutputDevice = midi.Output(deviceIndex)
                        if not self.midiSelectedOutputDevice:
                            raise Exception
                        mainWindowInstance.settings.setValue(
                            "midiOutputDevice", hashlib.md5(midi.get_device_info(deviceIndex)[1]).hexdigest()
                        )
                    except midi.MidiException as e:
                        QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
                    except:
                        QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
                        mainWindowInstance.midiOutputDevicesDict.pop(device)
                        mainWindowInstance.ui.midiOutputDevicesMenu.removeAction(device)
                else:
                    try:
                        self.midiSelectedOutputDevice.close()
                    except midi.MidiException as e:
                        QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
                    except:
                        QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
                        mainWindowInstance.midiOutputDevicesDict.pop(device)
                        mainWindowInstance.ui.midiOutputDevicesMenu.removeAction(device)

                    self.midiSelectedOutputDevice = None
                    mainWindowInstance.settings.setValue("midiOutputDevice", "")
예제 #25
0
    def midiInputSelect(self, mainWindowInstance, device):
        deviceIndex = mainWindowInstance.midiInputDevicesDict[device]
        if not device.isChecked():
            try:
                # in nachfolgender Anweisung tritt ein Problem auf
                # PortMidi attempts to close open streams when the application exits -- this is particularly difficult under Windows.
                # Exception Exception: "PortMidi: `Bad pointer'" in <pypm.Input object at 0x00BAFA58> ignored
                self.midiSelectedInputDevicesDict.pop(deviceIndex).close()
                device.setChecked(False)
            except midi.MidiException as e:
                QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
            except:
                QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
                mainWindowInstance.midiInputDevicesDict.pop(device)
                mainWindowInstance.ui.midiInputDevicesMenu.removeAction(device)
        else:
            try:
                self.midiSelectedInputDevicesDict[deviceIndex] = midi.Input(deviceIndex)
            except midi.MidiException as e:
                QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", unicode(e))
            except:
                QtGui.QMessageBox.warning(mainWindowInstance, "MIDI Error", "Device error.")
                mainWindowInstance.midiInputDevicesDict.pop(device)
                mainWindowInstance.ui.midiInputDevicesMenu.removeAction(device)

        deviceNameList = []
        for deviceIndex in self.midiSelectedInputDevicesDict.keys():
            deviceNameList.append(hashlib.md5(midi.get_device_info(deviceIndex)[1]).hexdigest())
        mainWindowInstance.settings.setValue("midiInputDevices", deviceNameList)
예제 #26
0
def _get_device(device_id):
    keys = ['interface', 'name', 'is_input', 'is_output', 'opened']
    info = dict(zip(keys, midi.get_device_info(device_id)))
    # TODO: correct encoding?
    info['name'] = info['name'].decode('utf-8')
    info['id'] = device_id
    return info
예제 #27
0
파일: lpd8.py 프로젝트: zetof/boing
    def __init__(self, program=3, bank=0, buffer_size=50):
        """
        Class constructor
        Note that buffer_siez has been set to 50 and is a recommended value for LPD8
        It allows turning control knobs full speed without choking the reader
        :param program: numeric value from 0 to 3 corresponding to choice triggered by PROGRAM key on LPD8
        :param bank: numeric value from 0 to 7  corresponding to choice triggered by PROG/CHNG key on LPD8
        :param buffer_size: MIDI buffer size for read operations
        """

        # Store class properties
        self._program = program
        self._bank = bank
        self._buffer_size = buffer_size

        # Searching for LPD8 in available MIDI devices
        print('starting midi...')
        midi.init()
        nb_of_devices = midi.get_count()
        id = 0
        while id < nb_of_devices:
            infos = midi.get_device_info(id)
            if (infos[1] == b'LPD8' and infos[2] == 1):
                break
            id += 1
        try:
            self._lpd8_in = midi.Input(id, buffer_size)
            self._ctrl_knob_array = LPD8_Ctrl_Knob_Array()
            print('LPD8 input device connected...')
        except midi.MidiException:
            self._lpd8_in = None
            print('LPD8 input device not found...')
예제 #28
0
파일: midi.py 프로젝트: lab-api/tactile
def list_input_devices():
    devices = []
    for i in range(255):
        info = midi.get_device_info(i)
        if info is None:
            continue
        if info[2] == 1:    # check that device is an output device
            print(info[1].decode())  # print device name
예제 #29
0
 def get_info(self):
     l = []
     for x in range(pm.get_count()):
         l.append(pm.get_device_info(x))
         #dev = DeviceInfo(Index=x, info=pm.get_device_info(x))
         #self.dev_info[dev.type].add_child(existing_object=dev)
         #dev.bind(active=self.on_dev_info_active_set)
     return l
예제 #30
0
파일: midi.py 프로젝트: lab-api/tactile
def open_stream(name):
    ''' Searches for a MIDI input device matching the passed name and opens
        a stream. If name=None, opens the first input device.
    '''
    for i in range(255):
        info = midi.get_device_info(i)
        if (name is None or info[1].decode() == name) and info[2] == 1:
            return midi.Input(i)
예제 #31
0
 def select(self, index, *largs):
     try:
         self.parent.midi.setDevice(index)
         self.selected       = index
         self.selectedname   = midi.get_device_info(index)[1]
     except:
         raise
     self.refresh()
예제 #32
0
    def mainloop(self,
                 inputdeviceid=None,
                 outputdeviceid=None,
                 ignoreerror=False,
                 highervelocity=False):
        midi.init()

        try:
            inputdeviceid = inputdeviceid if inputdeviceid is not None else midi.get_default_input_id(
            )
            print("MIDI Input:", midi.get_device_info(inputdeviceid))
            self._midi_in = midi.Input(inputdeviceid)
        except midi.MidiException as e:
            if ignoreerror:
                self._midi_in = None
                print("No MIDI In!", e)
            else:
                raise e

        try:
            outputdeviceid = outputdeviceid if outputdeviceid is not None else midi.get_default_output_id(
            )
            print("MIDI Output:", midi.get_device_info(outputdeviceid))
            self._midi_out = midi.Output(outputdeviceid)
            self._midi_out.set_instrument(0)
        except (midi.MidiException, Exception) as e:
            if ignoreerror:
                print("No MIDI Out!", e)
                self._midi_out = None
            else:
                raise e

        if self._midi_in:
            while True:
                if self._midi_in.poll():
                    events = self._midi_in.read(10)
                    for event in events:
                        self._parse_midi_event(event,
                                               highervelocity=highervelocity)
                try:
                    self._root.update()
                except:
                    midi.quit()
                    break
        else:
            self._root.mainloop()
예제 #33
0
def main():
    global bpm
    global skip
    global pad_in
    global pad_out
    global in_chan
    global out_chan
    global fastmode
    if not len(sys.argv[1:]):
        usage()
    try:
        opts, args = getopt.getopt(
            sys.argv[1:], "hb:sfi:o:",
            ["help", "bpm", "skip", "fast", "input", "output"])
    except getopt.GetoptError as err:
        print str(err)
        usage()
    if len(args):
        usage()
    for o, a in opts:
        if o in ["-h", "--help"]:
            usage()
        elif o in ["-b", "--bpm"]:
            bpm = float(a)
        elif o in ["-s", "--skip"]:
            skip = True
        elif o in ["-f", "--fast"]:
            fastmode = True
        elif o in ["-i", "--input"]:
            in_chan = int(a)
        elif o in ["-o", "--output"]:
            out_chan = int(a)
        else:
            assert False, "Unhandled Option"
    if midi.get_device_info(in_chan) != ('ALSA', 'Launchpad S MIDI 1', 1, 0,
                                         0):
        print "[!] Launchpad input channel invalid"
        sys.exit(0)
    if midi.get_device_info(out_chan) != ('ALSA', 'Launchpad S MIDI 1', 0, 1,
                                          0):
        print "[!] Launchpad output channel invalid"
        sys.exit(0)
    pad_in = midi.Input(in_chan)
    pad_out = midi.Output(out_chan)
    loop()
예제 #34
0
	def createInterfaces(self):
		"""
		creates all midi interfaces available as devices
		@todo: sort in- and output of one hardware
		"""
		n = midi.get_count()
		for i in xrange(n/2):
			info = midi.get_device_info(i*2)
			newIf = Interface(info[1], i*2-1, i*2)
예제 #35
0
 def scan_midi_all_port(self):
     self.all_ports = []
     devnum = pmd.get_count()
     for i in range(devnum):
         dev = pmd.get_device_info(i)
         if dev[3] == 1:  # MIDI Output なら
             name = dev[1].decode()
             self.all_ports.append([i, name, False])
     return self.all_ports
예제 #36
0
파일: retuner.py 프로젝트: raek/retuner
def find_midi_device(device_name, direction):
    for index in range(midi.get_count()):
        _, name, is_input, is_output, _ = midi.get_device_info(index)
        name = name.decode("utf8")
        if name == device_name:
            if ((is_input and direction == "in") or
                (is_output and direction == "out")):
                return index
    raise UserError("Could not find {} device \"{}\"".format(direction.upper(), device_name))
예제 #37
0
 def get_devices() -> DeviceList:
     from pygame import midi
     midi.init()
     names = [
         midi.get_device_info(x)[1].decode('ascii')
         for x in range(0, midi.get_count())
     ]
     midi.quit()
     return names
예제 #38
0
 def get_midi_output_id():
     for id in range(midi.get_count()):
         interface, name, input, output, open = midi.get_device_info(id)
         if not output:
             continue
         name = name.decode('utf-8').lower()
         if name.find('synth') != -1:
             return id
     return midi.get_default_output_id()
예제 #39
0
def find_id(target='Teensy MIDI'):
	init()
	for d in range( get_count() ):
		(interf, name, input, out, op) = get_device_info(d)
		name = str(object=name, encoding='utf-8')
		if (name == 'Teensy MIDI' and out == 1):
			return d
	quit()
	return None
예제 #40
0
def select_MIDI_out():
    """ Select and appropriate midi device"""
    midi_count =  midi.get_count()
    avail_devices = [midi.get_device_info(i) for i in range(midi_count)]
    print("Please select a MIDI device by selecting appropriate number")
    for num, device in enumerate(avail_devices):
        print("{}. {}".format(num, device))
    midi_choice = input("device id: ")
    return int(midi_choice)
예제 #41
0
    def __init__(self, ctlname):

        global theSmartie
        theSmartie = self

        self.ctl8x8 = []
        self.btn8x9 = []

        midi.init()
        for i in range(midi.get_count()):
            (_, name, b_in, bout, _) = midi.get_device_info(i)
            if ctlname in str(name) and b_in:
                self.indev = midi.Input(i)
            if ctlname in str(name) and bout:
                self.outdev = midi.Output(i)
        self.device = midi.get_device_info(self.indev.device_id)[1]
        print "Midi device is %s" % self.device

        self.default_btns(self.ctl8x8, self.btn8x9)
예제 #42
0
 def GetPorts(self):
     i = {}
     o = {}
     for j in range(pm.get_count()):
         s,name,ins,outs,throughs = pm.get_device_info(j)
         if ins > 0:
             i[name] = j
         if outs > 0:
             o[name] = j
     return (i,o)
예제 #43
0
 def GetPorts(self):
     i = {}
     o = {}
     for j in range(pm.get_count()):
         s, name, ins, outs, throughs = pm.get_device_info(j)
         if ins > 0:
             i[name] = j
         if outs > 0:
             o[name] = j
     return (i, o)
 def list_devices(self):
     for i in range(pm.get_count()):
         r = pm.get_device_info(i)
         (interf, name, input, output, opened) = r
         in_out = ""
         if input:
             in_out = "(input)"
         if output:
             in_out = "(output)"
         print ("%2i: interface :%s:, name :%s:, opened :%s: %s" % (i, interf, name, opened, in_out))
예제 #45
0
파일: input.py 프로젝트: javadan/l-s-dome
def get_devices(name):
    id_in, id_out = None, None
    for i in range(midi.get_count()):
        info = midi.get_device_info(i)
        if info[1] == name:
            if info[2]:
                id_in = i
            elif info[3]:
                id_out = i
    return id_in, id_out
예제 #46
0
def get_devices(name):
    id_in, id_out = None, None
    for i in range(midi.get_count()):
        info = midi.get_device_info(i)
        if info[1] == name:
            if info[2]:
                id_in = i
            elif info[3]:
                id_out = i
    return id_in, id_out
예제 #47
0
def main():
	# Init midi lib
	Midi.init()

	done = False
	receivingSysEx = False
	sysExMsg = []

	device_count = Midi.get_count()
	#get info on devices
	if device_count > 0:
		print("Midi-devices found:")
		for device in range(device_count):
			temp = Midi.get_device_info(device) #get info on midi devices
			io = ""

			#Check if input or output
			if temp[2] and not temp[3]:
				io = "Input"
			elif temp[3] and not temp[2]:
				io = "Output"
			else:
				io = "Unrecognized"

			#Print info
			print(io, "Device #", device, temp[1])
	else:
		print("No Midi devices found \n exiting...")
		sys.exit(0) #No reason to carry on so exit

	#Prompt user for devices
	input_id = raw_input("Choose midi input device #: ")
	output_id = raw_input("Choose midi output device #: ")

	controller_id = raw_input("Choose midi controller: ")

	#Create handler
	tx7 = TX7(int(input_id),int(output_id))

	keyboard = MidiController(int(controller_id))

	#Change the first character to an 'A'
	#tx7.write_param(145,65)

	#Main loop. Currently no way to terminate!!! besides killing the process
	while not done:
		if tx7.poll():
			data = tx7.read()
			if data != 0:
				print(data)
		elif keyboard.poll():
			data = keyboard.read_noteMsg()
			if data != None:
				print(data)
				tx7.write_noteOn(data[1],data[2])
예제 #48
0
    def output_port(self):

        for a in range(midi.get_count()):
            device = midi.get_device_info(a)
            name = str(device[1]).lower()
            if ("launchpad" in name and device[3]):
                id = a
                if (self.mode != "live"):
                    id = a + 1
                return midi.Output(id)
        return False
 def list_devices(self):
     for i in range(pm.get_count()):
         r = pm.get_device_info(i)
         (interf, name, input, output, opened) = r
         in_out = ""
         if input:
             in_out = "(input)"
         if output:
             in_out = "(output)"
         print("%2i: interface :%s:, name :%s:, opened :%s: %s" %
               (i, interf, name, opened, in_out))
예제 #50
0
def create_initial_data(mox):
    pin = {}
    pout = {}
    for i in xrange(pym.get_count()):
        info = pym.get_device_info(i)
        name = info[1]
        if info[2]:
            pin[name] = i
        if info[3]:
            pout[name] = i
    
    return {"ports_in": pin, "ports_out": pout}
예제 #51
0
파일: hardware.py 프로젝트: amiguet/foococo
def _open_device(name='SSCOM MIDI 1', device_index=1):
    '''Opens midi device with given name and port number'''
    # This code stinks. Is there any better way to find the device?
    
    for dn in range(midi.get_count()):
        md = midi.get_device_info(dn)
        if (md[1] == name) and (md[3] == 1): # md[3] == 1 <=> output device
            device_index -= 1
            if device_index == 0:
                return midi.Output(dn)
        
    raise RuntimeError("Could not find a SoftStep Controller")
    def setDevice(self, idnum):
        r = pm.get_device_info(idnum)
        if r is not None:
            self.device = pm.Input(idnum)

            self.device_id = idnum
            self.device_name = r[1]
            if r[2]:
                self.device_type = "input"
            elif r[3]:
                self.device_type = "output"
            self.device_opened = r[4]
예제 #53
0
    def get_devices():
        """Get a list of all MIDI output devices connected to the system."""

        if _midi is None:
            return
        outdevices = []
        all_ids = _midi.get_count()
        for device_id in all_ids:
            info = _midi.get_device_info(device_id)
            if info[3] == 1:
                outdevices.add([device_id, info[1]])
        return outdevices
예제 #54
0
파일: son.py 프로젝트: Lisa-Baget/pyanote
 def connecter_sortie():
     ''' Appeler cette fonction pour récupérer une sortie MIDI.
     '''
     pgm.init(
     )  ### mettre le init ici va peut etre réler le bug sur le portable
     for ident in range(pgm.get_count()):
         info = pgm.get_device_info(ident)
         if info[3] == 1:  # c'est un output
             print("MIDI: Utilisation de", info[1])
             break
     #ident=pgm.get_default_output_id()
     return pgm.Output(ident)
예제 #55
0
파일: lhl.py 프로젝트: bjvanderweij/pymuco
    def devices(self):

        devices = []

        for i in range(midi.get_count()):

            driver, name, inp, outp, opened = midi.get_device_info(i)

            if outp:
                devices.append((i, driver, name, inp, outp))

        return devices
예제 #56
0
    def midiPassthruSelect(self, mainWindowInstance, device):
        deviceIndex = mainWindowInstance.midiPassthruDevicesDict[device]
        if not device.isChecked():
            self.midiSelectedPassthruDevicesDict.pop(deviceIndex)
            device.setChecked(False)
        else:
            self.midiSelectedPassthruDevicesDict[deviceIndex] = deviceIndex

        deviceNameList = []
        for deviceIndex in self.midiSelectedPassthruDevicesDict.keys():
            deviceNameList.append(hashlib.md5(midi.get_device_info(deviceIndex)[1]).hexdigest())
        mainWindowInstance.settings.setValue("midiPassthruDevices", deviceNameList)
예제 #57
0
    def get_devices():
        """Get a list of all MIDI input devices connected to the system."""

        if _midi is None:
            return
        indevices = []
        all_ids = _midi.get_count()
        for device_id in all_ids:
            info = _midi.get_device_info(device_id)
            if info[2] == 1:
                indevices.add([device_id, info[1]])
        return indevices
예제 #58
0
 def __init__(self):
     self.pin = {}
     self.pout = {}
     for i in xrange(pym.get_count()):
         info = pym.get_device_info(i)
         if info[2]:
             self.pin[i] = pym.Input(i)
         if info[3]:
             self.pout[i] = pym.Output(i)
             
     self.thread = threading.Thread(target=self._run)
     self.thread.daemon = True
     self.thread.start()