コード例 #1
0
def main_inout_block():
    # don't set global var because we will output here
    # global midiout

    midiin = rtmidi.RtMidiIn()
    print 'INPUTS:'
    print_ports(midiin)
    midiin.openPort(1)  # KeyStation?

    midiout = rtmidi.RtMidiOut()
    print 'OUTPUTS:'
    print_ports(midiout)
    midiout.openPort(0)  # IAC?

    try:
        m = None
        while True:
            m = midiin.getMessage(250)
            if m:
                midiout.sendMessage(m)
                m = rtmidi.MidiMessage.aftertouchChange(
                    1, 1, m.getNoteNumber())
                print_message(m)
    except KeyboardInterrupt:
        pass

    midiin.closePort()
    print 'quit'
def setUpLights():
    midiout = rtmidi.RtMidiOut()
    ports = range(midiout.getPortCount())
    if ports:
        for i in ports:
            print i, midiout.getPortName(i)
        midiout.openPort(0)
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL, PREV_CONTROLLER,
                                               ON_VALUE))
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL, NEXT_CONTROLLER,
                                               ON_VALUE))
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL,
                                               BLANK_TEXT_CONTROLLER,
                                               ON_VALUE))
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL,
                                               BLANK_BG_CONTROLLER, ON_VALUE))
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL,
                                               BLANK_ALL_CONTROLLER, ON_VALUE))
        midiout.sendMessage(
            rtmidi.MidiMessage.controllerEvent(MIDI_CHANNEL, LOGO_CONTROLLER,
                                               ON_VALUE))
    return midiout
コード例 #3
0
ファイル: interface.py プロジェクト: fagan2888/looper
    def __init__(self, output_port_name='getch'):
        self.output_port_name = output_port_name
        self.exit_key = 'q'
        self.channel = 10
        self.velocity = 120
        
        # setup midi output
        self.out = rtmidi.RtMidiOut()
        self.out.openVirtualPort(self.output_port_name)

        self.key_mappings = {
                                'c': 5,
                                'r': 4,
                                't': 42,
                                'a': 36,
                                's': 37,
                                'd': 38,
                                'f': 39,
                                'g': 40,
                                'h': 41,
                                'j': 42,
                                'k': 43,
                                'l': 44,
                            }

        self.getch = Getch()
コード例 #4
0
    def __init__(self,
                 controller_name='MPK Mini Mk II'
                 ):

        # settings
        self.rec_toggle_note = 4
        self.channel_toggle_note = 5
        self.controller_name = controller_name
        self.output_port_name = 'test_port'
        self.max_channel = 16

        # setup midi input
        self.inn = rtmidi.RtMidiIn()
        self.port_names = [self.inn.getPortName(i) for i in \
                range(self.inn.getPortCount())]
        self.input_port_idx = self.port_names.index(self.controller_name)
        self.inn.openPort(self.input_port_idx)

        # setup midi output
        self.out = rtmidi.RtMidiOut()
        self.out.openVirtualPort(self.output_port_name)

        # runtime
        self.recording = False
        self._channel = 1
        self.playback_t0 = time.time()
        self.recording_t0 = time.time()
        self.loop_duration = None
        self.buffers = []
        self.buffer_idxs = []
コード例 #5
0
ファイル: midi.py プロジェクト: bergamote/micronux
def list_midi_ports():
    ''' List all midi ports, return a dict { name : address } '''
    md = rtmidi.RtMidiOut()
    port_list = {}
    for port in range(md.getPortCount()):
        name = md.getPortName(port)
        if not 'Through' in name:
            port_list[md.getPortName(port)] = port
    return port_list
コード例 #6
0
 def __init__(self, ui):
     self._midi = {name: rtmidi.RtMidiOut() for name in ['looper', 'ctrl']}
     loop_port_index = self.get_midi_port_index(self._midi['looper'],
                                                'CH345')
     ctrl_port_index = self.get_midi_port_index(self._midi['ctrl'],
                                                'USBMIDI')
     self._midi['looper'].openPort(loop_port_index)
     self._midi['ctrl'].openPort(ctrl_port_index)
     assert self._midi['looper'].isPortOpen()
     assert self._midi['ctrl'].isPortOpen()
コード例 #7
0
 def setDevice(self, i=None):
     self.lock.acquire()
     self.dev = rtmidi.RtMidiOut()
     if isinstance(i, int):
         self.dev.openPort(i)
     elif isinstance(i, str):
         self.dev.openVirtualPort(i)
     else:
         self.dev.openVirtualPort('pk.RtMidiOut')
     self.lock.release()
コード例 #8
0
def refreshMidiPorts():
    global midiMsg
    midiMsg.midiports = []
    if sys.version_info[1] == 8:
        midiMsg.midiobj = rtmidi.RtMidiOut()
        for i in range(midiMsg.midiobj.getPortCount()):
            midiMsg.midiports.append(midiMsg.midiobj.getPortName(i))
    else:
        midiMsg.midiobj = rtmidi.MidiOut()
        midiMsg.midiports = midiMsg.midiobj.get_ports()
コード例 #9
0
    def __init__(self):

        #Name of the MIDI port in use
        self.portName = "virmidi"

        self.out = rtmidi.RtMidiOut()
        portCount = self.out.getPortCount()
        print("number of available MIDI  ports: " + str(portCount))
        print("using port " + self.portName)

        #Using virtual ports by default
        self.out.openVirtualPort(self.portName)

        return
コード例 #10
0
def main_inout():
    global midiout
    midiin = rtmidi.RtMidiIn()
    print 'INPUTS:'
    print_ports(midiin)
    midiin.setCallback(callback)
    midiin.openPort(1)  # KeyStation?

    midiout = rtmidi.RtMidiOut()
    print 'OUTPUTS:'
    print_ports(midiout)
    midiout.openPort(0)  # IAC?

    while True:
        time.sleep(.1)
    midiin.closePort()
    print 'quit'
コード例 #11
0
ファイル: midi.py プロジェクト: bergamote/micronux
def interface(port, action, syx=False):
    ''' Interface for midi send/receive sysex

        action 'receive'    saves file at
                            'receive_cache'
        action 'send'       send syx
        return True when done
    '''
    port = find_midi_port(port)
    if port:
        if action == 'receive':
            # wait in number of seconds
            # and/or midi messages
            waiting = 10
            received = False
            md = rtmidi.RtMidiIn()
            md.openPort(port)
            md.ignoreTypes(False, True, True)
            while waiting and not received:
                msg = md.getMessage(1000)
                if msg and validate_syx(msg):
                    save_syx(msg)
                    received = True
                    break
                waiting -= 1
            md.closePort()
            return received

        elif action == 'send':
            if not syx:
                return False
            else:
                md = rtmidi.RtMidiOut()
                md.openPort(port)
                msg = rtmidi.MidiMessage(syx)
                if validate_syx(msg):
                    md.sendMessage(msg)
                    return True
    else:
        print('MIDI port not valid')
        return False
コード例 #12
0
ファイル: Midi.py プロジェクト: thangduong/kamaelia
 def __init__(self, portNumber=0, **argd):
     super(Midi, self).__init__(**argd)
     self.output = rtmidi.RtMidiOut()
     self.output.openPort(portNumber)
コード例 #13
0
ファイル: midiPlayerRtmidi.py プロジェクト: brodarnikola/ppt
 def __init__(self):
     self.midi = rtmidi.RtMidiOut()
     self.midi.openVirtualPort()
     self.pp = pitchParser.PitchParser()
コード例 #14
0
import traceback
import json as JSON
import re


def ipcSend(name, data):
    print(JSON.dumps([name, data]))
    stdout.flush()


try:
    import rtmidi
    API = rtmidi.RtMidiIn.UNIX_JACK if 'jack' in argv else rtmidi.RtMidiIn.UNSPECIFIED
    JACK = API == rtmidi.RtMidiIn.UNIX_JACK
    in_dev = rtmidi.RtMidiIn(API, 'Midi->OSC probe')
    out_dev = rtmidi.RtMidiOut(API, 'OSC->Midi probe')
except:
    ipcSend('error', 'pyrtmidi not found (or wrong version)')

if version_info.major == 3:
    raw_input = input

debug = False
if 'debug' in argv:
    debug = True


def list():

    message = []
コード例 #15
0
ファイル: rthack.py プロジェクト: x31eq/midihacks
class RTOut(retune.Retuner):
    def output(self, mess):
        self.midiout.sendMessage(rtmidi.MidiMessage(bytes(mess)))


midiin = rtmidi.RtMidiIn()
if len(sys.argv) > 1:
    instr = sys.argv[1]
    inport = next(i for i in range(midiin.getPortCount())
                  if instr in midiin.getPortName(i))
    midiin.openPort(inport)
else:
    midiin.openVirtualPort()

midiout = rtmidi.RtMidiOut()
if len(sys.argv) > 2:
    outstr = sys.argv[2]
    outport = next(i for i in range(midiout.getPortCount())
                   if outstr in midiout.getPortName(i))
    midiout.openPort(outport)
else:
    midiout.openVirtualPort()

midistream = RTOut()
midistream.midiout = midiout

while True:
    mess = midiin.getMessage()
    if mess is not None:
        midistream.write(mess.getRawData())
コード例 #16
0
ファイル: midiout.py プロジェクト: bennymartinson/torrent
class MidiPlayer:
    midiout = rtmidi.RtMidiOut()
    channel = 1
    sustain = False
    notesOn = {}
    device = 'MIDISPORT 2x2 Port A'
    device2 = 'USB-MIDI'

    def __init__(self, channel=1):
        self.promptPort()
        self.channel = channel

    def promptPort(self):
        ports = range(self.midiout.getPortCount())
        names = []
        for i in ports:
            names.append(self.midiout.getPortName(i))
            if self.midiout.getPortName(i) == self.device:
                print "Connected to the device {}.".format(self.device)
                self.midiout.openPort(i)
                return
        for i in ports:
            if self.midiout.getPortName(i) == self.device2:
                print "Connected to the device {}.".format(self.device2)
                self.midiout.openPort(i)
                return
        print "The device {} was not found.".format(self.device)
        if len(names) == 0:
            print "No other instruments are open.  Quitting program now."
            sys.exit()
        else:
            "The following instruments were found:",
            for i, name in enumerate(names):
                print "{0}: {1}".format(i, name)
            port = raw_input(
                "Please type of the number of the port you'd like to open.")
            self.midiout.openPort(int(port))

    def note(self, pitch=60, dur=1, velocity=80, layer=0):
        if pitch in self.notesOn and self.notesOn[pitch]['layer'] > layer:
            return
        elif pitch in self.notesOn:
            self.notesOn[pitch]['timer'].cancel()
            self.noteOff(pitch, layer)
            timer = threading.Timer(0.1, self.note,
                                    (pitch, dur, velocity, layer))
            timer.start()
            return

        message = rtmidi.MidiMessage.noteOn(self.channel, 0, velocity)
        message.setNoteNumber(pitch)
        self.midiout.sendMessage(message)
        timer = threading.Timer(dur, self.noteOff, (pitch, layer))
        timer.start()
        self.notesOn[pitch] = {'layer': layer, 'timer': timer}

    def noteOff(self, pitch, layer=0):
        if pitch in self.notesOn and self.notesOn[pitch]['layer'] <= layer:
            if pitch not in self.notesOn:
                return
            del self.notesOn[pitch]
            message = rtmidi.MidiMessage.noteOff(self.channel, 0)
            message.setNoteNumber(pitch)
            self.midiout.sendMessage(message)

    def controllerEvent(self, event_type, value):
        message = rtmidi.MidiMessage.controllerEvent(self.channel, event_type,
                                                     value)
        self.midiout.sendMessage(message)

    def setSustain(self, value):
        self.sustain = value
        if value:
            self.controllerEvent(64, 127)
        else:
            self.controllerEvent(64, 0)
コード例 #17
0
from binascii import hexlify, unhexlify
import traceback
import json as JSON
import re


def ipcSend(name, data):
    print(JSON.dumps([name, data]))
    stdout.flush()


try:
    import rtmidi
    API = rtmidi.RtMidiIn.UNIX_JACK if 'jack' in argv else rtmidi.RtMidiIn.UNSPECIFIED
    JACK = API == rtmidi.RtMidiIn.UNIX_JACK
    in_dev = rtmidi.RtMidiIn(API, 'MIDI->OSC probe')
    out_dev = rtmidi.RtMidiOut(API, 'OSC->MIDI probe')
except:
    ipcSend(
        'error',
        'pyrtmidi not found (or wrong version)\nRunning with python version %s'
        % version)
    exit()

if version_info.major == 3:
    raw_input = input

debug = False
if 'debug' in argv:
    debug = True