Forums: Developers (Thread #21538)

外部仕様(モジュール分割)について (2009-02-03 18:37 by my04337 #41639)

事前に考えていたのもありますが、一通り必要な機能が出そろった感じがしたのでモジュールの分割と各モジュールが必要な機能を列挙してみたいと思います。
今のところ、自分の中では以下の形を考えています。
・UI部
・再生時エフェクト表示
・譜面エディタ
・各種オプション指定
・シーケンスマネージャ部
・シーケンス、バンク、レイヤの管理
・譜面データの保存/ロード
・シーケンサ部
・UIからの指示を元にシンセサイザを制御
・シンセサイザ部
・シンセサイザ制御メッセージから波形生成
・音声出力部
・シンセサイザで生成した波形の再生

UI,シーケンサ,音声出力部はそれぞれ別々のスレッドで動作する予定です。
(シーケンスマネージャ部はUIとシーケンサからアクセスされ、シンセサイザはシーケンサのスレッドで動作する)

ほかに「こう分けるべきだ」とか「この機能が曖昧だ」等ありましたらレスお願いします。

RE: 外部仕様(モジュール分割)について (2009-02-03 18:38 by my04337 #41640)

うーん、半角スペースは削除されるみたいですね...
インデント付けナオした形で再投稿。
・UI部
・・再生時エフェクト表示
・・譜面エディタ
・・各種オプション指定

・シーケンスマネージャ部
・・シーケンス、バンク、レイヤの管理
・・譜面データの保存/ロード

・シーケンサ部
・・UIからの指示を元にシンセサイザを制御

・シンセサイザ部
・・シンセサイザ制御メッセージから波形生成

・音声出力部
・・シンセサイザで生成した波形の再生
Reply to #41639

RE: 外部仕様(モジュール分割)について (2009-03-01 17:35 by circussion #42232)

大まかにはそんな昨日分けでいいと思う、とりあえずは出力出来るようにしないとね。
気になるのはシンセサイザ部の制御メッセージが何処で作られるかだけど…
これは元から用意されている部分orUIのオプション機能で擬似シンセとして音声波形(出力制御データ)作成可能、ってことかな?

個人的にはシーケンスや音声データをmidiファイルとして出力、他ソフトとのデータ共有可というのが夢にあるのだが、
…これは後機能でもいいし、分類分けでは独立して新しく部を作る必要が出てきそうね。
Reply to #41639

RE: 外部仕様(モジュール分割)について (2009-03-01 17:44 by my04337 #42233)

シンセサイザの制御メッセージは、シーケンサがシーケンスマネージャから読み出した
譜面情報を元に作成するものだから、実際バンクやレイヤのデータその物になるかな.

midiとする場合、Linux環境でうまくmidiを導入できるかが問題ですな。
とはいえ、結局のところシーケンスはMidiに非常に似たフォーマットになるわけだから、
シーケンスマネージャからMidiをエクスポートする機構はそこまで難しくないと思われる.

ちなみに、シンセサイザ部はまさにそのMIDIシンセに当たるものだね。
本来のシンセサイザとしての機能は明らかに冗長だから、MikuRi-On向けにかなり簡素なインタフェースに
する予定だけど。
Reply to #42232

RE: 外部仕様(モジュール分割)について (2009-03-01 17:55 by circussion #42234)

ってことは…シーケンスマネージャに保存される譜面には音データも一緒に保存されるって事ね。
二重奏とかするのに譜面のみコピーとかあればいいなぁとかオプション考えてたけど別にいいか。

midiはやはり直に生成するライブラリとかは期待出来ないか…。
そこら辺のデータについては内部仕様か。まあ、大体任せます。
Reply to #42233

RE: 外部仕様(モジュール分割)について (2009-03-01 19:40 by my04337 #42235)

シーケンスマネージャについて、簡単に言うと、
・シーケンス:どのバンクを同時に再生するか+どの順番で再生するかを制御
・バンク:どのレイヤを同時に再生するかを制御(楽譜での全パート1小節)
・レイヤ:音色とどのタイミングでどの周波数の音を鳴らすかを制御(単パート1小節)
と言うのをイメージしていた。
これ以上細かくても面倒だし、荒いとドラムエンジン風のインタフェースにしては使い勝手が悪くなるんじゃないかなと想像。

>midiについて
Cならばライブラリはあるけど、Javaは見当たらないからねぇ...
まぁ、その機構はそれこそシーケンスマネージャとシーケンサが完成してからでも問題なさそうなので、
後々実装していけばいいかと(MIDIのパーサなら書いたことがあるので)。
Reply to #42234

RE: 外部仕様(モジュール分割)について (2009-03-08 23:23 by onodes #42420)

遅くなりましたが、シーケンスマネージャはそんなんでいいと思います。
あとはそれぞれのモジュール間での受け渡しを詰めていけばいいのでは?
Reply to #41639