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

あらすじ
開発中の6.01に、新しい仕様をいくつか盛り込んでしまった。 やはり、せっかく音源関連の改善であるバージョン6なのだから、 悔いが残らないようにしたいと思った。 プログラミング技術もいくつか新しい開発手法を発見し成長した。 やはり、厳しい中でこそ成長する。この歳になって成長するとは思わなかったが、 成長するという事は、今後に期待が出来る。

新しい仕様であるが、 AUDIOに関しては、サンプルレートを11/22/44.1/48/96K に対応し、 サンプルビットを 8/16/24 に対応した。これによって、かなり音質が向上する。

MIDIに関しては、インサーションエフェクトを対応した。 外部音源には、沢山のエフェクタが入っているが、SysEx という呪文を使わないと使用できない。 ほとんどの人が手の届かなかった多くのエフェクターが使用できるようになる。

VSTに関しては、2点ある。まずは、VSTの状態を保持できる機能である。 例えば、MIROSLAV というオーケストラ音源では、楽譜を開くたびに、楽器をロードしなければならなかった。 なので、楽譜ファイルを他の人に渡した場合、楽器の選択状態が復元されない。 しかし、6.01からは、VSTの状態も楽譜に保存されるようになるので、 楽譜を開くだけで、すぐに演奏が可能な状態になっている。どの曲がどういう楽器構成だったか、 覚えておく必要がないので、安心である。

もう一つは HyperSonic2 というVST音源の対応である。 従来のバージョンでは、アサインできなかったとの報告である。 しかし、有望なマルチ音源が動作しないというのは痛いため、 対応を行った。結果的にVSTホストの動作がかなり洗練された。

これらの点が6.01で、更に強化される。 その他としては、連動関連の処理を何度も改善している。 可能な限り無駄な動作を無くし、安定動作をするよう調整している。 リリースに向けての最終調整作業と言っても良い。 この作業はなおも続いている。データ構造変更に伴う副作用対応も行っている。

そして、今月は、落雷に伴うサーバ障害が発生した。 電力が不安定なときに、サーバを停止させた事がよくなかったのか、 サーバ停止が間に合わなかったのか分からないが、 サーバのHDDが故障して、認識できなくなった。細かい原因については、 新しいHDDを購入してサーバ機に接続すれば、サーバ機が故障しているかどうか判明するが、 現時点では不明である。時間のあるときに調べてみたい。 ただ、サーバの壊れたHDDを他のコンピュータに接続した際、認識エラーとなったため、 HDDの物理的な故障は確実である。

急遽新しいサーバ機を構築し、バックアップからの復元を行ったが、 バックアップ時期の関係で、2週間くらいの掲示板や開発日記が消えてしまった。 読者の方からの協力により、開発日記は完全に復活する事ができた。 これ以来、大きなHP更新があった場合や時間のある時は、Webページの部分だけは、 毎日バックアップを取るようにした。


2007-08-31 状況
    SMF書き出し処理のメタイベント関連の出力ルールの詰めが甘かったので、 その部分について設計中。複数音源になると、ルールがややこしくなる。

    設計資料の作成が終わったので検証に入る。
2007-08-30 状況
    体調がよろしくない。おそらく塩分の取りすぎか、 急に気温が下がったので、汗をかかない分、塩分がたまったのかもしれない。 食欲がない。食べても改善しないので最低限しか食べない事にした。

    最近、開発のノリが良くないのであるが、その原因は体調にあると考えた。 もし、健康で活き活きしていれば、どんどん開発が進むのではないか? そう考えた。規則正しく睡眠を良く取り、食生活に注意しつつ、体温保持?に注意を向け、 まずは、体調改善を最優先にしてみようと思う。

    現在、以前の設計ミスに伴うSMFファイル書き出し処理の修正を行っている。 これが、とても難しいというか、簡単な処理にならない。

    複数音源対応に伴って出力できるSMFは3種類。 format 0/format 1(標準)/format 1(シーケンサ受け渡し用)。

    音源によってはシステムセットアップが不要な場合がある。 以前にも解説?したとおり、Score Editor は、シーケンサと違い、 自動的に、MIDIイベントを作成する。 この自動化ルールがなかなか難しいのである。

    音源が1つの場合でもややこしかったが、 複数となれば、その複雑さはまさに爆発。 いかにしてバグが出にくい構造にするか、試行錯誤している。

    まず、いきなり作ろうとするのではなく、 どのような基本パターンがあるのか、紙に書き出してみる。 そして、以前発見した開発手法を利用して適切なパラメータを割り振る。

    これでうまく行くと思いプログラミングしてみるものの、 まだ行き詰る箇所がある。再び根気良く開発を進めたい。

    ・・・

    現在の残件は12件であるが、1つ1つが奥深い。 これは、謎解きパズルかもしれない。 12個のパズルを解くと考えれば楽しくなるかもしれない。 考えようによっては、たった12個しか謎解きパズルがないのである。
