Studio ftn Score Editor Classic 5.5 の開発状況を報告します。

あらすじ
プリセットデータ関連の開発を行う。またMIDIモードでの演奏処理に着手し、 ついに演奏が可能となる。続いてAUDIOモードの開発に入る。 手始めに5.5で新規に追加となるAUDIOミキサーから開発を進める。 この時期も作者は不調期、さらに開発時間が取りにくくなってしまう。


2007-04-26 状況
    VST音源とミキサー結合の作りを行った。 ここで音を鳴らすためにMIDIイベントの処理について考えるのであるが、 問題点が発生した。全体的にリアルタイム処理の構造を充実した訳であるが、 VSTの場合は、バッファ処理系なので、オーディオモードの場合は、 更なる構造を考えなければならない事に気がついた。 演奏処理と、鍵盤演奏では考え方を変えなければならない。 少し構造を見直さなければならない。

    PCデスクのほうであるが、開発効率は従来の1.5〜2.0倍に改善された。 キータイミングの速度がかなり速くなる事にも驚いた。 しかし、今回のように大きな設計となるとデスクの効果とはあまり関係なく、 時間を取られそうである。
2007-04-25 状況
    VST検索画面とアサイン処理が完成。 次に、VST用のGUI起動の作りこみを行い完成。 オーディオミキサーの作りこみを始めた。 ひとまず、出力とミキサーを結合し雑音が再生できるようになった。 これから、VSTの音声をミキサーに流す部分を開発する。

    なかなか時間が取れない状況になってきたため、 更に開発効率を上げる方法を考えないとならない事で悩んでいたが、 それには、短時間で集中できる状態を作り出す必要がある。

    ftn の姿勢を正しくする事から始めなければならない。 その結果、PCデスクと椅子の購入を決意し本日到着した。 集中できそうな濃い茶色のデスクである。 考え事をする時は、Windows のペイントでメモしたり、 Excel やメモ帳で設計をしていたが、デスクがあれば すばやく紙にメモしながら考える事ができる。

    今までは、横になってリラックスして考えるほうが、 良いものが作れるので、その関係で床で作業をしていたのであるが、 プログラミングに移る際に、スフィンクス体勢に移行させなければならない。 このタイムラグをなくそうと思う。 デスクならば同じ姿勢で設計とプログラミングができるので、 意識をそらす事無く連続作業が可能になるというのがねらいである。

    ソフトの開発時間のほとんどが設計に費やされるので、 もっともリラックスできる体勢を重視していたが、 最近分かってきた事であるが、考えすぎずにすぐに手を動かす。 という方法のほうが結果が目に見えるものが早く出来るので、 開発意欲が湧きやすいし、無駄な処理も考えないので楽である。 このような開発スタイルの場合は、デスクのほうが開発効率が高まると見込んでいる。

    現在ではプロトタイピング法として認められつつある開発方法であるが、 昔プログラマの仕事をしていた時に否定されたことがある。 設計を重視すると良いソフトが作れない結果に陥る事が多い。 肝心な部分だけきちんと考えてさえいれば、 プロトタイピング法のほうが設計ミスがすぐに分かるので早い時期に改善する事ができる。
2007-04-20 状況
    プリセット機能の改善が完了した。 現在、VSTプラグインの検索画面を作成している。 従来の画面よりも便利になるよう改善中。 音源選択と検索画面に分離し、検索画面では検索機能を充実させ、 検索パスを入力できるようにする。
2007-04-19 状況
    従来のVSTモードの起動と停止処理の開発を行っている。 データ構造の仕組みの方針が決まり、 とうとう、ゴールまでの道のりが見え始めた。 あとは、コツコツ作りこんでいくだけ。

    のはずであるが、ここで問題点が発生した。 プリセット機能で復元できないパラメータがある事に気がついた。 そのパラメータは内部的に使用しているパラメータで、 ユーザは見る必要がない。この内部パラメータも保存するようにしないと、 不具合が生じる。そもそも、音源全体のパラメータをプリセットとして保存できないと 「ふと、気がついたら、一部のパラメータが保存されていなかった。」 という事になってしまうので、操作性を考えると、全体のパラメータが保存されたほうが、 混乱は生じない。部分パラメータの保存ができないのは不便であるが、 なんでもできるソフトというのは、かえってややこしくなる。 操作性を優先して、部分パラメータの保存は無しにして、 全体パラメータの保存としたい。 ただし、エフェクトのパラメータは、部分的に保存できたほうが良いので、 これは可能にしたい。

    という事で、プリセット機能の改善を行わなければならなくなった。 開発がなかなか進まないので焦りが生じ始めている。 しかし、地道に進めるしかないのである。
