소스 검색

Added make_seq() to picadae_api.py and picadae_shell.py

master
kevin.larke 4 년 전
부모
커밋
0719427eb5
2개의 변경된 파일14개의 추가작업 그리고 3개의 파일을 삭제
  1. 12
    2
      control/app/picadae_api.py
  2. 2
    1
      control/app/picadae_shell.py

+ 12
- 2
control/app/picadae_api.py 파일 보기

@@ -275,6 +275,12 @@ class Picadae:
275 275
         time.sleep( dur_ms / 1000.0 )
276 276
         return self.note_off(midi_pitch)
277 277
 
278
+    def make_seq( self, midi_pitch, base_atk_us, dur_ms, delta_us, note_cnt ):
279
+        for i in range(note_cnt):
280
+            self.make_note( midi_pitch, base_atk_us + i*delta_us, dur_ms )
281
+            time.sleep( dur_ms / 1000.0 )
282
+        return Result()
283
+
278 284
     def set_log_level( self, log_level ):
279 285
         self.log_level = log_level
280 286
         return Result()
@@ -286,13 +292,17 @@ class Picadae:
286 292
         return vel
287 293
 
288 294
     def _usec_to_coarse_and_fine( self, usec ):
295
+
296
+        coarse_usec = self.prescaler_usec*255 # usec's in one coarse tick
289 297
         
290
-        coarse = int( usec / (self.prescaler_usec*255))
291
-        fine   = int((usec - coarse*self.prescaler_usec*255) / self.prescaler_usec)
298
+        coarse = int( usec / coarse_usec )
299
+        fine   = int((usec - coarse*coarse_usec) / self.prescaler_usec)
292 300
 
293 301
         assert( coarse <= 255 )
294 302
         assert( fine <= 255)
295 303
 
304
+        print("C:%i F:%i : %i " % (coarse,fine, coarse*coarse_usec + fine*self.prescaler_usec ))
305
+
296 306
         return coarse,fine
297 307
 
298 308
     def _send( self, opcode, i2c_addr, reg_addr, byteL  ):

+ 2
- 1
control/app/picadae_shell.py 파일 보기

@@ -21,7 +21,8 @@ class PicadaeShell:
21 21
             'f':{ "func":"get_pwm_freq", "minN":1,  "maxN":1, "help":"freq <pitch>"},
22 22
             'i':{ "func":"get_pwm_div",  "minN":1,  "maxN":1, "help":"div <pitch>"},
23 23
             'W':{ "func":"write_table",  "minN":1,  "maxN":1, "help":"write_table <pitch>"},
24
-            'N':{ "func":"make_note",    "minN":3,  "maxN":3, "help":"note <pitch> atkUs durMs"},
24
+            'N':{ "func":"make_note",    "minN":3,  "maxN":3, "help":"note <pitch> <atkUs> <durMs>"},
25
+            'S':{ "func":"make_seq",     "minN":5,  "maxN":5, "help":"seq  <pitch> <atkUs> <durMs> <deltaUs> <note_count>"}, 
25 26
             'L':{ "func":"set_log_level","minN":1,  "maxN":1, "help":"log <level> (0-1)."}
26 27
             }
27 28
 

Loading…
취소
저장