2001年の雑記帳(コンピューター系)
last updated 2001.12.31
2001.12.17 : FMPMD デバッグの話
WinXP で FMPMD がハングする問題だけど、四苦八苦した結果 YMF744 で waveOutGetPosition() API を使うとダメなことが分かった。ドライバの更新もしたけど効果なし。
waveOutGetPosition() を使って数秒後に waveOutClose() を呼び出せばいいみたいだけど、レスポンスが悪くなりすぎるので却下。waveOutGetPosition() を使わないようにソース変更(FMPMD の場合、実質的には問題なし)
2001.12.02 : WindowsXP の話
FMPMDのデバッグのために、新しく買ったノートPC(Sharp Mebius FC-200U)に WindowsXP を導入した。
導入に時間がかかったがドライバを拾ってくる必要もなく起動。動作速度はそれほど遅くないようだが、やはりメモリ 192M の環境だとスワップが多目のような(気のせいかも・・・)
最低限のソフトをインストールして FMPMD の動作検証をしたところ、全く問題なく動いてしまった。
デバッグ環境にならないじゃん(汗)
2001.11.11 : エスケープシーケンス解読プログラムの話その2
土日でエスケープシーケンスデコードクラスの修正は大体完了。まだひとつだけバグが残っているようだけど表示部分を先に作ることにする。
表示部分も今まではすごくいいかげんに作っていたんだけど、今回「曲と同期して文字列を生成するTThread から派生したクラス」と「文字列を描画する TForm から派生したクラス」に切り分けることにした。この修正もかなり気力が必要っぽい。画面サイズを可変にしたので描画位置の座標計算も大変.。
来週は WinXP の発売だし、インストールして FMPMD の動作検証(バグとり?)をする予定なのでまだまだかかりそう。
2001.11.05 : エスケープシーケンス解読プログラムの話
FMPMD にカラオケを組み込むためにずっと作っていたんだけど、ほとんど作りこんだ時点でデコードルーチンの設計ミスを発見。
Windows 描画の高速化のため、デコードアルゴリズムでは ESC シーケンスを解読して、「画面クリア」「スクロール」「文字描画」の3種のコマンドを発行するようにしていたんだけど、それだと「空白行を挿入」の処理が非常に面倒で時間もかかる事が判明(単純に文字描画で済むと思っていたら文字の色が違う場合を失念していた)。コマンド体系を一部変更して「指定範囲の画面クリア」「指定範囲のスクロール(or 行削除)」「空白行の挿入」「文字列描画」にしたため、プログラムの大幅書き直し。
さらに、不正エスケープシーケンスの処理が実機と異なっているので修正予定。結構仕様外のエスケープシーケンスが使われているデータがあるんだな。
まさに三歩進んで二歩戻る状態。
2001.09.03 : Delphi6 の話
Delphi6 Personal の無償公開が始まったのでインストールしてみた。
Borland 本体は全然つながらなかったので Vector からダウンロード後、何とかインストール、ユーザー登録終了。
早速自作コンポーネントをインストール、と思いきやエラー頻発(泣)。今見直すとひどいソース書いているなぁ・・・古〜いコンポーネントのバージョンアップ。
TThread から継承したクラスのコンストラクタ中で inherited Create を実行するより前に Priority を設定すると実行時エラーが起きるのはなかなか分からなかった。Delphi4 まではちゃんと動いたし、ヘルプにも書いていなかった。
他にも TThread は Kylix 対応で大幅に書き換わっているようで、スペアナ、レベルメーター、パラメーターなど表示系サブスレッドの Priority は今まで tpLower だったのだが Delphi6 だとスレッドの割り当てが少なすぎて終了時に異様に時間がかかるようになってしまった。仕方なく tpNormal に変更。
半日かかってやっと FMPMD がコンパイルできるようになった。
あと1つバグがあるのでそちらを直したら公開する予定。
2001.05.22 : コンパイラの本の話
ESCシーケンスデコードアルゴリズムの参考用に、コンパイラのアルゴリズムの本を買ってきた。
軽く読んでみる・・・集合関係の記号がさっぱり分からないので理解不能(泣)
なんとなく分かったのはESCシーケンスの方が字句解析?が複雑そうなこと。Cとかのソースだと括弧とかセミコロンで区切れるけど、ESCシーケンスでは区切り文字は一定ではないので字句解析のアルゴリズムがゴチャゴチャしてしまいそう。
2001.03.21 : Delphi で Excel 制御の話
今更ながら必要になったので、シリアルポートからのデータの受信と「Delphi の ML を読むと、3日に1回くらいは話題に出てくる」Delphi によるExcel の制御をやってみた。
最初は基本に忠実?に CreateOLEObject(関数内部で CoCreateInstance() を呼び出しているだけ)を使って Excel を起動し、Excel にあらかじめ作っておいたテンプレートを読み込ませて シリアルポートから受信したデータを Excel のワークシートに代入した。ML のサンプルを参考に書いたのでそれほど詰まらずに動くようになった。
でもこれだと Delphi で作ったプログラムと Excel と窓が2つできて紛らわしい。いろいろ調べたところ、TOleContainer を使って Delphi の埋め込みオブジェクトとして実行すればできそうだと分かった。プログラムを修正して表示だけはできるようになったんだけどテンプレートを読み込む方法が分からない(;_;)。保存の方は SaveAsDocument メソッドを使えばできたんだけど・・・
MSComm が標準で使えれば Excel VBA だけでも組めそうなんだけど、Microsoft の開発環境を入れないとインストールされないようだ。SDK で Comm Event をポーリングすればできないこともなさそうだけどそこまで VBA の知識がないので断念。
2001.03.10 : NP2 の話
PC98x1 エミュに wav 出力を付けたかったので Neko Project II のコードをいじってみる。
まずは配布ソースのコンパイルに挑戦。nasm を入手して asm をアセンブル、ワークスペースを開いてビルドしたところ意外なほどあっさりと生成できた。
その後 Win32 SDK を思い出しながらメニューを追加し、wav 出力のための処理を s98.h / s98.cpp を参考にしつつコーディング。出力データの 32bit -> 16bit 変換を忘れていたためちょっと引っかかったが、4時間ほどで wav を出力できるようになった。
ぷにゅさんにメールしてみようかな。
2001.03.05 : JAVA の話その2
いろいろ探してみたところ、メールマガジンを2つほど見つけたので購読することに。
現在クラス(オブジェクト指向)の勉強中。といっても Delphi, C++ で概念は掴んでいるのでそれほど難しい点もなさそう。
C++ より言語仕様がすっきりしていていい感じ。C++ の演算子オーバーロードやコピーコンストラクタなどは未だになじめない。
2001.01.28 : JAVA の話
iアプリも出たことだし、JAVAについて概要くらいは知っておこうと思って近所の本屋に行ってみたのですが、本が多すぎて結局買わずに帰ってしまいました(50種類くらいあった)。Webでも探してみたんだけど断片的な情報しか見付からなかったです。
言語仕様(&思想)とクラスライブラリ、実行環境について基本的なところを押さえておきたいんだけど。来週あたり再チャレンジしてみよう。
2001.01.28 : マウスパッド購入の話
先日買った光学マウスの動きが今一良くなかったので、結局マウスパッドを買ってきた。
店でいろいろ眺めたのだが会社でも使っている3Mの「マジックマット」に決定。マウスパッドの表面の細かい凹凸でマウスのボールや底面に付く汚れを取ってくれるのでほとんど掃除しなくてすむし、裏面がずれにくいのでツルツルの天板の上でも滑らずに置けるのがいい。
マウスパッドを替えただけで作業の能率が上がってストレスが軽くなったような気がする。
2001.01.21 : DirectMusic の話
今月のCマガジンで DirectMusic について取り上げられていたので、思わず買ってしまった(この手の本は見つけたときに買わないと後からはなかなか手に入らないことが多い。特に雑誌は)。
ざっと読んでみたが、記事だけでは良く分からなかった。やはり一度使ってみないとピンとこない。
もう少し流行ってもよさそうなのに全然普及しないのはなぜだろう。>DirectMusic
DTM そのものが衰退してしまったのだろうか。
2001.01.11 : Csound の話
Pd 関係のホームページを探していたところ、GUI ではなくてテキストファイルでロジックを組んで音合成/加工ができるソフト「Csound」を発見した。
曲データやサンプルも充実しているし、ツールの完成度も高そう。テキストファイルでばりばり書ける点も気に入った。
FMPMDプロジェクトが一段落したら本格的にいじってみよう。まずは OPN のFM音源の再現/発展から入っていく予定。
2001.01.11 : マウス購入の話
インテリマウスのホイールが回らなくなっていたのを騙し騙し使いつづけてきたのだが、なすび型マウスがなくならないうちにと新マウスを購入した。せっかくの機会なので光学マウスの Intellimouse with IntelliEye に決定。
使った感触は移動がずっと軽く、会社で今までのインテリマウスを使うと手が疲れてしまうくらい。ただこたつの天板の上で直に使うとマウスカーソルが動きにくかったので、結局マウスパッドは手放せなかった。
ごく稀にマウスが効かなくなるのだが、USB コネクタを1回抜いて差し直すと復帰した。USB の不具合かな?
2001.01.11 : 冬休みの成果
STL:とりあえずざっと読んでみた。次に組むときから使ってみよう。
Pdのドキュメント:眺めたのだが、いまいち良く分からなかった。
外字フォント:あと3文字。厄介なのが残っているけど何とかなりそう。
2001.01.01 : 去年の振り返りと今年の抱負
明けましておめでとうございます。
去年は WinFMP を発表し、PMDWin と合わせて Win 環境で PC-98x1 の音楽資産(の多く)を聞ける環境を整備することができました。
今年は WinFMP / PMDWin / FMPMD の更なる完成度向上と、新規プロジェクトに向けた構想固めの年にしたいと思います。
具体的には以下のような事を考えています。
FMPカラオケへの対応(できるのだろうか?)。FMPMD の完成。
新規音源エンジンの設計、試作。
今年もよろしくお願いします。
2001.01.01 : 正月の予定
冬休みの長期休暇を有効に生かすため、また暇するといけないのでノートPCに大量のドキュメント類を詰め込んで実家に帰ってきた。一通り目を通したいのだけどどこまで読めることやら・・・
1)抱負を書く
年初の恒例行事。決意表明。
2)STL
現在 C++ でも strcpy() 等を使っているので、言語の性能を生かしてよりバグが入りにくいプログラムを作るために STL の勉強を決意。
メールマガジンの記事(STLの概念を書いたもの)とホームページの文書(リファレンス的なもの)を持ち帰った。
メールマガジンはざっと読み終わってリファレンスの方を読み始めたところ。
3)Pdの英文ドキュメント
グラフィカルに音源のアルゴリズムを設計できるフリーソフト「Pd」の理解。このソフトの性能次第では新プロジェクトは必要じゃなくなるかも。
まだ最初の方を少し読んだだけ。
4)FMP 外字フォントの作成
FMP 外字フォントを TrueType に起こす。
あと30文字弱。曲線系が難しい。。。