--以下メール内容-- manaka> SMCがハングアップ状態に陥る状況を発見しました。 manaka> 具体的には、以下の様なSMCファイルを処理すると、SMCがハングアップ manaka> 状態になります。 manaka> manaka> manaka> >#INCLUDEmanaka> >#INCLUDE manaka> > manaka> >1 ${YAMAHA-XG-X-XG-SYSTEM-ON:} manaka> > manaka> >#TEMPO 160 manaka> >@S1, 0, @S,0, 6,16,1800, 12,32,-1800, 6,16,0, @L manaka> > manaka> >1 @%1 SW1,0 L12 A1 B(127)-6 manaka> manaka> manaka> 色々と調査してみた結果、SPCを使用している時に manaka> 「L12 ...... B-(127)6」を「B(127)-6」とタイプミスしていた場合、 manaka> つまり異常な音長値が生成される状況でこの様な状態になるようです。 確認しました。 「音長が負になるとき」のチェックを忘れてますね。申し訳ない^^;。 --メール内容終わり--
--以下メール内容--
manaka> YAM_XG_O.SMI 26行目
manaka>
manaka> >#DEFINE NRPN-EG-RELEASE-TIME:${NRPN:$01,$65} ${DATA-ENTRY:?1,?2}
manaka> ^^^^
manaka> は「$66」の誤りです。YAM_XG.SMIの該当箇所も同様です。
確認しました。
manaka> YAM_XG_O.SMI 49,50行目
manaka>
manaka> >#DEFINE YAMAHA-XG-NRPN-DRUM-INSTRUMENT-VARIATION-SEND-LEVEL:${NRPN:$1e,?1}
manaka> ${DATA-ENTRY:?2,?3}
manaka> ^^^
manaka> >#DEFINE YAMAHA-XG-NRPN-DRUM-VARIATION:${NRPN:$1e,?1} ${DATA-ENTRY:?2,?3}
manaka> ^^^
manaka> 両者共に、NRPN MSBは「$1e」で無く「$1F」です。
確認しました。
manaka> やはりコントロールチェンジ系の値の相対遷移を、簡単に行なう手段が欲しいと
manaka> 思いました。
manaka>
manaka> 例えば、V+16やW-21というような指定方法で、それぞれボリュームやエクスプレッ
manaka> ション
manaka> の現在値から+16,-21だけ遷移するという様な指定方法です。
manaka>
manaka> 勿論、@?A,7V??g+16や@?A,11W??g-21という指定方法も存在しますが、出来れば上記
manaka> の
manaka> 様な方法も使えたら・・・と思うのですが。
V$$+16,W$$-21という指定ができます。
$$は「現在の値」を示す変数です。数値を指定するMMLのほぼすべての
場所で使用可能です。
--メール内容終わり--
--以下メール内容--
manaka> YAM_XG_O.SMI、192行目と193行目
manaka>
manaka> >#DEFINE YAMAHA-XG-X-CH-MONO-MODE:${YAMAHA-XG-X:$08,?1,$15,$00}
manaka> >#DEFINE YAMAHA-XG-X-CH-POLY-MODE:${YAMAHA-XG-X:$08,?1,$15,$01}
manaka> ^^^
manaka> アドレスが間違っています。正しいアドレスは$05です。
manaka> 同様に、YAM_XG.SMIの該当箇所も修正して下さい。
確認しました。
manaka> YAM_XG_O.SMI、56行目
manaka>
manaka> >#DEFINE YAMAHA-XG-X:X$F0,$43,$10,$4C,@S1,?0,@C1,$F7
manaka> ^^^ ^^^
manaka>
manaka> チェックサム計算の必要はありません。これを
manaka>
manaka> >#DEFINE YAMAHA-XG-X:X$F0,$43,$10,$4C,?0,$F7
manaka>
manaka> のように修正しないと、XGのエクスクルーシブ関連は全滅します。
manaka>
manaka>
manaka>
manaka> 同様に、YAM_XG.SMI、56行目の
manaka>
manaka> >#DEFINE XX:X$F0,$43,$10,$4C,@S1,?0,@C1,$F7
manaka>
manaka> この定義も修正して下さい。
確認しました。
--メール内容終わり--
--以下メール内容--
manaka> YAM_XG_O.SMIの13行目の「#include <YAM_XG.SMI>」は、余計なのでは
manaka> ないでしょうか。このINCLUDE文があると、YAM_XG.SMIとYAM_XG_O.SMIを
manaka> インクルードのネスト限界まで際限無く展開してしまいます。
そのとおりです。削除してください。
manaka> ドキュメントファイルGENSPICE.TXTの3233,3234行目のEFFECT3-DEPTHの
manaka> 書式が、本来
manaka>
manaka> ${EFFECT3-DEPTH: {mm}}
manaka> ${CHORUS-DEPTH: {mm}}
manaka>
manaka> の筈ですが、
manaka>
manaka> ${EFFECT2-DEPTH: {mm}}
manaka> ${TREMOLO-DEPTH: {mm}}
manaka>
manaka> になっています。
修正します。
manaka> SX-WINDOWのコンソールでは、メモリ確保に失敗するようです。
manaka> 「全メモリを使用する」に設定していても、メモリが確保できない
manaka> というエラーメッセージを表示して終了します。
manaka> 何か特殊なメモリ確保をしているのでしょうか?
manaka> SMC.Xをざっと調べてみた限りでは、特に問題は無いようですが・・・
libcで、起動時にsbrk(chkml())して(ヒープを最大にする)、mallocしている
だけですが・・・SX-WINDOWはよーわからんです^^;。
--メール内容終わり--
--以下メール内容-- NISHIHARA> > > 結果として同じ動作をする命令が同時に指定された時に、どう動作するのかの記 NISHIHARA> > > 述がありません。(例えば #TEMPO と #TEMPO-M が同時に指定された場合など) NISHIHARA> > > "相関する"と記述しているものとはまた違いますよね。"排他的に動作する"とい NISHIHARA> > > う感じでしょうか。 NISHIHARA> > 排他であることが容易に類推できるものが多いので省いてしまっています。 NISHIHARA> NISHIHARA> それもそうですね。ですが、"最後に指定されたものが有効"なのか"最初に指定 NISHIHARA> されたものが有効"なのか、"TEMPOよりTEMPO-Mの指定が優先される"のかの記述は NISHIHARA> ドキュメントのどこかに書く必要があると思います。 実は、今のところそれさえも「類推できる領域」としてしまっていて 書いていません。 実際、指定できうるものすべては「複数指定可能なものはあとに 指定されたほうが有効、そうでないもの(2つ以上指定できないもの)は すべてError or Warningを表示する」に統一されています。 「#TEMPOを2つ書く」のと、「MMLで"O4O5C"と書く」のとを同列に扱って いるので(とくに制限はしないがムダで格好悪いのでおすすめしないという程度)、 このへんはあまり明文化していないのです。 NISHIHARA> > (TEMPOの設定について:ばっさり省略) NISHIHARA> >「トラック0」は初期仕様です。正しくは「トラック1」です。もーしわけない^^;。 NISHIHARA> NISHIHARA> となると、「トラック0」に書けるものというのはどういう物があるのでしょ NISHIHARA> うか?結局の所#MUSIC-NAME、#COPYRIGHT、#PROGRAMMERなどの専用命令に完全に NISHIHARA> 依存する事にして、トラック0のデータがあるとエラーになるようにするように NISHIHARA> は出来ませんでしょうか。実際問題、何か書いても全て無視されてしまうような NISHIHARA> ので、エラー無しにコンパイル出来ても演奏されない、といった事態が生じる可 NISHIHARA> 能性があります。 これもマニュアルのミスです。 トラックデータとして認識する行先頭文字は「0〜9」でなく「1〜9」です。 ですから、"0"は「それ以外」となり、結局注釈となってしまいます。 NISHIHARA> ・Last update:の日付が変わっていません。 NISHIHARA> NISHIHARA> まぁ、これって自動でやってくれるのならともかく(SSIで出来るんですが)、手 NISHIHARA> 動だと非常に面倒くさいんですよね………でも一応、この日付が変わった事をペ NISHIHARA> ージ全体が更新されたかどうかの目安にしているので、出来ればちゃんとしてお NISHIHARA> いてください。 SSIは使えず、CGIもうるさい(moderated)なところなので・・・。 極力注意はしているのですが・・・。 NISHIHARA> 例えばベーマガとかに掲載されたとして、その記事を打ち込む時に間違えて入 NISHIHARA> 力してしまっても、エラーにならずにコンパイル出来てしまう場合があります。 NISHIHARA> その時、その修正をするのが非常に大変だと思うのです。出来ればちゃんとした NISHIHARA> エラーにするか、Warningを出力して欲しいと思います。 NISHIHARA> NISHIHARA> とりあえず、今までに気がついた該当する部分です。 NISHIHARA> -------------------------------------------------------------------------- NISHIHARA> 1 |:2 |:0 aaa :| bbb :| NISHIHARA> NISHIHARA> のように、2段目以下のループに無限ループが使われた時 対応しました。Warning表示します。 NISHIHARA> -------------------------------------------------------------------------- NISHIHARA> 最も外側の|:0 :|(無限ループ)の各トラックのmcが違う時 NISHIHARA> NISHIHARA> 例: NISHIHARA> 1 l8 |:0 cdefg :| NISHIHARA> 2 l8 |:0 cde :| カウンタ表示を付加するとともに、Warning表示するようにしました。 NISHIHARA> ・追加して欲しいコマンド NISHIHARA> NISHIHARA> たびたびすいません。また追加の希望です。 NISHIHARA> -------------------------------------------------------------------------- NISHIHARA> #LOOP-COUNT 2 NISHIHARA> #FADEOUT-SPEED 256 追加しました。ただし命令は「#FADEOUT-LOOP-COUNT」「#FADEOUT-SPEED」です。 NISHIHARA> あと、フェードアウトスピードの値の真の意味も教えて欲しいです。例えば、 NISHIHARA> 丁度4小節でフェードアウトさせたい時に、具体的にどういう値を指定すれば丁度 NISHIHARA> 終らせる事が出来るか、その計算式を教えて頂きたいと思うのですが。 今回マニュアルに明記しました。256で「4分音符10個分で0になる」速度です。 実際の計算式は書いていませんが、音量が0になるまでのmc数が ((4分音符のmc数)×2560÷(フェードアウト速度値)) で求められます。 NISHIHARA> -------------------------------------------------------------------------- NISHIHARA> 1,2,3 cdefg NISHIHARA> NISHIHARA> 1 cdefg NISHIHARA> 2 cdefg NISHIHARA> 3 cdefg NISHIHARA> と同じ動作をするもの。 対応しました。 --メール内容終わり--
--以下メール内容--
NISHIHARA> ・GENSPICE.TXTの誤字脱字訂正
NISHIHARA>
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 2 SPICEシステムについて
NISHIHARA>
NISHIHARA> * Microsoft MS-DOS
NISHIHARA> コマンドライン用16bit版実行ファイルが用意されています。
NISHIHARA>
NISHIHARA> Windows3.1上でもこのファイルを使う事になるのではないでしょうか。
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 5 逆コンパイラ「DSMC」の使用方法
NISHIHARA>
NISHIHARA> “infile.SMC”は、入力するMIDファイルです。省略できません。
NISHIHARA> “outfile.MID”は、出力するSMCファイルです。省略すると、カレントディ………
NISHIHARA>
NISHIHARA> "infile.MID"と"outfile.SMC"、それぞれ拡張子が逆になっています。
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> #BEAT
NISHIHARA>
NISHIHARA> 4分の4拍子、メトロノームクロック数48mc、32分音符数8を設定します。
NISHIHARA>
NISHIHARA> #BEAT 4/4,48,32
NISHIHARA> ^^-- 8の間違いではないでしょうか。
NISHIHARA> 同様の所が${BEAT:}の所にもあります。
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 6.4 マクロ機能について
NISHIHARA>
NISHIHARA> ここで、"$H"〜"$Z"がマクロとして使えるという記述があります。"$0"〜"$F"は
NISHIHARA> 16進数の記述に使われるとして、"$G"は使えないのでしょうか?
NISHIHARA>
NISHIHARA> #なにか勘違いしていましたらごめんなさい。
確認。修正。
# noteがA-Gなもんで上のように書いてしまったらしい^^;。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 6.5 変数について
NISHIHARA>
NISHIHARA> ??D
NISHIHARA> ?A÷?Bを返します。
NISHIHARA> もし割り算で余りが出た時は切り捨てでしょうか?
C言語のa/bです。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 6.6 数値引数表記について
NISHIHARA>
NISHIHARA> 「n分表記」という状況下で、
NISHIHARA>
NISHIHARA> "C4+4"という記述は、"C8"(4+4=8)と同等なのか"C2"(4分音符が2つの長さで2分)
NISHIHARA> と同等なのかが分かりません。どうやら"C2"の方になるみたいですけれども。
"C2"となります。これは(私の)歴史的理由によるものです。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 6.11.1 発声と待ち時間に関連する命令について
NISHIHARA>
NISHIHARA> C〜B
NISHIHARA>
NISHIHARA> 書式:
NISHIHARA> <C〜B>〔<+・-・=>〕〔({ONベロシティ}〔,{OFFベロシティ)〕〔{音長}〕
NISHIHARA> <C〜B>〔<+・-・=>〕〔({ONベロシティ}〔,〔OFFベロシティ})〕〔{音長}〕&
NISHIHARA>
NISHIHARA> "〔,{OFFベロシティ)〕"の後の"〕"が1個足りません。(2行とも)
NISHIHARA> あと、"OFFベロシティ"の前後の括弧が無かったり違っていたりしている
NISHIHARA> ようです。
確認。修正。
# Cut&Paste,置換結果の誤りのよーだ^^;。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> @{BEAT:}
NISHIHARA>
NISHIHARA> 書式:
NISHIHARA> @{BEAT:{拍子},{メトロノームクロック数},{32分音符数}{テンポ}}
NISHIHARA> ^^^^^^^^^^
NISHIHARA> "{テンポ}"は不要ではないでしょうか。
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> 7.4.1 音長について
NISHIHARA>
NISHIHARA> 前者はおなじみ8分音符です。後者は4分音符の3連符(旗の数は8分音符と同じで1
NISHIHARA> 本)を意味します。分解能(“#DIVISION”)48で扱える連符は3連符系のみです。
NISHIHARA> 分解能48の精度を保ったまま5連符を正確に扱いたい場合は、480もの分解能が必要
NISHIHARA>
NISHIHARA> 240の分解能でも48の精度を保ったまま5連符が出来ると思うのですが………?
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> になります。実際には、均等割をせずに済ます場合が多いようです。例えば、分解
NISHIHARA> 能48で4分音符の5連符を実現するには、“c%9d%9e%9f%9g%8”のようにします。
NISHIHARA>
NISHIHARA> このままでは合計44mcで、48mcになりません。
NISHIHARA> “c%10d%10e%10f%9g%9”か、“c%10d%9e%10f%9g%10”
NISHIHARA> ではないでしょうか。(私の解釈が間違っていたらごめんなさい)
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> * “q16”(常に16分音符分だけ発音する)
NISHIHARA> * “q%2”(常に2mc分だけ発音する)
NISHIHARA>
NISHIHARA> 以上はノートオンコマンドでゲートを省略した場合のはなしです。特定のノートだ
NISHIHARA> ^^^^^^
NISHIHARA> "はなし" -> "話"。単に漢字変換のし忘れだと思うのですが。
確認。修正。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA> あと、全体として
NISHIHARA>
NISHIHARA> 結果として同じ動作をする命令が同時に指定された時に、どう動作するのかの記
NISHIHARA> 述がありません。(例えば #TEMPO と #TEMPO-M が同時に指定された場合など)
NISHIHARA> "相関する"と記述しているものとはまた違いますよね。"排他的に動作する"とい
NISHIHARA> う感じでしょうか。
排他であることが容易に類推できるものが多いので省いてしまっています。
NISHIHARA> あと、6章まで「クロック数表記」がデフォルトになっているのに対して、7章
NISHIHARA> では「n分表記」がデフォルトになっています。書いている人が違いますので、違っ
NISHIHARA> てて当たり前なんですが、読む方はちょっと混乱してしまいます。
著者違い・・・ということで。
NISHIHARA> --------------------------------------------------------------------------
NISHIHARA>
NISHIHARA> ・dsmcについて
NISHIHARA>
NISHIHARA> ROLAND-GS-X-DISPLAYに限った話かもしれませんが、このコマンドで表示される
NISHIHARA> 文字列の中に " という文字がmidファイル中にすでにあった時、dsmcでは " のま
NISHIHARA> ま出力され、そのままではsmcで元に戻す事が出来ない。
NISHIHARA>
NISHIHARA> 例:dsmcの出力結果(一応私が作っているデータです)
NISHIHARA> 2 ${ROLAND-GS-X-DISPLAY:""In the memory" from Ys"}
確認。修正。
NISHIHARA>
NISHIHARA> 全体として、midファイルをdsmcで変換したものは、再びsmcで元に戻せるという
NISHIHARA> 保証が無いように感じられます。(まぁ変なmidファイルの存在を考えると出来なく
NISHIHARA> て当たり前なんでしょうけど)
よほど変でない限りは再現(ただし無駄な命令は削られる)できるよう作ってある
つもりですが・・・。
NISHIHARA> ・smcについて
NISHIHARA>
NISHIHARA> %@0 L48,96 の時
NISHIHARA> |:2 cde :| の時、ループの最後の"e"の音のゲート長が96mcになりません。
NISHIHARA> (48mcになっている模様です)そもそもゲート長が音長より長いという事はやっては
NISHIHARA> いけない事なのでしょうか?
「|:〜:|」の項に説明があります。
「“:”“:|”命令を処理するとき、ノートオン状態のノートはノートオフとなります。」
NISHIHARA> "%@1 @Q1 L8,%2"の時、ゲート長が48-2=46mcではなく2mcそのままの値になってし
NISHIHARA> まいます。ちなみに、"%@1 @Q1 L8 Q%2"だと期待通りの動作(48-2=46mc)になります。
確認。修正。
NISHIHARA> 休符を挟んだ後の${TEMPO:[数字]}の指定がトラック0では無効化されてしまいま
NISHIHARA> す。TEMPOはトラック0でしか書けないとの記述があるので、曲の途中でテンポを変
NISHIHARA> えたい場合、
NISHIHARA>
NISHIHARA> 0 t 150
NISHIHARA> 0 r1 r1 r1 r1
NISHIHARA> 0 t 140
NISHIHARA>
NISHIHARA> としました。しかし、これがエラーにならずにコンパイル可能であるにもかかわ
NISHIHARA> らず、2番目のt140が無視され、テンポは最後まで150のままになってしまいます。
NISHIHARA>
NISHIHARA> また、TEMPOの設定は実際には他のトラックでも(使われているトラックのうち一
NISHIHARA> 番小さいものであれば)どれでも良いみたいで、実際の所どう扱えばいいのか分か
NISHIHARA> らなくなってしまいます。
NISHIHARA>
NISHIHARA> #根本的に、曲の途中でテンポを変更する事が間違っている、というのであればご
NISHIHARA> #めんなさい。一応他の(今までに使っていた)MML->MIDでは同様の事は出来たので……
「トラック0」は初期仕様です。正しくは「トラック1」です。もーしわけない^^;。
NISHIHARA> #MEMO "GSは液晶画面表示のみ"
NISHIHARA> をsmcに掛けた後、dsmcをすると、
NISHIHARA> #MEMO "GSは液晶画面侮ヲのフみン"(カタカナは実際は半角カタカナです)
NISHIHARA> と文字化けしてしまいます。他のMID->TXT変換ツールで見た場合でも文字化けし
NISHIHARA> ていましたので、smc側の問題だと思います。おそらく、"表"のSJIS2バイト目が
NISHIHARA> "\"と同じコードなのでその影響が出たのでしょう。
確認。修正。
NISHIHARA> ・その他
NISHIHARA>
NISHIHARA> smcとdsmcが扱うテキストファイルのデフォルトの拡張子を変えて欲しい、ある
NISHIHARA> いはバックアップファイルを作成して欲しいです。
"*.DSM"に変更してみました。
NISHIHARA> ・複数トラック間の同期を取るためのコマンド
NISHIHARA>
NISHIHARA> ちょっと極端な例ですが、(仮にs<数字>を同期信号出力、w<数字>を同期信号が
NISHIHARA> 来るまで待つ(数字は同期信号の番号)、と定義したとして)、上と下の2つは同じ
NISHIHARA> 動作をするというものです。
NISHIHARA>
NISHIHARA> 1 @%0 @0 r10
NISHIHARA> 2 @%0 r2 @1 r8
NISHIHARA> 3 @%0 r4 @2 r6
NISHIHARA> 4 @%0 r6 @3 r4
NISHIHARA> 5 @%0 r8 @4 r2
NISHIHARA>
NISHIHARA> 1 @%0 @0 r10 s0
NISHIHARA> 2 @%0 r2 @1 w0
NISHIHARA> 3 @%0 r4 @2 w0
NISHIHARA> 4 @%0 r6 @3 w0
NISHIHARA> 5 @%0 r8 @4 w0
NISHIHARA>
NISHIHARA> 上のように、少しずつずらして時間の掛かるMIDIシーケンスを送る場合や、思い
NISHIHARA> っきり長い時間休んでいる楽器(パート)を再開させる時などにいちいち全休符の数
NISHIHARA> を数えなくて済むように出来るので有れば便利かと思います。
NISHIHARA>
NISHIHARA> #プログラム的には、小さいトラックから大きいトラックへの同期は比較的簡単に
NISHIHARA> #実現出来ると思います。しかし、大きいトラックから小さいトラックへの同期は
NISHIHARA> #全体を2passにする必要があるので実現は難しいかもしれません。
現在の(SMCの)構造では無理です。
NISHIHARA> ・複数行にまたがるコメント
NISHIHARA>
NISHIHARA> データ作成中に、最初の方を飛ばして試し聞きする方法で、7章ではエディタの
NISHIHARA> カット&ペーストを用いる方法を紹介していますが、これは(DOS上では)非常に面
NISHIHARA> 倒です。C言語の/* 〜 */ か、"#if 0"〜"#endif"に相当するような、複数行を一
NISHIHARA> 気にコメントに出来るようなコマンドは作成出来ませんでしょうか。"#comment"の
NISHIHARA> 行から"#end-comment"の行までを無視するという形にすれば比較的楽に実現出来そ
NISHIHARA> うだと思うのですが、いかがでしょうか。
実現しました。
#COMMENT 条件
:
:
#END-COMMENT
「条件」が省略か0以外の値になったとき、#END-COMMENTまでが注釈化されます。
NISHIHARA> ・1行まる毎コピー命令
NISHIHARA>
NISHIHARA> 直前のトラック1行に書かれたコマンド列を、頭のトラック数字を除いて全て丸
NISHIHARA> ごとコピーするというものです。
NISHIHARA>
NISHIHARA> 例として、sample td3009.mscより抜粋させて頂きます。
NISHIHARA> 2 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 3 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 4 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 5 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 6 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 7 @%1 r1 @{REM:"End of track"} @e
NISHIHARA>
NISHIHARA> を、
NISHIHARA>
NISHIHARA> 2 @%1 r1 @{REM:"End of track"} @e
NISHIHARA> 3 #COPY
NISHIHARA> 4 #COPY
NISHIHARA> 5 #COPY
NISHIHARA> 6 #COPY
NISHIHARA> 7 #COPY
NISHIHARA>
NISHIHARA> というように出来たらいいかなと思うのですが、どうでしょうか。同様の事はマ
NISHIHARA> クロで実現出来ますが、こちらの方が(出来る事に制限はありますが)はるかに手軽
NISHIHARA> で便利だと思います。
あまり役にたたない気もします。
むしろ「再定義可能なマクロ」を作ったほうが汎用性は広い・・・ということで
「特殊マクロ($G〜$Z、$g〜$z)は再定義可能」としてみました。
#DEFINE G:@%1 r1 @{REM:"End of track"} @e
2 $G
3 $G
4 $G
5 $G
6 $G
7 $G
でいかがでしょうか。
--メール内容終わり--
メールはこちらへ...[後藤浩昭 / Hiroaki Goto / GORRY / gorry@shonan-inet.or.jp]