Browse Source

picadae_api.py,picadae_shell.py : Added 'flags' parameter and 'make_scale' API.

master
kevin 3 years ago
parent
commit
a3cda0b908
2 changed files with 51 additions and 2 deletions
  1. 47
    1
      control/app/picadae_api.py
  2. 4
    1
      control/app/picadae_shell.py

+ 47
- 1
control/app/picadae_api.py View File

@@ -17,7 +17,8 @@ class TinyOp(Enum):
17 17
     writeOp      = 5
18 18
     writeTableOp = 6
19 19
     holdDelayOp  = 7
20
-    invalidOp    = 8
20
+    flagsOp      = 8
21
+    invalidOp    = 9
21 22
     
22 23
 
23 24
 class TinyRegAddr(Enum):
@@ -40,7 +41,22 @@ class TinyRegAddr(Enum):
40 41
     kMaxAllowTmrAddr = 16
41 42
     kDelayCoarseAddr = 17
42 43
     kDelayFineAddr   = 18
44
+    kFlagsAddr       = 19
45
+    
46
+class TinyRegAddr0(Enum):
47
+    kRdRegAddrAddr   =  0
48
+    kRdSrcAddr       =  1
49
+    kWrRegAddrAddr   =  2
50
+    kWrDstAddr       =  3
51
+    kAttkDutyAddr    =  4
52
+    kAttkDurHiAddr   =  5
53
+    kAttkDurLoAddr   =  6
54
+    kDecayStepAddr   =  7
55
+    kDecayDecrAddr   =  8
56
+    kPwmDutyAddr     =  9
57
+    kErrorCodeAddr   = 10
43 58
 
59
+    
44 60
 class TinyConst(Enum):
45 61
     kRdRegSrcId    = TinyRegAddr.kRdRegAddrAddr.value    # 0
46 62
     kRdTableSrcId  = TinyRegAddr.kRdTableAddrAddr.value  # 1
@@ -263,6 +279,14 @@ class Picadae:
263 279
         
264 280
         return res
265 281
         
282
+    def set_flags( self, midi_pitch, flags ):
283
+        return  self.call_op( midi_pitch, TinyOp.flagsOp.value, [int(flags)] )
284
+        #return  self.call_op( midi_pitch, 5, [int(flags)] )
285
+
286
+    def get_flags( self, midi_pitch, time_out_ms=250 ):        
287
+         return self.block_on_picadae_read_reg( midi_pitch, TinyRegAddr.kFlagsAddr.value, byteOutN=1, time_out_ms=time_out_ms )
288
+         #return self.block_on_picadae_read_reg( midi_pitch, TinyRegAddr.kAttkDutyAddr.value, byteOutN=1, time_out_ms=time_out_ms )
289
+     
266 290
     
267 291
     def set_velocity_map( self, midi_pitch, midi_vel, pulse_usec ):
268 292
         coarse,fine = self._usec_to_coarse_and_fine( pulse_usec )
@@ -321,7 +345,18 @@ class Picadae:
321 345
             self.make_note( midi_pitch, base_atk_us + i*delta_us, dur_ms )
322 346
             time.sleep( dur_ms / 1000.0 )
323 347
         return Result()
348
+    
349
+    def make_scale( self, pitch0, pitch1, atk_us, dur_ms ):
324 350
 
351
+        if pitch0>pitch1:
352
+            printf("pitch0 must be <= pitch1")
353
+        else:
354
+            for pitch in range(pitch0,pitch1+1):            
355
+                self.make_note( pitch, atk_us, dur_ms )
356
+                time.sleep( dur_ms / 1000.0 )
357
+            return Result()
358
+            
359
+    
325 360
     def set_log_level( self, log_level ):
326 361
         self.log_level = log_level
327 362
         return Result()
@@ -344,6 +379,17 @@ class Picadae:
344 379
 
345 380
         x = coarse*coarse_usec + fine*self.prescaler_usec
346 381
         
382
+
383
+
384
+        ##### 
385
+        # n = int(16e6*usec/(256*1e6))
386
+
387
+        # coarse = n >> 8;
388
+        # fine   = n & 0xff;
389
+
390
+        # x = usec
391
+        ####
392
+
347 393
         print("C:%i F:%i : %i %i (%i)" % (coarse,fine, x, usec, usec-x ))
348 394
 
349 395
         return coarse,fine

+ 4
- 1
control/app/picadae_shell.py View File

@@ -27,9 +27,12 @@ class PicadaeShell:
27 27
             'f':{ "func":"get_pwm_freq",   "minN":1,  "maxN":1, "help":"pwm freq <pitch>"},
28 28
             'I':{ "func":"set_pwm_div",    "minN":2,  "maxN":2, "help":"pwm div <pitch> <div> div:2=2,3=4,4=8,(5)=16 1us,6=32,7=64,8=128,9=256,10=512 32us, 11=1024,12=2048,13=4096,14=8192,15=16384"},
29 29
             'i':{ "func":"get_pwm_div",    "minN":1,  "maxN":1, "help":"pwm div <pitch>"},
30
+            'A':{ "func":"set_flags",      "minN":2,  "maxN":2, "help":"set flags <pitch> <flags>"},
31
+            'a':{ "func":"get_flags",      "minN":1,  "maxN":1, "help":"get flags <pitch>"},
30 32
             'W':{ "func":"write_table",    "minN":1,  "maxN":1, "help":"write_table <pitch>"},
31 33
             'N':{ "func":"make_note",      "minN":3,  "maxN":3, "help":"note <pitch> <atkUs> <durMs>"},
32
-            'S':{ "func":"make_seq",       "minN":5,  "maxN":5, "help":"seq  <pitch> <atkUs> <durMs> <deltaUs> <note_count>"}, 
34
+            'S':{ "func":"make_seq",       "minN":5,  "maxN":5, "help":"seq  <pitch> <atkUs> <durMs> <deltaUs> <note_count>"},
35
+            'C':{ "func":"make_scale",     "minN":4,  "maxN":4, "help":"scale <pitch0> <pitch1> <atkUs> <durMs>"},
33 36
             'L':{ "func":"set_log_level",  "minN":1,  "maxN":1, "help":"log <level> (0-1)."}
34 37
             }
35 38
 

Loading…
Cancel
Save