4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IMB_uCLUlq.gif

会社のアドカレをプチネタで埋める活動も、おかげさまで順調に枠が埋まり2024年度は今回で最後になりそうです!よかった!
もちろんカレンダーは明日以降も順調に続く予定ですので、他の社員有志の投稿をお楽しみに!

KDDIテクノロジー アドベントカレンダー2024

過去記事と何が違う?!

実は過去に何本も似たような記事書いてますね。

2024年の今、初心者がUSB-MIDIデバイスの制作に挑戦する環境としてATmegaやATtinyを採用するのは、コストメリットもなく技術的な難易度的にも合わなくなったと思います。

AtmelもMicrochipになっちゃいましたしねー。

最近、DIY界隈で人気なのは、Raspberry Pi Pico に代表される RP2040搭載マイコンボードだと思います。安くて高性能。Seeed XIAO RP2040 のように小型のボードもあり、さまざまなデバイスのDIYに使いやすいです。

今回の記事では RP2040マイコンを使ってMIDIデバイスを作る方法を紹介します。

記事冒頭のGIFに写ってるXMASツリーは、昨年の記事で作成したものに USB-MIDIファームウエアを書き込んで PCで動作しているWebアプリと連動させたものです。Ogaki Mini Maker Faireにて展示しました!

準備(物理)

下記を準備しましょう。以下必須です。

  • RP2040マイコン(前述の Raspi Picoでも、XIAO RP2040でも、その他の互換ボードでも大丈夫です)
  • Arduino IDEが動くPCとUSBケーブル(PC側のUSB端子とマイコンボード搭載のUSB端子を接続可能なケーブル)

下記はあると便利です。RP2040にファームウエアを書き込む際にBOOTボタンを押しながらUSBケーブルをPCから抜き差しする時に微妙に手が足りん!ということがなくなります。

準備(ソフトウエア)

ソフトウエアの準備として下記が必要です。

    1. Arduino IDE のインストール
    1. Arduino IDEへ、arduino pico ボード設定の追加
    1. Arduino IDEへ、Adafruit TinyUSB ライブラリの追加

順を追ってやってみましょう。

1. Arduino IDE のインストール

リンク からPCのOSに合わせたVer.をダウンロードしてインストールしておいてください。

私は今だに 1.8.x 系列を使ってますけど、最近は2.x 系列でも安定したんじゃないかな?使ってないからわかりません。

2. arduono-pico をArduino IDEに導入

ArduinoはRP2040を標準ではサポートしていません!.... というのは実は嘘で、Arduino Mbed Core for RP2040という標準サポートのボード設定もあります。Arduino Nano RP2040 Connectなどのボードを使う場合は、こちら標準のライブラリも使えますが、Arduinoが出してるボードしかサポートしてないこともあって、微妙に流行ってません。

迷わずさまざまなボードに対応したarduono-picoの方をお勧めしますので、本稿ではこちらの導入方法について紹介します。

2-1. Preferences へ Additional Boards Manager URLs を設定

Arduino IDE起動後、[Arduino > Preferences]を選びます。
Preferences 画面が表示されますので、Additional Boards Manager URLs のテキストボックスに下記URLを入れます。

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Preferences 画面は OK を選んで閉じます。

2-2. Board Managerで ボード設定をインストール

続いてArduino IDEから、[Tools > Board > Board Manager] を選びます。

board-manager.png

Boards Manager 画面が表示されます。
テキストボックスに RP2040 と入力してください。
いくつか、追加可能なボード設定の一覧が出てきます。

Raspberry Pi Pico/RP2040/RP2350 と書いたボード設定が見つかります。

board-manager-2.png

これをインストールしてください。(既にインストールしてるとupdateボタンが表示されます)

ボード設定のインストールが終わったらBoards Manager 画面は Close ボタンで閉じて構いません。

3. Adafruit TinyUSB をArduino IDEに導入

次にインストールするのはライブラリです。下記手順でインストールしてください。
Arduino IDEから、[Tools > Manage Libraries] を選びます。

library-manager.png

Boards Managerとよく似た Library Manager 画面が表示されます。

検索Boxに TinyUSB と入力してください。

Adaftuit TinyUSB Library が見つかりますので、install ボタンを押してインストールします。

library-manager-2.png

インストールが終わったら Library Manager 画面は Close ボタンで閉じてください。

example を動かしてみよう

