Example #1
0
def repeater():
    dest = MIDIDestination("repeater input")
    source = MIDISource("repeater output")

    frames = []

    last_frame_time = time()
    while True:
        midi_in = dest.recv()
        if midi_in:
            #source.send(midi_in)
            frames.append((last_frame_time + DELAY, midi_in))
        while frames:
            midi_out = frames[0]
            if midi_out[0] < last_frame_time:
                source.send(midi_out[1])
                frames.pop(0)
            else:
                break

        now = time()
        wait_time = -1
        while wait_time <= 0:
            last_frame_time = last_frame_time + LOOP_WAIT
            wait_time = last_frame_time - now
        sleep(wait_time)
Example #2
0
    def __init__(self, driver_name="DMX Bridge", universe=0):
        """ midi->dmx bridge
        :param driver_name:  The midi name of the bridge. This will
                      show up in Logic
        :param universe:    The DMX universe to connect to
        """

        self.driver_name = driver_name
        self.appname = "{} - {}".format(__appname__, driver_name)
        # initialize a default dmx frame

        self.midi_source = MIDIDestination(driver_name)

        self.frame = [0] * 255
        self.universe = universe

        # this is the starting note for all midi channels
        self.note_offset = 24

        # this is the number of dmx channels per midi channel
        # each midi channel will support 32 notes. This will allow
        # 16 fixtures via 16 midi channels.
        self.dmx_offset = 32

        # MacOS X related stuff

        self.NSUserNotification = objc.lookUpClass('NSUserNotification')
        self.NSUserNotificationCenter = objc.lookUpClass(
            'NSUserNotificationCenter')

        self.dmx_wrapper = None
        self.dmx_client = None
        self.dmx_tick = 100
        self.midi_tick = 10
        super(Midi2Dmx, self).__init__()