開発コンセプト

このライブラリは、音楽シミュレーション用アプリケーション向けのファイルフォーマットであるBMS(Be-Music Source file) の読み込み、書き込みを行うアプリケーションを容易に開発できるようにするというコンセプトで開発されました。また、 旧来から存在するBMSの仕様を抽象化し、異なるルールの音楽シミュレーション用アプリケーションを素早く設計・開発できることを 念頭に置いた作りとなっています。

どんなことができる?

BMSライブラリを使用することで以下のようなアプリケーションを容易に開発できるようになります。
  • BMSファイルから楽曲データを構築し演奏する(BMSプレイヤー)
  • BMSファイルを編集しファイルに書き出す(BMSエディタ)
  • 複数のBMSファイルを解析しデータを分析する(楽曲データ分析ツール)
  • BMSフォーマットを使用した新しいBMS仕様を策定し、その楽曲データを再生・演奏する(新しい音楽シミュレーションゲーム)

最も簡単な使い方は?

最も簡単な例として旧来のBMSファイルを読み込み、定義内容を表示するプログラムを以下に紹介します。 コマンドでプログラムを起動し、そこで指定されたファイルを読み込む内容になっています。
import java.nio.file.Path;

import com.lmt.lib.bms.*;
import com.lmt.lib.bms.bemusic.*;

public class BmsTutorial {
    public static void main(String[] args) throws BmsException {
        // BMSファイルを読み込みます
        BmsContent content = new BmsLoader()
                .setSpec(BeMusicSpec.createV1(null, null))  // Be-MusicのBMS仕様を使用します
                .setHandler(new BeMusicLoadHandler())       // Be-Music用の読み込み用ハンドラを使用します
                .load(Path.of(args[0]));                    // コマンドで指定されたファイルパスから読み込みます

        // 読み込まれたBMSファイルからヘッダ情報を構築し、内容を表示します
        BeMusicHeader header = new BeMusicHeader(content);
        System.out.println("File = " + args[0]);
        System.out.println("#GENRE " + header.getGenre());
        System.out.println("#TITLE " + header.getTitle());
        System.out.println("#ARTIST " + header.getArtist());
    }
}
パッケージ 
パッケージ 説明
com.lmt.lib.bms
BMSライブラリの中核となるAPIが定義されています。
com.lmt.lib.bms.bemusic
7個のON/OFFスイッチと1個の2方向操作可能な入力デバイスを1~2セット用いる音楽シミュレーション用のBMS定義を扱うサブセットです。