|
|
@ -13,6 +13,7 @@ from adafruit_midi.note_off import NoteOff |
|
|
|
from adafruit_midi.note_on import NoteOn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def init(): |
|
|
|
print("init") |
|
|
|
global midi |
|
|
@ -42,15 +43,32 @@ def subdiv(clk_bar, clk_bar_old, div, note_nr): |
|
|
|
clk_sub1_diff = clk_sub1 - clk_sub1_old |
|
|
|
if clk_sub1_diff < 0: |
|
|
|
trig(note_nr) |
|
|
|
# note_buffer_on.append(NoteOn(note_nr, 127)) |
|
|
|
# note_buffer_off.append(NoteOff(note_nr, 127)) |
|
|
|
|
|
|
|
|
|
|
|
def div_to_ns(div) -> int: |
|
|
|
# trig(note_nr) |
|
|
|
clk_pulse_per_second = 1000000000 |
|
|
|
beat_per_bar = 4 |
|
|
|
bar_ns = beat_per_bar / bpm * 60 * clk_pulse_per_second |
|
|
|
return bar_ns / div |
|
|
|
|
|
|
|
|
|
|
|
def md_note(nr): |
|
|
|
'''1-16''' |
|
|
|
md_notes = [ 36,38,40,41,43,45,47,48,50,52,53,55,57,59,60,62 ] |
|
|
|
nr = min(nr,16) |
|
|
|
nr = max(nr,1) |
|
|
|
return md_notes[nr-1] |
|
|
|
|
|
|
|
|
|
|
|
def md_selftest(): |
|
|
|
for i in range(1,16 + 1): |
|
|
|
trig(md_note(i)) |
|
|
|
time.sleep(0.2) |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
print("main") |
|
|
|
bar_ns = div_to_ns(1) |
|
|
@ -60,15 +78,26 @@ def main(): |
|
|
|
clk_bar_old = clk_bar |
|
|
|
clk_bar = time.monotonic_ns() % bar_ns |
|
|
|
|
|
|
|
# for i in range(1,4): |
|
|
|
# subdiv(clk_bar, clk_bar_old, i, 36+i) |
|
|
|
subdiv(clk_bar, clk_bar_old, 1, 36) |
|
|
|
subdiv(clk_bar, clk_bar_old, 2, 37) |
|
|
|
subdiv(clk_bar, clk_bar_old, 4, 38) |
|
|
|
subdiv(clk_bar, clk_bar_old, 8, 39) |
|
|
|
subdiv(clk_bar, clk_bar_old, 16, 40) |
|
|
|
# md_selftest() |
|
|
|
|
|
|
|
# for i in range(1,16+1): |
|
|
|
# subdiv(clk_bar, clk_bar_old, i, md_note(i)) |
|
|
|
subdiv(clk_bar, clk_bar_old, 1, md_note(1)) |
|
|
|
subdiv(clk_bar, clk_bar_old, 8, md_note(2)) |
|
|
|
|
|
|
|
|
|
|
|
# for i in note_buffer_on: |
|
|
|
# midi.send(i) |
|
|
|
# |
|
|
|
# for i in note_buffer_off: |
|
|
|
# midi.send(i) |
|
|
|
# |
|
|
|
# note_buffer_on.clear() |
|
|
|
# note_buffer_off.clear() |
|
|
|
|
|
|
|
bpm = 80 |
|
|
|
bpm = 120 |
|
|
|
note_buffer_on = [] |
|
|
|
note_buffer_off = [] |
|
|
|
|
|
|
|
init() |
|
|
|
main() |
|
|
|