2007-08-28 状況
    残件を1件対応した。AUDIOモードの演奏ずれの修正を行った。 1件進むだけでもかなり精神的に落ち着きが出てくる。 0件のままだと、明日も進まないのではないか?と不安になってくる。 1件進むことで、もうその問題で悩まなくて良いので、苦痛から開放される。

    AUDIOテンポであるが、なかなか思い通りに動作せず、不安定なテンポを刻むので、 悩みに悩んだが、精神を集中させて問題に取り組んだ。

    まず、本当に予想通りの計算値になっているか、 パラメータをダンプしてみる事にしようと考え、 その箇所を確認したら、思っていたものとは違う処理が書かれていた。 ダンプ以前の問題であった。

    これは、鍵盤での演奏時に音が正常に鳴るよう修正した結果であった。 鍵盤演奏は直ったが、プレイヤ演奏が壊れてしまった訳だ。

    鍵盤、プレイヤ、共にうまく動作する方法を考え、 無事、しっかりとしたテンポで演奏できるようになった。

    その際に、回りくどい仕組みが全体的に入っていたので、 その処理を削除し、ストレートに動作するよう全体的な修正を行った。

    これは、6.01開発当初に考えた仕様であったが、 今となっては内部処理が洗練されたので、回りくどい処理は不要となった。 これにより、より品質が向上した。

    6.01は何回にも及ぶ試作を続けながら開発を行ったので、 いろいろな試作段階の処理が含まれている。

    仕様が確定するにつれて、試作処理は不要となっていく。 こうして完成が近づいていく。もうほとんど試作処理は存在しない。 リリースの段階では完全に試作処理は除去される。

    そもそも、最初から仕様がきちんと決まっていて設計ができていれば、 それだけ、無駄な処理を書かずに完成が早まるのであるが、 設計を行うには調査が必要である。試作処理は、その調査用の処理と言えなくもない。 実際に動かしてみて初めて見つかる問題というのが多々ある。 それを知らずに、しっかりと設計しても、すぐに仕様変更となる。 まずは、広く問題を発見する作業が必要である。試作処理はそれを容易にする。

    複数音源対応は、いろいろな要素が関連するため、 ある程度ざっくりと試作処理を作成しないと、その先の試作や調査ができない。 これが、6.01の開発で難しかった要素でもある。

    試作処理は、ビルを建てる時の足場みたいなものかもしれない。 完成が近くなると足場が取り除かれていく。
2007-08-27 状況
    インサーションエフェクトの初期化手順のほうはうまく動作した。 それと、Score Editor 6 の画面構成処理や再描画が、裏で何度も動く問題があたったので、 その対処を行った。無駄な処理もなく1回で画面構成されるようになり、 ストレートな動作をするようになった。

    残件を2件対応。残り残件は13件である。 残件の分類は大きく3つに分けられる。 1つは、整合性関連の完全化。2つ目は、楽譜の読み書き。 そして、それ以外。の3分類である。なので、残件の見通しは良いのであるが、 どうやって手を付けるかという問題と、何が悩みなのかをひも解く必要があり、 なかなか進まなく、もどかしい。

    その中には演奏テンポの不具合対処がある。 サンプルレート対応を行ったためか、改良中での副作用か分からないが、 AUDIOでの演奏テンポがおかしくなってしまったので、 計算を見直しているが、どうも頭が回らない。

    それとは別に、HyperSonic2 を使用しているとき、 しばらくすると、画面が粉々に表示される不具合と、 フリーズしてしまう問題。音の鳴り出しがよろしくない。 といった問題を見つけ、それの対処を行った。 もちろんこれは、HS2の問題でなく Score Editor 側の問題である。

    ディスプレイ更新イベントの対応と、それとは別にタイミング制御をフラグで行う事で、 この問題を解決した。ずっと使用してもフリーズしなくなり、 音もすぐに出るようになった。画面が砕けることもない。

    これにて、6.01では、VSTホストの動作がかなり安定すると思われる。 試しに昔動作しなかったフリーのVSTを使用してみたところ動作してくれた。

    Score Editor 6 は、まだα版に至っていないが、 実質、β調整を先行して行っている部分もあり、かなり完成が近くなっている。 本当はα、βと段階的に進められれば良いが、 そう、きれいにはいかないのが開発の現状である。
