create every day - 福野泰介の一日一創

YAMAHA NSX-1 x IchigoJam eVY1とBASICを使ったお手軽DTM

2016/02/25 23:55:00
#IchigoJam #sound #midi 

意外と手軽に楽しめるMIDIポケットミクの直結を試みるも失敗。

ひとまず、ポケットミクでも使われている音源チップ、YAMAHA NSX-1を搭載したシールド「eVY1」を使ってDTMしてみました。


接続するのは3本だけ!MIDIケーブルを介さず、直結できます。


eVY1シールドを開封したらまずはピンソケットをハンダ付けします。使用するのは3ピンだけです。
接続ピン
上CN5-2 (MIDI-RXD)に、IchigoJamのTXDを接続
下CN2-5(5V)に、IchigoJamなどから5Vを接続(※VCCは3.3Vなので動作しません)
下CN2-6(または7)(GND)に、IchigoJamのGNDを接続

簡単ですね!あとはプログラムです。起動後、ひとまずシリアル出力を UART0 で止めて、BPS31250 としてシリアル出力を初期設定すれば、MIDIへ信号送って演奏し放題です! ※参考「150円でつなぐ!MIDI音源で音楽あそび - Roland SC-88 Pro x IchigoJam

久しぶりのDTM、まずはシンプルにかえるの歌をドラムパターン付きで演奏するプログラムを作ってみます。

1' KAERU's song 10 M="CDEFEDC EFGAGFE C C C C CDEFEDC " 20 D="0-0-0-0C0-0-0-0C0P0P0P0P0-0-0- 1" 30 GOSUB @PLAY

MML風にメロディを書き、時間軸を合わせてドラムパターンを書いて、サブルーチン呼び出しで鳴ることをゴールとしました。

下記が最終的なプログラム(IchigoJam ver 1.2β8用)

1 'KAERU's song (MIDI) 5 BPS31250 10 M="CDEFEDC EFGAGFE C C C C CDEFEDC " 20 D="0-0-0-0C0-0-0-0C0P0P0P0P0-0-0- 1" 30 GOSUB @PLAY 40 END 200 @MIDI:UART1:LC0,-1:IF N ?CHR$(#90+H,N,127);:WAITW:?CHR$(#80+H,N,0); ELSE WAIT W 210 UART0:LC0,0:RTN 300 @PLAY:CLS:W=0:P=0:LET[0],69,71,60,62,64,65,67 310 C=ASC(M+P):?CHR$(C) 315 B=ASC(D+P):?CHR$(B) 320 IF C=ASC("2") WAIT W 330 IF C>=ASC("A") AND C<=ASC("G") N=[C-ASC("A")]:H=1:GOSUB@MIDI 334 IF B!=ASC(" ") N=B:H=9:GOSUB@MIDI 338 WAIT 30 340 P=P+1:IF P<LEN(M) GOTO 310 350 RTN

200-210:チャンネルHで、音階N、長さWで鳴らす(N=0の時は鳴らさない)
300-350:文字列Mをメロディ、文字列Dをドラムパターンとして鳴らす(@MIDI使用)

IchigoJamだけで、さらさらっとプログラミングDTM、なかなか楽しいです!

おまけ1、ランダムに鳴らす

20 N=RND(70)+35:H=1:GOSUB@MIDI:IF INKEY() END ELSE CONT GOTO 20

おまけ2、ドラムを試す

30 N=INKEY():IF !N CONT ELSE H=9:GOSUB@MIDI:CONT GOTO30

おまけ3、画面左上のヨコ8文字、タテ5文字を使ったリズムシーケンサー

40 H=9:W=20:FOR I=0 TO 7:FOR J=0 TO 4:N=SCR(I,J):GOSUB@MIDI:LC0,8:NEXT:WAIT20:IF INKEY() END ELSE NEXT:CONT GOTO 40

音楽演奏が苦手なら、コンピューターに演奏させればいい!
かつてのMIDI流行もそういう背景があったとのこと。


小中学生対象のPCNこどもプロコン、音楽プログラムもぜひどうぞ!MIDIがなくても付属の圧電サウンダーで単音はなりますよ! 締め切りは、2/29(月)!

参考リンク
- 「WindowsマシンをIchigoJamのMIDI音源に使う - kazueda式

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image