FingerDrum をつくる(su120編)

最終更新日

FingerDrumかっこいい!

ちょっと興味があってAmazon Unlimitedで以下の本を読んでみた。

スカペンさんの動画もステキ。

https://www.youtube.com/channel/UC5_rrkJ5o2Ytix1zQNQFGTQ

なんか楽しそうと思って、実際にどんな楽器があるか調べて見る。

iRig Padsは、2万円。MPD218は、1万円強。

素人がGarageBand につないで、お試しするにはちょっとお高いかも。
とはいえ、楽器としてはお手軽な価格でもあるし、演奏も楽しそう。

あと、キーパッドの打ち込みって、反応や押し具合はどうなんだろう。。。

なら、自分でつくろう。キー2個のはできたんだから、自分でも作れるはず。

RPi Pico でmidi ドラム

RPi Pico でmidi ドラム

2021.06.15

ということで、 RPi pico と su120 でFingerDrumをつくる。

su120 4×4 keypad

いつも自作キーボードでお世話になるsu120を4×4 keypadにする。

4×4 の形に成形

  1. そのままだと5×4の基板のうち、不要部分をべきべきと削除。

  1. 4列目には他の基板からべきべきともってきた4×1の基板を取り付ける。(ネジ固定)

  2. 4列目のCOLをそれぞれ繋ぐ。

  3. 除去した 4列目のROW を PIN G3 に接続

  4. ロータリーエンコード共に除去したしまった D 列のCOLC6 に接続

これで、以下のPIN配線が利用可能となる。

ジャンパー設定をしないので、キースイッチ配置側からみると、こんな感じ。

keymatrix を検知する

su120 というか、QMKが動くようなkeymatrixは、以下のような仕組みになっている。

列(COL)

青い線は、COLに接続されていて、circuitpythonではこんな感じで、INPUT(PULL UP)で初期化する。

    col = digitalio.DigitalInOut(board.GP2)
    col.switch_to_input(pull=digitalio.Pull.UP)

PULL UP のおかげで、PINがどこにも接続されていないと key.value == True つまり、 PINの値がON となる

赤い配線をGND(OFF)にしておけば、スイッチをpressしてピンクの線がつながり、 key.value == False つまり、PINの値が False となる。

行(ROW)

前述の、 赤い配線をGND(OFF) というが大事。
つまり、4行のキーを全部調べるためには、1行づつ、GND(他は+)にして調べる。

プログラムでON/OFFを切り換えるため、PINの設定は、OUTPUTで初期化する

    row1 = digitalio.DigitalInOut(borad.GP6)
    row1.direction = digitalio.Direction.OUTPUT
    row2 = digitalio.DigitalInOut(borad.GP7)
    row2.direction = digitalio.Direction.OUTPUT

1×2 の keymatrix の検知はこんな感じ。

row1.value = 0 # GND設定
row2.value = 1
# True: release, False:press
is_row1_not_press = col.value

row1.value = 1
row2.value = 0 # GND設定
# True: release, False:press
is_row2_not_press = col.value

print("row1 not press {}, row2 not press {}".format(is_row1_not_press, is_row2_not_press))

続き。

FingerDrum をつくる(MIDI編)

FingerDrum をつくる(MIDI編)

2022.02.12

シェアする