前回の記事「FM音源YMF825を使ってみる[組立編]」で何とか音出しに成功しましたが、このままでは曲を演奏するにはとても不便ですので、今回はArduinoをMIDI音源化させて外部のMIDIシーケンサ-で演奏できるようにしてみようと思います。

今回の構成

  1. MIDIシーケンサソフト:DOMINO(フリーソフト)
  2. USB-MIDI変換ケーブル:YAMAHA製 UX16 (本品は生産終了品なので他メーカー品を使用してください)
  3. MIDI-Serial変換モジュール:aitendo製 K-MIDI4N28
  4. YMF825MIDI音源化モジュール:ArduinoNano + YMF825
  5. スピーカー:ダイナミックスピーカー(アンプ無orアンプ有どちらも可)

これらを使い、演奏したいMIDIファイルを最上流のシーケンサーから流し込み順次処理を施しながら最下流のスピーカーまで順次処理をして最下流のスピーカーから音出しをしてみます。

【構成】

MIDIデータ入力からスピーカーの音出しまでのデータの流れを書いてみました。

【構成要素】

MIDIシーケンサソフト:DOMINO

MIDIシーケンサとはMIDIデータを時系列に処理をしてMIDIストリームデータとして吐き出していくソフトのことです、ここではフリーソフトとして有名なDOMINOを使ってみます。

TAKABO SOFTさんのサイトからダウンロードします。

インストーラタイプでないので起動は解凍フォルダ内のDomino.exeのオープンになります。

起動すると下図の画面になります

 

USB-MIDI変換ケーブル

MIDIパーツとしては極めて一般的なパーツでして、電子楽器メーカーからたくさんの種類がリリースされてます。

今回はYAMAHA製 UX16を使います。(本品は既に生産完了品となっています)

MIDI-Serial変換モジュール

MIDIケーブルは5ピンDINコネクタを使用していて、電気信号的にはSerial通信方式を使ってます、MIDI信号をArduinoに接続するためこのMIDI-Serial変換モジュールを使います、実際に使うものはaitendoの「MIDI入力キット [K-MIDI4N28](395円税別)」です。

このモジュールはキット商品のため自分でパーツの組立・半田付けをする必要がありますが表面実装部品は無くすべてリード線部品なので半田付けは特に難しくはないです。

YMF825MIDI音源化モジュール

そのような名称のパーツがあるわけではなくて、ここではArduinoNanoにYMF825をMIDI音源化するスケッチをダウンロードすることでMIDI音源モジュールとして動作させるという意味です。

 

【YMF825のMIDI音源化】

基本的にYMF825のMIDI音源化は前回記事の回路構成そのままで音源化対応スケッチをArduinoにダウンロードすることで具現化できます。

MIDI音源化対応のArduinoスケッチでは以下の手順でMIDIデータの処理をします。

  1. シリアルデータを受信
  2. MIDIデータを解析
  3. 解析データに従って、音色・ノートをYMF825に設定
  4. スピーカーから音が出る

MIDI音源対応スケッチファイルの準備

YMF825紹介のYAMAHAwebサイト「YMF825Board GitHubPage へようこそ!」にYMF825をMIDI音源化するサンプルスケッチ(sample2)が掲載されてます、しかしながらこのスケッチのままではMIDIデータ受信処理部分がプログラミングされてないようでソースの変更が必要です。

幸いなことにFabbleというサイトの「YMF825BoardをArduinoでMIDI音源化する」という記事にMIDI音源化するスケッチが記載されてましたのでこれを使おうと思います。

具体的な手順を以下に書きます。

Step1:yamaha-webmusicGitHubからファイルをダウンロード

yamaha-webmusic/ymf825boardページから一連のファイルをダウンロードします、ZIP形式でダウンロードしますがまずは”ymf825board”(名称は任意)というフォルダを作りその中にZIPファイルを保存。そして同じフォルダ内に解凍します。

Step2:Arduinoフォルダ内にコピー