2007-04-17 状況
    オーディオミキサーの仕様を考えていた。 全く見えない世界なので気が重くなる事もあった。 あと少しというところでまた大きな課題が出てくると先が思いやられる。 いったいいつになったら5.5をリリースできるのかと。 オーディオミキサーは、やろうと思えば、 かなり細かい部分まで考える必要がある。

    悩んだ結果、まずは従来の品質どおりのミキサーにする事にした。 5.5の目的はVSTのマルチティンバー対応である事を忘れてはならない。 まずは、これを対応しリリースする。 楽譜関連の充実を求めているユーザが多いと考えられるため、 5.6の対応で楽譜関連の機能を充実させた後に、 オーディオミキサーの充実を行いたい。

    やっとの事で方針が決まったので、 どのようにオーディオデータを連携させるか検討を始める。

    それとは別に、オーディオデバイスの起動とVST音源の起動の部分を開発し、 両者起動できるようになった。この時気がついたが、 従来のバージョンでオーディオバッファを作成する際に、 不可解な処理が見つかった。どうしてこれで動作しているのか疑問である。 5.5の対応でこの不可解もすっきりと解消される。
2007-04-13 状況
    また不調期がやってきた。1週間は回復に費やされると思う。

    マルチメディアタイマのふらつきであるが、予想通り、 演奏開始時でなくソフト起動時にタイマを起動しっぱなっしにする事で解決できた。 演奏開始のふらつきもなく、しっかりとしたテンポを刻むようになった。

    不要な拍子やテンポの除去等の処理も組み込みが終わり、 音楽の演奏はドラム以外はだいたい完成である。

    続いて、音源のリセット処理をSMFで行う対応を行った。 これで、画面が固まる事無く、音源側のパラメータが初期化される。 初期化とは Score Editor 側のパラメータを音源に送って、 ソフトと音源が同じ状態になるようにする事である。 実際のところ、SMFではなく、独自形式のSMFで行っている。 SMFファイルにする直前の段階のデータ構造と考えれば分かりやすいが、 イベント情報は、MIDIではなく、Score Editor のパラメータが使用される。

    つまり、今までと違い、SC−D70専用として始まった Score Editor が、 自由な音源用のソフトに成長したという事である。 音源に関わるパラメータは全て定義ファイルに記述する。 複数音源対応だから当たり前といえばそれまでである。

    MIDIモードを完全にしたいが、先にVSTモードの複数対応に着手しようと思う。 プログラム作業は浅く広く作って、後からどんどん深くしていくとうまく行く事が分かってきた。 操作性を試すには何度も開発しなおすので、この方法が効率的である。 最初は、ぎりぎり動くか動かないかという水準で浅く作る。 やはり、頭の中で考えた仕様でも、実際になるとかなり変わってくる。 良い操作性になってきたら、深く作りこんでいくという感じである。

    というわけで、AUDIOモードの複数対応の開発に着手する。 主に、センドエフェクトが搭載されるのと、マルチティンバーの搭載が、 大きな目玉だと思う。この対応が5.5の本来の目的でもある。
