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

MIDIキーボードをIchigoJamにつないで明和電機ごっこ!?

2016/04/04 23:55:00
#IchigoJam #midi #sound 

LPC1114を電子ピアノにつないで遊んでからのMIDI電子工作、IchigoJamを使うと簡単DTMができました(ドラムパッドNSX-1対応)。 今度はMIDI-IN、MIDI入力に挑戦です!ちょっとだけ回路が複雑になりますが、ミニブレッドボードで5分と部品が揃えば5分でできます!


IchigoJamに電子ピアノをRoland FP-5(後継機種Roland FP-50)につないで、好きなように遊べます! チャンネル1に、押した鍵盤の音階と押した強さデータが31250bpsのシリアル受信(RXD)経由で受け取れます。

10 BPS 31250:UART 1,2 20 K=INKEY():IF K ?HEX$(K);" "; 30 GOTO 20

MIDI信号モニタープログラム
※UARTの2番目のパラーメータの2で、シリアル受信したESCコードでプログラムが停止しないようにしておきます。

MIDI-INのつくりかた

材料
- MIDIソケット x 1 (60円 秋月電子) 2コ買っておけばMIDI-OUTもつくれます!
- ジャンパー線 x 5 (220円/60本 秋月電子)
- 220Ω抵抗 x 2 (100円/100コ 秋月電子)
- ダイオード x 1 (100円/50本 秋月電子)
- フォトカプラ x 1 (20円 秋月電子)
- ブレッドボード x 1 (150円 秋月電子)

MIDIソケットに2本ジャンパー線をはんだづけ。裏返して、左から2番目に赤(電源っぽい色)、4番目に緑(信号っぽい色)。


ブレッドボードで回路を組みます。フォトカプラは丸い印が右上にして、入力を上、出力を下にしています。
フォトカプラの入力側+に220Ωの抵抗通じて赤い線、-に緑線、ダイオードは保護用?
フォトカプラの出力側+に1kΩの抵抗通じてVCCとRXD、-にGNDを接続(220Ω → 1kΩへ訂正)
フォトカプラの中身は、LEDとフォトダイオード、MIDI機器と回路を電気的に絶縁するのがMIDIのお作法のようです。


MIDI-OUTは、MIDIソケットにジャンパー線を2本つなげただけのものを、赤をVCC、緑をTXD(シリアル送信)につなぐだけ! このプログラムで、MIDIキーボードで任意のMIDI楽器を鳴らす、MIDI Thru(MIDIスルー)のできあがり!

10 BPS31250:UART1,2 20 K=INKEY():IF K ?CHR$(K); 30 GOTO 20

MIDI-INで受けて、サーボモーターを動かせば何かを叩くことができますね!
明和電機っぽい楽器もできちゃうかも?
レッツ、お気軽MIDI DTM!!


【イベント】明和電機事業報告ショー2016 チケット一般発売中! - 明和電機 - Maywa Denki明和電機 – Maywa Denki」とのこと!

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式

1行プログラムでつくる楽器、IchigoJamでPS/2キーボードがMIDIドラムパッドに変身!

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

PCNサミットでの大橋さんの基調講演でも触れられたコンピューターの発展とMIDIの意外な関係。

歴史を紐解くとその関係は必然で、ラジオやテレビなどマスメディアとともに届く音楽に誰もが夢中になる中、新技術としてのコンピューターを積極的に採り入れたYMOがありました。 持っていたパソコンMSX turboRのMIDI端子に、譲ってもらった中古MIDI音源をつなぎ、家で鳴った感動、覚えてます。

音楽の楽しさを演奏テクニックなしに味わえるコンピューターミュージック。
まずは超シンプルなドラムマシンで遊んでみましょう。

1 BPS 31250:K=INKEY():IF K=0 GOTO 1 ELSE ?CHR$(#89,N,0,#99,K,127);:N=K:GOTO 1

プログラムは1行!
こちらを参考にIchigoJamと楽器をつないで、MIDI楽器の電源ON、そしてRUN!
あとはいろいろキーボードを押して演奏を楽しみましょう。


「IchigoJam x SC-88 Pro」 - IchigoJamからの接続はたった2本の線(RXD/VCC)

こちらは同じプログラムをわかりやすく書いたもの。

1 'MIDI DRUM PAD 10 BPS 31250 20 K=INKEY():IF K=0 GOTO 20 30 ?CHR$(#89,N,0,#99,K,127); 40 N=K 50 GOTO 20

10ch(=#99 10chノートon / #89 10chノートoff)がドラム音源、35以上81の47音が標準です。

画面にも何か表示した場合は、UART1/UART0でMIDIへの送信を制御し、LC0,-1でMIDI送信時には画面に表示しない出力を使うと便利です。

UART1:LC0,-1:?CHR$(#99,35,127);:UART0:LC0,0:?"NOTE on!"

コンピューター利用が当たり前になり、音楽への関心が薄れていた高専学生時代、MIDI制御であえて生楽器を使う明和電機は衝撃でした。 しかも、今でもバリバリ現役、かつ子供向けワークショップも!
6月30日(水)より、メディアラボ第7期展示「ノック!ミュージック -打楽器からコンピューターに至る4つの進化論-」を公開します。 | 日本科学未来館 (Miraikan)」(2010年)


こちらお手軽MIDI音源「歌うキーボード ポケット・ミク
安くてかわいく、人気の音声合成付き!なんとかIchigoJamと直結できないかと挑戦しますが、成功できていません。


左の大きなチップが音源、YAMAHA製NSX-1(YMW820) (ピン配置を含むデータシート)
同じチップを使ってシリアル接続しているeVY1シールドがあるので、17ピン(RXD)につなげばなんとかなるはず!


参考になった解析資料「○歌うキーボード ポケット・ミク(NSX-39)解析してみました - HOBBY STATION
RXDはGNDに接続されてしまっているので、ピンを切って配線してみるも、鳴らず。
SPI有効を表すESS_Nが定期的に使われているようなので、競合しているのかもと思い、パターンをカットしてプルアップすると起動せず。
初期化中はESS_Nを有効にするためスイッチをつけて、初期化後に切り離すも、鳴らず。

こどもにやさしく楽しいお手軽音源、なんとか鳴らしてみたいところです。

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

150円でつなぐ!MIDI音源で音楽あそび - Roland SC-88 Pro x IchigoJam

2016/02/14 23:55:00
#IchigoJam #KidsIT #sound #midi 

訳あってちょっと音痴IchigoJam
餅は餅屋、憧れのMIDI音源、Roland SOUND CANVAS SC-88 Proにつないで演奏してみました。
MIDIは、電子ピアノやエレクトーンにもついているので、お家にある楽器をハックしちゃおう!


IchigoJamからたった2本、線をつなぐだけ!(ケーブルは2年前つくったもの


MIDI端子は5ピンDINという規格。マルツで5ピンDINプラグ(150円)を買って、ピンを正面から見て左から2番目に赤色、と4番目に黄色の線をはんだづけ。写真の細い線ではなくジャンパーピンを使うのがオススメ。
5ピンDINソケット(120円)の方を買って、MIDIケーブルで接続するようにするのもアリ!

MIDIの正体は31250bpsのシリアル信号。IchigoJamのシリアル出力TXDに黄色、VCCに赤色を接続すれば準備OK!

IchigoJamで鳴らしてみよう!MIDIのお約束(プロトコル)を見て、ドの音を鳴らしてみます。
(参考、MIDI - Wikipedia

BPS 31250 ?CHR$(#90,60,127);

#90は1chに音鳴らすというコマンド、60が音階(半音で1上がる)、127が音の強さ。
画面に表示したものをそのまま鳴らそうとしてしまうので、鳴らさない時は UART0 でシリアル出力をオフにしよう。
おかしなことになったらMIDI音源の電源を一旦か、?CHR$(#ff); とシステムリセット信号を送ってみよう。

こちら和音の鳴らすプログラム

1 'MIDI WAON 10 BPS 31250:T=1 20 ?CHR$(#C0,T); 30 ?CHR$(#90,60,127,#90,64,127,#90,67,127); 40 WAIT 60 50 ?CHR$(#80,60,0,#80,64,0,#80,67,0); 60 UART0

減衰音の場合50行のノートオフはなくてもOK。

続いて、ドラムパート用に用意された特殊な10chを使ってドラム音を順番に鳴らすプログラム。

1 'MIDI DRUMS 10 BPS 31250:CLS 20 FOR I=35 TO 81 30 LC0,-1:?CHR$(#99,I,127); 40 LC0,0:UART0:?I:UART1 50 WAIT 30 60 NEXT 70 UART0

MIDI信号用の表示を画面に表示しないために、LC0,-1で画面外へ。
画面にだけ表示する場合は、LC0,0で位置を戻して、UART0で一時的にシリアル信号をオフにしよう。

以前つくったリズムマシーンをMIDI用に改造するのも楽しいかも?
本格DTM(for PanCake)、ゲームの効果音、加速度センサーを使ったオリジナル楽器作り、温度や距離測センサーを使って、外部環境に合わせたリズムを奏でるマシンづくりなど、発想自由自在!

IchigoJamイベント紹介
- 2016/2/20 第一回 PCNサミット IchigoJamワークショップ&こどもロボットpaprika 先着10名
- 2016/3/5 「きょうりゅうゲームをつくろう」IchigoJamプログラミングワークショップ 先着20組 - IODD2016

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

ジャンクパソコンでDTM!? 1bit BEEPサウンドに対応したIchigoJam PC

2016/01/03 23:55:00
#KidsIT #IchigoJam #sound #pcos 

IchigoJamがサウンド対応したのはちょうど1年前の2015.1.3
サウンドの魔力、MMLでつくる音楽と効果音に対応 IchigoJam

パソコン用OSとして動く「IchigoJam PC」も(自分が)待望のサウンド対応!

子供の頃好きだったお正月番組、新春かくし芸大会のテーマソングでもある「一月一日」
IchigoJamのPLAY文で使える、MML(ミュージック・マクロ・ランゲージ)化したものはこちら。
(出典、祝日大祭日歌詞並楽譜 - Wikisource

A2BAF+.E8DDEEA.G8F+2.R A2BAF+.E8DDEEF+.E8D2.R >DDD<B>D2D<AABBA.G8F+2.R A2BA>D.D<B8AGF+AG.E8D2.R

合わせて、WebMMLを少しまともに改良。
Web上でお試しできます!(スマホ非対応かも)
一月一日 - WebMML」 ※ MMLの解説もこちら

だいぶ出来てきたIchigoJam PC、「IchigoJam-FAN」にてベータ公開中です。

WebMMLβ コンピューター言語でつくるかんたん音楽

2015/02/17 23:55:00
#sound #KidsIT #IchigoJam #js 

小4から中2まで住んでいた三重県津市。その三重から、こどもにプログラミングするきっかけを提供する活動、Little Coder Mieさかさんが来鯖。PCNメンバーと意見交換会を開催。子供の頃、コンピューターに触れた感動の原体験はみんな共通。日本中、世界中こどもたちがプログラミングを通じて、ものづくりに目覚めたら一体どんなステキな世の中になる!?(モンゴル高専で動くIchigoJam


Little Coder Mie x PCN

コミュニケーション、伝える技の基本は言葉。人から人へは日本語や英語などの自然発生した言葉を自然言語と呼ぶのに対して、人工的に作った言葉を人工言語、更にその中で人からコンピューターに伝える言葉をコンピューター言語と呼び、プログラミング言語はその一種。プログラミング言語以外のコンピューター言語もいろいろとありますが、Webページを伝えるHTMLや、データとその構造を伝えるXMLだけでなく、音楽を伝えるMML(エムエムエル/ミュージックマクロランゲージ)なんてものもあります。

圧電サウンダーか音声端子をつけると音の再生に対応した、IchigoJam、そのWeb上のシミュレーターへの組み込みも念頭にブラウザ上で使える手軽なMML、WebMMLを作りはじめました。半音すら対応していない状態ですが、ひとまずコンピューター言語で音楽を奏でてみてください。


WebMML

IchigoJam 2台でつくる8bitリズムマシーン

2015/01/17 23:55:00
#IchigoJam #KidsIT #sound 

週アスにてホビーパソコンIchigoJamが紹介され記念に、リズムマシーンつくりました!
MSXを彷彿させるBASIC言語の1500円PC、IchigoJamが楽しい - 週アスPLUS

書いていただいたのはDTMステーションの藤本健さん
こちらにも楽しいIchigoJamレポートいただいています!
MSXの再来!?1,500円のコンピュータ、IchigoJamでMMLの演奏だ! : 藤本健の“DTMステーション”


贅沢にもIchigoJamを2台使ったリズムマシーン。(音声用白が黄色端子、赤が音声の赤色端子へ接続)
主とするIchigoJamのGNDと音声用IchigoJamのGND、主のEX2と音声用のVIDEO2へ接続。
音声用IchigoJam、単なる端子の役目しかしてませんので、週アス記事のように1台のIchigoJamに圧電サウンダーを接続してもOKです!


プログラムはこんな感じです。配列とGOSUBも使ったBASIC中級者向けサンプル。


8bit リズムマシーン 使い方
カーソルキーで"v"を動かし、スペースで音を置くと、下のビットマンが来た時においた場所に応じた音がなります。
テンポの変更は、100行のTICK() 音の高さの変更は、130行の[T%8]*4の4を小さくしたり大きくしたり、足したり、IF文で個別の音にして変更できます。PLAY文と併用するときっと楽しいです。


動作している様子はこちら


ver0.9からMML/BEEP/PLAYに対応したホビーパソコン IchigoJam

現在、秋葉原 Assemblage(アセンブラージュ)、または、PCN(プログラミング・クラブ・ネットワーク)の通販「PRODUCT | PCN プログラミング クラブ ネットワーク」で入手可能です。

1/25(日)には秋葉原で組み立て教室、福井県勝山市では年の市ありますよ!

音の正体とプログラム作曲 / はじめてのプログラミングその8

2015/01/10 23:55:00
#IchigoJam #KidsIT #sound #firstprog 

プログラミング言語は、コンピューター言語の一種です。コンピューター言語とプログラミング言語の違いは、アルゴリズム(問題解決の手順)を表現できるかどうか。

Webページを作るHTML、データを表現するXML、データを取得するための問い合わせSPARQLやSQLは、コンピューター言語であって、プログラミング言語ではありません。

アルゴリズムが記述できれば、どんな手法であってもコンピューターをプログラミングできます。小中学生の間で大流行し、マイクロソフトが2680億円で買収したマインクラフトで、ワープロを作った人がいたり、PS3のゲームリトルビッグプラネットでライフゲームがあったりします。逆に0と1のみ使う超シンプルなコンピューター言語BCLがあったりと、その本質は単純です。大切なのは作りたいものに最適な言語を選択することです。マインクラフトのワープロは2年かかったそうですが、一般的なプログラミング言語であれば1時間かかりません。

誕生50年を超えて愛され続けているプログラミング言語であるBASIC言語。BASICを搭載する「こどもパソコンIchigoJam」は、ver0.9.0から、もう一つのコンピューター言語、MML(エムエムエル)に対応しました。ミュージック・マクロ・ランゲージの略で、音楽を表現する私の子供の頃にコンピューターっ子の間で大流行したBASIC言語のPLAYコマンド内で使います。

今回の入門は、そのMMLと音についてです。「PLAY "CDE2 CDE2 GEDC CED2"」たった、これだけで、ちょうちょの冒頭を奏でられます。テンポを速くすれば効果音作成にもなります。ゲームの半分は音でできているとも言われるなど、ちょっとしたフィードバックがあるだけで、コンピューターは格段に親しみやすい存在に変えられます。MMLで扱う気軽な音楽、ぜひいろいろ遊んでみてください。


(
PDFファイルイラストレーターaiファイル フォント:こども丸ゴシック)

連載「こどもパソコンIchigoJamではじめるプログラミング」
ライセンス:CC BY(クリエイティブ・コモンズ・表示)自由に印刷、配布、製本、販売、改変できます。
鯖江市の広報誌「広報さばえ」にて連載中。勝手転載、大歓迎です!

IchigoJamプログラミング入門(まとめPDF
- (小3からのプログラミング1)プログラミングって何?
- (小3からのプログラミング2)めぢからゲームをかいぞうせよ
- (小3からのプログラミング3)ひっさつ、くりかえし
- (小3からのプログラミング4)もし〜が〜だったら?
- (小3からのプログラミング5)夜空に星をうかべましょう
- (小3からのプログラミング6)ロボットはサイコロをふる
- (小3からのプログラミング7)グラフではじめる「とうけい」
- (小3からのプログラミング8)音の正体とプログラム作曲
- (小3からのプログラミング9)文字の数でタイピングゲーム
- (小3からのプログラミング10)コンピューターをつなごう
- (小3からのプログラミング11)キャラクターをあやつろう
- (小3からのプログラミング12)ぎゃくじゅんきおくゲーム
- (小3からのプログラミング13)むげんおえかきツール
- (小3からのプログラミング14)「そすう」を計算させよう
- (小3からのプログラミング15)かわくだりゲーム
- (小3からのプログラミング16)サブルーチンでつくるDNA
- (小3からのプログラミング17)時計と数とフローチャート
- (小3からのプログラミング18)ぜったい勝てないジャンケン
- (小3からのプログラミング19)じぶんだけのキャラをつくる
- (小3からのプログラミング20)二重ループで丸をかこう


福井こどもプロコン2014冬 応募期間 2014.12.1-2015.2.28(土)
協賛:株式会社マルツ電波
主催:プログラミングクラブネットワーク(PCN)
連絡:hello@pcn.club

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