まずは、Dcoumentフォルダ ⇒ Arduinoフォルダー内に”ymf825midi”(名称は任意)というフォルダを作成します、次に上記解凍フォルダ”ymf825board”内のsample2フォルダ内の2つのフォルダ、”arduino”と”common”内の全ファイルを”ymf825midi”内にコピーします。

最終的には以下の様になります。

 

Step3:スケッチファイルの入れ替え

上記のスケッチファイルのままですと前述したようにMIDIデータ受信処理部分が抜けてるので、このスケッチファイルを受信処理が追加されたスケッチファイルに入れ替えます。

入れ替えるスケッチファイルは前述のFabbleサイト「YMF825BoardをArduinoでMIDI音源化する」にアップされてますのでそこからダウンロードします。リンク先はここです。

ダウンロードしたらそのまま”ymf825midi”フォルダ内の”ymf825board_sample2.ino”ファイルに上書きします。

尚、ファイル名は同一ですので間違えやすいので、ArduinoIDEで一度オープンした後に名前を変えて保存を使い別の名前に変えた方が良いと思います。

 

ArduinoIDEでコンパイル

ArduinoIDEを起動しスケッチブックメニューの中から”ymf825board_sample2″を選択しオープンします。

MIDI Libraryのインストール

ArduinoIDEのライブラリーマネージャーを使いMIDI Libraryをインストールします。下図を参考にしてください。

 

ArduinoNanoコンパイル&書き込み

これでやっとコンパイルの準備完了しましたので、ArduinoNanoを接続しコンパイル&書き込みを実行します。

これでMIDI音源モジュールの完成です。当然ですが外部からMIDI信号を入力しないと音は出ませんので、「あれっ音が出ない!}なんて慌てずに次に進みましょう。

 

配線

冒頭のブロック図を参考に順次配線をしていきます。

USB-MIDI変換ケーブル接続

ドライバーインストール

YAMAHA製のUX16を使うにはドライバーソフトが必要なのでYAMAHAサイトからダウンロードしインストールをします。

YAMAHAの製品サイトからダウンロードページにいきます。対象のOS種別に従いダウンロードします、ダウンロードファイルの中にインストール手順書が入ってます。

この手順書によるとMIDI機器とをケーブルで接続しさらに電源オンした状態でインストール開始(setup.exe起動)をせよと書いてありますので要注意です、と言っても未接続でインストールしたらどうなるかも書いてないので接続が必須かどうかも不明ですが・・・

ケーブル接続・デバイスマネージャー確認

MIDI変換ケーブルの先に未接続の状態でもUX16をUSBいサイコムとデバイスマネージャーに表示されます。

 

MIDI-Serial変換モジュールとArduinoとの接続

下図に従い、MIDI-Serial変換モジュールとArduinoNanoを接続します。

全配線のチェック

すべてが接続完了しているかを確認し、電源オン(ArduinoNanoのUSBケーブル接続)します。

この状態で音出し準備完了です。

 

MIDIシーケンサー起動&演奏

MIDIシーケンサーDomino起動&設定

Dominoのインストールフォルダ内のDomino.exeを起動させます。

Dominoが起動したらファイルメニューから環境設定を選びMIDI出力先と音源定義ファイルを選択します。(下図参照)

 

 

MIDIファイルのインポート

既存のMIDIファイルをインポートするかシーケンサー画面上でデータ入力するかをして演奏データをDomino上に形成します、できあがったらDomino画面上部の再生ボタンをクリックすれば一小節目から順次再生されます。

注)ここではMuseScore3経由でカノンをダウンロードし、MuseScore3上からMIDIファイルに落としたものをDominoで再生してます。ここの作業で一つ注意があります、それはMIDIファイルのフォーマって変換が必要なことです。MuseScore3のMIDI出力はFormat1のためDominoではインポートできませんでした、そのためDominoが読み込めるFormat0に変換する必要があります。(ここではフォーマット変換にはSMFConverter 1.0b for Windowsを使いました。)

最後になりますがにカノン再生動画を載せました。