SoundProgramming
SmileSoundは、内部にユーザーが作成したプログラムを動かすことができます。サウンドデータのページに掲載されているサウンドデータも、ここに記載されているコマンドを使って作られています。
SmileSound上で動作するプログラムは「サウンドフロー」と呼びます。サウンドフローは、CSV形式で記述が可能で、テキストエディタでも作成が可能です。
サウンドデータで公開されているサウンドデータを参考にして、オリジナルのサウンドデータを作ることができます。
DesktopStation Sound Programmer (DSSP)をご用意しています。
特徴
- スクリプトはロードされた後、常時実行されます。
- main.csvが必ず最初にロードされます。main.csvに各csvが動作するように記述する事で、様々な機能を実現できます。
- CSVに記述したサウンドプログラム(サウンドフロー)は同時に16フローを実行できます。使っていないフローは自動的に終了する機能を有しており、意識せずにサウンドプログラミングできます。
- 同時に10個のサウンドを再生可能です。
- 0.1秒周期で常時、サウンドフローは上から下の行に実行されます。
- サウンドファイルは、8bitならびに16bitのモノラルの32kHz, 16kHz, 8kHzのRIFF WAVEファイル(LPCM)に対応しています。DSSPを使用することで、デコーダに書き込み時、自動でサンプリングレートは変換されます。Tag等の情報は付加しないでください。
- 状態遷移はスクリプト上に記述します。ifとgotoで状態遷移の待つ条件を作ります。ifの条件式が成立したら、遷移させる形です。
- 1つのCSVスクリプトは128行まで。
- サウンドだけでなく、AUXの操作や、速度のリミッタ、各種変数機能を搭載しています。
使用できる変数(特定コマンドのみ)
サウンドフローで使用できる変数名は、以下に挙げた変数のみとなっており、ユーザーが自由に変更することはできません。
定義済変数 | 変数名 | 説明 | 値の範囲 | 使用例 |
---|---|---|---|---|
local | ローカル変数 | 呼び出しているサウンドフロー内で使用できる変数 | 0-65535 | local1,local2,・・・ local8 |
share | 共有変数 | デコーダ全体のサウンドフローで使用できる変数 | 0-65535 | share1,share2,・・・share8 |
spd | 現在速度 | 車両が走行中の速度 | 0-255 | spd |
ref | 指令速度 | 加減速中では現在速度とズレが生じます | 0-255 | ref |
fnc | ファンクション | サウンドフローに割り付いているファンクション状態を0(OFF)または1(ON)で示します。特定のファンクション番号の状態は確認できません。 | 0-1 | fnc |
aux | AUX状態 | AUX出力状態を0(OFF)または1(ON)で示します。 | 0-1 | aux1,aux2・・・aux6 |
tmr | タイマ | 呼び出しているサウンドフロー内で使用できるタイマ。1以上の値をセットすると、1秒ごとに1ずつ減ります。 | 0-65535 | tmr1,tmr2・・・tmr4 |
acc | 加減速度 | 加速しているとき正の値, 減速しているとき負の値 | -255~255 | acc |
dir | 進行方向 | 0のとき直進、1のとき後進 | 0-1 | dir |
cv | CVの設定値 | CVはCV1-CV256の範囲です。 | 0-255 | cv1,・・・,cv256 |
rnd | ランダム変数 | ランダムな値を返す変数です。rnd1-rnd100が使用できます。 | 0-100 | rnd1・・・,rnd100 |
emg | 非常制動状態変数 | 非常制動モードの時、1になります。通常時は0です。 | 0-1 | emg |
コマンド解説
aux | AUX出力 |
auxs | AUX出力(PWM調整機能付) |
call | サウンドフローの即時読み出し |
cxif | 常時監視条件分岐ifの全クリア |
date | サウンドフローのファンクション操作時読み出し |
dirx | 進行方向制限 |
echo | エコー |
emg | 非常制動設定 |
exit | サウンドフロー終了 |
if | 条件分岐if |
goto | ラベルへ即移動 |
label | ラベルの設定 |
let | 変数と数値の計算 |
monf | 監視ファンクション番号設定 |
play | サウンドの再生(ウェイト有) |
plyx | サウンドの再生(ウェイト無) |
pit | 再生ピッチの設定 |
ret | 先頭にジャンプ |
set | 変数に値を設定 |
spdx | 速度下限制限(実質的な速度指定) |
sply | 加減速音連動サウンド再生 |
srvo | サーボモータ制御 |
stm | 蒸気サウンドの設定 |
stmc | 蒸気サウンドの設定クリア |
stms | 蒸気サウンドの時間調整 |
stop | サウンドの停止 |
slim | 速度制限 |
vol | サウンドフロー内のサウンド音量設定 |
volm | 全体のサウンド音量設定 |
wait | ウェイト |
wspd | 速度連動型ウェイト |
wrnd | ランダムウェイト |
wtrg | 条件付きウェイト,廃止予定 |
xif | 常時監視条件分岐ifの登録 |
aux
ヘッドライト・テールライト、AUXの出力のON/OFFを行います。
コマンド | 引数1 | 引数2 | 引数3 |
aux | AUX番号(0,255,1-8) | AUX操作(0 or 1) | - |
AUX番号 | 定義 |
0 | ヘッドライト |
255 | テールライト |
1 | AUX1 |
2 | AUX2 |
3 | AUX3 |
4 | AUX4 |
5 | AUX5 |
6 | AUX6 |
7 | AUX7 |
8 | AUX8 |
【記入例】 aux,0,1 aux,255,0
auxs
ヘッドライト・テールライト、AUXの出力がONの時に、出力する電圧の量を調整します。AUXSコマンドは1つずつ操作を行います。複数を操作する場合には続けて記述してください。
コマンド | 引数1 | 引数2 | 引数3 |
aux | AUX番号(0,255,1-8) | AUX出力電圧(0-255) | - |
AUX出力電圧は以下のように定義しています。0を設定すると、AUXコマンドでONにしても、ライトは点灯しませんので、ご注意ください。また0に近い値を設定しても、視認しにくい明るさとなる場合があります。LEDや回路によって変わりますので、詳細はライトユニットの取扱説明書を参照してください。
AUX出力電圧 | 定義 |
0 | 消灯 |
1-254 | 中間電圧をPWM方式で出力 |
255 | 常点灯 |
【記入例】
auxs,0,128
auxs,1,255
call
他のサウンドフローを呼び出して実行します。他のサウンドフローを呼び出しても、並列実行されるため、動作の影響を受けません。何らかの条件で、複数のサウンドを出す時に使用します。たとえば、発車時のブレーキ緩解音や警笛など。
コマンド | 引数1 | 引数2 | 引数3 |
call | サウンドフローファイル(csv) | 割り付けるファンクション番号(0-28) | - |
flow1.csvを呼び出す例です。
ファンクション番号を特に使用しない場合は、0としてください。サウンドフロー内で、ifコマンドを使ってfnc変数を操作しなければ、特に支障はありません。
【記入例】 call,flow1.csv,2
cxif
xifで登録した"いつでもif"条件を、すべてクリアすることができます。
コマンド | 引数1 | 引数2 | 引数3 |
cxif | - | - | - |
【記入例】 cxif
date
他のサウンドフローを呼び出して実行します。ただし、割り付けられたファンクションがOFFからONになったときだけロードして動作します。警笛やドアなど、シンプルなファンクションに使用します。
他のサウンドフローを呼び出しても、並列実行されるため、動作の影響を受けません。何らかの条件で、複数のサウンドを出す時に使用します。たとえば、発車時のブレーキ緩解音や警笛など。
コマンド | 引数1 | 引数2 | 引数3 |
date | サウンドフローファイル(csv) | 割り付けるファンクション番号(0-28) | - |
flow1.csvを呼び出す例です。
ファンクション番号を特に使用しない場合は、0としてください。サウンドフロー内で、ifコマンドを使ってfnc変数を操作しなければ、特に支障はありません。
【記入例】 date,flow1.csv,2
dirx
進行方向制限コマンドです。実質的に、進行方向を指定することもできます。
コマンド | 引数1 | 引数2 | 引数3 |
dirx | 進行方向(0: 解除, 1: FWD,2: REV) | - | - |
【記入例】 dirx,1
echo
コメント行を示します。特に処理は行いません。無視されます。
コマンド | 引数1 | 引数2 | 引数3 |
echo | コメント | - | - |
コメントを記載した例。
【記入例】 echo,コメントです。
emg
【Firmware 20230227以降から使用可能】
非常制動(緊急停止)のON/OFFができます。速度上限コマンド、速度下限コマンドとは別に動作しますので、非常制動を解除したら自動で復帰します。
非常制動をONすると、CV4で設定した速度に対して1/5の短時間で急減速・停止を行います。停止状態は、非常制動をOFFするまで保持されます。
コマンド | 引数1 | 引数2 | 引数3 |
emg | 0 or 1 | - | - |
引数1に1を指定した場合、非常制動をONします。0を指定すると、非常制動を解除します。必ず、モーターが停止状態になってから非常制動は解除してください。
emgコマンドが非常制動時(ON)にすると、emg変数が1になります。if等を使って、非常制動中かどうかを判断できます。非常制動OFFのときはemg変数が0になります。
【記入例】 emg,1
exit
サウンドフローを終了し、使用していたスロットを開放します。再開はできません。なお、exitを記入しなくても、サウンドフローの最後に到達した場合にも自動でexitと同じ処理が動作します。
終了させたくない場合は、goto等をスクリプト末尾に置いてください。
コマンド | 引数1 | 引数2 | 引数3 |
exit | - | - | - |
コメントを記載した例。
【記入例】 exit,コメントです。
if
条件が整うと、指定のラベルにジャンプします。
偽の時の行き先ラベルを省略すると、if文に続いて次のコマンドを実行します。複数のifコマンドを用いて状態遷移を作りたいときに使用してください。
コマンド | 引数1 | 引数2 | 引数3 |
if | 条件 | 真の時の行き先ラベル | 偽の時の行き先ラベル(省略可) |
条件には、様々な変数が使用できます。
変数の種類 | 変数の説明 | 使用可能範囲 | 値の範囲 |
local | フロー内変数 | 0-65535 | local1,local2, … local8 |
share | 共有変数 | 0-65535 | share1,share2, …share8 |
spd | デコーダの現在速度 | 0-255 | spd |
ref | 指令速度 | 0-255 | ref |
fnc | ファンクション | 0-1 | fnc,fnc0,fnc1,fnc2・・・fnc31 |
aux | AUX状態 | 0-1 | aux1,aux2…aux6 |
tmr | タイマ | 0-65535 | tmr1,tmr2…tmr4 |
acc | 加減速度 | 0-255 | acc |
dir | 進行方向 | 0-1 | dir |
cv | CVの設定値 | 0-255 | cv1,cv2…cv256 |
ファンクション操作によってジャンプする例。ここでは、監視ファンクションがONになった時の例です。
【記入例】 label,START if,fnc==1,SOUND_ON,START label,SOUND_ON label,SOUNDLOOP if,fnc==0,SOUND_OFF,SOUNDLOOP label,SOUND_OFF
goto
行き先ラベルにジャンプします。
コマンド | 引数1 | 引数2 | 引数3 |
goto | 行き先ラベル名 |
TESTにジャンプする例
【記入例】 goto,TEST label,TEST
label
gotoコマンドやifコマンドからジャンプしてくる位置を設定するものです。
コマンド | 引数1 | 引数2 | 引数3 |
label | ラベル名 |
TESTにジャンプする例
【記入例】 goto,TEST ~~~ label,TEST
let
ユーザーが設定可能な変数に、値を代入するためのコマンドです。簡単な数式のみ対応します。
コマンド | 引数1 | 引数2 | 引数3 |
let | 代入式(後述) |
代入式に使用できる左辺の変数は、以下となります。
変数の種類 | 変数の説明 | 使用可能範囲 | 値の範囲 |
local | フロー内変数 | local1~local4 | 0-255 |
share | 共有変数 | デコーダ全体のサウンドフローで使用できる変数 | share1~share4 | 0-255 |
tmr | タイマ | tmr1~tmr2 | 0-255 |
代入式は、以下のような文を示します。
local2=5+1
カッコは使えません。
× let,share3=(1+9)*2
右辺の数値を、変数にしても構いません。
let,share1=share1+10
右辺の変数には、代入可能変数に加えて、ifコマンドでも利用可能なspdやaccといった変数が使用できます。
let,share2=share2+acc
monf
サウンドフローのifコマンドで用いられるfnc変数が監視するファンクション番号を変更できます。たとえば、サウンドフローごとにファンクション機能を作るのに用います。デフォルトはファンクション0(F0)です。
コマンド | 引数1 | 引数2 | 引数3 |
monf | 監視するファンクション番号(0-32) |
ファンクション8(F8)を、このサウンドフローで監視するように設定する例。fnc変数は、自動的にF8を監視するようになります。
【記入例】 monf,8
play
サウンドを再生するコマンドです。内部にwait相当の機能が自動設定されており、playコマンドの次の行には、再生終了直前まで遷移しません。
コマンド | 引数1 | 引数2 | 引数3 |
play | WAVファイル名 | ループ回数(0 無限ループ,1-100 ループ回数) | 即再生(1 or 0) |
ループ再生させる場合は、ループON/OFFの引数を0にします。1回だけ再生したい場合には1を入れます。2を入れると2回再生します。最大で100回まで指定できます。
playコマンドで、すぐにWAVファイルを再生したい場合は、即再生の引数に1を入れます。このサウンドフロー内で既に再生させているサウンドがある場合、停止してから再生することでよければ、即再生の引数に0を入れます。
他のサウンドがループ再生中に、このコマンドが呼ばれた場合、WAVファイルの再生終了の瞬間で、このWAVファイルに切り替わります。
【記入例】 play,seibuaw_in.wav,1,0 echo,playwav play,seibuaw_loop.wav,0,0
plyx
サウンドを再生するコマンドです。playコマンドのような再生待ちウェイト機能が無く、次の行に再生直後に遷移します。
再生しながら複雑な停止制御や、動き方を実現したい場合にご利用ください。ウェイト以外はplayコマンドと機能は変わりません。
コマンド | 引数1 | 引数2 | 引数3 |
plyx | WAVファイル名 | ループ回数(0 無限ループ,1-100 ループ回数) | 即再生(1 or 0) |
ループ再生させる場合は、ループON/OFFの引数を0にします。1回だけ再生したい場合には1を入れます。2を入れると2回再生します。最大で100回まで指定できます。
playコマンドで、すぐにWAVファイルを再生したい場合は、即再生の引数に1を入れます。このサウンドフロー内で既に再生させているサウンドがある場合、停止してから再生することでよければ、即再生の引数に0を入れます。
他のサウンドがループ再生中に、このコマンドが呼ばれた場合、WAVファイルの再生終了の瞬間で、このWAVファイルに切り替わります。
【記入例】 plyx,seibuaw_in.wav,1,0
pit
サウンドを再生ピッチ(再生速度)を変更するコマンドです。
惰行音など、速度に応じたモータや機械軸の音を調整するために使用します。
コマンド | 引数1 | 引数2 | 引数3 |
pit | ピッチ(直値) | - | - |
pit | ピッチ下限値 | ピッチ上限値 | - |
引数1だけを与えた場合には、速度に関係なく、その再生ピッチに変更します。
引数1と引数2に、ピッチの値を入れた場合、速度に応じてピッチが自動で切り替わります。ピッチ下限値は、必ずピッチ上限値よりも小さい値でなければなりません。
ピッチは、1024を与えると標準の再生速度になります。最低値は32(約3%の再生スピード)、最大値は2048(2倍の再生スピード)となります。
ピッチ上下限値を設定した場合、停止状態のときに下限値の再生スピード、最高速度の時に上限値の最高スピード、50%速度の時に上下限値の半分の再生スピードで、該当するサウンドフローのスロットの音が再生されます。
サウンドファイルごとに再生ピッチは調整できませんのでご注意ください。
pitコマンドを実行すると、すぐに反映されます。速度に関係なくピッチ変更した場合、速度に応じた自動切換えは即座にOFFされます。
【記入例】 pit,512,1024 play,dakou_loop.wav,1,0
【記入例】 pit,684 play,beep.wav,0,0
ret
サウンドフローの最初に戻るコマンドです。記入されている位置に関係なく、サウンドフローの最初に戻ります。戻った後、そのまま実行は継続されます。
サウンドフローを停止・終了したい場合は、exitコマンドを使用してください。
コマンド | 引数1 | 引数2 | 引数3 |
ret | - | - | - |
どの場所に置いても、サウンドフローの最初に戻れます。
【記入例】 ret
set
ユーザーが変更可能な変数に値を格納するコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
set | 変数名 | 設定する値 |
変数に設定可能な値は変数によって異なります。
変数の種類 | 変数の説明 | 使用可能範囲 | 値の範囲 |
local | サウンドフロー内で使用可能なユーザー変数 | local1~local4 | 0-255 |
share | その他のサウンドフローと共有して使用可能なユーザー変数 | share1~share4 | 0-255 |
tmr | 値を設定すると、1秒ごとに自動的に値が減っていくタイマ変数 | tmr1~tmr4 | 0-255 |
cv | CVの設定値 | cv1-cv1024 | 0-255 |
【記入例】 set,local1,100
spdx
下限速度を設定するコマンドです。速度指令を受けずに指令代わりに使い、自動運転させることもできます。
コマンド | 引数1 | 引数2 | 引数3 |
spdx | 下限速度(0-255) | - | - |
【記入例(加速)】 spdx,30
sply
速度に連動してサウンドを再生するコマンドです。再生するWAVファイルの長さを100%として、速度に応じて再生開始位置が自動で変更されます。なお、加速が終わるとサウンドは自動で停止します。
コマンド | 引数1 | 引数2 | 引数3 |
sply | WAVファイル名 | - | - |
オープンサウンドデータに使用されているVVVFサウンドは、LokSoundの仕様上、加速や減速音を6分割や8分割して、速度に合わせるように実装しています。
しかし、分割する事で、加速が止まっているのにもかかわらず音が出続けてしまう事や、ちょっとした加速を再現することが難しい現状があります。
本コマンドを使用することで、速度や加減速状態に応じて、無段階に分割したかのようにWAVファイルを再生することができます。
本コマンドを使用する場合、速度と連動する関係上、WAVファイルの長さ(再生時間)と加速時間(CV2)や減速時間(CV3)を同じ時間に設定する必要があります。ズレている場合、速度とうまく連動しません。
以下の記入例は、加速サウンドフローと減速サウンドフローを表したものです。両方は、モータ駆動直前にロードするように実装するか、サウンドONと紐づいてcallを行うとよいでしょう。
【記入例(加速)】 label,START if,spd<1,START if,acc<=1,START sply,E233_kasoku.wav, goto,START
【記入例(減速)】 label,START if,spd<2,START if,acc>=-1,START sply,E233_gensoku.wav, goto,START
srvo
【ファームウェア 2024年9月1日版以降から使用可能】
RCサーボモータを制御するコマンドです。AUX3,4,5,6,7,8に接続された3.3V駆動可能なRCサーボモータを動かすことができます。サーボモータ電源用にVCC端子(3.3V内部電源)が必要なため、外部に供給可能な端子を持つSmileSound Standard MTC21およびSound Development Boardのみで使用が可能です。
信号はロジックレベルのまま使用してください。パワー出力の場合は、VCCとのプルアップ抵抗が必要になりますが、回路の複雑化によって想定外の動作をする可能性があるため、サポートいたしません。
コマンド | 引数1 | 引数2 | 引数3 |
srvo | 軸番号(0-5) | 角度(0-180) |
軸番号は、AUXと以下のように対応しています。使用しないAUXは、ライト制御が可能です。ライト制御で使用しているAUXは、サーボ用には使用できません。自身で排他の管理を行ってください。
AUX端子 | 軸番号 |
AUX3 | 0 |
AUX4 | 1 |
AUX5 | 2 |
AUX6 | 3 |
AUX7(Servo/Sensor2) | 4 |
AUX8(Servo/Sensor1) | 5 |
角度は、0度から180度まで指定ができます。デコーダ内部で角度情報は電源OFFの際に記憶しないため、起動から最初にsrvoコマンドを使用した場合、急にサーボモータが動き出す場合があります。
【記入例】
srvo,1,90
stm
蒸気サウンド機能を設定するコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
stm | WAVファイル名 | スロット番号(0-3) |
スロット番号0から3まで4つのWAVファイルを設定すると、stmsコマンドで設定した時間間隔に合わせて、上記のドラフト音を速度に連動して再生します。
サウンドフロー動作中に変更することもできます。速度や状況(ex.重い負荷)に応じてドラフト音を変化させることもできます。
【記入例】 stm,A-01.wav,0,0 stm,A-02.wav,1,0 stm,A-03.wav,2,0 stm,A-04.wav,3,0
stmc
蒸気サウンド機能をクリアするコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
stmc |
スロット番号0から3まで4つのWAVファイルを設定されたものをクリアします。
実質的に、蒸気サウンド機能を停止することができます。
【記入例】 stmc,
stms
蒸気サウンド機能で、音が鳴るタイミングとなる時間間隔を調整するコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
stms | 1:走行開始時,2:最高速度時 | 調整時間(ミリ秒) |
走行開始時は、おおよそ800~1200ms、最高速度時は50-100ms程度を指定します。
車両に応じて調整が必要な場合があります。サウンドフローの本コマンドを使用しますが、この値をCV57(走行開始時)及びCV58(最高速度時)で微調整することもできます。
【記入例】 stms,1,800, stms,2,50,
stop
playコマンドで再生したサウンドを停止するコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
stop |
ループ中等も問わず、サウンドは停止します。なお、同時に実行中の他のサウンドフローのサウンドは停止しません。
【記入例】 stop
slim
モータの速度制限を行うコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
slim | 制限速度(0-255) |
停止させたい場合は、制限速度を0にしてください。制限なし(最高速度まで可)とする場合は、制限速度を255と指定してください。
【記入例】 slim,255
vol
サウンドのボリュームを調整するコマンドです。
コマンド | 引数1 | 引数2 | 引数3 |
vol | 音量(0-255) |
無音にする場合は、0にしてください。音量を標準とする場合は、255と指定してください。50%音量は127です。
【記入例】 vol,255
volm
サウンドのマスターボリューム(デコーダ全体のサウンド音量)を調整するコマンドです。
サウンドフローのどのファイルからコマンドを実行しても、共通のマスターボリュームが調整されます。
コマンド | 引数1 | 引数2 | 引数3 |
volm | 音量(0-255) |
無音にする場合は、0にしてください。音量を標準とする場合は、255と指定してください。50%音量は127です。
【記入例】 volm,127
wait
ms(ミリ秒)待ちます。並列して実行されているサウンドフローには影響を与えません。
コマンド | 引数1 | 引数2 | 引数3 |
wait | 待ち時間(ミリ秒) |
5000ミリ秒待つ例を以下に示します。
【記入例】 wait,5000
wrnd
ms(ミリ秒)、ランダムに待ちます。並列して実行されているサウンドフローには影響を与えません。
コマンド | 引数1 | 引数2 | 引数3 |
wait | ランダム待ち時間上限値(ミリ秒) | ||
wait | ランダム待ち時間下限値(ミリ秒) | ランダム待ち時間上限値(ミリ秒) |
0-5000msの間でランダムに待つ例と、1000-2000msの間でランダムに待つ例を以下に示します。
【記入例(0-5000msの間でランダムにウェイト)】 wrnd,5000
【記入例(1000-2000msの間でランダムにウェイト)】 wrnd,1000,2000
wspd
速度に連動して、ウェイト時間が設定できます。
y=ax+bの一次方程式で表すと、aが速度連動ウェイト時間、xが速度、bがオフセット時間となります。
反比例モード(0)にすると、速度が上がるたびに、ウェイトが短くなります。最高速度の時、ウェイト時間だけ待ちます。蒸気機関車などでは、反比例モードで使用してください。
比例モード(1)にすると、速度が上がるたびに、ウェイトが長くなります。停止時は、オフセット時間だけ待ちます。
コマンド | 引数1 | 引数2 | 引数3 |
wspd | 速度連動ウェイト時間 | 反比例(0) or 比例(1) | オフセット時間 |
オフセット時間は、省略した場合、0msと設定されます。
wtrg(廃止予定,xifを使用すること)
直後に使用されるウェイトコマンドを、指定条件が成立したら強制解除します。
playコマンド, waitコマンド, wrndコマンドが影響します。
コマンド | 引数1 | 引数2 | 引数3 |
wtrg | 条件式 |
条件式には、ifコマンドと同じ式が使用できます。
【記入例(TEST.wav再生中に、モータが減速したら再生中ウェイトは解除)】 wtrg,acc<0 play,TEST.wav,1,0
xif
どの状況にもかかわらず、監視を行う"いつでもif"を動かすための登録機能です。最大で、4つの条件まで登録できます。4つめ以降は登録した条件は無視されます。
xifで登録した条件を、すべてクリアするには、cxifを使ってください。
コマンド | 引数1 | 引数2 | 引数3 |
xif | 条件式 | ジャンプ先ラベル | - |
たとえば、サウンド再生中に待つ処理を終わらせて、違う処理を動かし始めることができます。
加速中に、減速を開始したときのサウンド切り替えを行わせたり、すぐに反応させたいときに使用します。
【記入例】 xif,f==0,END_LOOP