設計仕様ページ

このページに設計仕様の一覧を載せる。

※ 情報が足りない場合は気がついた方が更新してください(更新時刻及び編集者を記述のこと)。

2009/02/03 18:13更新(編集者:tomoteru) ※ ノートイベント、レイヤ、バンク、シーケンスに関する記述はまだ合意をとれていない。

  • 概要
    • イメージは通称「あの楽器」。
    • UIについてはYAMAHA社のテノリオンをベースとする。
  • 言語/ライブラリ
    • 使用する言語はJavaとする。
    • 画面描画ライブラリはOpenGL(SDL?)を使用。
    • 音声出力ライブラリはOpenALを使用。
  • インタフェース関連
    • 1小節は横16分割(4/4拍子対応)、縦は13(白鍵8+黒鍵5)分割。
    • キーイベント(特定のキーが押されたときのみ、あるシーケンスを演奏)の実装。
    • 演奏位置を示す垂直のバーが右方向へループする。
  • 楽譜表現方式について(概要)
    • 楽譜は、レイヤ,バンク,シーケンスにより構成される。
    • 1枚のレイヤは1パートに対応する。
    • レイヤには複数の論理ノートイベントを含めることができる。
    • 複数枚のレイヤをまとめてバンクを構成することができる。
    • レイヤは複数のバンクから参照されてもよい。
    • シーケンスにはバンクの演奏順及び演奏回数、他のシーケンスへのリンクを記述できる。
    • 複数のバンクを同時に再生する場合は、シーケンスから指示する。
    • バンクは複数のシーケンスから参照されてもよい。
    • レイヤ、バンク、シーケンスの関係サンプルを図1に示す。
  • 論理ノートイベントについて
    • 楽譜における1音符に対応。
    • 論理ノートイベントのパラメータを以下に示す。
      • ノート番号(音階)
      • ノートボリューム
      • パンポッド
      • 発音長(MIDIのようにノートオン,ノートオフ形式は採用しない。)
  • レイヤについて
    • レイヤは楽譜における1パートに対応。
    • レイヤはレイヤ自体の属性と論理ノートイベントの集合からなる。
    • レイヤ自体の属性を以下に示す。
      • 楽器種類(MIDIにおけるプログラム)
      • レイヤボリューム
    • 同じ音階の論理ノートイベントは同時に発行することができない(表示上の問題。シンセサイザでは可能)。
    • レイヤボリュームの変更は発音中の音を含めリアルタイムで適用される。
  • バンクについて
    • バンクは楽譜における1小節に対応。
    • バンクはバンク自体の属性とレイヤの集合からなる。
    • バンク自体の属性を以下に示す。
      • バンクボリューム
    • 同じレイヤを同時に参照することが可能(あまり意味はないが)。
    • バンクボリュームの変更は発音中の音を含めリアルタイムで適用される。
  • シーケンスについて
    • シーケンスは楽曲における論理的な区切り(例:Aメロ,サビ等)に対応。
    • シーケンスは以下の二つからなる。
      • シーケンスボリューム
      • バンク再生順情報
      • 次シーケンスへの参照
    • シーケンスボリュームの変更は発音中の音を含めリアルタイムで適用される。
    • バンク再生順情報は、同時に再生するバンクの集合(以下、バンク群と呼ぶ)の集合と、各バンク群の再生回数からなる。
    • 図2にバンク再生情報のモデルを示す。
  • 入出力
    • 楽譜データについては、基本的に独自形式で出力する。
    • 楽譜データから演奏したwavファイルを取得可能。
    • 楽譜データをSMF(MIDI)へ出力可能(SMF入出力ライブラリの有無によっては実装未定)。
    • 通常時はOpenALによるストリーミング再生を行う。

コメント

この記事へのコメント:
:
  • Midiエクスポートのことを考慮し、パンポッドをノート単位ではなくレイヤ単位にすべき。
    -- my04337 (2009-03-13 23:01:29 JST)

図表一覧

  • 図1 レイヤ、バンク、シーケンスの関係サンプル Sequence-Bank-Layer-Sample2.png
  • 図2 シーケンスの作成例サンプル(枠内のバンクは同時再生) SequenceExample.png