
|
Studio ftn Score Editor Classic 5.5 の開発状況を報告します。
あらすじ
![]() 2007-06-30 状況
音源定義画面でのドラムマップであるが、5.5の開発に着手した時から違和感を感じていたが、 やっと、すんなりとした仕様になった。 まず、ドラムマップ(譜面へのドラム割り当て情報)とは何かを良く考えた。 これは、音源定義よりかは、楽譜よりの情報である。 なので、ユーザが音楽のスタイルに合わせて自由に定義すべきである。 この定義を音源設定に含めてしまうと、音源定義作成者はドラム譜を意識しなければならなくなる。 あらゆる音楽のドラム譜を定義しなければならないのは何か変だ。 音源定義は音源に関する定義だけで良い。 この事から、音源定義に複数のジャンルのドラムマップを持つ必要がない。 これによって、多重階層の大掛かりなデータ構造にしなくて良くなった。 そもそも、1つもマップを持つ必要がない。 こうして、音源定義作成画面からドラムマップの概念が消えたので、その処理も削除した。 では、ドラムマップはいつ定義すべきか? ユーザがドラム譜を使用する時に作成すれば良い事になる。 そこで、5.5から追加となるプリセットの概念が役に立つ。 ひとまず、デフォルトマップだけ、プリセットを用意しておけばよい。 これは、従来のドラム画面からプリセットの保存を行えるようにすれば良い。 こうすれば、ユーザ好みのドラムマップをいつでも保存でき、 いつでも読み込める。 結果的にユーザの自由度が増して、画面も分かりやすく簡単な仕様になった。 しかも、音源ごとに専用のドラムパラメータを持てる他、 MIDIモードとAUDIOモードで定義を独立させる事が可能である。 ドラム関連のVSTは、特殊なマップ配置や仕様になっているので、 MIDI規格に準拠していない。しかし、5.5からは、AUDIOとMIDIを切り替えてもドラム譜はそのままで、 鳴らすドラムの設定だけ指定すれば良い。 更にデータ処理を簡単にするために、ドラムマップを32個固定とする方針に切り替えた。 1つのドラム譜中に32個までのドラム楽器を使用できる。 ドラムマップの枠が固定された事で、以前のようなドラム楽器の追加や削除などの操作が不要になり、 ダイレクトに空いている部分にドラム楽器を割り当てられるようになる。 操作性が向上する結果となった。従来の仕様では追加してもドラムは30個しか使用できないので仕様としては何ら不具合が出ないはず。 何日も悩み続け、さらにユーザを待たせているが、結果的には良い仕様が見つかった。 これですっきりとする。 引き続きドラム関連の大修正を行いたい。
データ構造を変更し、音源関連の修正が完了した。 データライブラリの改善を終えたが、なかなかしっかりとした作りになってきたと思う。 データ構造がどのようになろうとデータライブラリの改善は正解だったと思う。 音源定義部分の持ち方についても工夫をし改善した。 いよいよ、ドラムマップのデータ構造に着手中。 それに合わせて、ドラム設定画面のリスト部分の作りも共通化した。 どういうわけか複雑さを感じたのでもう一度よく考えてから着手したい。 その後ドラム設定画面関連も修正しなおさなければならない。
いろいろなデータ構造を考えてみたが、結局の所、音源データの独立性を保ちながら、なおかつ共通パラメータを実現するには、 ある1つの方法しか思い当たらない。実体と参照の考え方である。 内部的には面倒な処理になってしまうが、高速化を重視するにはこの方法しかない。 その面倒な処理をなんとか隠す工夫をする事で、処理の安定性を実現する事にした。 データのアクセス方法を修正しなければならず、ちょっとした全体に及ぶ修正が必要。 現在その修正を行っている。 説明しても良く分からないとは思うが、ようはデータライブラリの改善を行っている。 あと、書き忘れていたが、音律関連の作りこみが既に完了している。 もののついでに、うれしいパラメータを追加した。 これは、音律を操作するとピッチが上書きされるのを防ぐための処置でもあるが、 とても音がきれいに聴こえるあのパラメータである。
いきつくところ、ドラムマップについても部分的に共通パラメータが必要になる。 ドラムマップの保持方法が解決できれば、パラメータ保持の問題はすべて解決できると思われる。 5.5を開発し始めた当初は、従来のままの仕様にする予定であった。 しかし、ここまで複数音源対応に力を入れているのに、ドラムだけ従来のままというのは中途半端である。 そこで、ドラムマップについても複数音源対応を行う事にしたい。
悩み続けているデータの保持方法であるが、現在も悩んでいる。思わぬ足止めである。 試しに共通パラメータが使用できる構造に作り変えたが何かしっくりしない。 何がしっくりこないのかを突き止めるべく、何が悩みなのか追求を始めた。 その結果、いくつかのポイントがあるが、もっとも大きな悩みが、 ドラムマップの保持方法にある事が分かった。 共通パラメータとドラムマップの保持方法を、どう追加するかである。 その前に、じっくりと検討ができるよう、現在のデータ構造を図に書き出す作業を行った。 問題点が分かった所で、これから対応方法の検討に入る。 この対応が完了すれば、完成は近い。めげずに取り組みたいと思う。
従来の構造だとCH10はドラムである。といった暗黙の作りになっている。 今回、XGに対応すべく、その考えを改めなければならない。 ユーザが指定するのである。暗黙だったものが指定によって変わるとなると、 作りは一気に大掛かりになってしまうものである。ひとまず、コツコツとXG対応を行った。 これでもう大丈夫と安心したら、キツイ仕打ちがやってくる。 MIDIとAUDIOモードの違いに伴う問題である。 今までは、どっちであろうと共通のデータを使用していたが、 複数音源の多様化に伴いそう簡単にはいかなくなってきた。 この問題は、以前からあった。MIDIで音量などを調節し、 AUDIOにしたとき、音量を調節する。再びMIDIにした場合は、 また、MIDI用に調整しなければならない。 MIDIとAUDIOは、別々にデータを持つべきだろうか? それで、別々にしてみたのであるが、これが仕打ちの引き金となった。 ドラムのCHをMIDIとAUDIOで別々に設定しなければならなくなる。 例えば、AUDIOが好きなユーザがAUDIOで作成した楽譜を、 フリー版ユーザが読むとする。フリー版にはMIDIしかないので、 ドラムの設定が一切されていない。演奏がおかしくなるどころか譜面もおかしくなる。 MIDIとAUDIOで共通のパラメータを用意しなければならないという事である。 「部分的に共通」といった概念が必要になる。 またしても、データ構造の改良をしなければならないのだろうか。 しかも、パラメータごとに、共通かそうでないかといった器用な事ができるのか? 複数音源対応は簡単なようで、ものすごく根が深かった。 今回の5.5の対応で多くのコードが作り直しになってしまったが、 根が深すぎるためであったのかもしれない。ある意味「核」の部分を改善するのであるから、 大改造になる事は当然だったのかもしれない。 あと少しだと思うので、めげずに今回の問題に取り組んでみたい。
逆に考えれば、パラメータの保持方法さえ解決すれば、残件が一気に解消される事になる。 問題は1つだったのである。こうなれば徹底的にパラメータの保持方法の解決に集中できる。 もうゴールはすぐそこに見えている事に気がついた。気合を一気に高めこの問題に取り組んだ。 パラメータ保持の悩みであるが、逆に悩まず従来の Score Editor の方法で進める事にした。 Score Editor は、それなりによく考えて作られているので、素直にその考えに従うとうまく行く。 その結果、すんなりと問題が解決する実感が湧いてきた。 コツコツとデータ構造を最終形態にすべく修正し、 とうとう、ドラムマップのデータが保持できるようになった。 これで、5.5上でドラムの演奏が可能になるのは近い。 ドラムマップは、複数音源対応に伴い、複数保持する必要があるほか、 5.5ではしっかりとXGに対応できるよう、CHごとにドラムを使用する事もできる構造となっている。 従来の Score Editor では、1つで良かったドラムマップが、 これほど多様な場所に独立して存在可能でなければならない。 この問題が解決した。 続いて、音律やミキサー、演奏モニタ情報などのデータ保持方法について対応する。 これらは、1箇所に格納すればよいので対応は簡単だろう。 これができれば、4つの残件に着手が可能となる。 昨日はこの止まらぬワクワク感による緊張のため睡眠不足である。
ついでに、8vb など、ユーザ要望に応じるため、オクターブ記号のバリエーションを大幅に増やした。 楽典で使用する表記から省略形まで対応した。 記号のグラフィックやメニューをコツコツと点を打って作成した。 残り残件であるが大きく分けると4項目に分類できる。 ドラムの演奏、音律、演奏のバー表示(画面下に出る赤い棒)、楽譜と音源パラメータの保持方法。 である。どれも厄介な残件で、精神力と忍耐力が必要になる。 楽譜と音源パラメータの保持方法が影響しているためである。 この仕様の最終調整が終わらないとどうも安心して取り組めないが、 アイディアが浮かばない。おそらく従来の Score Editor の仕様の流れにするとすんなり行くと思うので、 その方向で考えてみたい。これら4項目についてよく考えてから対応したい。
ただし、プロパティ関連は、 全体が完成しないと何を設定できるようにすべきか見えないので、 リリース直前に対応する事にする。 増えたり減ったりで残り残件は12項目となった。 これ以上進めるには楽譜データと音源データの連携について、 仕様の最終調整を行わなければならない。 これがまた、気が重くなるし、アイディアがなかなか浮かばない。
やはり予定を組むとプレッシャーが生じるので、 あくまでも個人的な目標ととらえていただきたい。 ゼロから何かを作り出す作業は、やはり時間がかかるようである。 この先の1件ごとの残件は少々難易度が高いものとなる。 おちついて対応していこうと思う。
再び音源設定画面に取り掛かっているが、 一部仕様が決まらなく頭を悩ませている。 難しいことでもなんでもないと思っているちょっとした事が、 いつも奥深いものである。足止め状態である。 現時点での細かい残件はあと24項目である。 こうして今までの間に5.5対応でコツコツと進めた項目は111項目に及ぶ。 1つ1つで悩んで、解決してきた。 実際、最初の仕様が固まってからの項目数なので、おおざっぱな計算であるが、 去年の11月から始まった5.5対応は、 平均1項目が解決するのに2日かかる計算になる。 ここから残りの24項目を対応するには、あと48日。と推測できる。 8月5日にα版ができあがると思われる。 待たせてしまった事は申し訳ない。 しかし、進めるしかない。
これからの残件は少々考えさせられる要素をクリアしなければならない。 一つは、たとえば、コードネームの視聴などである。 単一音源のときはその音源で視聴すればよい。 しかし、複数音源対応を行った事により、 どの音源で視聴するのが良いのか、すこし考えてみる必要がある。 複数になると機能1つ1つに必ず選択という要素が出てきて、 5.5の対応は大掛かりだ。
分けた結果理解しやすい内部構造になってきた。 いろいろと残件が解消された。 一気に7項目の残件が完了した。データ構造の分離は正解だった。 他にも解決している残件があると思うので検証したい。 デバイスの設定画面のほうであるが、 データ構造の改善で先に進むようになった。
疲れが出ているので休憩したい。 気が向いたら開発が少し進むめば良いほう。と考えたい。 追記:気が進んだので開発を少し進めた。 デバイス関連のデータ構造を2つに分けたほうが良いことが分かってきた。 さらに、残件を分類したところ、80%はデバイス関連であった。 そこで、これらの残件も含め再設計を行いたい。 80%の残件が一気に片付く可能性がある。
1つの画面を開発するにはいろいろな処理を作りこむ必要があり、 時間がかかるが、これが終われば全ての画面が完成するはずである。 グラフィックカードの Vista 用ドライバがいつの間にか出ていたのでインストールした。 無事動作したが、画面が少し暗くなり Vista の評価機能を使ったところ悲しい事に処理性能が低下した。 心なしか画面の動作が重くなったような気がする。事あるごとになんらかのショックを感じるOSであるが、 これでマルチメディア関連が安定してくれれば助かる。
残り残件がほとんど開発中のバグ残件となってきた。 どれも癖があるので、どれを先に対応しようか迷ってしまう。 大きな残件といえば一旦保留していた、使用すべき音源のセットアップ画面だと思う。 次はこれを終わらせてしまいたい。 昨日は疲れが出てきたと感じたので休憩した。 そろそろバックアップをHDDだけでなくDVDに取りたいと思い、 Vista で動かなかった Vista 対応のDVDドライブを動かす試みを行い、 ついに動作するようになった。Score Editor の開発環境をDVDにバックアップした。 まず、どこが作ったメーカのドライブか理解するのに時間がかかった。 結局、箱に書かれた型番は架空のもので、実際の型番はDVDドライブに書かれていたものが正しいという事を突き止め、 やっと、対応メーカの特定に至った。 無事ファームウエアを入手し動作するようになったが、 途中何度もファームの更新に失敗した。 原因はよくわからないが、セキュリティソフトを一時的に停止したらうまくいった。 これにて、Vista でDVDドライブがようやく動作するようになった。 徐々に Vista で動作するハードウエアが増えていると実感できる。メーカの対応には感謝です。 ただ、Vista は、記憶喪失になりやすいのか、カメラのドライバが消失した。 これもまた、メーカのページを見てもどれが Vista 用のドライバか良く分からない。 結局、カメラが動作しなくなり、XPでカメラ画像の取り込みを行っている。 そのほか、OSがぽろぽろ落ちるし、ウインドウはしょっちゅうホワイトになるし、 突然のブルースクリーン。挙句の果てには「予期せぬシャットダウンを行います」 の画面がでて、パソコンが勝手に終了する。他にあげると切が無いが、Excel は、古いバージョンなのか、60%の確率で、 画面がウインドウ右下の三角マークで埋め尽くされる。確率で動作するのを何とかしてほしい。 運がよければ、ただしく開くのだが・・・。 IEも現在みている画面でない裏に隠れたIEの画面が後になってぽこぽこ表に出てくるのもなんとかしてほしい。 これは、画面がロードしおわるとポップアップする性質によるものと思われるが使いにくい。 改善してほしいからこそ、この場で書いてみた。 正直いってWin98のほうが安定していると実感できる事態。 多分、マルチメディア関連のデバイスが問題を起こしているのか、 動画関連のスクリーンセーバによるものと思われる。 64 ビット版のCPUなので安定しないのか、不明な点が多い。 何が行われているのか良く分からないOSである。 不安定の原因はたぶん、XP時代のハードウエアを使おうとしているからなのかもしれない。 マザーボードからしてXP時代のものなので、そのあたりなのかもしれない。 MS社への一番の願いは Vista 対応の開発環境を早く出して欲しいという事である。 Vista 用パッチは既に出ているが、これから出るかもしれない開発環境ソフトを控えながら、 古い VisalStudio を購入する気になれないのが正直な所。
その1項目は、あまりにもややこしい部分だったので、 かなり気合を入れないと対応できないと思っていたが、 プログラミングの新手法を思いつきあっさり解決した。 おそらく新手法とはいってもオブジェクト指向の一種だとおもう。 基本的にはC++で開発しているのでオブジェクト指向なのであるが、 今回は、適切なオブジェクトの切り方が思いついただけの事である。 適切な切り方を考える手法が1つ備わったので、 その考え方は今後活用できるかもしれない。
やることなすこと全てにおいて思ったとおりに動いてくれない。 しかし、根性で無理やり動かした。結局残件は1つも終わらなかった。 何で悩んでいたのか?初期選択処理といった、たったそれだけの事でも奥が深い。 ようは、コロンブスのたまご状態が時々生じる。 「Aを動かすには先にBを動かさなければならないが、 Bを動かすには、Aを先に動かさなければならない。」 といった問題である。時々プログラムの世界でそれを対処しなければならない。 対処方法はわりと簡単で、AとBの要素を細かく分解し、 Aで再構築、Bで再構築、といった事をすればよい。 しかし、昨日はこの作業をやっていて何が何だか大混乱してしまった。 昨日開発がうまくいかなかった時のとてつもないストレスを解消すべく、 朝早く、やけ食いを行った。その後休息に入った。 ストレス解消が効果を発揮し、本日は普通に開発が進む。 昨日作成した処理の見直しをして、処理を共通化した。 これで残件が1つ終わるはずである。
というもののペースダウンしてきたので、 疲れが溜まってきている可能性がある。 やることは分かっているけど体が動かない。 開発を連続して行うと生じる、いつものヤツである。 メイン画面の仕様が確定し、 精神面に関してはプレッシャーが軽減されたので、その点は気が楽である。 しかし、一向に減らない残件は1つ1つが小さな厄介事なので、少々重荷である。 複数音源対応によって1つの残件項目で生じる開発のバリエーションは4種類である。 単純計算で144項目の残件となる。
実際に作りこみを行い操作したところ、まったく違和感なし。苦労しただけの事はあった。 とはいえ、細かい部分の見た目については多少粗があるが、操作性を重視したためそれは仕方が無い。 初心者でも直感操作が可能なようにするにはこうするしかない。 デザインについても、従来の画面の雰囲気は再現しているので、 今まで Score Editor を使用していたユーザが違和感を感じる事はないと思う。 逆に、今までのAUDIOモードが理解できなかったユーザにとっては、今回分かりやすくなったと思う。 ユーザの要求レベルに応じて詳細まで音源のパラメータが操作ができる。 これで本当にひと段落した。これから細かい作り残し部分の対応をどんどん行っていけば、 やがて完成する。ほとんどの機能は完成しているので、5.5のリリースは6月末と見込める。 もちろん、従来の Classic 版のユーザは、継続して5.5を使用できる。 テストとバグ修正やリソース最終仕上げ、説明書などで7月の頭になると思われる。5.5の開発は本当に長く続いた。 まだできていない部分があるので、 引き続きペースを保ったままコツコツ進めていきたい。 画面のスクリーンショットを載せたい所であるが、 もし、仕様が調整された場合、混乱させるので控えておく。 追記:VSTのGUIがトップレベルウインドウになっている関係で、ダイアログが裏に隠れて操作しにくいといった問題があったが、 その解決方法が分かったので、更によい感じになった。一時はトップレベルON・OFF機能を付けるか悩んだが、 そんな事をしなくても解決した。
とても良い感じである。 操作性が洗練された画面は、賢さを感じるし、 試行錯誤を続けた画面の中でも一番、見た目がスマートである。 使っていると、いつの間にか音楽の世界に浸ってしまう。 7日間考え続け8回に及ぶ仕様検討に及んだだけのことはあった。 このまま仕様が決まらなかったらリリースすら不可能なので、 ひょっとしたら一生仕様が決まらないかも。といったプレッシャーにも苦しんでいた。 とうとうプレッシャーから開放された。 やっと、開発を先に進めることができる。 これから、決定した画面の細かい粗を修正する作業に入る。 ![]() |