[目次へ]

長野大介氏による STed2 for UNIX 開発メモです。



Apr.04.1999

 .とりあえず gettextize と autoconf & automake 化をやりました。少なくとも
  ウチではきちんと動作します。

 .X_LOCALE の認識がどうもうまくいかないようです。XFree86 3.3.3.1 の所為
  だとは思うんですけど…。うまく動く方が居たら、BBS にでも報告してください。

 .貴方にも出来る! 自作ツールの gettext & autoconf & automake 化。

   1. ソースを src/ ディレクトリに放り込む。他のデータも適当に。
   2. run gettextize
   3. run autoscan in  src/ directory ; cp autoscan.in ../autoconf.in
   4. Makefile.am を てっぺんと src/ に作り、中身を適当に埋める
   5. autoheader ; aclocal ; automake ; autoconf
   6. で、configure が出来る。
   7. きちんと動くようになるまで、修正。

   8. xgettext -a *.[ch] で message.po が出来る
   9. 必要な部分だけ切り出す。
  10. ソース中の該当行を変更、例えば printf("test") なら printf(_("test")) 
      要するに、出力文字列を _(...) で囲む。
  11. #define _(String) gettext(String) を、適当なヘッダファイルに置いて
      各ファイルから include。ENABLE_NLS の結果で状況を分けるのが正解。
  12. 正しく動くまで繰り返し。

 .次の予定は、更新の CVS 化。サーバーは立てますから、変更したい人は
  勝手にやっとくれ、てな感じで。
  ML でも立ち上げますかねぇ…


Mar.05.1999

 .':' をファイル名に含んだファイルは、正しくアクセスできないと思います。
  ソース内に drive letter を設定している部分が (多分) まだ残っていて、
  そこの対策にファイルオープン部分を改造しているためです。
  てゆーか、んな記号ファイル名に使うな。

 .midiplay を #player=1,midiplay --sted_control で使用すると、
  リアルタイム入力が出来ます。鍵盤側の音のモニタは出来ないけど。
  一方、timidity を #player=3,timidity -iSt で使用すると、
  リアルタイム入力時に鍵盤の音のモニタは出来ますが、実はレコーディングは
  出来ません。単に timidity (パッチ) 側の実装が遅れているだけ
  なんですけど。

 .今後の予定 (実現ほぼ不可能)
   .メッセージの po 化。今時 cat 形式はないらしい…
   .インタフェイスの gtk+ 化。imlib も使用して意味無く派手にするのが
    68 流。出来るんかいな。
   .sted2.fon からフォントデータを読み出し、きちんと表示する。
    16 pixel 固定なら楽だけど、下手に可変にしちゃったからなぁ…
   .G18/G36 ファイルの操作。要するにステップ数 256 制限への対策。
   .ステップ入力部分を、某表記方法に従った表記に改訂。えぇ、今時
    STed なんか移植しているバカものですゆえ。


Jan.01.1999

 .STed 国際化へ向けての伏線その1。sted-$(YYMMDD) 直下の *.c について、
  日本語メッセージがハードコーディングされている部分を抜き出してみた
  (contrib/japanese.cat)。ひょっとしたら抜けがあるかもしれませんけど。
  こいつらを、例えば英語に翻訳して、NLS なり Resource なりで環境に応じて
  変更できるようにすれば、とりあえず出力メッセージに関しては国際化が
  出来るような、そんな感じです。簡単じゃないですけど。
  ただ、下記の font 関係も含め、score.c が総書き換えになっちゃうのが、
  若干大変かなぁ、と。

 .ふと、SC-88/88Pro 用の音色エディタなんかあるといいなー、と思って
  しまいました。gtk+ なんか使って、GUI でインサーションエフェクトを
  いじって、その結果を STed の PRT ファイルで書き出して、みたいな。
  私は割とアレなんで作る暇ないんで、誰か作ってみませんか? 今なら
  世界取れまっせ。
  って、Rosegarden か jazz には付いてたような気はするが。


Nov.25.1998

 .意味もなくインストールされる sted2.fon。この中には、音符やらト音記号
  やらその他諸々など、各種専用フォントがバイナリ形式で納められている筈
  です。そのうちこいつを読み出して、必要な部分で表示してやろうという野
  望があるのですが、未だ果たせず。
  というわけで、あくまで伏線としてインストールを行っています。てゆーか
  実際に読み込み処理が行われてはいるんですが。


Oct.17.1998

 .そういえば、edit 時の function key による数値入力は、サポート出来て
  いない雰囲気です。やっぱり要るのかなぁ。


Oct.16.1998

 .今の所最大の懸案である日本語入力。とりあえず、カット&ペーストで
  入力できるよう検討中。disp.c:sinput() に突入した段階でセレクションに
  よる入力を enable、xwin_key.c:xwin_inpout() 等でSelectionNotify を監視
  し、あれば適当なバッファに内容を保持し、inpout() が呼ばれる度に
  バッファの内容を 1 bytes ずつ (SJIS に変換して)送り出す、と。
  んで、sinput() の処理が終了次第セレクション周りの処理を破棄。
  …これでいいのか〜〜?

  コレを応用すれば、XIM による入力も出来る…のか?


