FreeBASIC MIDI 音を再生
目次→フォーラム→FreeBASIC→補足→FreeBASIC Projects←オリジナル・フォーラム
ここでは、MIDI で指定した単音の連続を再生させるプログラムを紹介します。
MIDI 楽曲ファイルを再生する方法は、ExtLibfmod を参照下さい。
参考:Windows API による MIDI プログラミング
MIDIリファレンス:https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd757277(v=vs.85).aspx
このページは、FreeBASIC Community Forum→Projects の下記 Topic の翻訳です。
1.ToneGrid - Playing MIDI Notes
2.QB like PLAY plus more...
3.Midi Strings A-minor Chord
ToneGrid - Playing MIDI Notes
Copyright © oog , Mar 31, 2013 18:34
https://www.freebasic.net/forum/viewtopic.php?t=21027
これは、小さなMIDIプレイヤーです。 - 楽しんでみて下さい。
(このプログラムは、Windows だけで動作します。)
音のオン/オフを切り替えるには、グリッド内をマウスでクリックします。
キー操作:
"p" - ブルース和音の再生を停止/開始
Space - ミュート(消音) On / Off
"+"/"-" - MIDIプログラム(楽器)変更
"0"-"9" - 和音を移調(最初に、"P" を押して、ブルース和音の再生を停止して下さい。)
Esc - 終了
QB like PLAY plus more...
Copyright © Mysoft , Dec 25, 2008 3:45
https://www.freebasic.net/forum/viewtopic.php?t=12995
2つの異なる 音楽再生プログラムを作りました。
サンプル曲プログラム
音楽再生プログラムの PLAY 能力の多くを使う楽曲の例で、ブラジル人のテーマ曲です。
ファイル名 BrazillianThemeMusic.bas で保存して下さい。
(PlayMidi.bas を include していますが、これを、PlayFMOD.bas に置き換えても、同じように再生できます)
QB PLAY 構文を知らない人のための補足:
構文: play "Commands"
オクターブと音色命令:
On - 現在のオクターブを設定 (0 〜 6)
< と > - オクターブの上げ/下げ
A-G - 現在のオクターブの音名の音を出す
# or + - 現在の音を半音上げる
- - 現在の音を半音下げる
In - 現在の楽器を設定 (0 〜 127) MIDI 版のみ
楽器一覧は、下記で参照できます:
MSDN(Microsoft Developers Network) Standard MIDI Patch Assignments
長さと速さの命令:
Ln - 音の長さを設定(1〜64)。64 は 1/64 の長さです
音の長さをを指定するために、 A-Gn を使うことができます(Lがデフォルトです)
音名の後に . を付けると、50% 長くなります。(付点音符)
Pn - 所定の長さの休止(1〜64)。64 は 1/64 の長さの休止
Tn - 毎分の四分音符の数を設定(120 がデフォルト)
ML - レガート(なめらか)モードを設定(音は指定長さ全長を再生)
MS - スタッカート(短く切る)モードを設定(音は半分の長さを再生)
MN - 通常モードを設定(音は 3/4 長さを再生)
その他の命令:
MF - 前景モードで演奏(音は、別の音を開始する前に待ちます)
MB - 背景モードで演奏(以降の音を待ち行列化します(7秒))
参考1:Music Macro Language(MML)
https://ja.wikipedia.org/wiki/Music_Macro_Language
参考2:MMLの楽譜を作成しMIDIやMP3に変換・再生
http://music-school.cute.bz/mml_to_midi_converter.html
参考3:MML入門
http://www5.big.or.jp/~annex-hp/anxmid/nyumon.html
FMOD モードでは、最後の待機音を再生するために、PlayFlush 関数を使ってください。
Playプログラムの一つは、FMOD を使います。
QB がするような方形波の音、サウンドカード出力を生成します。(dosbox で取得するように)
ファイル名 PlayFMOD.bas で保存します。
2つめの Play プログラムは、MIDI を使います。
構文は上と同じですが、mmsystem(ミディ)を使っているので、ただの方形波と比べると、より良くなっています。
楽器選択もできます。
ファイル名 PlayMidi.bas で保存します。
Midi Strings A-minor Chord
Copyright © angros47 , May 26, 2009 20:03
https://www.freebasic.net/forum/viewtopic.php?f=7&t=12995&start=15
このプログラムは、Midi で指定した和音を演奏できます。
I 命令で複数の楽器を使うことができます。
H 命令でチャンネルを変えて和音を再生できます。
和音コードも演奏できます。この場合は、巻き毛括弧を使ってください、例:{ABC} は同時に3つの音を再生します。
サンプル曲プログラム
Play プログラム
ファイル名 MidiStringsA-minorChord.bas で保存して下さい。
コンパイル時に、下記の警告が出ますが、演奏できます。
MidiStringsA-minorChord.bas(44) warning 3(1): Passing different pointer types, at parameter 1 of THREADCREATE()
ページ歴史:2016-10-29
日本語翻訳:WATANABE Makoto、原文著作者:oog & Mysoft & angros47
