
|
Studio ftn Score Editor Classic 6 の開発状況を報告します。 あらすじ
![]() 2007-10-31 状況
VSTパラメータの件であるが、GUIありなしに関係なく、パラメータ画面を出せるようにした。 膨大なパラメータがあっても処理速度に問題がなく、 スクロールすれば、目的のパラメータが見つかるので、使用したいパラメータの選択機能は不要となり、 全てのパラメータを表示する仕様となった。 その結果、選択情報などの楽譜保存は不要となった。 6.01の段階では、この画面があれば、音源定義を作成しなくても、パラメータの操作が可能である。 結果的に、5.4のVSTパラメータ画面を6.01でも対応し、 VSTの組み込みGUIありなしに関係なく表示できるようにした。 (5.4ではGUIがある場合は表示できない仕様だった) 問題が解決したので、残りの残件対応に入りたい。 プリセット関連の4残件をまずは対応したい。
変換処理であるが、1箇所どころか何十箇所もプログラムミスがあり、 これでは、どうやっても動くはすがない。問題を対処して無事動作するようになった。 やはり、集中力は大切である。集中力のない時に開発を進める時ほど危険なものはない。 問題が片付いたので先に進んだのであるが、VSTのパラメータをどうやって画面から操作するかといった問題がまだ残っていた。 残っていはいなかったのであるが、仕様が納得いかなく、これを6.01の機能にするには、無神経すぎると思っていた。 操作画面(GUI)が搭載されているVSTの場合は特に問題はない。 しかし、GUIが搭載されていないVSTの場合、ホストが、(Score Editor が)、その操作画面を用意してやる必要がある。 昔のVSTならばパラメータ数も少ないし、むしろ、ホスト側に頼っているVSTが多い。 最近はGUIを搭載したVSTが多く、パラメータ数は1000を超えるほど膨大である。 これをユーザに操作させるのは無謀である。 そこで、操作したいパラメータのみユーザが選択して、独自の操作画面を作る機能があれば問題は解決する。 これについては、音源定義の作成にて対応する予定であった。これがもともとの計画であった。 しかし、音源定義の作成は初心者には厳しいかもしれない。 VSTごとに音源定義を作成している暇もないだろう。 そもそもVSTにどのような内部パラメータがあるかなど、ユーザは分からない。 かといって、音源定義を自動生成するにも膨大なパラメータが出来上がってしまうだけだ。 音源定義の読み込みに時間がかかってしまうという問題もある。 この問題について、もう一度見直してみる事にした。なんとしても解決したい問題である。 現在思いついた案としては、VSTをアサインしたものについて、 パラメータ一覧画面を表示できるようにする。(この仕様は5.4にも存在するが、GUIがある場合は、表示されない。) 一覧の中から、使用したいパラメータをユーザが選択し、選択したパラメータのみが、 Score Editor の操作画面に表示される。このような仕様が思いついた。 選択情報は楽譜ファイルに保存されるようにする。 もし必要なら、パラメータ一覧を参考にして、音源定義画面を作成する事も可能である。 ただ、音源定義とユーザ選択情報をうまく融合させなければならない。 このあたりの詰めが終われば実装に取り掛かれる。
開発以外に、いろいろとやる事が増えてしまい、なかなか開発に集中できない。 普通の人は気がつかないかもしれないか、普通の事かもしれないが 10月は社会全体の変動期だと思う。身の回りでもいろいろと動きがある。 こういう時期は何かと落ち着かないものである。 開発のペースが戻るまでは、休憩か気分転換を優先して、 ゆっくりペースで開発を進めたい。一気に終わらせたいものの、 ここは我慢して地道に進めていこうと思う。 気持ちが落ち着かない事もあってか、VSTプリセットの保存処理で苦戦している。 バイナリでファイルの読み書きをすれば簡単なのであるが、 楽譜ファイルがテキスト形式のため、バイナリをテキストに変換してやる必要がある。 つまり、数値情報を文字情報に変換しなければならない。 最も簡単なのが、そのまま16進数にしてしまう方法だろう。 たとえば「A」という1文字は16進数だと「41」と表記できる。 これは「A」の文字コードが「65」であるからだ。 65 を16進にすると 41 となる。16進数で表記すれば、 0〜255 の数値は必ず 00〜FF になる。 しかし、この方法だと、データ量が2倍になってしまうのである。 そこで、簡単な圧縮を施し、データ量が大きくならないように工夫する必要がある。 VSTのプリセットデータは1MB弱の大きなデータになる事が多い。 処理速度を上げたいので簡単な圧縮処理にしたい。 ここで重要なのは、テキスト形式にしなければならないので、 使用できる数値が限られている点である。 2倍にならなくとも、それ以下になれば妥当な所である。 そういう訳で簡単なテキスト変換ルールを作って、 実装してみたものの、どうも、うまく読み込めない。 書き込みか読み込みかどこかにバグがある。 プログラム上では、正しいはずなのにどうもうまく動いてくれない。 しばらくは、この開発で足止めされると思う。
これについては、時間がかかるので、全部対応が終わったら報告したい。 1週間以上はかかるかもしれない。
作り残し系の残件のほとんどが、プリセット関連と音源定義関連である。 これらは密接に関係しているし、楽譜の読み書きでも関係する。 VSTごとのドラムマップにも関係している。 通常ならば、1機能ごとにリリースするのであるが、 6.01は、1つの機能にいろいろな要素が関係し合っている。 それゆえ、そろそろ1年にもなろう大規模開発となっている。 全部が出来ないとリリースできないという訳である。 現在見つかった悩みの1つが、 音源定義の扱いである。VSTの場合、 マルチ音源にもなればシングル音源にもなる。 音源定義の分類が1つに絞れないといった問題が見つかった。 また、音源定義を編集した場合、再読み込みを行うのであるが、 定義を削除した場合、どうなるのか。 こういった、整合性合わせの処理を現在作成している。 連動処理である。連動処理はとてもめんどうな処理である。 まず、読み込んである楽譜の連動があるが、 読み込んでいない楽譜まで連動させる事はできない。 どうあるべきか? 例えば、昔の楽譜などである。 昔の楽譜を読み込んだ時、連動処理が動く必要がある。 なんと厄介なのであろうか。 整合性については、読み込んでない楽譜を読み込んだ時に どうなるか。その状態を基準に整合性を合わせれば良い。 こういった仕様を決めてからこの問題に取り組みたい。 これが終われば、あとはプリセット関連の最終調整のみとなる。 そしてドラムマップの最終調整。他にも残件はある。 1.音源定義の連動処理 2.プリセットの最終調整 3.ドラムマップの最終調整 この3つが、重く苦しい残件となる。 これさえ終われば、かなり、気持ちが楽になる。 余談: 開発には関係ないが、URL を来月あたりに変更するかもしれない。 現在使用している dyndns に面倒な手続きが必要になったからである。 将来の事も考え、ドメインを取得しようと思う。 とは言っても、ダイナミックなほうにしようと思う。 あんまりかっこよくないのであるが、所詮は個人の身。それで十分である。 という事は、Score Editor の中にある URL も変更しなければならなし、 説明書なども URL の表記を変更しなければならない。 いろいろ面倒だ。 6.01リリース後にURLを変更するのが、一番妥当だと思う。 もしかしたら、URLの変更はしないかもしれない。 6.01の開発が優先である。
現在行っているのはノートオフの見直しである。 Score Editor は、ノートオンのベロシティを0にする事で、 ノートオフを行っている。外部音源などはこの方法でも動作するようになっている。 ステータスバイトを省略できることで、SMFファイルのサイズが小さくなる。 そのため Score Editor は、このしくみを活用していた。 (1.0の頃はそうであったが現在はステータスバイトを省略しないようになっている) しかし、VST音源の多くはこれを対応していない事があり、 リリースが長い消音になってしまう事がある。 そこで、ノートオフイベントを対応する事にした。 対応するとどうなるか。鍵盤を放した時のベロシティ(速さ)が有効になる。 チェンバロやオルガンなどの楽器で繊細な表現が可能になるはずである。 しかし、ほとんどの楽器はあまり効果がない。 ただ、ノートオフベロシティを対応する事で、 VSTが確実に動作する。例えば HyperSonic2 等がノートオフに対応している。 逆に言えば、ノートオンベロシティ0には対応していないので、 Score Editor では、ノートオフが出来なくなってしまう。致命的である。 結局ノートオフベロシティを対応しなければならない状況である。 ただし、Score Editor からはノートオフベロシティの制御ができないので、 その効果を聴く事はできない。 ノートオンの強さは強弱記号で指示できるが、 鍵盤を放す強さを指定可能な音楽記号がない。 将来、環境設定で、効果を出せるようにはするかもしれない。 効果なし・ノートオンと同じ速さ・特別な方法で音符ごとに設定。など。 6.01の鍵盤機能では、ノートオフベロシティを対応するので、 鍵盤からの音符入力が将来可能になれば有効である。
今回、主に、音源定義画面の最終調整を行った。 この画面であるが、けっこう作り残しが見つかったが全て対応した。 音源定義も、単に、MIDI音源だけでなく鍵盤やVSTなど、 いろいろな分類があり、音源定義を選択する際に、 違う分類のリストが出てくるのもうっとおしいし、 違う分類の定義を無理やり音源に割り当てると、まともに動作しなくなる。 この問題は厄介なので、その改善を行った。 音源定義に分類属性を持たせ、それに伴う修正を行った。 これで、その音源で使用できる定義だけがリストに出るので、 安心して使用できる。 音源定義のコピーや編集そして削除などのメニューも対応し、 音源定義画面が完成した。 続いてバグ関連の残件が3つあるので、対応してしまいたい。
1.楽譜読み書き関連(3件) 2.作り残し関連(7件) 3.バグ関連(4件)
Score Editor の設定画面の項目がほとんどなくなってしまった。 複数音源になったので、それらの設定項目は、他の画面で行うようになるからである。 楽譜の雛形の設定は、ファイルメニューにて対応するよう改善するので、 画面上での設定は不要になる。 現在、VST選択画面の最終調整を行っている。 5.4と比べれば意味のある操作性の画面に改善される。 選択と登録を分けた事で、分かりやすくなり、登録作業も作業効率が上がる。
2点仕様改善を行った。 1つめは、鍵盤の出力先指定であるが、MIDI/AUDIO 別々に記憶できるようにした。 モード切替時に、それぞれの設定で鍵盤を鳴らす事ができる。 これは、MIDI/AUDIO を完全に分離した事による修正である。 2つ目は、VSTの視聴鍵盤のON/OFF機能の追加。 VSTによってはGUIが大きく視聴鍵盤があると、画面に入りきらなくなる。 それに、VSTによっては、既に視聴鍵盤が付いているものもある。 VSTと Score Editor の鍵盤が2つあるのはうっとおしい。 そこで、VST画面の視聴鍵盤のON/OFF機能を追加した。 必要であればONにすれば良いし、じゃまであればOFFにすればよい。
新たに見つかった残件は22件である。すぐに残件対処を初め、6件の対応を終えた。 大きな残件と合わせて、残り20件である。 件数は多いが、これは最終調整項目でもある。 どんどん対応していきたい。 別途、ベロシティカーブの問題が見つかった。 Score Editor は、1.0の時から、強弱記号のベロシティが緩やかである。 これは、もともと、ポピュラー音楽向けに設定した事もある。 しかし、オーケストラなどにおいては、かなり繊細な音量が必要で、 これは「音量バー」を使用すれば解決できる。 ただ、音量変化が平坦になりがちとなり、オーケストラ曲で問題となる。 この解決には、以前から計画していた強弱記号の設定機能を対応する必要がある。 6.01に含めたかったが、考えるべき要素があるため、 6.02以降に含めることにしたい。6.02は6.01を出してから1ヶ月後くらいである。 とにかく残件を対処し、全て片付ける事を優先することとした。
そして、なんとか開発を再開できる状態となった。 ドラムマップの最終調整であるが、いまひとつどこから手をつけてよいのか、 方向性が見えない。他に気になる箇所があるからさっぱりしないのかもしれない。 現在 MIDI/AUDIO のモード変更の時、 VST の起動停止が動作してしまうので、アサインに時間のかかるプラグインの場合、 この動作は致命的である。そこで、プラグインに関しては一時停止状態を取り入れる事にした。 実際には、フラグ制御だけである。AUDIO の最終出力デバイスを一時停止すれば、 プラグインの動作も勝手に一時停止する。このあたりの動きは5.4の動作と同等。 上記を実現するための仕組みを組み込んだ。 ここで、若干制御の流れが変わったので、副作用対応を行う必要がある。 今までの開発の過程で、対応がもれている所がないか、 ここで、一旦、全体チェックしたい。
おそらく6.01最後の悩みと思われる、 ドラムマップの最終調整を始めたい。 調整どころはVSTごとにドラムマップを持てるようにもする。 というものである。少し前に対応しようと思ったが、 プリセット関連を先に片付けたほうがやりやすいのでそうした。 そして、再び、ドラムマップの調整を再開する。 VSTごとに持つとなると実に難しくなる。 なぜなら Score Editor の仕様では、MIDI/AUDIO を共有するパラメータがあるからである。 VST がアサインされていない状態で、MIDI にてドラムマップを使用する場合、 AUDIO に架空のマップを作成しなければならない。 そうしないと、楽譜の描画ができない。 VST がアサインされたら、マップを作り直すという具合である。 他にも細かい制御が必要なのである。 またXG対応の関係で、CHごとにドラムマップを持つ事も可能といった要素も考える必要がある。 最初に16CH分のマップ領域を作成してしまえば、 処理はとても簡単になるのであるが、 使いもしないマップ領域を作成するとメモリも無駄だし、 速度も若干遅くなる。なので、使うときにドラムマップ領域を自動作成する。 とにかくややこしいのである。基本的な準備はこれまで行ってきたので、 どういった操作パターンが存在するか注意深く調べて、 対応すれば、なんとかなるとは思う。
6.01からは、可能な限りプリセット化に移行する。 音源のパラメータやドラムマップを初め、SMF書き出しの設定や、 WAV書き出しの設定、音律の設定も、プリセットに移行する。 拍子に関しては現状のまま。 まだ、WAV書き出しが出来ていないので、その開発をするときに、 残りのプリセットも対応したい。 先に、プリセットの読み込みを引き続き開発する事にする。 これができた後は、楽譜への保存である。
そういう訳で、プリセット機能の最終調整を再開した。 現在、VSTのプリセットメニューを作成中。 ここで、また問題が見つかったが何とか対処した。 VSTにはユニークなIDが割り当てられているが、 Score Editor では不要であった。しかし、プリセットを読み込む際、 全く関係ない別のVSTのプリセットを読むと、異常終了してしまう。 同一のプラグインである事を識別しなければならない。 そのため、VSTIDを対応する事にし、その対応を行った。 現時点では、このIDはプリセットの読み書きでしか使用しない。
アイディアが出ないと先に進めないため、どうしても開発に時間がかかるのは、 もう、この際、気にしないことにしたい。 日々、改善が続けられ、試行錯誤が続いているが、確実に完成が近づいており、 内部動作も洗練されている。 ・・・ プリセット画面の改良が終わり、プリセットの保存処理についても、 着々と最終調整作業を進めている。 しかし、困ったことに、パラメータのないVSTの操作メニューが出せない仕様なので、 メイン画面を調整しなければならなくなった。 パラメータがないVSTは、操作画面を表示しなければ良いと割り切ったのであるが、 結局、そうはいかなかったようだ。どうやっても思いつかずに割り切ったのであるが、 それを考えなければならない。気が遠くなる。そしてまたしても画面の調整である。 ところが、運よく、1つアイディアが浮かんだので、それを試作してみたい。 操作性に問題がなければ、以前から、どことなく気がかりだった点が解決できる。 ![]() |