SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

Ichigo鉄琴で「ロンドン橋落ちた」

※この記事は「IchigoJam Advent Calendar 2018」にエントリーしています。

先日作った「Ichigo鉄琴」で、マザーグースの有名な曲「ロンドン橋落ちた」(London Bridge Is Falling Down)を叩いてみました。
ただ叩くだけでは面白くないので、ちょっとエモい動きも加えました。
(前作「Ichigoチャイム」のウォームアップが大人気だったので 笑)
動画はこちら。

【IchigoJam】ロンドン橋落ちた

プログラム

以下のメインプログラムをIchigoJam親機と子機のスロット0に、曲データをスロット1に入れて、親機と子機をボタンを押しながら電源ONして自動起動します。親機のボタンを押すと演奏を開始します。

メインプログラム(親機)

1 '*Tekkin London P
2 CLV:LED 1:WAIT 60:UART 0
3 LET [90],200,110,207,115,212,120,220,125:M=165:N=135
4 G=5:LRUN 1
5 @RESTART
6 FOR P=2 TO 5:PWM P,[86+P*2]:NEXT
7 OUT 0:E=0
8 IF !BTN() CONT
9 LED 1:CLK:UART 1:?"*":UART 0
10 @PLAYLOOP
11 FOR I=0 TO L
12 X=[I]&15:Z=[I]&768/256:E=!E
13 B=1:FOR A=1 TO 7 STEP 2
14 P=A/2+2
15 IF A=X GSB @ATTACK ELSE GSB @EMO
16 NEXT
17 WAIT 12
18 B=0:FOR A=1 TO 7 STEP 2
19 P=A/2+2
20 GSB @ATTACK
21 NEXT
22 WAIT 3:IF Z=1 WAIT 15
23 NEXT
24 FOR P=2 TO 5
25 PWM P,N:NEXT
26 WAIT 180
27 GOTO @RESTART
28 @ATTACK
29 PWM P,[86+P*2+B]:RTN
30 @EMO
31 IF E PWM P,M ELSE PWM P,[86+P*2]
32 RTN

メインプログラム(子機)

1 '*Tekkin London C
2 CLV:CLK:LED 1:WAIT 60:UART 1,1
3 LET [90],62,155,75,170,62,160,70,170:M=115:N=145
4 G=5:LRUN 1
5 @RESTART
6 FOR P=2 TO 5:PWM P,[86+P*2]:NEXT
7 OUT 0:E=0
8 IF INKEY()!=42 CONT
9 CLK:LED 1
10 @PLAYLOOP
11 FOR I=0 TO L
12 X=[I]&15:Z=[I]&768/256:E=!E
13 B=1:FOR A=2 TO 8 STEP 2
14 P=A/2+1
15 IF A=X GSB @ATTACK ELSE GSB @EMO
16 NEXT
17 WAIT 12
18 B=0:FOR A=2 TO 8 STEP 2
19 P=A/2+1
20 GSB @ATTACK
21 NEXT
22 WAIT 3:IF Z=1 WAIT 15
23 NEXT
24 FOR P=2 TO 5
25 PWM P,N:NEXT
26 WAIT 180
27 GOTO @RESTART
28 @ATTACK
29 PWM P,[86+P*2+B]:RTN
30 @EMO
31 IF E PWM P,M ELSE PWM P,[86+P*2]
32 RTN

曲データ「ロンドン橋落ちた」(London Bridge Is Falling Down)

10 '*London Bridge
20 LET [ 0],#205,#206,#205,#204,#203,#204,#205,#200
30 LET [ 8],#202,#203,#204,#200,#203,#204,#205,#200
40 LET [16],#205,#206,#205,#204,#203,#204,#205,#200
50 LET [24],#202,#200,#205,#200,#203,#201,#200,#200
60 LET [32],#205,#206,#205,#204,#203,#204,#205,#200
70 LET [40],#202,#203,#204,#200,#203,#204,#205,#200
80 LET [48],#205,#206,#205,#204,#203,#204,#205,#200
90 LET [56],#202,#200,#205,#200,#203,#201,#200,#200
100 L=63
110 LRUN 0,G

※他のマレットのエモい動きと合わせるために、全て8分音符と8分休符にしています。それぞれの音で、マレットが下がる/上がるを交互にくり返します。