Renumber Cue Lists

My Tech numbered his cue list 1, 2, 3, .......100 etc!

We know we can intersperse new cues with decimals (eg. 1.5, 1.5.5 etc) values but I think I read a while back that ETC were looking for a way to be able to renumber such a list to say, 10,20,30 . . . 1000. Is this still on the books somewhere?

Way back in the dim past I remember being able to do this to long gone computer programs (Fortran BASIC) that used line numbers.

Parents
  • Here is a good work around let's say you program cue 1 thru 50 and then all of sudden you want them to be cue 100 

    Go to blind and go cue thru 1thru 50 press " copy to " and DOUBLE PRESS so it goes move it on the Syntex when you move them to cue 100 they will renumber themselves 

    It's handy if you are doing say cue 1.5 1.6 2.9 and then all of sudden you want them as cue 3 if you do cue 1.5 thru 2.9 and move them

    it's will make cue 3 cue/4 cue/ cue 5 

    That's the only workaround I have found 

    You can also use the move too button when you are in the groups tab in blind it lets you rearrange. It's also handy for any DS pallets as long are you are in blind and it's correct tab . It would be nice moving forward you can do it on the DS pallets but the Syntex will say error sadly 

  • This is not correct.

    When moving cues 1.5, 1.6 and 2.9 to cue 3 you will get cues 3, 3.1 and 4.4. When moving multiple cues the console keeps the distance between targets.

  • Here you go!

    For an input cue list like

    1.1, 1.2, 1.5, 1.7, 1.8, 1.9, 2, 2.1, 2.5

    If you want to just move to cue 3, you get an output cue list containing respective-duplicate cues at 

    3.1, 3.2, 3.5, 3.7, 3.8, 3.9, 4, 4.1, 4.5

    So this code, unlike Eos, just moves the cues to the next cue the way you would expect. Like I said above, just download Blender if you don't have a Python environment and run it from text editor. I'll add this to my software, but that's no longer public on GitHub.

    import time
    import socket
    
    OSC_IP_ADDRESS = "192.168.1.9"
    OSC_PORT = 8000
    
    
    def send_udp(osc_addr, addr, port, string):
        def pad(data):
            return data + b"\0" * (4 - (len(data) % 4 or 4))
    
        if not osc_addr.startswith("/"):
            osc_addr = "/" + osc_addr
    
        osc_addr = osc_addr.encode() + b"\0"
        string = string.encode() + b"\0"
        tag = ",s".encode()
    
        message = b"".join(map(pad, (osc_addr, tag, string)))
        try:
            sock.sendto(message, (addr, port))
    
        except Exception:
            import traceback
            traceback.print_exc()
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    
    def lighting_command(command):
        print(f"Command: {command}")
        send_udp("eos/newcmd", OSC_IP_ADDRESS, OSC_PORT, command)
    
    
    def expand_integer_cues(current_cue_list, new_cue_list, start_cue, end_cue, factor):
        for i in range(start_cue, end_cue):
            lighting_command(f"Cue {current_cue_list} / {i} Copy_To Cue {new_cue_list} / {i*factor} Enter Enter")
            time.sleep(.3) # Give Eos time to keep up
            
            
    def expand_decimal_cues_root_only(current_cue_list, new_cue_list, start_cue, end_cue, root_factor, floating_point_depth=0.1, multiply=False):
        '''Increment the root only, operating adding or multiplying with root_factor.'''
        i = float(start_cue)
        end_cue = float(end_cue)
    
        while i <= end_cue + (floating_point_depth / 10):
            root = int(i)
            decimal = i - root
    
            if multiply:
                boosted_root = root * root_factor
            else:
                boosted_root = root + root_factor
                
            new_cue = boosted_root + decimal
    
            def format_cue(n):
                return str(int(n)) if n == int(n) else str(round(n, 3))
    
            lighting_command(
                f"Cue {current_cue_list} / {format_cue(i)} Copy_To Cue {new_cue_list} / {format_cue(new_cue)} Enter Enter"
            )
    
            time.sleep(0.3)
            i += floating_point_depth
            
            
    def move_cue_block(current_cue_list, new_cue_list, start_cue, end_cue, floating_point_depth=0.1, new_start_root=3):
        """
        Move a block of cues while preserving spacing, root structure, and decimal parts.
        Root is incremented each time the original root increases.
        """
        i = float(start_cue)
        end_cue = float(end_cue)
        epsilon = floating_point_depth / 100
    
        original_root = int(i)
        current_new_root = new_start_root
    
        while round(i - end_cue, 10) <= epsilon:
            this_root = int(i)
            decimal = i - this_root
    
            # If we've moved into a new root in the source cues, increment target root
            if this_root > original_root:
                current_new_root += (this_root - original_root)
                original_root = this_root
    
            new_cue = current_new_root + decimal
    
            def format_cue(n):
                return str(int(n)) if n == int(n) else str(round(n, 3))
    
            lighting_command(
                f"Cue {current_cue_list} / {format_cue(i)} Copy_To Cue {new_cue_list} / {format_cue(new_cue)} Enter Enter"
            )
    
            time.sleep(0.3)
            i += floating_point_depth
    
            
    #expand_integer_cues(1, 2, 1, 100, 10)
    #expand_decimal_cues_root_only(3, 4, 1.1, 2.5, 10, multiply=False)
    move_cue_block(3, 4, 1.1, 2.5, new_start_root=3)