2007-08-25 状況
    いろいろあって、開発は一時的に中断されたが、良い刺激になり気分転換になったと思う。 気を取り直して開発を再開したい。 実は、この間に、裏では着実に開発をちょこちょこ進め、5件の残件を対応した。

    引き続き、他の悩み項目について考えてみたい。 まずは、インサーションエフェクトの初期化手順の悩みについて考えたい。 これを解決する事でいくつか残件が減る。例のごとくまずは紙の上で考えていきたい。

    サーバ障害の疲れか、昨日突然、腰が痛くなった。 今までそんな事はなかったが、老化を感じた瞬間でもあった。 ただ、妙に左側が痛いので骨ではなさそうである、 単に、筋がつって筋肉痛になっただけの事かもしれない。 腰が痛くなると、体全体がギクシャクして何か落ち着かない気分だ。
2007-08-24 Hypersonic2 対応状況
    バックアップの運用であるが、開発に集中しているためなかなか整備が整わない。 サーバの容量はけっこう大きいので、毎日バックアップする訳にもいかない。 今後は、内容が日々変化する部分だけ毎日行い、サーバ全体は定期的に。 といった運用を検討してみたい。

    急遽立ち上げたサーバ機も元気に動作しているようである。 かなり性能が良いコンピュータなのでサーバにするには正直もったいない。

    ・・・

    それはさておき、2日前に、VSTi音源 Hypersonic2 (以後HS2)が到着したので、 それについての報告を行いたい。(2日前に報告直後、サーバ障害がおきてしまった。)

    HS2であるが、Score Editor 5.4 では動作しないとのユーザ報告を受けていた。 Score Editor 6 のマルチティンバー対応のテストや作者自身がこれを使って作曲したかったので、 HS2の購入に踏み切った。

    早速 5.4 にて動作させてみるもの、ユーザ報告どおり動作せず異常終了した。 すぐに調査を行い、ひとまずHS2が起動できる状態までになった。 しかし、音が出ない。

    音が出ない原因を追究したところ、HS2特有のVSTを駆使?した動作があり、 それに対応したら、とうとう Score Editor で音が鳴るようになった。

    HS2は、音を鳴らしながらディスクからサンプルデータを読むといった動作をしているようで、 VSTの仕組みを使ってうまいこと実現しているようだ。さすが本家のプラグインである。

    ともかく、Score Editor でHS2が、いとも簡単に動作するようになった。 特に VST2.3 に完全に対応せずとも、動作可能に作られている。 ただ、ホストからの楽器変更など、フルにHS2を使おうと思えば、 VST2.3 まで対応する必要があるのかもしれない。

    思ったよりも修正箇所が少なかったので、Score Editor 5.4 の修正版を出そうかと考えたが、 Wave ファイル書き出しの部分で、うまく動作するか確認するなど、 やるべき事が増えてしまうので、Score Editor 6 を待っていただくことにしたい。

    どちらにしてもマルチティンバーが対応できないとHS2の価値が半減する。 Score Editor 6 はマルチティンバーに対応するので、 HS2の基本機能はフルに使えるようになると思う。

    HS2を使用した感想であるが、やはりシンセ系の音が良い。ドラムもなかなか音が良く、 けっこう使えそうな音源だ。シンセ系では心が揺れるような分厚い音も出る。

    しかし、オルガン系や自然楽器は、少々力不足と感じる。 特にオルガンの力不足はしょんぼりだ。もちろん、昔の外部音源並みの音は出るが、 これはといったものがなかった。GMマップが入っているのは嬉しい。 ただ、GMマップを実現するために、自然楽器等が用意された感じがあり、 あまり力を入れていないように感じた。ただ、ピアノだけは、かなり凝っている。 ピアノのバリエーションはとても広く音も良い。これは嬉しい。 あと、ドラムやパーカッションもいろいろ入っているし、何よりシンセ系が強いので、 早くHS2を使って曲を書いてみたい。とてもワクワクする音源だ。

    自然楽器の音色であるが、オーケストラ音源MIROSLAVと比べての話である。 やはり、MIROSLAVは音が良い。HS2と比べると断然音が良い。 自然楽器であればMIROSLAVであろう。 MIROSLAVのピアノはホールの音色であるが、室内向けの音色が出ない。 HS2は、ホールのピアノ、室内向けのピアノなど、いろいろ入っているので、 カバーできる。あとMIROSLAVに入っていないオカリナの音は、 HS2に入っている。

    思ったとおり、HS2とMIROSLAVがあればほとんどの音楽をカバーできそうである。 ここで嬉しいのが、VST音源なので、完全に再生の同期が揃う所である。 VST音源を追加すれば、それだけ使用できる楽器が増えるという点がすばらしい。

    外部音源の場合、それぞれでエフェクトに違いが出たり、ソフト音源とハード音源では、 再生タイミングがずれる。電源もいちいち入れないとならない。

    しかし、VSTの場合、自由自在に音源を組み合わせて楽曲で使用できる。 まさに、VSTを追加するほど使用できる楽器が増えていく感じである。 リバーブなどのエフェクトは、センドエフェクトで統合できるので統一感が出る。 しかも、作成した曲をAUDIOファイルにしてしまう事ができる。 実にすばらしい。あえて難点を言えばアサインに時間がかかるという点かもしれない。 外部音源なら即使用できるが、VSTの場合、起動に時間がかかる。

    HS2の動作確認は Vista で行った。実際はXPまでの対応であるが、 USBキーの Vista ドライバをインストールすれば、動作するようである。 HS2とMIROSLAVも同じUSBキーのメーカなので手間が省ける。 この2つの音源が Vista で動作するのは、かなり嬉しい。

    HS2は、今後 ftn の標準DTM楽器として確立されそうである。 シンセ系の曲がぽんぽん出来てしまいそうな音源だと思う。 やはり、音が良いという事は良いことだと思う。 現在使っているD70はASIOデバイスとして引き続き使える。
