MacroPad改造(その1)
以前マクロパッドを購入してようやくいじる余裕ができたので、
プログラム書いてみた。
経緯
以前からの腱鞘炎でライブコーディングツール作ったりしていたが、
その前にまともにノートの入力ができないのはいずれにしても困る。
このため、キーボードの形をしてノートを自由に入力できるツールを作る予定。
用意
- RP2040 Macropad(本来なら自分で設計してもいいんだけど、まずはお試し)
 - CircuitPython
 - 各種ライブラリ
 
コード
割と適当に書いても動くので便利。
import board
import time
import random
import usb_midi
import adafruit_midi
import simpleio
from adafruit_midi.control_change import ControlChange
from adafruit_midi.note_off import NoteOff
from adafruit_midi.note_on import NoteOn
from adafruit_midi.pitch_bend import PitchBend
from digitalio import DigitalInOut, Pull
from adafruit_macropad import MacroPad
from adafruit_display_text import label
button = [DigitalInOut(board.KEY1),
    DigitalInOut(board.KEY2),
    DigitalInOut(board.KEY3),
    DigitalInOut(board.KEY4),
    DigitalInOut(board.KEY5),
    DigitalInOut(board.KEY6),
    DigitalInOut(board.KEY7),
    DigitalInOut(board.KEY8),
    DigitalInOut(board.KEY9),
    DigitalInOut(board.KEY10),
    DigitalInOut(board.KEY11),
    DigitalInOut(board.KEY12),
]
# ノート管理
note=[0,0,0,0,0,0, 0,0,0,0,0,0]
note_vel=[0,0,0,0,0,0, 0,0,0,0,0,0]
note_state=[False,False,False,False,False,False,
False,False,False,False,False,False]
for i in range(12):
    button[i].pull = Pull.UP # 内部のプルアップ抵抗を有効化する
    note[i]=0
    note_vel[i]=0
    print(button[i].value)
led = simpleio.DigitalOut(board.LED)
# MIDIポートの入出力についてデバイス取得
midi = adafruit_midi.MIDI(
    midi_out=usb_midi.ports[1], out_channel=0
)
while True:
    nt=0
    for i in range(12):
        if button[i].value==False:
            if note_state[i]==False:
                nt=i+45
                midi.send(NoteOn( nt, 120)) 
                note_state[i]=True 
        else:
            if note_state[i]==True:
                nt=i+45
                midi.send(NoteOff(nt, 120))
                note_state[i]=False
