スキップしてメイン コンテンツに移動

Godot MIDI Player作りました

GodotでMIDIファイルを再生できる Godot MIDI Playerを作りました。

https://bitbucket.org/arlez80/godot-midi-player

なにこれ

Godot Engine 3 向けのライブラリです。SoundFontとMIDI fileがあれば再生できるライブラリです。
ゲームに組み込んで使う目的で開発しました。

仕組み

全て、GDScriptのみで書かれており、C++は使ってません。波形の合成はしていません。
MIDIのシーケンスデータを解釈しながらAudioStreamPlayerで再生します。
AudioStreamPlayerにはmix_rateというのがあり、元のmix_rateから変更すると音階(再生速度)が変わるので、それを利用しています。

再生可能ファイル

  • Standard MIDI File(*.mid)
    • format 0
    • format 1
format 2には対応していません。2019-02-10追記、format 1と同じようなように読めるので一応対応という扱いにしておきました。保証はしません。

再生可能ファイル(予定)

  • MOD (*.mod)
    • perserは既に書いています。MOD.gd
    • MIDIのシーケンスデータに変換 + 波形データをMIDIで使えるようにしてこのプレイヤーで再生できるようにします
  • IT (*.it)
    • 仕様は知らないのでこれから調べます
ほかにシーケンスデータがあったら対応します。

副産物

SMF.gdというStandard MIDI Fileを読み込むプログラム、SoundFont.gdというSoundFontを読み込むプログラムががついてますので、それだけ切り出してなにかに利用することができます。

ライセンス

MITライセンスです。

コメント

このブログの人気の投稿

UTF8からSJISに文字コード変換ライブラリを作りました

HaxeでWindowsのコンソールに出力するさい、SJISでないと文字化けを起こしてしまいます。
というわけで、文字コード変換ライブラリを作ってみました

2016-05-25追記:今はnorikoというライブラリにSJIS、UTF8、JIS、EUCの文字コード変換ライブラリを実装しています。

ぐるんぐるん

今、ぐるんぐるん(仮)という名前のゲームを作っています。
いわゆる、6DoFでの空間上で撃ちあいをするゲームになっています。Godot Engineの練習3作目として作っています。

Godot Engineの練習として以下の機能を実装する予定ではありますが、調べながらなので何時実装になるかはわかりません。

・ネットワーク対戦
・洞窟ステージ
・軽量化(GridMap + Lightをなんとか良い感じで使いたい)

LightはBakeできるハズなんですが、やるとエディタごと落ちるのでちょっと要調査です。

HaxeのSMFライブラリ format-midiを公開しました

HaxeでStandard MIDI File(以下SMF)の読み書きができるライブラリ「format-midi」を公開しました。

https://bitbucket.org/arlez80/format-midi

これでHaxeを用いてSMFの生成/解析ができます。
使い方はHaxelibのformatというライブラリにあわせて作ってありますので、簡単に使うことができると思います。

https://bitbucket.org/arlez80/m2sauna
これはformat-midiを使って作っている、SMFからAudiosaunaというブラウザ上で動くシーケンサー用のファイルに変換するツールです。