2007-04-11 状況
    独自形式の変換と再生エンジンの開発を行った。 再生エンジンは、極めて単純な作りで済むようになった。 再生時に限っては、SMFと違いデルタタイムを使用しないで、 演奏するようにしたが、とうとう、複数音源の演奏が再生された。

    今回の改良で変換処理をもっと簡略化できるのであるが、 今回は複数音源対応がメインなので、その部分は修正しないで 次回の時間軸対応の時に対応しようと思う。 演奏変換は従来どおりとなるので、5.5リリースになる事で 演奏がおかしくなる事はないと思う。

    ここで1つ気がついた事がある。 5.5からは全ての Score Editor 上のパラメータが 完全に音源と連動するような仕組みとなった。 という事は演奏時の場合は、セットアップ小節を作らなくとも、 いつでもセットアップされた状態となっているので、 演奏開始時に間が空くことがなくなるのである。 長い曲の場合は変換に時間がかかるが、 基本的には、すぐに演奏が始まるようになる。 これは実に嬉しい話である。

    現時点の問題は、演奏開始時にマルチメディアタイマを起動すると、 安定するまでに時間がかかるようである。 その結果、演奏開始部分のテンポがゆらいでしまう。 2回目からの再生は問題ないようであるが・・・。 問題の対処として Score Editor 起動と同時にタイマを起動しつづけるようにする方法が考えられる。

    後は、拍子とテンポの不要イベントの除去や複数パート上の主となる拍子の決定や、 イベント優先度の決定処理などを開発する必要がある。

    一時開発を保留していた、リセット処理を今回の演奏処理で行うようにし、 画面が固まらないようにする処理を施す必要がある。

    残りはドラムの演奏であるが、これで大枠 MIDI 関連の複数化対応は完了である。 さらに、VST側の対応もあるので、まだまだ開発は続く。 VST側は新機能が、かなり増える。

    とはいえ、4ヶ月近く続いた開発であるが、ようやく結果が見えた。 処理速度等々、問題なく動作してほっとした。 動かなかったらやり直しという不安を抱えながらやっとここまでたどり着きました。
2007-04-10 状況
    演奏処理の設計を行っていた。 だいたい設計が終わったので、作りこみに取り掛かろうと思う。 SMF の仕様には、複数の音源を鳴らす仕様が含まれていないので、 独自の形式で再生するしかない。独自にする事で余計なファイル変換をしないので、 よりストレートに演奏できるようになるはずである。 この独自形式はSMFを独自に拡張した仕様なので、ファイルにする際もスムーズに行える。 独自形式の変換と再生エンジンをこれから開発する。
2007-04-08 状況
    音源定義編集画面の構成を変更が大枠完成し違和感がなくなった。 この画面についての細かい作りは後にして、優先すべき部分の開発を進める。

    ようやく楽譜を演奏できる状態が整ったと思われる。 これから演奏部分についての開発を行う。 複数音源化にともなって、この部分の処理も半分は作り直しである。 音源の種類ごとにリセットのタイミングや初期化命令の種類が異なるので、 セットアップ小節の作成について仕様を見直してから着手となる。

    よくは分からないが、Vista のパソコン音源は、音が出るまでに時間がかかるようで、 外部音源と同時に演奏する場合は、演奏にずれが生じてしまう。 どれだけ遅れたかは、スピーカーの音を聞かないと分からないので、 どうする事もできない。音が出るまでの時間を音源設定で、 個別に設定しておけば、だいたいは演奏が揃うと思われるが、 気休めにしかならないと思う。長い曲の場合はどんどん後半でずれていくと思う。 これについては、しかたがないのであきらめるしかない。 そもそも、外部音源とパソコン音源を同時に演奏する人はいないだろう。

    外部音源に搭載されているA,Bパートといった演奏であれば、 ずれは生じないので、複数音源の機能は、外部音源を複数演奏させるといった、 用途になると思う。実は外部音源には4台の音源が入っているものもあり、 それらの機能がフルに使える。というのが5.5のメリットとなる。

    VST音源のほうであるが、こちらは、複数のVST音源を使用しても、 演奏ずれが生じる事はない。従来の Score Editor でも、もともと複数VSTの演奏ができるようになっている。 5.5のVST複数化の一環として、マルチティンバーの対応を行う事にある。 これが5.5の本来の目的で、どうせ音源エンジンを修正するなら、 いっそのこと音源周りを見直そうという事で、今まで納得がいかなかった、 多くの問題を改善しようという試みを現在行っている。
