MIDIを切り口にArduinoの使い方を紹介します。 MIDIを使っていない、Arduinoを使った電子工作の記事もありまがご容赦下さい。 記事は次ような私の持っているArduinoを使って試して書いています。
注:
・Asrduino MicroはArduino公式、Pro MicroはSparkFunなどのサードパーティ製。CPUは同じ。
インターフェースや電源電圧などPro Microの方が選択子が広い。
・MKR1010はMKR1000の後継。MKR1010はWifiに加えてBluetooth Low Energy (BLE) 対応。
これまでに試したことのあるデバイスを一覧にしてまとめておきます。
ArduinoとPCをUSB-MIDIで接続するための3つのライブラリ、 MIDIUSB, USB-MIDI, USBMIDIの3種類のライブラリの特徴を記載しています。
USB-MIDIデバイスとして使えるArduinoを調べてみました。
Arduino UNOをUSB-MIDIして、PCとつなぎます。
Arduino MicroをUSB-MIDIして、PCとつなぎます。
Arduino NANOにハードウェアを追加してUSBMIDIを搭載しました。
ArduinoのUSB-MIDIのライブラリMIDIUSBでは、 MIDIの送受信のための構造体が MIDIMIDIUSB_Defs.hに定義されています。 byte1, byte2, byte3 はMIDIのイベントがそのまま入ります。 それではheaderには何が入っているのか調べてみました。
GM音源、SAM2695を次にような接続でPCから鳴らします。 PCのMIDIシーケンサーはMIDIをUSB-MIDIのフォーマットでArduinoへ投げます。 ArduinoはUSB-MIDIデータを受信すると、これをMIDIに変換してUARTでSAM2695に投げます。
小型のArduino, Adafruit Trinketで作成したMIDI Controllerの紹介です。
ArduinoのPWM波(pulse width modulation:パルス幅変調)の仕組みを知りたくて、 ArduinoのレジスタをMIDIで出力し、Web MIDIを使ってブラウザで表示を行いました。
Arduino初めての方に向けてArduinoで音を出す紹介です。 Arduino購入して、MIDIを使って音を出すまでの手順を記載します。
Arduinoから16ビットのデータをMIDIで転送し、Web MIDIで受信して表示するプログラムです。 16ビットデータの転送には、キープレッシャーのステータス(0xA0)を利用します。
RedBearLab.comのBluetooth 4.0 Low Energy BLEシールド v2.1 というArduino用のボードを持っています。8年程前に買ったモノと思われます。 このボードを使って、ArduinoとMACをBluetooth MIDIでつないで見たいと思います。
RedBearLab.comのBluetooth 4.0 Low Energy BLEシールド v2.1 をArduinoと接続し、 Bluetoorh MIDI機器として動作させます。 これをWindows 11 から認識させます。
秋月電商で販売しているヤマハ音源IC(YMZ294)を Arduinoで制御して音出してみます。 MIDIシーケンサーで音楽を鳴らすデモを作成します。
USB-MIDI化できないArduinoをシリアルデバイスとしてPCに接続し、PC内でシリアルデータをMIDIに変換します。
Hairless Midiserialは、ArduinoをPCとUSBケーブルで接続して、ArduinoとMIDIアプリケーションをつなぐためのアプリケーションです。
Arduino MicroでシリアルMIDI(UARTの31.25kbps通信) を出力しようとしてハマったので記載しておきます。 Arduino IDEのスケッチ例(Communication->Midiで選択) をMicroで実行してもTX RX Pinを使ったシリアル通信はできません。
AD9833はAmazonで購入できる信号発生器です。ArduinoからSPI通信で9833にデータを送信します
D/A変換MCP4726のコマンド覚書
スイッチサイエンスで、SAM2695というM5Stack用MIDI音源ユニットを購入しました。 M5Stack用ではありますが、Arduinoからも鳴らす事ができます。
MAD7991は4チャンネルのADコンバータ(AD7991)を搭載したモジュールです。 I2Cシリアルインターフェースでコントロールすることができます。
秋月電子通商で扱っているフォトリフレクタTPR-105Fを使ってみました。 TPR-105Fは光を出す発光素子と、光を受信する受光素子を持っています。 光を反射する物体(白紙)に近づけると、反射した光を受光し、 光を吸収する物体(黒紙)に近づけると、光を受光できなくなります。