コード例 #1
0
 def quant_change(self):
     tquant = LiveUtils.getSong().clip_trigger_quantization
     rquant = LiveUtils.getSong().midi_recording_quantization
     self.oscServer.sendOSC(
         "/set/quantization",
         (int(LiveUtils.getSong().clip_trigger_quantization),
          int(LiveUtils.getSong().midi_recording_quantization)))
コード例 #2
0
    def drumpadSolo(self, msg):
    
        type = msg[2]
        track_id = msg[3]
        device_id = msg[4]
        number_of_steps = msg[5]
        drum_id =  msg[6]
        solod =  msg[7]
        
        if type == 1:
            
            track = LiveUtils.getSong().tracks[track_id]
        elif type == 3:
        
            track = LiveUtils.getSong().return_tracks[track_id]
        else:
            
            track = LiveUtils.getSong().master_track

        device = track.devices[device_id]
    
        for i in range(number_of_steps):
            chain_id = msg[8+i*2]
            device_id = msg[9+i*2]
            
            chain = device.chains[chain_id]
            device = chain.devices[device_id]
        
        if device.can_have_drum_pads == 1:
            drum_pad = device.drum_pads[drum_id]
            drum_pad.solo = solod
コード例 #3
0
 def redoCB(self, msg):
     """Called when a /live/redo message is received.
     
     Messages:
     /live/redo      Requests the song to redo the last action
     """
     LiveUtils.getSong().redo()
コード例 #4
0
    def playContinueCB(self, msg):
        """Called when a /live/play/continue message is received.

        Messages:
        /live/play/continue     Continues playing the song from the current point
        """
        LiveUtils.continuePlaying()
コード例 #5
0
    def devices_changed(self, track, tid, type):
                    
        message = "devices changed for track :" + str(tid) + " and type :" + str(type)
        self.ta_logger(message, 4)

        a = Live.Application.get_application().get_major_version()
        
        length_tracks = len(LiveUtils.getSong().tracks)
        for a_tid in range(length_tracks):
            atrack = LiveUtils.getSong().tracks[a_tid]
            if atrack == track:
                tid = a_tid
        
        self.oscServer.sendOSC("/devices_empty", (int(type), int(tid)))


        did = 0
        
        number_of_steps = 0
        i = 0
        indices = []
        
        for device in track.devices:
            
            lis = list(indices)

            self.touchAble.tACommon.send_update_for_device(device, track, tid, did, type, len(track.devices), number_of_steps, lis, -1)

            did = did+1

        self.oscServer.sendOSC('/devices_loaded', (int(type), int(tid)))
        self.add_device_listeners_for_track(track, int(tid), int(type))
コード例 #6
0
    def rem_all_device_listeners(self):
        #self.oscServer.sendOSC('/live/track/removing_all_dev_listeners', 1)

        try:
            self.do_remove_device_listeners(LiveUtils.getSong().tracks,0)
        except:
            err_message = "DeviceListener: do_remove_device_listeners for track " + str(0) + " failed"
            self.error_log(err_message)
        try:
            self.do_remove_device_listeners(LiveUtils.getSong().return_tracks,2)
        except:
            err_message = "DeviceListener: do_remove_device_listeners for track " + str(1) + " failed"
            self.error_log(err_message)
        try:
            self.do_remove_device_listeners([LiveUtils.getSong().master_track],1)
        except:  
            err_message = "DeviceListener: do_remove_device_listeners for track " + str(2) + " failed"
            self.error_log(err_message)        
        
        
        
        #self.oscServer.sendOSC('/live/track/removing_all_dev_listeners', 2)

        for key in self.drum_pad_listen:
        
            #self.oscServer.sendOSC('/live/track/removing_all_dev_listeners', 3)
            drum_pad_listen = self.drum_pad_listen[key]
            for drum_pad in drum_pad_listen:
                if drum_pad != None:
                    ocb = drum_pad_listen[drum_pad]
                    if drum_pad.name_has_listener(ocb) == 1:
                        drum_pad.remove_name_listener(ocb)
    
        #self.oscServer.sendOSC('/live/track/removing_all_dev_listeners', 4)
        self.drum_pad_listen = {}
コード例 #7
0
    def prevCueCB(self, msg):
        """Called when a /live/prev/cue message is received.

        Messages:
        /live/prev/cue              Jumps to the previous cue point
        """
        LiveUtils.jumpToPrevCue()
コード例 #8
0
 def rem_can_capture_midi_listener(self):
     a_version = Live.Application.get_application().get_major_version()
     if a_version >= 10.0:
         if LiveUtils.getSong().can_capture_midi_has_listener(
                 self.can_capture_midi_change) == 1:
             LiveUtils.getSong().remove_can_capture_midi_listener(
                 self.can_capture_midi_change)
コード例 #9
0
    def get_device_for_message(self, msg):

        type = msg[2]
        tid = msg[3]
        did = msg[4]

        number_of_steps = msg[5]

        if type == 0:
            track = LiveUtils.getSong().tracks[tid]
        elif type == 2:
            track = LiveUtils.getSong().return_tracks[tid]
        elif type == 1:
            track = LiveUtils.getSong().master_track

        device = track.devices[did]

        for i in range(number_of_steps):
            chain_id = msg[6 + i * 2]
            device_id = msg[7 + i * 2]

            track = device.chains[chain_id]
            device = track.devices[device_id]

        return device
コード例 #10
0
    def nextCueCB(self, msg):
        """Called when a /live/next/cue message is received.

        Messages:
        /live/next/cue              Jumps to the next cue point
        """
        LiveUtils.jumpToNextCue()
コード例 #11
0
    def playCB(self, msg):
        """Called when a /live/play message is received.

        Messages:
        /live/play              Starts the song playing
        """
        LiveUtils.play()
コード例 #12
0
    def overdub_change(self):
        try:
            overdub = LiveUtils.getSong().arrangement_overdub
        except:
            overdub = LiveUtils.getSong().overdub

        self.oscServer.sendOSC("/set/overdub_status", (int(overdub) + 1))
        trackNumber = 0
        if Live.Application.get_application().get_major_version() == 8:
            for track in LiveUtils.getSong().tracks:
                if track.can_be_armed == 1:
                    if track.arm == 1:
                        if track.playing_slot_index != -2:
                            tid = trackNumber
                            cid = track.playing_slot_index
                            if track.clip_slots[cid].clip.is_audio_clip == 0:
                                if overdub == 1:
                                    self.oscServer.sendOSC(
                                        '/clip/playing_status', (tid, cid, 3))
                                else:
                                    self.oscServer.sendOSC(
                                        '/clip/playing_status', (tid, cid, 1))
                            else:
                                self.oscServer.sendOSC('/clip/playing_status',
                                                       (tid, cid, 3))

                trackNumber = trackNumber + 1
コード例 #13
0
    def muteTrackCB(self, msg):
        """Called when a /live/mute message is received.

        Messages:
        /live/mute     (int track)   Mutes track number track
        """
        ty = msg[0] == '/live/return/mute' and 1 or 0
        track = msg[2]

        if len(msg) == 4:
            if msg[3] == 1:
                if ty == 1:
                    status = LiveUtils.getSong().return_tracks[track].mute
                else:
                    status = LiveUtils.getTrack(track).mute
                if status == 1:
                    LiveUtils.unmuteTrack(track, ty)
                elif status == 0:
                    LiveUtils.muteTrack(track, ty)
            else:
                LiveUtils.unmuteTrack(track, ty)

        elif len(msg) == 3:
            if ty == 1:
                status = LiveUtils.getSong().return_tracks[track].mute
                self.oscServer.sendOSC("/return/mute", (track, int(status)))

            else:
                status = LiveUtils.getTrack(track).mute
                self.oscServer.sendOSC("/mute", (track, int(status)))
コード例 #14
0
    def add_arrangement_overdub_listener(self):
        self.rem_arrangement_overdub_listener()

        if LiveUtils.getSong().arrangement_overdub_has_listener(
                self.overdub_change) != 1:
            LiveUtils.getSong().add_arrangement_overdub_listener(
                self.overdub_change)
コード例 #15
0
    def session_record_change(self):
        overdub = LiveUtils.getSong().session_record
        self.oscServer.sendOSC("/live/set/session_record", (int(overdub) + 1))

        trackNumber = 0
        numberOfTracks = len(LiveUtils.getSong().tracks)
        for i in range(numberOfTracks):
            track = LiveUtils.getSong().tracks[i]
            if track.can_be_armed == 1:
                if track.arm == 1:
                    if track.playing_slot_index != -2:
                        if track.playing_slot_index != -1:
                            tid = trackNumber
                            cid = track.playing_slot_index
                            if track.clip_slots[cid].clip.is_audio_clip == 0:
                                if overdub == 1:
                                    self.oscServer.sendOSC(
                                        '/clip/playing_status', (tid, cid, 3))
                                else:
                                    self.oscServer.sendOSC(
                                        '/clip/playing_status', (tid, cid, 1))
                            else:
                                self.oscServer.sendOSC('/clip/playing_status',
                                                       (tid, cid, 3))

            trackNumber = trackNumber + 1