2007-04-07 状況
    新規作成時に全ての音源をリセットする部分が完成。 楽譜側に持つプリセットの複数化も完成。 これで、楽譜と音源の結合が完成した。 複数楽譜の切り替え処理も完成した。

    これで演奏処理の開発に取り掛かれる状態になったのであるが、 気になる残件があるので、それを先に解決しておきたい。 残件とは、音源定義の編集画面の画面構成の違和感である。 音源の一覧と編集画面といった構成にしないと、 音源定義のコピーや削除などができないので、これを何とかしたい。 試作段階では、2つの画面が1つに混ざっていている。 あと、開発を保留にした音源定義編集の確定処理の一部が不完全といった問題も対応する。
2007-04-06 状況
    疲れを感じたので休憩していたが、 できそうな部分を進めた。

    楽譜上からの音源指定方法を追加した。 5.5からはパートごとに音源を指定できるようになる。 UNDOの処理も作りこんだ。 あと、default プリセットの選択機能を作った。

    非アクティブ時の楽譜の描画は楽譜側に保持しているパラメータを使用し、 アクティブな楽譜は音源側のパラメータを使用する仕様にしたいと考えたが、 描画の際に参照先が2通りになってしまうので、もっと良い仕様がないか悩むが、 思い浮かばないので2通り参照の仕様で開発を進めてみる。 使用しない音源の情報を楽譜に持つのは妥当ではないので、 このような仕様にするしかないと思われる。複数音源ならではの悩みである。

    これから、楽譜起動時に全ての音源のパラメータを初期化する作りを行う。
2007-04-04 状況
    複数ウインドウでのプリセットであるが、 基本的には完成したのであるが、 楽譜の新規作成時のプリセット読み込みがしっくり来ないので、 この部分を再検討し対応する予定。 あと複数音源分のプリセット処理の考慮が抜けていたので、 その部分を対応する。

    それとは別に、Win98で発生していたメニューフリーズ不具合の対応を行った。(リリースは5.5から)。 これを行うために、MDI関連(複数ドキュメント)の作りを見直し、純正な処理に改良した。 98でフリーズするのは、無理やり作った部分が、耐え切れなかった結果かもしれない。 純正な処理にした事で問題は解決したはずであるが、まだ98環境でテストをしていない。

    そのほか、ウインドウを生成する処理で無理やり処理していた部分が1.0の頃からあったので、 これも純正な作りに改良した。これでウインドウ関連がよりしっかりした作りになったはずである。

    そろそろ気が遠くなってきた。というか疲れが出ている。 先に進めたいのであるが、休憩モードに入る時期かもしれない。 細かい部分の作りこみ残り項目数は15個である。
2007-04-03 状況
    プリセット機能の作りこみを行っている。 エフェクト等やチャンネル情報のプリセット機能が動作するようになった。 楽譜へのプリセット取り込みも完成。

    従来の仕様ではフォルダが沢山作られるのであるが違和感を感じていたので、 今回の仕様からは1つのファイルにいろいろなプリセットを保存する仕様にし、 フォルダの作成をしなくても良いようにした。 1つのファイルにいろいろなプリセットを含むことにより、 ファイル中の情報を変更する場合、面倒な処理になるが、 なんとか完成した。名前を付けて保存の画面が使えないので、 独自の画面を作った。

    従来よりプラスになった機能としては、 黒画面(チャンネルリスト)の情報もプリセットとして保存したり読み込んだりできるようになった点である。 例えばオーケストラ用などの楽器構成をプリセットに保存すれば、 以降は簡単に呼び出せるようになるので便利かもしれない。

    続いて、複数ウインドウで開いた楽譜のプリセット切り替えの作りこみを行う。
2007-04-01 状況
    音源選択画面のデザインが決まり大枠開発した。 細かい部分は、AUDIO ができないと作りこめないので先に進むとする。

    いよいよ楽譜と音源との結合を行う。 まず、パートのCH表示部分を複数音源に対応した。

    その後、最後の大掛かりな部分の開発に着手した。 楽譜に持つ音量などのパラメータである。 これが複数音源になるし音源側のデータ構造が変更になったので修正が必要。 楽譜を読むとパラメータが読み込まれるので、 これを音源プリセット機能と言う事にする。

    プリセット機能の設計ができたので開発に入る。

Since 2000 (C) Studio ftn
http://studio-arts.bglb.jp/studio-ftn/