X68000エミュレータでWindowsのソフトウエアMIDIを使ってみる

使うもの

⓵ XM6TypeG             X68000エミュレータ

retropc.net

 

② VirtualMIDISynth    MIDIドライバ

  と

  SGM-V2.0.1.sf2     サウンドフォント

 

導入については↓こちらがわかりやすいです

umetake.d.dooo.jp

 

③ ZMUSIC ver2    X68000用音源ドライバ+BASIC&C言語用ライブラリ

retropc.net

 

XM6typeGの使い方から書いていると大変なことになるので、「動いている」という前提で…

 

まずZMISICを常駐させます

ZMUSIC[リターン]でOKです

 

X-BASICで使うのでBASIC.CNFファイルを編集

この辺はX68000を使ったことがある方は大丈夫かと思います。

このへんはX-BASICのマニュアルとZ-MUSICのマニュアルの方がわかりやいと思います。

XM6rypeGの「ツール」→「MIDI」でMIDIの設定をします。

よくわかっていませんが設定はこんな感じ

VirtualMIDISynthがセットできればOKかと…

リセットコマンドは「GSでいいんじゃないかなぁ」という根拠のない設定

 

X-BASICを起動します。

ZMUSICが使用可能かどうかの確認は

ダイレクトモードから

m_init()

としてエラーが出ないことで確認できると思います

 

さっそくですが

単純に音を出すリストはこんな感じです

音を出すまでがとりあず大変だと思うので、まずはそこまでできるように…

   10 str zz
   20 m_init() 
   30 m_count(192) 
   40 m_alloc(1,10000) 
   50 m_ch("fm") 
   60 m_assign(10,1) 
   80 m_trk(1,"@1 v15 o4 cde")
   90 m_play()
  100 input zz
  

プログラムは

20 音楽関係のデータを初期化して

40 演奏トラックを確保して

50 演奏チャンネルの並びを指定して

60 40で確保した演奏トラックをMIDIのチャンネル0番に指定して

80 演奏トラックに演奏データをMMLで記述して

90 演奏させる

 

という流れです

 

音色が色々変えられます

どんな音色があるかは

VirtualMIDISynth Configurator

で確認できます

サウンドフォントをダブルクリックすると音色リリストが表示されます

コピペできるのでエディターなどに書き写してしまうと楽です

 

データは

バンク:プリセット = 音色名

という順でならんでいます

 

   80 m_trk(1,"@1 v15 o4 cde")

上のプログラムの80行

@1

がプリセットの変更です

注意としては、ZMISICのMMLでは表のプリセット値に+1した値を記述します

 

バンク切り替えは

   80 m_trk(1,"i3 @1 v15 o4 cde")

プリセット変更の前で                       ↑

i(バンク)

で行います、

バンク切り替え、プリセット変更は両方書かないと有効にならないような感じなので

両方一緒にしておいたほうが無難だと思います

 

i(バンク) @(プリセット番号+1)

という感じですね

 

例えばこの表で


2:50 = StackStrings

 

この音を使いたい場合は

i2 @51 v15 o4 ceg

という感じになります

 

 

 

次はMMLを使わず、MIDIに直接データを送って音を出す方法です

プログラムの好きなタイミングで音が出せますので効果音などの用途ならこういうやりかただと思います

 

   10 m_init()
   20 m_ch("fm")
   30 /*
   40 m_out(&HB0,0,3)        :/* SET BANK
   50 m_out(&HC0,126)        :/* SET PRESET
   60 m_out(&H90,40,127)     :/* SOIND ON
   70 for i=0 to 10000:next
   80 m_out(&H80,40,127)     :/* SOUND OFF

 10 音源を初期化して

 20 演奏チャンネルの並びを指定(今回の処理では意味はないです)

 40 バンクを切り替え

  Bn 00 xx

  n は MIDIのチャネル 0~15

  zz は バンク

 50 プリセットを指定

  Cn yy

  n は MIDIのチャンネル

  yy  はプリセット番号(今回は+1しなくてよい)

 60 音を出す

  9n zz vv

  n は MIDIのチャンネル

  zz は音階の番号(ノートナンバーと呼ぶ模様)

  vv は音量(ベロシティと呼称) 0~127で127が音量が大きい

 70 ウエイト

 80 音を消す

  8n zz vv

  n は MIDIのチャンネル

  zz は音階の番号

  vv は音量←この数値は特に意味がない模様

 

データをMIDIに直接送るような操作は「MIDIメッセージ」と呼ばれている模様

16進数のデータを順に送るあたりアセンブラっぽいですね

マイコン少年的には、こういうやりかたりほうが理解しやすかったりします

 

 

MIDIメッセージについては詳しく解説してくれるページがたくさんありました

音楽用語がわからなくて、自分は音を出すところまでしかできませんでしたが…

www2.odn.ne.jp