Trellis で beat machine をつくる(Trellis Setup編)
Metronome が欲しい。
FingerDrumをつくって練習中。
もちろん、へたくそなのはしょうがない。
ただ、GarageBandで録画してタイミングを調べると、だんだんずれる。どんどん速くる。(走るというらしい)
これを直すためには、いい Metronome がいいじゃないかと、探したけど、しっくりこない。
GarageBandはクリック音が好みじゃない。というか、聞こえにくく、焦れば焦るほどクリック音をロストする。
iPad や iPhone で無料のものはあるけど、しっくりこない。
ググってみると、GarageBandではクリック音を変更できないので、好きな音でMetronome代わりのMIDIデータを打ち込めばいいとある。
それもなあ、と自作してみる。
それって beat machine
視覚的にリズムを設定したいなら、いわゆるbeat machine をつくればいいはず。
以前に購入Trellis(8x8) でやってみる。
こんな感じでボタンを押してlight on/off を切り換え、onのボタンの位置でMIDI にデータを送るようにしよう。
例えば、バスドラムの行(8番目)、左から1番目のみ点灯すると、
- 100BPM = 1分間に100回
- 4/4拍子
1拍の時間
= 60秒/100回 = 0.6秒
4分音符となり、タン・タン・タン・タン
と、0.6秒毎にバスドラムが鳴る。
バスドラムの行(8番目)、左から1番目と4番目を点灯すると、
8分音符となり、タンタンタンタン
と、0.3秒毎にバスドラムが鳴る。
1個おきで、16音符。全灯で32音符となるが、0.075秒毎さすがに聞き取れないし、再生のリズムが安定しない。たぶん、MIDIデータの送信に時間がかかりすぎて、うまくタイミングがとれない。
実際には、弾きたい曲の半分のBPMで、最短16分音符の2拍節分の演奏をするのがいいかも。
Trellis のsetup
砲丸型のLEDをハンダ付け
8x8x4= 64個
のLEDをひたすらハンダ付けする。
今回は、4色を4x4のパーツ毎に設定。
制御はI2Cなので楽ちんだけど、ハンダ付けつらい。
あと、安物のLEDのせいか同色16個でも明るさがまちまち。
あまりに暗いモノは、ましなやつに取り替えた。
パーツ4個を繋げる
各パーツのSDA,SCL,GND,VCC,INTをそれぞれ2箇所ハンダで繋げる。
4個がI2C上、それぞれ別のアドレスになるように、A0,A1,A2 のジャンパーをショートする。
A0=1
, A1=2
, A2=4
というなんとも2進数的な設定で、例えばフルオープンで、基本の 0x70
。
上図の写真では、3個全部ショートで、0x70 + 1 + 2 + 4 = 0x77
。
A0のみショートで、 0x70 + 1 = 0x71
。
A0 + A1 ショートで、 0x70 + 1 + 2 = 0x73
。
つまり、3bits分、最大8個のTrellis を繋げるらしい。
テスト
結局、こんな感じに配線。
import board
from adafruit_trellis import Trellis
# GP0, GP1 にI2Cを接続。INTは利用せず。
sda=board.GP0
scl=board.GP1
i2c = busio.I2C(scl, sda)
trellis = Trellis(i2c, [0x77, 0x72, 0x73, 0x71])
trellis.led[0] = True
これで一番左上が点灯する。
点灯やボタンダウンの設定は、こんな感じのキーマップになる。
0 1 2 3 16 17 18 19
4 5 6 7 21 22 23 24
8 9 10 11 25 26 27 28
12 13 14 15 29 30 31 32
32 33 34 35 48 49 50 51
36 37 38 39 52 53 54 55
40 41 42 43 56 57 58 59
44 45 46 47 60 61 62 63
つまり、一番左下を点灯したい場合、こうなる。
trellis.led[44] = True
以下へ続く。