Reply
  • Here you go!

    For an input cue list like

    1.1, 1.2, 1.5, 1.7, 1.8, 1.9, 2, 2.1, 2.5

    If you want to just move to cue 3, you get an output cue list containing respective-duplicate cues at 

    3.1, 3.2, 3.5, 3.7, 3.8, 3.9, 4, 4.1, 4.5

    So this code, unlike Eos, just moves the cues to the next cue the way you would expect. Like I said above, just download Blender if you don't have a Python environment and run it from text editor. I'll add this to my software, but that's no longer public on GitHub.

    import time
    import socket
    
    OSC_IP_ADDRESS = "192.168.1.9"
    OSC_PORT = 8000
    
    
    def send_udp(osc_addr, addr, port, string):
        def pad(data):
            return data + b"\0" * (4 - (len(data) % 4 or 4))
    
        if not osc_addr.startswith("/"):
            osc_addr = "/" + osc_addr
    
        osc_addr = osc_addr.encode() + b"\0"
        string = string.encode() + b"\0"
        tag = ",s".encode()
    
        message = b"".join(map(pad, (osc_addr, tag, string)))
        try:
            sock.sendto(message, (addr, port))
    
        except Exception:
            import traceback
            traceback.print_exc()
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    
    def lighting_command(command):
        print(f"Command: {command}")
        send_udp("eos/newcmd", OSC_IP_ADDRESS, OSC_PORT, command)
    
    
    def expand_integer_cues(current_cue_list, new_cue_list, start_cue, end_cue, factor):
        for i in range(start_cue, end_cue):
            lighting_command(f"Cue {current_cue_list} / {i} Copy_To Cue {new_cue_list} / {i*factor} Enter Enter")
            time.sleep(.3) # Give Eos time to keep up
            
            
    def expand_decimal_cues_root_only(current_cue_list, new_cue_list, start_cue, end_cue, root_factor, floating_point_depth=0.1, multiply=False):
        '''Increment the root only, operating adding or multiplying with root_factor.'''
        i = float(start_cue)
        end_cue = float(end_cue)
    
        while i <= end_cue + (floating_point_depth / 10):
            root = int(i)
            decimal = i - root
    
            if multiply:
                boosted_root = root * root_factor
            else:
                boosted_root = root + root_factor
                
            new_cue = boosted_root + decimal
    
            def format_cue(n):
                return str(int(n)) if n == int(n) else str(round(n, 3))
    
            lighting_command(
                f"Cue {current_cue_list} / {format_cue(i)} Copy_To Cue {new_cue_list} / {format_cue(new_cue)} Enter Enter"
            )
    
            time.sleep(0.3)
            i += floating_point_depth
            
            
    def move_cue_block(current_cue_list, new_cue_list, start_cue, end_cue, floating_point_depth=0.1, new_start_root=3):
        """
        Move a block of cues while preserving spacing, root structure, and decimal parts.
        Root is incremented each time the original root increases.
        """
        i = float(start_cue)
        end_cue = float(end_cue)
        epsilon = floating_point_depth / 100
    
        original_root = int(i)
        current_new_root = new_start_root
    
        while round(i - end_cue, 10) <= epsilon:
            this_root = int(i)
            decimal = i - this_root
    
            # If we've moved into a new root in the source cues, increment target root
            if this_root > original_root:
                current_new_root += (this_root - original_root)
                original_root = this_root
    
            new_cue = current_new_root + decimal
    
            def format_cue(n):
                return str(int(n)) if n == int(n) else str(round(n, 3))
    
            lighting_command(
                f"Cue {current_cue_list} / {format_cue(i)} Copy_To Cue {new_cue_list} / {format_cue(new_cue)} Enter Enter"
            )
    
            time.sleep(0.3)
            i += floating_point_depth
    
            
    #expand_integer_cues(1, 2, 1, 100, 10)
    #expand_decimal_cues_root_only(3, 4, 1.1, 2.5, 10, multiply=False)
    move_cue_block(3, 4, 1.1, 2.5, new_start_root=3)

Children
No Data
Related