Sep.02.1998

 .Shift+'R' で起動される MIDI モニタ機能だが、X 版ではテキストスクロール
  機能が実装されていないので、マトモには動作しない。
  正直に実装しようとすると、割と絶望的に難しい作業になりそうなので、
  とりあえず勘弁して頂けると幸い…

 .単なる 'R' で起動される Recording 機能は、原作では rcd.x の機能に
  頼って作られている気配。きちんとしたドライバを起こすまで、こちらでは
  利用できないような感じ

 .Option menu で、ファイルセレクタ等を起動しようとすると、画面の文字
  部分が消える症状がある(X 版)。これは、画面重ね合わせ処理の不備による
  ものであるが、この不具合を本気で退治しようとすると、画面処理全体の
  アルゴリズムを改定した上しかも絶望的に遅くなる(実証済み)。そういう
  わけで、この症状は「仕様」とさせて頂きたく存じ上げる次第。
  どのみち、Option menu からは現段階では何も起動できない(child process
  周りの処理を作ってない)んですけど。

 .STed と外部 player の同期について。

  .midiplay は、改造して適当な機能を追加すればなんとでもなる。
  .timidity は、モジュール化した外部インタフェイスをデッチ上げて、
   演奏時に -iStv とかして起動すればよい(か?)。
  .eplaymidi は、最初からインタフェイスが付いているから、それを使う
  .widi も同上(でしたっけ?)
  .それ以外は諦める

  と、こんな感じで各 player 毎にインタフェイスを用意すると吉かと。
  最終的には破綻するとは思うが。


Aug.21.1998

 .X 版高速化への道。ClipMask 編(考察のみ)

 .Graphics(以下 BG )周りは は、pixmapに対する描画として実装。
  対象の pixmap は、XSetBackgroundPixmap 等で画面へ送る?

 .Text( 以下 FG )周りは、Text 用 pixmap への描画かつ mask 用
  bitmap への描画で実装。
  bitmap への描画は、現在の image への描画周りが流用可能?

 .画面の合成は、XSetClipMask で bitmap を mask として設定。
  その後、XCopyArea の GXcopy で転送。

 .コレやると、確かにどうなるか分かんないけど…、どうか?


Aug.10.1998

 .下のヤツは修正

 .memcpy, memset, memmove など、<string.h> 関係のアレを大量に使用。
  今時この関数がない環境もないでせう。
  万が一無い場合は、適当な互換関数でもデッチ上げると吉。


Aug.07.1998

 .'w' で double window にしたとき、右側の window で操作を行うと
  表示が変になる。よく見ると ncurses でも起きてた。


Jul.31.1998

 .backing-store を使用。使えないサーバー、環境の方は諦めてください。


Jul.30.1998

 .XFontSetExtents で返って来る値は、見た目の size よりも大きくなってる
  気配。とりあえず、xwin.c:Setup_FontSet() では -3 して辻褄を合わせている。

 .xwin*.c での座標の扱いは、W_Width/W_Height が変更されてもよいように、
  ソース中で (x0,y0) (x68kでの絶対座標系) と指定されるものには、

   x = W_Width  * x0 / X68_GWidth (=768)
   y = W_Height * y0 / X68_GHeight (=512)

  として、(x,y) を window 上の座標として扱っている。W_WIdth/W_Height が
  動的に変更されたとしても、これで対処可能だと、I think so.

 .ちなみに、X68k での text の Width と Height を、X68_TWidth/ X68_THeight
  として define してある。curses.c の方では使ってなかったから、あんまり
  意味は無いかもしれないが…。書き直すか。

 .STed_col[XSTed_msx_palletes] には、前半 16 個には text pallete の
  pixel 値が、後半 16 個には graphics palletes の pixel 値が入っている。
  一つの配列で扱う意味は…、あんまり無かったかもしれない。


Jul.28.1998

 .midi-in について、とりあえず midiplay-0.5 を参考に serial 入力は
  可能に出来るかも。
  Sound-Blaster の midi-in を使わないのは、単に手元に例のインタフェイスが
  無いから。

 .X 版インタフェイスについて。font の metrix に応じて画面サイズを変える
  程度の事は、やった方が良いのかもしれない。Java では割とあっさり
  実現できるんだけどなぁ。


Jul.12.1998

 .rcp->smf, smf->rcp を行う library : librcpsmf.a のようなものを生成?

 .とりあえず、rcp->smf を行う関数を作り、external player には smf を
  喰わせるようにするべき。

 .miditool(木村冬樹さん作) を改造して何とかなるか…? でもアレ、著作権
  関係の記述が無いんよね。御本人も mail unreachable だし。


Jul.04.1998

 .sted2.cnf や *.def などの、実行時に読み込む定義ファイルは、
  X68k(DOSか) 形式のファイルになっていなければならない。要するに、
  改行コードは 0x0a 0x0d で、文字コードは SJIS ということ。さもなければ
  Segmentation fault を頂く事になる。

 .SHIFT+?? や CTRL+?? のキー操作は、ほとんど動作しない(ncurses版)。
  しかし、極一部('A'-'Z')については動作するかも。


Jul.01.1998

 .ESC キーの効きが悪いのは、ncurses の仕様。対策は無いものか…
  とりあえず、ESC を押した直後にカーソル等を押せば(ESC sequence 
  を発生させる)、操作はすぐに反映される。

 .各種テキスト表示部分に、いわゆる半角カナが入ると、割と表示が乱れる。
  なるべくなら、コレに関しては対策を講じたくないが…


Jun.24.1998

 .rcp ファイル中の漢字コードは、SJIS とする。
  表示の際、整合性はどうしよう…

 .コード変換をどこで行おうか。rcp ファイルを読み込んでいる部分で、
  ひとつひとつ変換するのが正解か?


May.24.1998

 .file name 操作は、STed からは X68 互換の file name に見えるようにする?
  各 file 操作関数で、呼び出された file 名に対し wrapper をカマす?

 .file name を扱う関数では、file name を表す引数は char *name とすること
  あとで参照/変更しやすくするため

 .ctime, ftime が dtasc, tmasc に使えるかも


May.19.1998

 .sted.c の malloc 関係。used_u =1 だと、無限ループに陥る可能性がある
  オプション "-U/-u" を撤去することで対処?
  (_dos_malloc を作り直せとの話も…)

[ページの先頭へ]
[目次へ]