2007-08-23 大きなサーバ障害が発生
    8/23 9:30 にシステムが完全に復旧しました。ふと思い出せばPCキーボードも反応しなかったので、 被害は大きく、落雷による可能性が極めて高い。

    普段は、落雷中、サーバを停止するのであるが、いつもより対処が遅れたというのと、 急激に落雷が強くなった事が問題である。 いつもどおりサーバを停止させたが、手遅れだったのかもしれない。

    落雷がおさまり、サーバを起動しようとしても起動しなかったのである。 その後また、落雷が激しくなる。 原因を調査すべく、落雷中に懐中電灯の明かりを頼りに作業を行った。 通常、落雷中は電源系を落としている。

    まず、HDDを取り出し、他のコンピュータで中が見れるか確認を行ったが、 HDDエラーとなり認識しなかった。この事から少なくともHDDは故障したと見られる。

    また、サーバ機そのものも故障した。 使える部品を使いまわせるとは思うが。機械の寿命の時期でもある。 今回は、いろいろな要因が重なった。

    早期にサーバを復旧させなければならず、テスト用に使っている別のPCを使って、 サーバの構築を行った。

    ひとまず、バックアップからWWWを復元するが、8/8 の状態に戻ってしまった。 開発日記が消えてしまったのはとても悲しい。

    OSが変わってしまったので、環境構築で異様に手間取った。 結果として、復旧までにかなりの時間がかかった。

    復旧後に、冷却ファンが1機停止しているのを発見したのでこれも対処したい。 今年は本当に出費の多い年である。さすがにまいってしまう。

    ・・・雷の被害。これは思ったよりも深刻なのである。 以前は、LAN ケーブルにつながっているコンピュータのLAN カードが全て故障するという被害にあった。 PCの電源が入っていなくとも。故障するのである。

    それ以来、いろいろな対策をしてはいるものの、 1年前には落雷の際、コンセントから火花が発生するという現象を目撃した。 それ以来、電気系統にまで気を配っている。

    実はこの日(8/22)、開発日記にて、VST音源HS2の嬉しい知らせを書いている直後、今回のサーバ被害に遭遇した。 この日は、仏滅なのに妙に良いことが続くので、何か奇妙でいやな予感はしていたのである。 それがこれだった訳だ。本日は精神的にもキツイので、ゆっくりして明日から開発を再開したい。 HS2については、明日報告したい。
2007-08-21 状況
    ようやくコンパイルエラーの除去が終わりソフトを起動できるようになった。 大修正を行ったのでポロポロ落ちるかと思っていたが、 そのような事もなく動作している。

    エラーを取る際、画面構成を行う処理が煩雑だったので、 余分な処理を取り、作り変えた。その関係で、この部分に関しては、 これから動作するように調整しなければならない。

    ひとまず不安要素の除去に成功した。
