千葉県船橋市のDCCに強い鉄道模型屋さんである石田商店様から、先日公開したオープンサウンドデータEF64 10000番台で、主電動機ブロアを手動でもできるようにしたいとの要望を受けました。主電動機ブロア(走る前に運転士が起動するもの)を全自動にしていました。そこで、検討した結果、Shift機能を使う事で、簡単に解決できそうだったのでご紹介させていただきます。
前提条件として、主電動機ブロアサウンドは、F1がONの時、常に動いているように設定します。
まず、FunctionMappingのお好きなところで、Logicalの部分にShiftを割り当てます。今回、私はF5にShift6を割り当てました。他のサウンドデータでも使ってなさそうなので。Shift1でもShift2でも6個のShiftのうちどれでも良いのですが、データによっては他で使われている場合がある(特にShift1)ので、確認の上選択してください。
Shift Mode6に割り当てました。ちゃんと覚えておきます。Shift Mode6をON(true)したとき(F5=ON)、EF64 1000の主電動機ブロアを起動するようにします。逆に、F5=OFF、つまりShiftMode6=false(OFF)となった場合には主電動機ブロアは停止するようにします。なお停止の際、機関車が停車している(spd=0)ことを条件と想定しています。
サウンドのブロック図で、先に正解を出すと、赤矢印のところにS6=trueとS6=falseがあると思いますが、これがShiftMode6の状態によって状態遷移するということを示してます。今までは、速度指令が0超(req>0)のときに起動し、停車(spd=0)し速度指令も0(req=0)のときに主電動機ブロアを止めるようにブロック図を作ってあります。
なお、このブロックは、F1=ONしたときに連動して常時動くようにしてあります。なので、F1=ONにすると、Idleのところで永久ループする動きをします。速度や状況に応じて、主電動機ブロアのサウンドを鳴らすブロック図プログラムになっているのです。
ちなみに、矢印にShift Mode6を設定するには以下のように、矢印を選択すると、以下のように左側にConditions(遷移条件の設定)が出てきますので、そこにShift6=trueとなるように登録します。
Groupを選択の上、緑の+マークを押すと、以下のウィンドウが出てくるので、Shift=trueとなるように選択してOKを押します。そうすると、新たにGroupが作られて、Shift6=trueの項目ができます。Groupが2つできていますが、これは、どちらかのGroupの条件に一致すれば、この矢印が進んでいく、という設定になります。いわゆるOR(論理和)条件です。よくわからない人は、「論理和」で検索して勉強してください。ちなみに高校数学です。
なお、Groupではなく違う項目(たとえばRequest Speed > 0)を選択して、緑の+マークを押すと、Request Speed > 0のすぐ下にShift6=trueとなってしまい、動きが変わってしまいます。
ブロアの停止の処理も書かないといけません。ここは、ブロア起動とは少し違う書き方をします。AND条件(論理積)とします。というのも、OR条件で設定してしまうと、機関車が停車すると、Shift Mode 6の状態に関わらず、ブロアのサウンドが停止してしまうためです。よって、手動でブロアのサウンドを停止するためには、AND条件で登録しなければなりません。
書き方としては、Speed=0または、RequestSpeed=0をクリックして選択した状態で、緑色の+マークを押して、Shift6=falseを設定することとなります。
これで、F5に紐づけたShiftMode6(Shift6)に合わせて、主電動機ブロアのサウンドが速度に関わらず鳴るようになります。そして、F5の操作をしなくても、走行を開始すると自動的に主電動機ブロアを起動するようにしたので、うっかり動かしても、主電動機ブロアの音を楽しめるようになります。