コード例 #16
0
    def add_session_automation_record_listener(self):
        self.rem_session_automation_record_listener()

        if LiveUtils.getSong().session_automation_record_has_listener(
                self.session_automation_record_change) != 1:
            LiveUtils.getSong().add_session_automation_record_listener(
                self.session_automation_record_change)
コード例 #17
0
    def add_re_enable_automation_enabled_listener(self):
        self.rem_re_enable_automation_enabled_listener()

        if LiveUtils.getSong().re_enable_automation_enabled_has_listener(
                self.re_enable_automation_enabled_changed) != 1:
            LiveUtils.getSong().add_re_enable_automation_enabled_listener(
                self.re_enable_automation_enabled_changed)
コード例 #18
0
    def add_session_record_status_listener(self):
        self.rem_session_record_status_listener()

        if LiveUtils.getSong().session_record_status_has_listener(
                self.session_record_status_changed) != 1:
            LiveUtils.getSong().add_session_record_status_listener(
                self.session_record_status_changed)
コード例 #19
0
 def cuelevelCB(self, msg):
     if len(msg) == 2:
         value = LiveUtils.getSong().master_track.mixer_device.cue_volume.value
         self.oscServer.sendOSC("/set/cuelevel", float(value))
     elif len(msg) == 3:
         value = msg[2]
         LiveUtils.getSong().master_track.mixer_device.cue_volume.value = value
コード例 #20
0
    def playSelectionCB(self, msg):
        """Called when a /live/play/selection message is received.

        Messages:
        /live/play/selection    Plays the current selection
        """
        LiveUtils.playSelection()
コード例 #21
0
    def stopCB(self, msg):
        """Called when a /live/stop message is received.

        Messages:
        /live/stop              Stops playing the song
        """
        LiveUtils.stop()
コード例 #22
0
    def stopAllCB(self, msg):
        """Called when a /live/stop/track message is received.

        Messages:
        /live/stop/track     (int track, int clip)   Stops track number track
        """
        if len(msg) == 2:
            LiveUtils.getSong().stop_all_clips()  
コード例 #23
0
 def add_can_capture_midi_listener(self):
     a_version = Live.Application.get_application().get_major_version()
     if a_version >= 10.0:
         self.can_capture_midi_change()
         if LiveUtils.getSong().can_capture_midi_has_listener(
                 self.can_capture_midi_change) != 1:
             LiveUtils.getSong().add_can_capture_midi_listener(
                 self.can_capture_midi_change)
コード例 #24
0
    def mviewTrackCB(self, msg):
        """Called when a /live/master/view message is received.
        
        Messages:
        /live/track/view     (int track)      Selects a track to view
        """
        track = LiveUtils.getSong().master_track

        LiveUtils.getSong().view.selected_track = track
        Live.Application.get_application().view.show_view("Detail/DeviceChain")
コード例 #25
0
    def chainLoad(self, msg):
        type = msg[2]
        tid = msg[3]
        steps = msg[4]
        #self.oscServer.sendOSC("/browser/loadstart", 1)
        
        track = LiveUtils.getSong().master_track
        if type == 0:
            track = LiveUtils.getSong().tracks[tid]
        elif type == 2:
            track = LiveUtils.getSong().return_tracks[tid]
    
        #LiveUtils.getSong().view.selected_track = track
        browser = Live.Application.get_application().browser
        
        #self.oscServer.sendOSC("/browser/loadstart", 2)
        
        track.view.device_insert_mode = Live.Track.DeviceInsertMode.default
        #self.oscServer.sendOSC("/browser/loadstart", 3)
    

        root_items = []
        root_items.append(browser.sounds)
        root_items.append(browser.drums)
        root_items.append(browser.instruments)
        root_items.append(browser.audio_effects)
        root_items.append(browser.midi_effects)
        root_items.append(browser.max_for_live)
        root_items.append(browser.plugins)
        root_items.append(browser.clips)
        root_items.append(browser.samples)
        root_items.append(browser.packs)
        root_items.append(browser.user_library)
        
        item = root_items[msg[5]]
        #self.oscServer.sendOSC("/browser/loadstart", 4)
        
        for i in range(steps-1):
            
            index = msg[6+i]
            item = item.children[index]
        
            
        #self.oscServer.sendOSC("/browser/loadstart", 5)
        
        if not Live.Application.get_application().view.browse_mode:
            Live.Application.get_application().view.toggle_browse()

        browser.load_item(item)
        
        browser.hotswap_target = None


        if Live.Application.get_application().view.browse_mode:
            Live.Application.get_application().view.toggle_browse()
