Changeset 61


Ignore:
Timestamp:
08/12/09 20:06:17 (9 months ago)
Author:
st8
Message:

Streamlined LCD code and added config variable for display length. Fixed bug in selection

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/LiveControl/ClipLauncher.py

    r55 r61  
    6969        cb = lambda :self.clip_changestate(clip, tid, cid) 
    7070         
    71         #if clip.playing_status_has_listener(cb) != 1: 
    7271        if self.clisten.has_key(clip) != 1: 
    7372            clip.add_playing_status_listener(cb) 
     
    7776        cb = lambda :self.slot_changestate(slot, tid, cid) 
    7877         
    79         #if slot.has_clip_has_listener(cb) != 1: 
    8078        if self.slisten.has_key(slot) != 1: 
    8179            slot.add_has_clip_listener(cb) 
     
    220218                cols.append(byte) 
    221219                 
    222             elif x == self.width - 1: 
    223                 byte = 0 
    224                 if self._fx_swap == 1: 
    225                     byte |= 1 << self.height - 2 
    226                  
    227                 cols.append(byte) 
    228220            else: 
    229221                cols.append(0) 
     
    285277                self.build_lcd() 
    286278                     
    287             # FX / Track Switch 
     279            # Stop All Clips 
    288280            elif (x == self.width - 1 and y == self.height - 2): 
    289281                self.song().stop_all_clips() 
     
    362354            # Launch Scenes 
    363355            elif x == self.width - 1: 
    364                 self.song().scenes[y + self.scene].fire() 
     356                cur = self.tuple_idx(self.song().scenes, self.song().view.selected_scene) 
     357                new = cur + y 
     358                 
     359                if new > 0 and new < len(self.song().scenes): 
     360                    if new == cur: 
     361                        new -= 1 
     362                         
     363                    if self.shift == 1: 
     364                        self.song().view.selected_scene = self.song().scenes[new] 
     365 
     366                    else: 
     367                        self.song().scenes[new].fire() 
    365368 
    366369    def build_lcd(self, type = 0): 
     
    386389             
    387390            tracks = self.song().visible_tracks 
    388             for i in range(self.twidth): 
    389                 tid = i + self.track 
    390                 slot = tracks[tid].clip_slots[self.scene] 
    391                  
    392                 sep = current == tracks[tid] and "!" or "|" 
    393                  
    394                 if slot.clip != None:                     
    395                     title = self.trunc_string(str(slot.clip.name), 8) 
    396                     line1 += title[0:4] + sep 
    397                     line2 += title[4:8] + sep 
    398                 else: 
    399                     line1 += "    " + sep 
    400                     line2 += "    " + sep 
     391            for i in range(len(tracks)): 
     392                if i < self.lcd_width: 
     393                    tid = i + self.track 
     394                    slot = tracks[tid].clip_slots[self.scene] 
     395                 
     396                    sep = current == tracks[tid] and "!" or "|" 
     397                 
     398                    if slot.clip != None:                     
     399                        title = self.trunc_string(str(slot.clip.name), 8) 
     400                        line1 += title[0:4] + sep 
     401                        line2 += title[4:8] + sep 
     402                    else: 
     403                        line1 += "    " + sep 
     404                        line2 += "    " + sep 
    401405                     
    402406            ex = self.trunc_string(name,3) + self.scene_names[self.scene][1].rjust(2) 
    403             line1 += ex.rjust(40 - len(line1) - len(ex) + 5) 
    404             line2 += self.trunc_string(scln,5).rjust(40 - len(line2)) 
     407            line1 += ex.rjust(self.lcd_size - len(line1) - len(ex) + 5) 
     408            line2 += self.trunc_string(scln,5).rjust(self.lcd_size - len(line2)) 
    405409     
    406410            self.lcd = [line1,line2]             
  • trunk/LiveControl/DeviceControl.py

    r55 r61  
    317317                offset = self.bank * (self.width - 1) + 1 
    318318             
    319                 for i in range(self.width - 1): 
     319                for i in range(self.lcd_width): 
    320320                    pid = i + offset 
    321321                    if len(device) > pid: 
     
    325325                        line2 += str(par[1])[0:4].center(4) + "|" 
    326326                 
    327                 line1 = line1.ljust(35) 
    328                 line2 = line2.ljust(35) 
     327                line1 = line1.ljust(self.lcd_size - 5) 
     328                line2 = line2.ljust(self.lcd_size - 5) 
    329329                 
    330330                line1 += "Dev" + str(self.device[1]+1).rjust(2) 
     
    333333                line1 = "No Device Selected" 
    334334                     
    335             self.lcd = [line1.ljust(40),line2.ljust(40)] 
    336          
     335            self.lcd = [line1,line2] 
     336         
  • trunk/LiveControl/LiveControl.py

    r59 r61  
    5858        height = 8 
    5959     
     60    try: 
     61        lcd_size = int(config.get("LiveControl", "lcd_size")) 
     62    except: 
     63        lcd_size  = 40 
     64     
     65    lcd_width = (lcd_size / 5) - 1 
     66     
    6067    tr     = 0 
    6168    sc     = 0 
     
    6875     
    6976    lcd = ["", ""] 
    70      
    71     _fx_swap  = 0 
    72     _old_track = 0 
    73     _old_scene = 0 
    7477     
    7578    clisten = {} 
     
    99102         
    100103        self._menu = 0 
    101         self._int = [ 0 for i in range(self.width) ] 
    102         
    103         self._int[self.width-1] = 1 
     104        self._mi = 1 
    104105         
    105106        self.update_lcd  = 0 
     
    124125     
    125126        # Send LCD init 
    126         self.oscServer.sendOSC(self.prefix + "/lcd", (self.lcd[0].ljust(40) + self.lcd[1].ljust(40))) 
     127        self.oscServer.sendOSC(self.prefix + "/lcd", (self.lcd[0].ljust(self.lcd_size) + self.lcd[1].ljust(self.lcd_size))) 
    127128        self.c_instance.show_message(re.compile("\s+").sub(" ", self.lcd[0] + self.lcd[1])) 
    128129        time.sleep(0.5) 
     
    218219        self.do_scene_change(sc) 
    219220        self.build_lcd() 
    220          
    221     def check_tr_sc(self):  
    222         tr = -1 
    223         sc = -1 
    224          
    225         for i in range(len(self.prog)): 
    226             if self.prog[i].name == "MultiMode": 
    227                 for j in range(len(self.prog[i].mprog)): 
    228                     if self.prog[i].mprog[j].update_tr != -1: 
    229                         tr = self.prog[i].mprog[j].update_tr 
    230                         self.prog[i].mprog[j].update_tr = -1 
    231                  
    232                     if self.prog[i].mprog[j].update_sc != -1: 
    233                         sc = self.prog[i].mprog[j].update_sc 
    234                         self.prog[i].mprog[j].update_sc = -1 
    235              
    236             else: 
    237                 if self.prog[i].update_tr != -1: 
    238                     tr = self.prog[i].update_tr 
    239                     self.prog[i].update_tr = -1 
    240                  
    241                 if self.prog[i].update_sc != -1: 
    242                     sc = self.prog[i].update_sc 
    243                     self.prog[i].update_sc = -1 
    244  
    245         for i in range(len(self.prog)): 
    246             if self.prog[i].name != "Scale" and self.prog[i].name != "Drum Rack": 
    247                 if self.prog[i].name == "MultiMode": 
    248                     for j in range(len(self.prog[i].mprog)): 
    249                         if tr != -1: 
    250                             self.prog[i].mprog[j].do_track_change(tr) 
    251                  
    252                         if sc != -1: 
    253                             self.prog[i].mprog[j].do_scene_change(sc) 
    254                      
    255                 else: 
    256                     if tr != -1: 
    257                         self.prog[i].do_track_change(tr) 
    258                  
    259                     if sc != -1: 
    260                         self.prog[i].do_scene_change(sc) 
    261                          
    262         if tr != -1 or sc != -1: 
    263             self.cur_sel() 
    264221 
    265222    def cur_sel(self): 
    266         if self.prog[self.mode].name != "Scale" and self.prog[self.mode].name != "Drum Rack": 
     223        no_up = ["Scale", "Drum Rack", "External"] 
     224        if self.prog[self.mode].name not in no_up: 
    267225            if self.prog[self.mode].name == "MultiMode": 
    268226                for j in range(len(self.prog[self.mode].mprog)): 
    269227                    n = self.prog[self.mode].mprog[j].name 
    270                     if n != "Scale" and n != "Drum Rack" and n != "MultiMode": 
     228                    if n not in no_up and n != "MultiMode": 
    271229                        self.prog[self.mode].mprog[j].update_selection() 
    272230            else: 
     
    367325             
    368326        if self._menu == 1: 
    369             cols[self.width-1] = self._int[self.width-1] 
    370              
     327            cols[self.width-1] = self._mi 
     328                         
    371329        for i in range(len(cols)): 
    372             if cols[i] != self._buffer[i]: 
    373                 if self.height > 8: 
    374                     self.oscServer.sendOSC(self.prefix + "/led_col", (i, cols[i] & 255, (cols[i] & 65280) >> 8)) 
    375                 else: 
    376                     self.oscServer.sendOSC(self.prefix + "/led_col", (i, cols[i])) 
    377              
    378                 self._buffer[i] = cols[i] 
     330            #if cols[i] != self._buffer[i]: 
     331            if self.height > 8: 
     332                self.oscServer.sendOSC(self.prefix + "/led_col", (i, cols[i] & 255, (cols[i] & 65280) >> 8)) 
     333            else: 
     334                self.oscServer.sendOSC(self.prefix + "/led_col", (i, cols[i])) 
     335             
     336            self._buffer[i] = cols[i] 
    379337                 
    380338        #self.oscServer.sendOSC(self.prefix + "/frame", (self._menu == 1 and self._int or cols)) 
     
    382340        current = self.prog[self.mode].lcd 
    383341        if current[0] != self._lcdbuffer[0] or current[1] != self._lcdbuffer[1] or reset == 1: 
    384             self.oscServer.sendOSC(self.prefix + "/lcd", (current[0].ljust(40) + current[1].ljust(40))) 
     342            self.oscServer.sendOSC(self.prefix + "/lcd", (current[0].ljust(self.lcd_size)[0:self.lcd_size] + current[1].ljust(self.lcd_size)[0:self.lcd_size])) 
    385343            self._lcdbuffer = current 
    386             self.log("\n'" + current[0].ljust(40) + "'" + "\n" + "'" + current[1].ljust(40) + "'") 
     344            self.log("\n'" + current[0].ljust(self.lcd_size) + "'" + "\n" + "'" + current[1].ljust(self.lcd_size) + "'") 
    387345         
    388346        if self.oscServer: 
     
    410368                else: 
    411369                    self._menu = 1 
    412                     self._int[self.width - 1] = 1 << (self.height - 1) | 1 << self.mode 
     370                    self._mi = 1 << (self.height - 1) | 1 << self.mode 
    413371                    self.prog[self.mode].build_lcd(1) 
    414372 
     
    420378                    self.mode = y 
    421379                    self.prog[self.mode].build_lcd(1) 
    422                     self._int[self.width -1] = 1 << (self.height - 1) | 1 << self.mode 
     380                    self._mi = 1 << (self.height - 1) | 1 << self.mode 
    423381                                         
    424382            elif v == 0: 
     
    506464            self.log("Limits Scenes: " + str(scenes) + "sc init " + str(self.sc) + " scene offset: " + str(self.scene) + " scene width: " + str(self.sheight))     
    507465     
    508     def fx_swap(self): 
    509         if (self._fx_swap == 1): 
    510             self.sc = self._old_scene 
    511             self.tr = 7 
    512          
    513             self.limits() 
    514          
    515             self._fx_swap = 0 
    516             self.song().view.selected_track = self.song().visible_tracks[self.track + self.twidth - 1] 
    517          
    518         else: 
    519             self._old_scene = self.scene 
    520             self.sc = 129 
    521              
    522             self._old_track = self.track 
    523             self.tr = 0 
    524              
    525             self.limits() 
    526              
    527             self._fx_swap = 1 
    528             self.song().view.selected_track = self.song().visible_tracks[self.track] 
    529          
    530         self.song().view.selected_scene = self.song().scenes[self.scene] 
    531          
    532         self.log("FX Swap: " + str(self._fx_swap) + " Scene: " + str(self.scene) + " Track: " + str(self.track)) 
    533          
    534466###################################################################### 
    535467## Helpers 
     
    556488        line2 = "" 
    557489        tracks = self.song().visible_tracks 
    558         for i in range(self.twidth): 
    559             tid = i + self.track 
    560             tr = self.trunc_string(str(tracks[tid].name), 4) 
    561             line2 += str(tr) + "|"    
     490        for i in range(len(tracks)): 
     491            if i < self.lcd_width: 
     492                tid = i + self.track 
     493                tr = self.trunc_string(str(tracks[tid].name), 4) 
     494                line2 += str(tr) + "|"    
    562495             
    563496        return [name + (arrow and " >>" or ""), line2]     
  • trunk/LiveControl/Looper.py

    r56 r61  
    291291            line1 = "" 
    292292            line2 = "" 
    293             for i in range(self.twidth): 
     293            tracks = self.song().visible_tracks 
     294            for i in range(len(tracks)): 
    294295                tr = i + self.track 
    295                 if self.visible_tracks.has_key(tr): 
     296                if i < self.lcd_width: 
    296297                    if self.visible_tracks[tr].cid > -1: 
    297298                        tt = "%.2f|" % (self.visible_tracks[tr].length / (self.sindex[self.visible_tracks[tr].step_size] * self.height)) 
     
    302303                        line1 += "    |" 
    303304                        line2 += "    |" 
    304                 else: 
    305                     line1 += "    |" 
    306                     line2 += "    |" 
    307  
    308             self.lcd = [line1 + "     ",line2 + "     "] 
     305 
     306            self.lcd = [line1,line2] 
    309307         
    310308    def do_bg(self): 
  • trunk/LiveControl/MidiFader.py

    r49 r61  
    226226            master = self.song().master_track 
    227227            tracks = self.song().visible_tracks 
    228             for i in range(self.width - 1): 
     228            for i in range(self.lcd_width): 
    229229                tid = i + (self.bank * (self.width - 1)) 
    230230                (rid, pid) = self._get_ids(self.bank, i) 
  • trunk/LiveControl/MultiMode.py

    r55 r61  
    9191            self.mprog[i].width  = self.modes[self.mode][0] + wplus 
    9292            self.mprog[i].height = self.modes[self.mode][1] + hplus 
     93             
     94            if self.mode == 0: 
     95                self.mprog[i].lcd_width = int(self.lcd_width / 2) 
     96                self.mprog[i].lcd_size = int(self.lcd_size / 2) 
     97             
    9398            self.mprog[i].limits() 
    9499             
     
    150155         
    151156            if self.mode == 0: 
    152                 self.lcd = [self.mprog[0].lcd[0][0:20] + self.mprog[1].lcd[0][0:20], self.mprog[0].lcd[1][0:20] + self.mprog[1].lcd[1][0:20]] 
     157                if self.width - 1 > self.lcd_width: 
     158                    self.lcd = [self.mprog[0].lcd[0].ljust(self.lcd_size)[0:self.lcd_size], self.mprog[0].lcd[1].ljust(self.lcd_size)[0:self.lcd_size]] 
     159                else: 
     160                    sz = self.lcd_size / 2 
     161                    self.lcd = [self.mprog[0].lcd[0].ljust(sz)[0:sz] + self.mprog[1].lcd[0].ljust(sz)[0:sz], self.mprog[0].lcd[1].ljust(sz)[0:sz] + self.mprog[1].lcd[1].ljust(sz)[0:sz]] 
    153162            else: 
    154163                self.lcd = self.mprog[0].lcd 
  • trunk/LiveControl/Scale.py

    r53 r61  
    211211                notes += " Hold" 
    212212                 
    213             self.lcd = [rk.rjust(40),notes.ljust(40)] 
     213            self.lcd = [rk,notes] 
    214214 
    215215    def get_note(self, x, y): 
  • trunk/LiveControl/TrackControl.py

    r55 r61  
    246246            tracks = self.song().return_tracks 
    247247            for i in range(len(tracks)): 
    248                 line2 += self.trunc_string(str(tracks[i].name), 4) + "|" 
     248                if i < self.lcd_width: 
     249                    line2 += self.trunc_string(str(tracks[i].name), 4) + "|" 
    249250             
    250251            self.lcd = self.lcd_tracks(line2, 0) 
  • trunk/LiveControl/TrackFilter.py

    r55 r61  
    191191             
    192192            tracks = self.song().visible_tracks 
    193             for i in range(self.twidth): 
    194                 tid = i + self.track                   
    195                 key = int(self.device_cache[tid][0]) 
    196                  
    197                 self.log("track: " + str(i) + " key: " +str(key)) 
    198                  
    199                 line1 += key == 0 and "    |" or "%.2f|" % ((float(self.device_cache[tid][2]) / float(127)) * 3.00) 
    200                  
    201                 if self.types.has_key(key): 
    202                     line2 += self.types[key].center(4) + "|" 
    203                 else: 
    204                     line2 += "".ljust(4) + "|" 
     193            for i in range(len(tracks)): 
     194                if i < self.lcd_width: 
     195                    tid = i + self.track                   
     196                    key = int(self.device_cache[tid][0]) 
     197                 
     198                    self.log("track: " + str(i) + " key: " +str(key)) 
     199                 
     200                    line1 += key == 0 and "    |" or "%.2f|" % ((float(self.device_cache[tid][2]) / float(127)) * 3.00) 
     201                 
     202                    if self.types.has_key(key): 
     203                        line2 += self.types[key].center(4) + "|" 
     204                    else: 
     205                        line2 += "    |" 
    205206                     
    206207            self.lcd = [line1,line2] 
  • trunk/LiveTelnet/LiveTelnet.py

    r57 r61  
    4343 
    4444import Live 
    45 import SocketServer, StringIO, code 
     45import StringIO, code 
    4646from Logger import Logger 
    4747 
Note: See TracChangeset for help on using the changeset viewer.