2007-08-20 状況
    オブジェクト分類方法の見直しが終わり、実際の作りこみが始まった。 またしても大修正となってしまう。現在コンパイルエラーを取る作業を永遠に行っている。

    しかし、今回の件で技術力がアップした。やはり苦しい中でこそ技術は生まれるものだと感じる。

    とはいってもたいした事ではない。 適切な情報をパラメータとして割り当ててやる。それだけの事である。 適切にという点が重要なのである。従来の構造では、いくつかのパラメータを見て、 プログラムで分類を判断していたが、分類方法が多様になり様々な要素が重なると、 もはや分類処理だけで複雑化する。もっとも恐ろしいのが、 分類を行うパラメータの仕様が将来変更となった場合。その全てを開発しなおさなければならない。 今まさにそれを行っている。これが心の奥底の不安要素だったのである。

    しかし、適切なパラメータをまんべんなく適切に割り当てる事で、 判断処理が不要になってしまうのである。 こうなると、もはやどうやってもバグが生じるはずがない。 そして、予想不可能な動作をする事は一切ない。分類方法が変更されてもなんともない。 一切修正は不要なのである。しかもシンプルで処理も早くなる。

    これによって6.01はかなり頑丈な構造で動作するはずである。

    ただ、意味もなく情報を増やしてはならない。適切に。というのが重要である。 それには、今回紙に書き出しを行ったように、じっくりと設計をする事が大切である。
2007-08-18 状況
    悩みどころについての追求を行っている。

    実際のプログラム構造図やデータ図を紙に書き出し、頭で思っているイメージとのずれを抽出している。 いくつか書き出してきた中で、しっかりとイメージどおりになっている部分もある事が判明。 他にもいろいろと心配な部分を紙の資料にしていくのであるが、 とうとう、深刻な悩みどころを見つける事ができた。

    紙に書き出してもまるで暗号。頭でイメージした内容を書き出したもののそれも暗号。 どうやらこの部分が心の奥底で不安を作っていたものと思われる。

    その問題の部分とは「デバイスオブジェクトの分類方法」である。 分類が階層構造になっていれば、なんら苦労しなかったであろう。 実際のところ、画面の視点や処理の視点によって、さまざまな分類化が必要な部分でもある。 その分類方法の多様性は未知の領域である。

    複数音源対応になって何が難しいのかといえば、まさにオブジェクトの分類方法が多次元である。 という事だったのかもしれない。

    現在の作りでは、これらは、各所にて専用の処理を行っている。 その分類処理があちこちに散らばり、作者を苦しめているのであろう。 今のうちにきちんと分類可能な情報を取り決めておかないと、 将来のバージョンアップの時に、追加不可能になるか、あちこちでバグが生じてしまう。 リリースした後が心配。という理由も、おそらくこれの事だったのだろう。

    ようやく問題の箇所が特定できたので、 どうすれば良いか考えるとする。

    そもそも、共通パラメータの対応と深刻な問題の対応で、オブジェクトの分類が多様化してしまった。 これだけ多様化したのであるから、今回、分類方法について処理しやすいように見直しても良い状態かもしれない。
2007-08-14 状況
    残件を3件対応。しかし、鍵盤機能がいつの間にか動かなくなっている事に気がついた。 データ構造の副作用であろう。鍵盤機能が動作するよう修正中。

    それはともかく、作者、忍耐力や精神的な負担の限界に達している。 連動処理の紐解き以前に、作者自身の紐解きのほうが先かもしれない。

    残件は目で見える程度の数なのに何か手が出ない。 ここで何らかしらのギャップが生じているのかもしれない。

    それは心配事である。何か不安要素が解決されていない。 このまま 6.01 をリリースしたら、とあるOSみたいだ。 たぶん、リリースした後が心配なのである。とあるOSになるくらいなら、 現状バージョンのほうが妥当。そうならないためにも何とかしなければならない。

    そこで、今回は全く新しい考え方をしてみた。 残件を見るのではなく、悩みの残件を見てみる事にした。 残件および開発中6.01を動作させ、悩みどころの残件をピックアップしてみた。

    悩みの件数は12件であった。これをスッキリと消化できたとき、 6.01をリリースできるだろう・・・。

    以下、意味不明かもしれないが悩みのリストを公開する。(注:文は読者向けに修正していない) これを1つ1つ解決してから、現在の18の残件を対処したい。

    ・楽譜プリセットとCOMポートは動的?VSTの退避。
    ・COMSPCパラメータの合成の考え方。
    ・パラメータの範囲をリリース後変える事になったら、ユーザに全て修正してもらわないとならない。
    ・SYSSPCとOBJ電源関連連動。
    ・複数楽譜のOUTのサンプリングパラメータ食い違い。
    ・楽譜編集フラグの考え方。
    ・INSエフェクトのプリセットロード方法
    ・入力デバイスや出力デバイスが1つもない場合の対処(その他)
    ・ドラム選択画面の楽器情報(VST の場合)
    ・プレイヤの一時停止とセッション反映時のリセット方法
    ・WAVEファイル書き出し画面のデザインと作成のイメージ。
    ・リセット送信メッセージをきれいに確実するには?メッセージが消えない事がある。

    悩み。言い換えれば見えていない部分。見えていない要素があるから不安になる。 これからそれらを見ていこうと思う。 自分の作ったプログラムが見えないなんて事は決してあってはならない。
