Exemple #1
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
Exemple #2
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)))
Exemple #3
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 = {}
Exemple #4
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()
Exemple #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))
Exemple #6
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)
Exemple #7
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)
Exemple #8
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)
Exemple #9
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)
Exemple #10
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)))
Exemple #11
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)
Exemple #12
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
Exemple #13
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
Exemple #14
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
Exemple #15
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
Exemple #16
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)
Exemple #17
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()  
Exemple #18
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")
Exemple #19
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()
Exemple #20
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)
Exemple #21
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]
Exemple #22
0
    def soloTrackCB(self, msg):
        """Called when a /live/solo message is received.

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

        if len(msg) == 4:
            if msg[3] == 1:
                status = 0
                if ty == 1:
                    status = LiveUtils.getSong().return_tracks[track].solo
                    if LiveUtils.getSong().exclusive_solo == 1:
                        i = 0
                        for tr in LiveUtils.getSong().return_tracks:
                            LiveUtils.unsoloTrack(i, ty)
                            i = i + 1
                else:
                    trk = LiveUtils.getTrack(track)
                    status = trk.solo
                    #trk.color = 12410829
                    if LiveUtils.getSong().exclusive_solo == 1:
                        i = 0
                        all_tracks = LiveUtils.getTracks()
                        for tr in all_tracks:
                            LiveUtils.unsoloTrack(i, ty)

                            i = i + 1

                if status == 1:
                    LiveUtils.unsoloTrack(track, ty)
                elif status == 0:
                    LiveUtils.soloTrack(track, ty)
            elif msg[3] == 2:
                message = "solo track nr: " + str(track)

                tr = LiveUtils.getTrack(track)
                if tr.can_be_armed:
                    LiveUtils.soloTrack(track)
            else:
                LiveUtils.unsoloTrack(track, ty)

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

            else:
                status = LiveUtils.getTrack(track).solo
                self.oscServer.sendOSC("/solo", (track, int(status)))
Exemple #23
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)
Exemple #24
0
    def sendCB(self, msg):
        """Called when a /live/send message is received.

        Messages:
        /live/send     (int track, int send)                              Returns the send level of send (send) on track number track as: /live/send (int track, int send, float level(0.0 to 1.0))
        /live/send     (int track, int send, float level(0.0 to 1.0))     Sets the send (send) of track number (track)'s level to (level)

        """
        ty = msg[0] == '/live/return/send' and 1 or 0
        track = msg[2]

        if len(msg) == 5:
            send = msg[3]
            level = msg[4]
            if ty == 1:
                LiveUtils.getSong(
                ).return_tracks[track].mixer_device.sends[send].value = level

            else:
                LiveUtils.trackSend(track, send, level)

        elif len(msg) == 4:
            send = msg[3]
            if ty == 1:
                self.oscServer.sendOSC(
                    "/live/return/send",
                    (track, send,
                     float(LiveUtils.getSong().return_tracks[track].
                           mixer_device.sends[send].value)))

            else:
                self.oscServer.sendOSC(
                    "/live/send",
                    (track, send, float(LiveUtils.trackSend(track, send))))

        elif len(msg) == 3:
            if ty == 1:
                sends = LiveUtils.getSong(
                ).return_tracks[track].mixer_device.sends
            else:
                sends = LiveUtils.getSong().tracks[track].mixer_device.sends

            so = [track]
            length_sends = len(sends)
            for i in range(length_sends):
                so.append(i)
                so.append(float(sends[i].value))

            if ty == 1:
                self.oscServer.sendOSC("/return/send", tuple(so))
            else:
                self.oscServer.sendOSC("/send", tuple(so))
Exemple #25
0
    def scene_change(self):
        selected_scene = LiveUtils.getSong().view.selected_scene
        scenes = LiveUtils.getSong().scenes
        index = 0
        selected_index = 0
        for scene in scenes:
            index = index + 1
            if scene == selected_scene:
                selected_index = index

        if selected_index != self.scene:
            self.scene = selected_index
            self.oscServer.sendOSC("/set/selected_scene", (selected_index))
Exemple #26
0
    def simpler_meta(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]
        num = len(track.devices)
        indices = []
        device_id = -1


        for i in range(number_of_steps):
            chain_id = msg[6+i*2]
            device_id = msg[7+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':
            try:
                self.simplerListener.update_playbackmode(device, track, tid, did, type , number_of_steps, indices)
                simpler = device
                sample = simpler.sample
                if not sample:
                    return
                    
                self.simplerListener.update_slices(device, track, tid, did, type, number_of_steps, indices,sample)
                self.simplerListener.update_gain(device, track, tid, did, type, number_of_steps, indices,sample)
                self.simplerListener.update_marker(device, track, tid, did, type, number_of_steps, indices,sample)
                self.simplerListener.update_sample_warping(device, track, tid, did, type, number_of_steps, indices,sample)
                self.simplerListener.update_sample_warping_mode(device, track, tid, did, type, number_of_steps, indices,sample)
            except:
                self.error_log("DeviceCallbacks: simpler_meta failed")
Exemple #27
0
    def session_record_status_chang(self, msg):
        
        newActive = 0

        selected_scene = LiveUtils.getSong().view.selected_scene

        index = 0
        selected_index = 0
        for scene in LiveUtils.getSong().scenes:
            if scene == selected_scene:
                selected_index = index
            index = index + 1

        

        tracks = LiveUtils.getSong().tracks
        
        for track in tracks:
            if track.can_be_armed:
                if track.arm:
                    if track.clip_slots[selected_index].clip != None:
                        newActive = 1
                        break

        if newActive == 1:
            
            maxScenes = len(LiveUtils.getSong().scenes)
            startIndex = selected_index
            sceneIsEmpty = 0
            newSceneIndex = 0
            
            for i in range(startIndex, maxScenes):
                sceneIsEmpty = 1
                for track in tracks:
                    if track.can_be_armed:
                        if track.arm:
                            if track.clip_slots[i].clip != None:
                                sceneIsEmpty = 0

                                break
                if sceneIsEmpty == 1:
                    newSceneIndex = i
                    break
            
            if len(LiveUtils.getSong().scenes) == newSceneIndex:
                LiveUtils.getSong().create_scene()
            
            newScene = LiveUtils.getSong().scenes[newSceneIndex]
            LiveUtils.getSong().view.selected_scene = newScene

            for track in tracks:
                if track.can_be_armed:
                    if track.arm:
                        track.stop_all_clips()
Exemple #28
0
    def getslots(self):
        tracks = LiveUtils.getSong().tracks

        clipSlots = []
        for track in tracks:
            clipSlots.append(track.clip_slots)
        return clipSlots
Exemple #29
0
    def mixert_changestate(self, type, tid, track, r=0):
        val = eval("track." + type)
        #self.oscServer.sendOSC("/NSLOG_REPLACE", ("mixert_changestate"))

        if r == 1:
            self.oscServer.sendOSC('/return/' + type, (tid, int(val)))
        else:
            self.oscServer.sendOSC('/track/' + type, (tid, int(val)))
            if type == "arm":
                if val == 0:
                    if LiveUtils.getTrack(tid).playing_slot_index != -2:
                        cid = LiveUtils.getTrack(tid).playing_slot_index
                        self.oscServer.sendOSC('/clip/playing_status',
                                               (tid, cid, 1))
                    else:
                        pass

                elif val == 1:
                    if LiveUtils.getTrack(tid).playing_slot_index != -2:
                        cid = LiveUtils.getTrack(tid).playing_slot_index
                        if LiveUtils.getSong(
                        ).overdub == 1 or LiveUtils.getTrack(
                                tid).has_midi_input == 0:
                            self.oscServer.sendOSC('/clip/playing_status',
                                                   (tid, cid, 3))

                        else:
                            self.oscServer.sendOSC('/clip/playing_status',
                                                   (tid, cid, 1))

                    else:
                        pass
            else:
                pass
Exemple #30
0
 def add_device_listeners(self):
     try:
         self.do_add_device_listeners(LiveUtils.getSong().tracks,0)
     except:
         self.error_log("DeviceListener: do_add_device_listeners 0 failed")
     try:
         self.do_add_device_listeners(LiveUtils.getSong().return_tracks,2)
     except:
         self.error_log("DeviceListener: do_add_device_listeners 2 failed")
     try:
         self.do_add_device_listeners([LiveUtils.getSong().master_track],1)
     except:
         self.error_log("DeviceListener: do_add_device_listeners 1 failed")
     try:
         self.add_app_device_listener()
     except:
         self.error_log("DeviceListener: add_app_device_listener failed")