Changeset 80


Ignore:
Timestamp:
13/04/10 08:01:51 (7 years ago)
Author:
st8
Message:

LiveControl_TO: Updated sequencer

Location:
trunk/LiveControl_TO
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LiveControl_TO/LiveControl.py

    r79 r80  
    8181            ipad = 0 
    8282             
     83        self.ipad = ipad 
     84         
    8385        if ipad == 1: 
    8486            self.height = 9 
  • trunk/LiveControl_TO/Program.py

    r73 r80  
    125125 
    126126    def trunc_string(self, display_string, length): 
     127        if self.parent.ipad == 1: 
     128            length += 4 
     129     
    127130        if (not display_string): 
    128131            return (' ' * length) 
  • trunk/LiveControl_TO/Sequencer.py

    r79 r80  
    2222from Program import Program 
    2323import Live 
     24import time 
    2425 
    2526class Sequencer(Program): 
     
    5657        self.first_midi() 
    5758         
     59        for i in range(16): 
     60            self.oscServer.sendOSC('/4/led' + str(i+1), 0) 
     61            self.waste_time() 
     62         
    5863    def first_midi(self): 
    5964        tracks = self.song().visible_tracks 
     
    121126         
    122127    def update_vel_matrix(self): 
    123         for i in range(16): 
    124             self.oscServer.sendOSC('/4/multifader1/' + str(i+1), 0)         
    125      
     128        #for i in range(16): 
     129        #    self.oscServer.sendOSC('/4/multifader1/' + str(i+1), 0)         
     130     
     131        self.log('update vels') 
    126132        for i in range(16): 
    127133            pos = self.pos(i) 
    128134             
     135            found = 0 
    129136            if self.note_cache.has_key(pos): 
    130137                for nt in self.note_cache[pos]: 
    131138                    if nt[0] == self.last_note: 
    132                         self.oscServer.sendOSC('/4/multifader1/' + str(i+1), nt[1]/127.0)  
    133          
     139                        self.oscServer.sendOSC('/4/multifader1/' + str(i+1), nt[1]/127.0) 
     140                        found = 1  
     141         
     142            if found == 0: 
     143                self.oscServer.sendOSC('/4/multifader1/' + str(i+1), 0)  
     144           
     145    def waste_time(self): 
     146        # Seems to be needed to space the osc messages to TouchOSC 
     147        m = 0 
     148        for k in range(10000): 
     149            m += k 
     150                             
    134151    def update_matrix(self): 
    135152        if self.fold == 1: 
    136153            folded_notes = self.note_keys()     
    137154     
    138         for i in range(1,9): 
    139             for j in range(1,17): 
     155        for i in range(0,9): 
     156            for j in range(0,17): 
    140157                self.oscServer.sendOSC('/4/multitoggle1/' + str(i) + '/' + str(j), 0)     
     158                self.waste_time() 
     159     
     160        self.log('updating matrix') 
    141161     
    142162        for i in range(16): 
     
    157177                        if (self.note_cache[pos][j][0] - self.offset >= 0) and (self.note_cache[pos][j][0] - self.offset < 8): 
    158178                            val = self.note_cache[pos][j][0] - self.offset 
     179                            self.log("Note: " + str(val) + "  " + str(i)) 
    159180                            self.oscServer.sendOSC('/4/multitoggle1/' + str(val+1) + '/' + str(i+1), 1) 
    160181 
     
    171192                    if pos != self.last: 
    172193                        self.oscServer.sendOSC('/4/led' + str(i+1), 1) 
    173                         #self.oscServer.sendOSC('/4/multitoggle2/1/' + str(i+1), 1) 
    174                         #self.oscServer.sendOSC('/4/multitoggle2/1/' + str(i+1 == 1 and 16 or i), 0) 
    175                         #self.oscServer.sendOSC('/4/multitoggle2/1/' + str(i-1), 0) 
    176                          
    177194                        self.last = pos 
    178195                else: 
    179196                    self.oscServer.sendOSC('/4/led' + str(i+1), 0) 
     197                     
     198                self.waste_time() 
    180199     
    181200    def do_bg(self): 
     
    202221        self.oscServer.sendOSC('/4/nlabel3', 'Down') 
    203222        self.oscServer.sendOSC('/4/nlabel4', 'Up') 
    204         self.oscServer.sendOSC('/4/nlabel5', 'Fold') 
     223        self.oscServer.sendOSC('/4/nlabel5', (self.fold == 1 and 'Unfold' or 'Fold')) 
    205224         
    206225        if self.sel_clip != None: 
     
    215234        self.log(str(type)) 
    216235        if type == 'multifader': 
    217             self.update_vel(self.last_note, self.pos(xy[0]-1), val*127.0)             
     236            if self.sel_clip == None: 
     237                self.oscServer.sendOSC('/4/multifader1/' + str(xy[0]), 0)  
     238                return 
     239                 
     240            pos = self.pos(xy[0]-1) 
     241            found = 0 
     242            for nt in self.real_notes: 
     243                if nt[0] == self.last_note and nt[1] == pos: 
     244                    found = 1 
     245                     
     246            if found == 0: 
     247                self.oscServer.sendOSC('/4/multifader1/' + str(xy[0]), 0)  
     248                return 
     249         
     250            self.update_vel(self.last_note, pos, val*127.0)             
    218251         
    219252        elif type == 'nav': 
     
    252285                        if self.offset < 127 - self.height - 2: 
    253286                            self.offset += 1 
     287                            self.get_note_line() 
    254288                         
    255289                    # Note Offset Down 
     
    257291                        if self.offset > 0: 
    258292                            self.offset -= 1 
     293                            self.get_note_line() 
    259294                         
    260295                    # Bank Up 
     
    314349                            self.fold = 0 
    315350                            self.update_matrix() 
     351                            self.oscServer.sendOSC('/4/nlabel5', 'Fold') 
    316352                             
    317353                        else: 
    318354                            self.fold = 1   
    319355                            self.update_matrix() 
     356                            self.oscServer.sendOSC('/4/nlabel5', 'Unfold') 
    320357                         
    321358                        self.offset = 60 
     
    326363                            if self.sel_clip.is_playing == 1: 
    327364                                self.sel_clip.stop() 
     365                                self.oscServer.sendOSC('/4/nlabel5', 'Start') 
    328366                            else: 
    329367                                self.sel_clip.fire() 
    330                      
     368                                self.oscServer.sendOSC('/4/nlabel5', 'Stop') 
     369                                                     
    331370        if type == 'multitoggle': 
    332371            x = xy[0] - 1 
    333372            y = xy[1] - 1 
     373 
     374            if self.sel_clip == None: 
     375                self.oscServer.sendOSC('/4/multitoggle1/' + str(xy[1]) + '/' + str(xy[0]), 0) 
     376                return 
    334377 
    335378            pos = self.pos(x) 
     
    345388                else: 
    346389                    note = -1 
     390                    self.log('bad note') 
     391                    self.oscServer.sendOSC('/4/multitoggle1/' + str(xy[1]) + '/' + str(xy[0]), 0) 
    347392            else: 
    348393                note = y + self.offset 
     
    363408                    self.add_note(pos,note) 
    364409                     
     410            self.get_note_line() 
     411             
    365412        self.log(str(xy)) 
    366413 
     
    444491                self.oscServer.sendOSC('/4/time' + str(i+1),  " ".ljust(20)) 
    445492     
     493    def get_note_line(self): 
     494        for i in range(self.height): 
     495            if i == 0: 
     496                self.oscServer.sendOSC('/4/label' + str(i+1),  self.to_note(self.last_note))             
     497            else: 
     498                self.oscServer.sendOSC('/4/label' + str(i+1),  self.to_note(self.offset+i-1)) 
     499     
     500    def to_note(self, note): 
     501        notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#'] 
     502         
     503        return notes[note % 12] 
     504     
    446505    def beat_time(self, time): 
    447506        beats = int(time % 4) 
Note: See TracChangeset for help on using the changeset viewer.