2007-08-13 状況
    残件を2件対応。

    6.01にてAUDIO機能に力を入れており、 いくつもの機能が追加された。さらにAUDIOビット数やサンプルレートの設定を対応した。 従来の Score Editor で動作しなかったVSTも動作しているようである。

    それで、気になる事があって頭から離れない。 VST2.3対応である。いろいろ悩みに悩んだ結果、 新たなVST音源の購入を決意した。 その音源とは Hypersonic2 である。(以後:HS2)

    Score Editor で上記VSTが動作しないとのユーザ報告を以前いただいている。 Score Editor がVST2.3対応がされていないからであると思われる。

    今回、VST2.3対応を行うべくHS2の購入に踏み切った。 Score Editor Classic 6 のマルチティンバー動作確認においても必要だろう。

    単に動作確認をするために高価な音源を購入する事はしていない。 ftn 自身がトランスなどの曲を作る事といろいろな楽器を使用した曲を作る事もあって、 HS2はある意味もっとも必要な音源であると考えられる。

    オーケストラ音源 MIROSLAV とマルチ音源、HS2で作成する曲のカバーが可能になる。 それと、マルチティンバーが対応されたとなると、 ユーザもマルチ音源に手が出るはずである。おそらく普通のユーザならば1度はHS2を購入するかもしれない。 おそらくHS2は Vista で動作する。残念ながら他の手ごろなマルチ音源はXP止まりなのである。 選択肢は案外狭い。現在の Score Editor で動作する SampleTank も選択肢の1つであるが、 VST2.3の音源が欲しい事もあった。

    しかし、無事にHS2が動作するようになるかは未定。 また、多くの修正が必要と判断した場合は、6.01に含める事ができないかもしれない。

    それとVST2.4の対応はまた時期を改める。 魅力的なVST2.4音源があればその時に考える。

    これでVSTの悩み事はひとまずスッキリしたので、 あとは、6.01をリリースできるように開発に専念するだけのはずである。
2007-08-12 状況
    確定処理の連動処理であるが大枠完成したと思う。 少なくとも設定を確定した時に異常終了しない状態となり、 新しい設定が反映される状態となった。 それに伴い4件の残件が完了。

    残り残件は15件。まだ細かい残件が潜んでいるかもしれない。 かなり細かい部分まで作りこまれ、 残件の見通しがよくなってきた。

    書き忘れていたが、なぜ絡まったデータ構造なのか? 本来絡まる構造は望ましくないが、処理速度を上げるためには仕方がない。 可能な限り処理速度を上げるために、ダイレクトなリンクが多数できてしまうのである。
2007-08-11 状況
    いくら逃げようとしてももうダメだ。 どの残件を見ても難しくて手が出せない。 その理由を追求していたらある1つの残件に行き着いた。 音源設定の確定処理である。 これが片付かない限り先に進む事は不可能である。

    確定処理自体は完成している。確定した後の連動処理の開発を行う必要がある。 さもなくば、異常終了してしまうのである。

    という訳で連動処理関連をコツコツと進めている。 連動処理で大切なのは、タイマーなどのリアルタイム制御を止める事である。 その連動の流れは数ステップにわたって着実に止めていく必要がある。 そして、いよいよメモリの開放ができるのである。

    メモリの開放ができたら、今度は新しい設定をこつこつと起動していく。 これらの停止手順を怠ればとたんに異常終了する。

    こういった作りを現在行っている。あらゆる要素が関連しあっているので、 開発には時間がかかる。Score Editor 動作中はそれぞれのデータがリンクして絡まったような状態である。 それを紐解く処理と言っても良いかもしれない。

    単一音源の時は本当に楽だったと思う。 複数音源になると、ユーザがどのような設定で使うかで構成が変化するため、 あらゆるパターンで動作するように考慮しなければならない。
