MIDI音源プログラムをLongan Nanoに移植しました

以前作成したYMF825 Boardを使ったMIDI音源プログラムをLongan Nanoに移植しました。色々と手直しも入っています。

ソースコードはここに置きました。

github.com

外観はこんな感じです。だいぶ小さくなりました。

f:id:nyankov:20200425121532j:plain

以下、動作させるまでの流れについて簡単に記載したいと思います。

【追加】2020/6/5 音源ICとしてYMZ294を追加しました。YMZ294を追加しました - にゃんこ府

目次

配線

Longan NanoとYMF825 Boardの結線は次のようにしました。

【修正】2020/5/4 N_RSTへの配線をA8からB11に変更しました。

Longan Nano YMF825 Board
A8B11 N_RST
B15 MOSI
B14 MISO
B13 SCK
B12 SS
G GND
3.3V 3.3V
5V 5V

YMF825 Boardは2電源で使用するための回路変更を行っています。
また、Longan NanoのG端子は端っこにある方を使用しました(もう一つの端子を使用したところ、なぜか2V付近まで持ち上がってCPUが飛んだ)。

ビルド&書き込み

前回の記事の PlatformIO+VSCode+RV-Linkを使用する方法によって行いました。

デバイスドライバのインストール

Windows10の場合、書き込んだLongan Nanoを接続するだけで標準ドライバがインストールされました。
バイスマネージャはこんな感じです。

f:id:nyankov:20200425113042j:plain

MIDI演奏

以下の画面はKbMedia Playerのデバイス設定ウィンドウになります。
画像のようにnano_midiを選択してからMIDIファイルを再生すると、YMF825からメロディが鳴りました。

f:id:nyankov:20200425191302j:plain

KbMedia PlayerはKobarinさんのサイトからダウンロードできます。とても使いやすいのでおススメです。

Kobarinのホームページ

なお、MIDI Message Parserに登録している音源ドライバ(single_ymf825)ですが、同一チャンネルに和音があったり演奏中にプログラムチェンジが発生すると、正しく音を鳴らすことが出来ないため、正直残念なメロディになってしまうことが多いです。
とりあえずうまく演奏できるMIDIを探したり、この音源に合わせ込んだMIDIファイルを作成したりして楽しんでいます。

【追加】2020/7/5
同一チャンネルに和音があった場合でも演奏できる音源ドライバ(music_box_ymf825)を追加して、クロノ・クロスの「夢のかけら」を演奏してみました。
www.youtube.com

演奏できる音色は一種類のみですが、コマンドによって音色の変更、 パーカッションON/OFFの切り替えを行えるようにしてみました。 デフォルトはオルゴール、パーカッションOFFとしています。 コマンドの詳細等はリポジトリwikiにまとめ中です。
wiki
Home · nyannkov/nano_midi Wiki · GitHub

CDC通信

最後にCDC通信です。Tera Termを使用してLongan Nanoと通信している様子をGIFアニメにしてみました。 前半は初投稿の記事に記述したゲートウェイモードの動作で、音色パラメータの調整など直接ICとやり取りしたい場合に使用しています(なおどうでもいいですが、ソースコード内ではhex modeに変更しています)。
後半は今回実装したコマンドモードの動作で、コロンから始まる文字列をコマンドとして取り扱い、スペースとタブで区切った後続文字列をコマンド処理の引数として渡せるようにしました。今後、対応音源が増えた際に使用する予定です。

f:id:nyankov:20200425150011g:plain