ざっくり準備が終わりましたので、Arduinoでスケッチを作ってボードに書き込んでみます。最初からコードを書くのは大変ですので、example を書き込んでみましょう。

TinyUSB ライブラリを追加すると、ライブラリを使った example も Arduino IDEに追加されます。

Arduino環境の凄いところはまさにココ。最初っから悩まずにスルスル学習が進むところですね。

1. example を開く

今回は、[File > Examples > Adafruit TinyUSB Library > MIDI > midi_test] を選んで開いてみましょう。

example.png

私が書いたコードじゃないので転載差し控えますが、おおまかに下記内容のプログラムになっています。

  • ループでメロディ(MIDI Note ON / MIDI Note OFF)を送信
  • MIDIイベントをデバイス側が受信するとシリアル経由で届いた内容を送信

という感じです。

2. デバイスへの書き込み。の前の準備

それではさっそく、デバイスに書き込んでみましょう。と言いたいところですが、ファイルを開いたあとに書き込みの準備をします。

2-1. ターゲットボードの選択

さきほど board manager からボード設定を追加しましたので、RP2040デバイスが選べるようになっているはずです。

今回私は Seeed XIAO RP2040 を準備しましたので、こちらの設定を読み込みます。

[Tools > Board > Raspberry Pi RP2040 Boards ... > Seeed XIAO RP2040] と選びます。この部分ではお使いのデバイスを選んでくださいね。

board-selection.png

2-2. USB Stackの選択

ボードを選んだ後は、さまざまなボード設定が行えるようになりますが、今回は USB Stackの設定のみ変更します。

[Tools > USB Stack > Adafruit TinyUSB] を選んでください。

usb-stack-selection.png

3. 書き込み!

準備も終わりましたので、さっそくデバイスにプログラムを書き込んでみましょう。

手順は下記の通りです。

3-1. デバイスをBOOTモードで PCに接続

デバイス(RP2040ボード)には、BOOTスイッチが備わっているはずです。
このBOOTスイッチを押しながら PCのUSBポートに接続してデバイスの電源を入れる必要があります。

USB-C端子は固く、最近のPCはPC側もUSB-Cだったりするので、この作業が実はかなりやりにくいです。
スイッチ付きUSBハブがかなり欲しくなると思いますが、なければ頑張ってください。
....安いスイッチつきUSBハブの導入をお勧めします。

BOOTモードで起動すると、PCから見ると RPI-RP2 マスストレージデバイスがマウントされます。

mounted.png

OSにもよりますが(上記はMacの場合)マウントされたDiskが見えたらひとまず成功です。

3-2. 書き込み

それでは、プログラムを書き込んでみましょう。

Arduino IDEの画面左上、左から2番目の アイコンをクリックするとアップロードが始まります。

write-button.png

下記のような画面が出たら書き込み成功です。

upload.png

うまくいかなかったら、これまでの手順を見直して、やり直してみてください。

書き込みが終わると、BOOTモードで接続されていたデバイスは一度自動的にアンマウントされ、新たにMIDIデバイスとして接続されます。

4. テスト

最後に動作テストの方法です。

一番簡単なのは、Web MIDI を使ってブラウザでテストする方法です。
下記サイトで 接続された MIDIデバイス情報を確認することができますので、やってみてください。

まず、下記サイトに Web MIDI API に対応したブラウザ(iOS以外のChrome、Edgeブラウザーなど)でアクセスします。

上記サイトのコンテンツの中段くらいに「入力」と書かれたセレクターがあります。

スクリーンショット 2024-12-07 16.02.48.png

このセレクターで「XIAO RP2040」など、今回利用したデバイスが表示されていれば、まずは成功です!

スクリーンショット 2024-12-07 16.02.55.png

表示されているデバイスを選択すると、少し上に表示されているテキストエリアに何やらテキストがどんどん表示されているはずです。

これがデバイスから送られてくる MIDIメッセージのダンプになります。

まとめ

RP2040とArduinoを使ってUSB MIDIデバイスをDIYする方法、の基本的な部分の解説を行いました。
一旦、今回の記事はここまでで一区切りとしたいと思います。

USB MIDIデバイスをもう少し使いやすくするために、PCから認識されるデバイス名などを変更する方法などについては別の機会に書いて行こうと思います。

最後までおつきあいいただき、ありがとうございました!

P.S.
大垣で展示したクリスマスツリー形MIDIデバイスは、その後職場に飾りました!クリスマス終了まで稼働予定!

IMB_1rjEGX.gif

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?