コード例 #26
0
    def device_changestate(self):

        self.ta_logger("device_changestate",5)

        device = LiveUtils.getSong().appointed_device
        if device == None:
            return
        else:
            pass
        
        track = device.canonical_parent
        did = 0
        type = 0
        number_of_steps = 0
        indices = []

        while track.canonical_parent != LiveUtils.getSong():

            if number_of_steps % 2 != 0:
                indices.append(touchAbleUtils.tuple_idx(track.chains, device))
            else:
                indices.append(touchAbleUtils.tuple_idx(track.devices, device))
    

            number_of_steps = number_of_steps + 1
            
            device = track
            track = device.canonical_parent

        self.ta_logger("got canonical_parent device",4)


        if track.canonical_parent == LiveUtils.getSong():

            did = touchAbleUtils.tuple_idx(track.devices, device)
            tid = touchAbleUtils.tuple_idx(LiveUtils.getSong().tracks, track)
            type = 0

            if tid < 0:

                tid = touchAbleUtils.tuple_idx(LiveUtils.getSong().return_tracks, track)
                
                if tid >= 0:
                    type = 2
                else:
                    type = 1
                    tid = 0
        indis = [type, tid, did, int(number_of_steps/2)]

        for i in range(len(indices)):
            indis.append(int(indices[len(indices)-1-i]))
       
        self.oscServer.sendOSC("/selected_device", tuple(indis))
        self.ta_logger("sent selected device",4)
コード例 #27
0
    def viewSceneCB(self, msg):
        """Called when a /live/scene/view message is received.
        
        Messages:
        /live/scene/view     (int track)      Selects a track to view
        """

        if len(msg) == 3:
            scene = msg[2]
            LiveUtils.getSong().view.selected_scene = LiveUtils.getSong(
            ).scenes[scene]
コード例 #28
0
    def update_simpler_waveformcb(self, msg):
        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb")

        type = msg[2]
        tid = msg[3]
        did = msg[4]
        start_in_percent = msg[5]
        end_in_percent = msg[6]

        number_of_steps = msg[7]

        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb0")

        if type == 0:
            track = LiveUtils.getSong().tracks[tid]
        elif type == 2:
            track = LiveUtils.getSong().return_tracks[tid]
        elif type == 1:
            track = LiveUtils.getSong().master_track
        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb05")

        device = track.devices[did]
        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb1115")

        num = len(track.devices)
        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb15")

        indices = []
        device_id = -1
        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb25")

        #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb1")

        for i in range(number_of_steps):
            chain_id = msg[8 + i * 2]
            device_id = msg[9 + i * 2]

            chain = device.chains[chain_id]
            indices.append(int(chain_id))

            device = chain.devices[device_id]
            num = len(chain.devices)

            indices.append(int(device_id))

        if device.class_name == 'OriginalSimpler':
            simpler = device
            #self.oscServer.sendOSC("/NSLOG_REPLACE", "update_simpler_waveformcb2")

            self.update_simpler_waveform(simpler, track, tid, did, type,
                                         number_of_steps, indices,
                                         start_in_percent, end_in_percent)
コード例 #29
0
    def monitorTrackCB(self, msg):
        """Called when a /live/monitor message is received.

        Messages:
        /live/monitor     (int track)   monitors track number track
        """
        track = msg[2]
        status = msg[3]
        if len(msg) == 4:
            LiveUtils.getTrack(track).current_monitoring_state = status
        elif len(msg) == 3:
            status = LiveUtils.getTrack(track).current_monitoring_state
            self.oscServer.sendOSC("/monitor", (track, int(status)))
コード例 #30
0
    def tempoCB(self, msg):
        """Called when a /live/tempo message is received.

        Messages:
        /live/tempo                 Request current tempo, replies with /live/tempo (float tempo)
        /live/tempo (float tempo)   Set the tempo, replies with /live/tempo (float tempo)
        """
        if len(msg) == 2 or (len(msg) == 3 and msg[2] == "query"):
            self.oscServer.sendOSC("/set/tempo", LiveUtils.getTempo())
        
        elif len(msg) == 3:
            tempo = msg[2]
            LiveUtils.setTempo(tempo)