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