2007-08-10 状況
    作者は不調期。1件も進まず。 しかし、とても大きな収穫があった。

    以前から MIROSLAV の起動に疑問を感じていた。 アサインするたびに、楽器を選びなおしてやらなければならない。

    複数音源になった場合、上記の問題はかえってややこしい事になる。 楽譜を開くたびに、楽器の設定をすべて行わないとならない。 これでは、作曲をしようという気持ちが半減してしまう。

    なぜ、MIROSLAV はホスト側から楽器を指定できないのか? と、疑問に思っていた。時としては、ベンダーに問い合わせてみようとすら思った。 運が良いのかわるいのか連絡先が見つからず断念していた。

    しかし、とうとう、この悩みが解決された。 現在使用しているVSTの状態を保存する方法が分かったのである。 VST1.0の仕様で既にその機能が備わっており、これに気がつかなかった作者が情けない。

    ともあれ、6.01では、MIROSLAV の状態が楽譜に保存でき、楽譜読み込みと同時に復元できるようになる。 これは、それに対応していれば全てのVSTで有効な機能となる。

    上記が実現できるとなると、同じ MIROSLAV ユーザ間で、 楽器の設定がされた楽譜をやり取りできることである。 つまり、ユーザAで聞こえる設定をそのまま楽譜ファイルでユーザBに受け渡し、 ユーザBはユーザAが聴いていたのと同じ音で聴くことができる。

    それはそれで嬉しいが、なにより、この曲はこのコンビを読み込む。とか、 いちいち考えなくてよくなるのが大きな進歩である。 これで楽譜ごとに自由にVSTの設定を気軽にできるようになる。

    ・・・

    こうなると、6.01の仕様を少々検討しなおす必要が出てくる。 Score Editor 起動と同時に、既に音がなる状態とする事が可能になるからである。 つまり、VST音源が外部音源のような手軽さで使用できる。 Score Editor を起動するとすぐに音がなる状態。というのをVSTで作り出せるからである。
2007-08-08 状況
    残件を7件対応。あと18件。 細かいものはほとんど対応が終わり、残りは若干規模が大きな残件となる。 いろいろな機能との関連が多い残件である。 対応することによって新たな残件が出てきてもおかしくないような残件である。

    これからは、深刻な問題を対処した時期の続きとなる。 そのほとんどが、環境設定を変更したときや設定を変更したときの連動関連の処理となる。 従来の Score Editor みたいにソフトを再起動してもらえば楽なのであるが、 何しろ複数音源なので、毎回起動しなおす訳にもいかない。

    操作性を向上するためにも、今回の連動処理は不可欠である。 しかし、6.01のバグとして最も多く出ると思われるのが今回の連動関連処理だと思う。 それだけに、念入りに作業を行い。焦らないで完成度を高めていきたい。

    つまり気を緩める事のできない残件集である。 これからの開発進行具合は、数日かけて1件というペースになると思う。
2007-08-07 状況
    残件を6項目対応。急遽6.01で追加する事になったインサーションエフェクト機能は大枠完成した。 この機能の残件は、あと3つ。定義作成画面、楽譜の読み書き、プリセット対応。である。

    現時点での全残件は24件。気が遠くなるがコツコツ進めるしかない。
2007-08-06 状況
    残件を6項目対応。

    どうも気が散って困ってしまうが、 気になる所をどんどん終わらせていきたい。

    そう、AUDIOのビット数対応である。これが妙に気になっている。 あまりにも気になるので Score Editor 6 で対応してしまう事にした。 というか対応してしまった。

    6.01からはAUDIO出力に8、16、24、ビットが追加される。 またサンプル周波数は 11025/22050/44100/48000/96000 Hz が使用可能となる。 もちろん、Score Editor 上での再生もこれに対応した。 さすがに 96K の場合はバッファサイズを大きくしないと、 CPUの処理が追いつかない。 24ビット96Kの場合一秒間に 576000 バイトの計算処理が必要になる。

    16ビットと24ビットを聞き比べているうちにだんだん慣れてきたのか差が分からなくなってきたものの、 24ビットの高音域は確実に繊細な音になる。

    続いて、96K再生を確かめてみた。これについては、44Kとの違いが良くわからなかった。 もしかしたらD70音源が対応していないのかもしれない。 この周波数であるが、どれだけ高い周波数の音を再現できるか? といった数値である。たとえば44Kならばその半分の22K周波数まで再現できる。 人間の聞き取れる最高周波数は2万Hz(20K)と言われている。 それゆえ、44Kで十分なのである。それ以上の96Kになったとしても、 それだけ高い周波数で音を鳴らさないと違いが分からない。 打楽器などのノイズが入った楽器や共鳴やハーモニーの部分で違いが出るのかもしれない。

    もし44Kという上限でそれ以上の50Kの周波数を鳴らした場合、それは音のひずみとなって、 新たな周波数成分が作られてしまう。もし曲の中に2万Hz以上の周波数が含まれる場合は、 周波数ぼけする。96Kになることでその許容範囲が広くなったと言える。

    いずれにしても24ビットと96Kの対応ができた事で安心した。 参考であるが、音楽CDの音質は16ビット44Kであるが、 DVDの音質は24ビット96Kである。
2007-08-04 状況
    続く暑さのせいか、どうも気が散って集中できない状況が続く。 そんな中、テーブル表示機能を追加した。 たとえばエフェクトのキャラクタタイプというパラメータを数字でなく、 Hall1 のように文字で表示できるようにする対応である。

    開発が面倒なので諦めようとしていたが、 やはりきちんと対応しておく事にした。 これに伴い、音源定義作成機能にてテーブルリストを入力するための画面が新たに必要になる。

    ・・・実は24ビットAUDIOについて調査をしていた。 気がつけば、世の中24ビットの時代である事を知る。ショッキングである。

    人間のダイナミックレンジは20ビットと言われているので、 24ビットAUDIOとなればほぼ現実に近い音質が実現できる訳である。

    音は音圧の時間的変化で全て表現できる。 人間は周波数よりもこの音圧の変化に敏感である。 分かりやすく言えば、音量の変化。である。

    気がつけば、ftn が昔から使用しているSC−D70音源も、 24ビットを対応している。まさか対応しているとは知らなかった。

    みんな24ビットなのに16ビットのままというのは問題だ。 とはいえ、音楽CDが16ビットなので許容できる。 6.01では24ビット対応はできないが、リリース後に対応を検討したい。

    このAUDIOの16ビットと24ビットであるが、 ディスプレイ画面で例えれば3万色画面とフルカラー画面の違いに相当する。(と思う)
2007-08-03 状況
    6.01というバージョン表記になるだけで、プレッシャーが軽減され希望に満ちあふれてくる。 気分的にあわてて開発しなくても良い感覚となり新鮮である。 多少仕様が変わってもユーザが納得してくれそう。という安心感もある。

    時々作者も5.4を使って作曲をするのであるが、 その5.4のさっぷうけいさを感じるくらい6.01は機能が増えた。 6.01は画面の見た目もひきしまっている。

    この6.01が出来上がれば眠っていたMU128がフル活用できそうで楽しみである。 早いところ6.01を使いたいのであるがなかなか完成しない。

    6.01は鍵盤機能も追加されているが、これを使うと次々にメロディが湧き出てくるのである。 このまま楽譜を書いてしまいたいくらいである。 6.01の開発には時間がかかっているが、6.01がリリースできればユーザも納得できると思う。

    開発状況であるが、インサーションエフェクトの機能が大枠動作したので、 ひとまず残件を書き出してみた。細かい残件は32件。沢山増えてしまったが、 新たに2つも機能を加えた割には思ったよりは少なかったと思う。1件につき2日かかるとすれば、あと2ヶ月以上かかる計算となり、 気が遠くなってしまう。あと32個対応すれば完成。と前向きに考えたい。

    あまり深く考えなくても進められる残件がいくつかあるので、 まずは、それをどんどんかたずけてしまいたい。
2007-08-02 状況
    Score Editor にメジャー番号を付与してはどうかとのアドバイスをいただきました。 たしかに、今回の機能追加は大きすぎる。 今までや今後のことを考えて、メジャー番号を付与する事にしたい。

    現在開発中の5.5を Score Editor 6 としたい。 具体的な表記は、6.01.0000 とし、メジャー・バージョン・更新番号。 と続ける。

    メジャー番号はシステムの大きな変更を示す番号になると思う。 今までのバージョンについても、メジャー番号を付与してみた。

    Score Editor 公開バージョン一覧

    今後はこの表のメジャー表記の方法で公開する予定。過去のものについてはそのままとする。

    開発のほうの状況であるが、多くのエフェクト操作画面を対応するには、 つまみだけでは不足のため、スイッチなどの他のコントローラを開発している。
2007-08-01 状況
    深刻な問題が大枠だが対処完了した。 しかし、整合性あわせなどの細かい作りを行わなければ完全とは言えない。 SMFの書き出しや、ファイルの保存などの手直しまでも行わなければならなくなった。 本当に今回の設計ミスは痛い。

    Score Editor の仕様が、より本物に近くなり、良く分からぬワクワク感。 先行きの分からぬしょんぼり感。気持ちだけが大きく変動し、作者はおかしな状態だ。

    もうこうなったら、外部音源のインサーションエフェクトを使用できる機能を新たに付けてしまおうと思う。 しばらくリリースできない状況になったので、 この際、これについても機能追加してしまおうと思う。 多分、これ以上の新機能は5.5に含めることはないと思う。

    インサーションエフェクトはとても厄介だ。 エフェクトの種類を変更した場合、画面の見た目や値の範囲までもを変更しなければならない。 そのための定義の書式を決め、ステレオEQとディストーションを手始めに、 定義を書いてみた。無事ディスとーションがかかることを確認。

    これからエフェクト画面の定義作成画面や実際の作りを行う。 このエフェクトの定義が備われば、 Score Editor にて、ほとんどの音源の機能を操作できるようになる。 やはりというか、5.5にてこの機能を含めておかないと悔いが残ると思う。

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