MacroPad改造(その1)
以前マクロパッドを購入してようやくいじる余裕ができたので、
プログラム書いてみた。
経緯
以前からの腱鞘炎でライブコーディングツール作ったりしていたが、
その前にまともにノートの入力ができないのはいずれにしても困る。
このため、キーボードの形をしてノートを自由に入力できるツールを作る予定。
用意
- RP2040 Macropad(本来なら自分で設計してもいいんだけど、まずはお試し)
- CircuitPython
- 各種ライブラリ
コード
割と適当に書いても動くので便利。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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 |