CyberFridayで初発表された福井高専発の自作ミュージックシーケンサーTracksのファームウェアづくり開始。 ひとまず文字とMIDI出力を確認!

以前IchigoJamと接続して遊んだ、MIDI楽器、KORG volca beatsをTracksで鳴らしている様子。


Tracks付属の240x240の液晶ST7789のデバイスドライバを通じて、Hello STM32F405 と表示。開発言語は現在はC言語。音づくりや、作曲用に向いた言語をサポートするのもおもしろそうです。(参考、オーディオプログラミング言語 Advent Calendar 2020 - Qiita

TracksとMacは、Nucleoを経由して、st-linkで書き込み。--resetをつけると書き込み後自動起動してくれて便利。

$ st-flash --reset write build/tracks_f405.bin 0x8000000

TracksのCPU、STM32F405RGは、最大168MHz、浮動小数点ユニット付きの32bit Cortex-M4、Flashは1MB。豪華!

音楽プログラミングワークショップ案のひとつ、演奏に合わせてキラキラするを実践してみました。
IchigoJam用MIDIインタフェース基板キットのMIDI-INがうまく動かないときの対処方法も合わせて紹介。
音楽ライブを盛り上げる、MIDI楽器のMIDI-OUTから接続する「MIDIアクセサリー」が簡単につくれますよ!


電子ピアノにつないで、音階に合わせてWS2812BのテープLEDを光らせている様子


IchigoJamとWS2812B、MIDIケーブルとIchigoJam用MIDIインタフェース基板キット(秋月電子)を用意


はんだづけレベル:初級。部品点数が基板含めて11コだけと、簡単!


まずは向きが関係ない抵抗を色に気をつけて挿し込み、少し曲げる。まとめてはんだづけすると効率良し!
続いて、4本足のICを向きを間違えないように、はんだづけ。


長ピンソケットからはんだづけ。曲がらないように注意。


できあがり!

MIDI-OUTを使ったテストプログラム(MIDI楽器のMIDI-INに接続)

10 BPS31250 20 FOR I=60 TO 72 30 ?CHR$(#90,I,60);:WAIT30:?CHR$(#90,I,0); 40 NEXT 50 WAIT 60

MIDI-INを使ったテストプログラム(MIDIキーボードのMIDI-OUTから接続、表示するだけ)

10 BPS31250:UART1,2 20 K=INKEY():IF!K CONT 30 ?K;" "; 40 GOTO 20

RUNして、MIDIキーボードなどのMIDI-OUTからインタフェースのMIDI-INへ接続、鍵盤を押すと144(#90)と2つの数値が表示され、離すと128(#80)または144と2つの数値が表示されます。 キーオン、キーオフ、取れました!


もし受信メッセージに、なぜか0が多かったり、#90がなかったり、反応しなかったりしとおかしかった場合、MIDI-INのR2の抵抗値を200Ω程度に下げるとうまくいくかもしれません。


470Ωをニッパーで切って、200Ωを上からか、裏面からはんだづけ。(はんだ吸い取り線でR2を除去してもOK)


キラキラさせるためにWS2812B/WS2811用のケーブルを作成。(参考、WS2811ケーブル加工

10 N=20 20 BPS31250:UART1,2 30 K=INKEY():IF K!=#90 AND K!=#80 CONT 40 T=INKEY():V=INKEY()&#FF 50 IF K=#80 V=0 60 ?T,V 70 LET[T%N*3],V:WS.LED N 80 GOTO 30

ノートOFFは、#90の2番目パラメータが0で来るものと、#80で送られてくるもの2種類あります。
* ランニングステータス未対応

links
- 音楽xプログラミング、MIDIワークショップづくりワークショップ in PCN東京
- MIDI 1.0 規格書 - 音楽電子事業協会
- MIDI - Wikipedia
- 一日一創 MIDIタグ

MIDIとコンピューターをつなぐ、音楽プログラミングワークショップ in PCN東京!

音楽と自動で奏でたい。その歴史は長く、約200年前にオルゴールで始まった自動演奏、決まったことを決まったリズムで正確に繰り返せるコンピューターはその後継者としてぴったり。 1983年10月、コンピューターと楽器をつなぐ規格、MIDI(ミディ)が誕生。その規格書のPDF版が2016年に発行されるなど、未だ現役で活躍中。(電車の発車ベルや、自販機の音、カラオケなど


楽器 x プログラミング (PDF)pptx、keynoteも CC BY のオープンデータ on GitHub


音楽の基本、空気の振動させるBEEPとWAIT、くりかえしのGOTOでリズムづくりプログラミングからスタート。


IchigoJam用MIDIインタフェース基板キットを使って、楽器とつなごう!
(→組み立て方と注意、抵抗R2は 470Ω→200Ω への変更がいいかも)


ジャーンといろいろ鳴ってしまって困る場合は、楽器を再起動!
UARTコマンドを使ってシリアル信号のON/OFF制御も有効です。

OK2

として、「OK」やエラーなど余計な表示を消してしまうのも手です(戻すときは単に OK と書いてエンター)


楽器を再起動するのが面倒なときは、音を鳴らすときだけUARTをONにするサブプログラムを作るといいです。


MIDIのトーン番号と音階の対応
12足すと1オクターブ高くなり、12引くと1オクターブ低くなります。
上記サブプログラムを使った、簡易オルゴールプログラムを紹介。


IchigoJamで使うキーボードをMIDIキーボード(鍵盤)にしてしまうプログラムもあります
真ん中のドがC、黒鍵もオクターブ変更にも対応してます。


MIDI-OUTも使っても遊んでみようと、サーボを使った楽器作り!


MIDI楽器のMIDI-OUTを使って、キーボードからIchigoJamに接続し、IchigoJamにつないだサーボを動かす楽しい実験。


3Vサーボ、割り箸、10円玉、ガムテープの組み合わせ、いろいろ叩いて楽しい!IchigoJamには標準で4台まで接続OK!
MIDI-OUT活用について

ワークショップづくりワークショップなので、最後にアイデアソン!

- 音楽 x プログラミングワークショップ案 自分が鳴らしたい楽器を作る工作 順番に鳴らそう、一音ずつ鳴らす曲作り トランペット吹け���人がいるので、プログラミングで合奏しよう 譜面通りに音を鳴らそう テノリオン風をつくろう サンプルの音楽プログラムを打ち込み改造しよう くまちゃんドラムをつくろう ハンドベルをプログラミング制御 DakeJacketにMIDIシールドを挿して、みんなで挿して鳴らす 自分の学校の校歌をつくろう 続き物のワークショップでパート毎に作り込む ユニゾンづくり、いろんな音で演奏する IoT楽器、遠隔地の楽器を鳴らす くまちゃんドラムの豪華バンド版をつくる 変な音を作ってみよう大会 音楽に合わせて踊らせるロボづくり(振り付け) 距離センサーでテルミン風楽器 カムロボ2台と組み合わせて、勝負する WS2812Bと合わせて、音楽に合わせて光り方を変える 吹奏楽の人手不足を埋めようイベント サウンドロゴをつくろう 表彰式用音源キットをつくる センサーと組合せてファミマの入店音をつくる クリスマスリースにつける音がなるセットをつくる 木管楽器、笛のような楽器を作る アルファベットとドレミの音階を対応させて、ABCを教える 自分の名前の発声をMIDIでつくる(eVY1はボーカロイド機能付き) 豪華な音ゲーをつくる ピアノで弾いたものを保存して、自動的にならす 自分で弾いた音階をループして重ねる機能 プログラミングに普段触れてない人が参加できるワークショップ

音楽プログラミングワークショップ、みなさまのまちでもぜひどうぞ!

鯖江からのお土産、サバエイトのアプリで記念写真。





今回の会場は、亀有、PCN東京 クリエイターズガレージ&防災コミュニティスペース Ema-Ima(えまいま)でした。


亀有駅前でこち亀、両津さんに遭遇!

links
- MIDI 1.0 規格書 - 音楽電子事業協会
- MIDI - Wikipedia
- 松武秀樹さんに聞く、MIDIの歴史とMIDIの今後の可能性 | | 藤本健の "DTMステーション"
- 一日一創 MIDIタグ

新MIDI音源、NTS-1を気軽に鳴らすキーボードがほしいけど、最近のMIDI出力付きのキーボードの安価なものはUSBばかり。
ないなら創ってしまいましょう!IchigoJamでつくる、簡易MIDIキーボード。

ちょうどいい場所にある、キーボードの「C」を「ド」とした、半音階対応のMIDIキーボード。
1から9キーでオクターブの変更にも対応!

10 BPS31250:UART0:S="AZSXCFVGBNJMK,L./:\]" 20 FORI=0TOLEN(S)-1:[ASC(S+I)]=8+I:NEXT 30 O=4 40 K=INKEY():IF !K CONT 50 IF K>48 AND K<58 O=K-48 60 T=[K]:IF T T=T+O*12:UART1:?CHR$(#90,T,60);:WAIT5:?CHR$(#90,T,0);:UART0 70 GOTO40

離したことが検出できないので、伸ばす長さはプログラムで固定対応(WAIT5)なところが簡易版。


NTS-1と接続して、いろいろ演奏、楽しめます!


在庫ありなeVY1も3本ジャンパー線でつなぐだけで使えます!(eVY1のつなぎ方

エレクトーンや、電子ピアノなど、お手持ちのMIDI音源につないで遊んでみてください。
IchigoJam用MIDIインタフェース基板キット: 組立キット 秋月電子通商 電子部品 ネット通販」もどうぞ!

動画で弾いていたのは、ジングルベル。
IchigoJam Advent Calendar 2019 - Qiita
今年もスタート、クリスマスまでのお楽しみ、IchigoJamアドベントカ��ンダー、どうぞ気軽にご参加ください!

令和元年11月に発売、1万円ちょっとの楽しいMIDI音源「NTS-1 by KORG」を、早速IchigoJamにつないで鳴らしてみました!

音階をランダム演奏!
MIDI INが、ステレオジャックなのでIchigoJamと接続するケーブルを電子工作。


楽しみだった、KORGのMIDI音源、NTS-1 digital kit、到着!


ネジ止めだけの簡単キット!ドライバーも付属!まずは大きな基板をパキッと割ります。


メイン基板、四隅もパキッと割ります。
NTS-1のCPUはSTM32、Arm Cortex-M4 180MHz Flash512KB RAM128KB 別途DRAMも実装


まずは金属製のシャーシをネジ止め、2セット


底板を黒いネジでネジ止め


鍵盤に当たる部分、裏面のシールを剥がして、曲がらないようにきれいに貼り付け。


裏側に通して挿し込み、プラスチックの飛び出した部分を押し込んで固定!
操作パネル側のコンピューターはSTM32F030、IchigoJamと同クラス、Cortex-M0 48MHz


メインの基板と操作パネルは電子工作でおなじみ、ピンヘッダーとピンソケットで接続!仕様が分かれば直接いじることも可能!?


CN2B端子、I2Cで接続できそう!


最後に、前面と後面のパネルをネジ止めしてできあがり!


ネジは予備がある模様、余ってOK!モバイルバッテリーなどを付属のmicroUSBケーブルとつないだら、すぐ鳴らせます!

MIDI IN端子を使って、IchigoJamからコントロールしてみましょう!

ステレオミニジャックと小さな基板、ピンソケットを準備。
(基板なしで、ケーブルを解いて、直接はんだ付けしてもOK!)


裏面、GNDとLとRに当たる部分をピンソケットに接続しています。


ステレオミニジャックのブレイクアウトボードができあがり


ステレオジャックとIchigoJam、先端の部分にTXD(Sink/Tip)、真ん中(Source/Ring)にVCCを接続。
(MIDIのステレオジャックの仕様:MIDIのTRS接続規格化 | g200kg Music & Software


ステレオのケーブルでつないだら、あとはプログラムするだけ!

10 BPS31250 20 A=RND(30)+50:?CHR$(#90,A,50) 30 WAIT30 40 ?CHR$(#80,A,0); 50 GOTO20

デフォルトはチャンネル1、50から79のランダム音階を0.5秒毎に鳴らしています。
(MIDI仕様など、ダウンロード | NTS-1 digital kit | KORG (Japan)

音色もMIDIで自在に変更できそうなので、いろいろと遊べる予感!

見つけた、楽しそうな動画!

links
- NTS-1 on Amazon (11,000円)
- NTS-1 digital kit - PROGRAMMABLE SYNTHESIZER KIT | KORG (Japan)
- リアルなサウンド!IchigoJamとMIDI音源でドラムマシーン - Eyes, JAPAN Blog
- MIDIキーボードをIchigoJamにつないで明和電機ごっこ!?
- 1万円で買えるKORGの小さなシンセ・NTS-1に、世界中で開発されるオシレータやエフェクトを組み込んでみた | | 藤本健の "DTMステーション"

コミケC92で入手したファミコンをMIDI音源にしてしまうカセット「ふぁみみみっでぃ by @hekekekun」をちょっとだけ改造してIchigoJamに接続。


起動音がかわいい、ふぁみみみっでぃ、IchigoJamでいろいろ鳴らしてみるプログラムがこちら。普通のMIDI音源として使えます。

10 UART0:BPS31250:V=127 20 FOR I=30 TO 100 30 C=#90:GSB100 40 C=#93:GSB100 50 IF BTN() END 60 NEXT 70 GOTO 10 100 UART1:?CHR$(C,I,V);:WAIT10:?CHR$(C,I,0);:UART0:RTN

普通のファミコンの場合、音声出力がRF(アンテナ)なので、AV改造などが必要でしたが、カセットの仕様を見ると音声がカセット端子にでています(45ピン)。 これを使って鳴らしてみた今回ですが、ちょっとノイズがひどいのでもうちょっと解析と対策が必要な様子。

ふぁみみみっでぃのBACK側、真ん中あたりの青い線がSOUND INにあたる45ピン。 ついでに、VCCにIchigoJamからの5Vをつなぐので、ファミコンのACアダプターもいらなくなってコンパクト!

links
- ファミコン実機とMIDI連携できるカセット「ふぁみみみっでぃ」のご紹介!MIDINES欲しかった人は要チェックです! | ハイレゾスタイル
- へけけくん (@hekekekun) | Twitter (ふぁみみみっでぃの作者さんのTwitter)
- 極楽ほんげら (ふぁみみみっでぃの作者さんのサイト)
- IchigoJam BASIC 15行、バンブラ奏法で奏でるMIDI楽器

USB-MIDIでWeb MIDIでパソコンに接続してみた、タッチMIDコントローラー「TouchMIDI32
実はシリアル接続してIchigoJam、Arduino、ラズパイなどとも簡単に使えることが判明!


電源を3.3V(5VでもOK、1.71V-5.5V)でとって、TouchMIDI32のシリアル出力(PB8-4)からIchigoJamのRXDにつなぐだけ!

10 BPS31250 20 K=INKEY():IF !K CONT 30 L=INKEY():M=INKEY() 40 ?K,L,M 50 GOTO 20

テストプログラム、MIDIメッセージのTONE ON/OFFが受信できました。
(シリアル通信での0受信は、256となるIchigoJam BASICの仕様です)

早速、次のプログラムを加えてBEEP楽器化してみます!

15 LET[0],240,227,214,202,191,180,170,160,151,143,135,127 43 IF M=127 N=L-60:BEEP[N%12]>>(N/12),15

テストプログラムに15行と43行の2行を加えるだけ!
32音階、2オクターブちょっとあるので、いろいろ弾けそうです


鳴りました! SOUNDとGNDにつないだステレオジャックに、100均スピーカーをつなげています。


端子がなければ、100均のスピーカーを分解して直接はんだづけしちゃうのもいいですね!
参考までに、meetsで買ったスピーカー、緑と青が接続されていて、金と赤が追加スピーカー用となってました。


音がなるモノ、子供たちを惹きつけますね!(鯖江Hana道場にて)

ちょっとハードルが高い、ハードウェア工作。
でも、奇楽堂TouchMIDI32があれば、JavaScriptでタッチボタンがすぐできる!(旧10キー版は安い!)

TouchMIDI32は、32コのタッチセンサーをつなぐMIDI入力デバイス、USBでパソコンにつなぐと、MIDI IN デバイスとして使えて、Web MIDI API を使えば、ブラウザ上のJavaScriptで簡単に遊べる!

Web MIDI API は、使い方簡単!

navigator.requestMIDIAccess({ sysex: false }).then(successcallback, errcallback);

requestMIDIAccess でデバイスを受け取ったら、onmidimessage で受信したり、send で送信するだけ!


WebTouch with Web MIDI API

links
- Web MIDI API - W3C
- MIDIデバイスの準備不要、Web MIDI APIの基礎 | HTML5Experts.jp
- Web MIDI APIを触ってみた - Qiita
- Web MIDIでつなぐパソコンとIchigoJam

鯖江、めがね会館で開催、高専インターンOB/OGハッカソン「クリエイティビティーを刺激せよ!」
10時からネタ出しチーム分け、昼食後、13時から開発開始、17時発表までの4時間で勝負!

それぞれで楽しいチーム開発が進みます。

現役インターン生とインターンOB/OGの混合チーム。

小学生でも優しく作れる、だれでもSPARQL、SPRACH。

創造活動を応援してくれる、ちあがーるふれんど(仮

各チーム毎に自分以外に1票いれて選ぶ、優勝チームは「Waku2Pad」

他の作品も楽しかった!
- おやつアート - オープンデータなお菓子画像で創造&爆発
- いらすと屋2.0 - 気軽なイラスト共有プラットフォーム
- このゆびとまれ - 創造活動チームを組成支援

各チームのちょっとだけ手伝いしつつ、終盤は一人チームでつくった、クリエイティビティーを高めるBGM。
ぬいぐるみにNFCをつけ、気分に合わせたBGMが聞いて、気分をアゲようという提案!

IchigoJamのプログラムは過去作品の組み合わせ!
RFIDで読み取ったIDを乱数の種に、MIDIで音階を自動生成するプログラムに連携します

10 LET[0],36,38,43,50,42,46,39,75,67,49 20 BPS 31250:UART1 30 SRND S 40 FOR I=0 TO 7 45 T=[RND(10)] 50 ?CHR$(#90,T,80); 60 WAIT 10 65 ?CHR$(#80,T,0); 66 IF BTN() BPS0:LRUN0 70 NEXT 90 GOTO 30

KORG plugKEYを使うと、iPhone/iPad/iPod touchがIchigoJamから使える高音質MIDI楽器に早変わり!
動画の楽器アプリはYAMAHAのFM音源アプリ「FM Essentia」MIDIコントロール可能!

KORGの音源アプリも、MIDIで接続できる!

IchigoJamのかわくだりゲームを改造して遊ぶ高専生達。

また来年!

Making rhythm is fun! リズムづくりは楽しい!
Play the easy sampler "volca sample" by IchigoJam.
お手軽サンプラー「volca sample」をIchigoJamで奏でよう!

1. prepare a MIDI output. MIDI出力を準備します
2. connect つなぎます
3. test a sound 試しにならしてみます

BPS31250 OK ?CHR$(#90,1,1) OK

*volca sample MIDI Implementation Chart / MIDI仕様書

4. program it! プログラムを打ち込みます

10 UART0:CLS:?"MIDI DRUMS" 15 BPS31250 20 P="12345678QWERTYUIASDFGHJKZXCVBNM," 30 FORI=0TO8*4-1:LCI%8*2,I/8*2+4 40 IF RND(3)=0 ?"O" ELSE ?"." 50 NEXT 60 W=10 70 BPS31250:N=0 75 LC 0,14:?"WAIT:";DEC$(W,3) 80 LCN*2,12:?"^" 90 UART1:LC0,-1:FORI=0TO3 92 IF SCR(N*2,I*2+4)=79 ?CHR$(#90+I,1,1); 94 NEXT:UART0 100 WAIT W 110 LCN*2,12:?" " 120 N=(N+1)%8 130 K=INKEY() 140 IF K=UP W=W-1 150 IF K=DOWN W=W+1 160 IF K=SPACE GOTO30 170 IF K GOSUB300 180 IF K=8 FORI=0TO8*4-1:LCI%8*2,I/8*2+4:?".":NEXT 200 GOTO 75 300 FORI=0TO8*4-1:IF ASC(P+I)=K LCI%8*2,I/8*2+4:IF SCR()=79 ?"." ELSE ?"O" 310 NEXT:RETURN

5. Enjoy! 楽しむ!
How to play - 演奏法
1-8 Q-I A-K Z-, - Make the PATTERN (キーボードのキーで音を置いたり取ったり)
SPACE - RANDOM PATTERN (スペースでランダムパターン)
Backspace - CLEAR PATTERN (バックスペースでパターンクリア)
Cursor UP - Up the Tempo (上キーでテンポアップ)
Cursor DOWN - Down the Tempo (下キーでテンポダウン)


Comming soon MIDI I/O kit for IchigoJam! MIDI入出力キットも準備中!

links
- volca sample
- MIDI Random Rhythm Machine with KORG volca beats x IchigoJam
- シンセサイザー / キーボード | KORG (Japan)

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS