需要があるのかイマイチ分かりませんが、ロジクールGシリーズを買うと使えるようになるハードウェア(ソフトウェア?)マクロ用luaスクリプトを楽譜データから出力するツールFF14PlayMusicScripterを更新しました。
今回はマイナーチェンジです。
ツール最新版及び演奏サンプル動画
※ツール用固定ページを作りました。こちらに最新版とマニュアルがまとまっています。
Ver0.6.0の変更点
パッチ4.3で3オクターブ分の鍵盤を全てキーにアサインできるようになったのですが、Ver0.5.0まではオクターブの上下はShift 及び Ctrl キーを押しながら、というパッチ4.3より前の挙動のみに対応していました。
Ver0.6.0では、出力の際にチェックボックスを解除する事で、Shift , Ctrl キーによるオクターブ変更を出力しないという事ができます。
これにより、mapping.csv に37鍵盤分のフルキーアサインが書かれていた場合、それがそのまま演奏用スクリプトとして出力されます。
ダウンロード
こちらからどうぞ。
基本的な使い方
ここにはVer0.6.0の変更点のみが記述されています。
初めての方は基本的な使い方について過去の記事をご一読下さい。
フルキーアサインの方法
zipを解凍すると、\fullkey_assignというサブフォルダが追加されています。
このフォルダの中にある mapping.csv が、フルキーアサインした場合のマッピング例です。
このcsvファイルを FF14PlayMusicScripter.exe と同じフォルダに上書きコピーすると、ここに書かれているキーアサインでluaスクリプトを出力するようになります。
luaスクリプトを出力する際、今回からツールに追加されたチェックボックス
Add shift or ctrl for change octave
こちらのチェックを外すと、オクターブ変更時のShift , Ctrl 処理を出力しなくなります。
つまり、mapping.csv に書いたキーがそのまま出力されます。
デフォルトではこのチェックはOnになっていますのでご注意下さい。
フルキーアサインの注意
3オクターブ+1音のキーアサインという事は、37音分のキーをmapping.csvに重複が無い状態で書かなければいけません。
これがなかなか大変です。
0~9の数字、及びアルファベットでは36キーしかありません。
サンプルのフルキーアサイン版 mapping.csv はこうなっています。
ド#-1, 1 ミb-1, 2 ファ#-1,3 ソ#-1, 4 シb-1, 5 ド#, 6 ミb, 7 ファ#, 8 ソ#, 9 シb, 0 ド#+1, minus ミb+1, q ファ#+1,w ソ#+1, e シb+1, r ド-1, t レ-1, y ミ-1, u ファ-1, i ソ-1, o ラ-1, p シ-1, a ド, s レ, d ミ, f ファ, g ソ, h ラ, j シ, k ド+1, l レ+1, z ミ+1, x ファ+1, c ソ+1, v ラ+1, b シ+1, n ド+2, m
まず黒鍵を3オクターブ分先にアサインし、そのあとドレミを3オクターブ分書いています。
なぜこうなっているかと言うと、FF14側のマッピングUIが下のようになっているからです。
黒鍵と白鍵のアサインエリアが分かれており、最下段が低いオクターブで、最上段が高いオクターブですね。
別に mapping.csv じたいの書き方は37音全部揃っていればどうでもいいんですが、FF14側のアサインと合わせる必要があるので、このようにまとまっていた方が楽なんですね。
ただそれだけの理由です。
さて、上の mapping.csv で注意しなければいけないのは、
ド#+1, minus
ここです。
これは、キーの数が足りないので、「-」を使うはめになったという事です。
で、
ド#+1, –
こう書けばいいじゃんと思われるでしょうが、これだとロジクールのスクリプトは認識できず、そこで再生が停まります。
記号キーに対応した文字列は、
キーボード | スクリプト用文字列 |
– | minus |
ESC | escape |
F1 | f1 |
= | equal |
こんな風に決まっているんですね。
ちなみにこの文字列は、ロジクールゲーミングソフトウェアのスクリプトエディタを開き、ヘルプから一覧を見ることができます。
該当ファイルは G-seriesLuaAPI.pdf です。
FF14側の演奏用キーアサインをmapping.csvと合わせる
言うまでもありませんが、mapping.csv をフルキーアサイン版にした場合、FF14側の楽器演奏用キーアサインもこれと一致させる必要があります。
これ、かなり面倒くさいんですけどね・・・。
フルキーアサインのメリット
メリットと言えるのかどうか分かりませんが、フルキーアサインをした場合、オクターブ上下の音を鳴らす際にShift 押しっぱなし、Ctrl押しっぱなし、というパケットが不要になります。
ですので、速弾きする際にひょっとしたら遅延に対して有利かも知れません。
パッチ4.3以降「キーを押しっぱなしにしている時間を指定」できるようになったので、このツールが出力するスクリプトもこの押しっぱなしに対応しているのですが、そもそも楽器によっては音が伸びないので、速弾きの際には「押しっぱなし」を全くしないように演奏データを書いたほうが有利かも知れません。
ド, 100
レ, 100
と書くと、
ドを80msec押しっぱなししてから離し、20msec待ってからレを80msec押しっぱなし、というスクリプトになります。
一方
ド, 100, 0
レ, 100, 0
と、明示的に「押しっぱなしの時間は0」と書くと、
ドを押してすぐ離し、100msec待つ、レを押してすぐに離し、100msec待つ、というスクリプトになります。
後者の方が送信パケット少なそうですよね。
パッチ4.3以降に話題になった演奏音の遅延について
パッチ4.3以降、例えば100msec間隔でドレミ・・・と自動演奏させると、一定間隔でなんか音が詰まったり、タイミングが早く再生されたりといった現象が起きていました。
300msecより長い間隔とかだと大丈夫なんですが、速弾きすればするほどFF14側の音再生がガタガタになる傾向があります。
この現象に実は気付いていたんですが「面倒くさいなぁ」と思って知らん顔をしていました。
何回かHotFixがパッチ4.3に当たりましたが、2018年6月10日時点では、少なくとも演奏者側の聴こえ方としてはこの「音詰まり」的な現象は起きなくなっていますね。
/fullkey_assign/sample_playdata_doremi_fullassign.lua
は、フルキー版のキーアサインで、100msec間隔で全オクターブ37音を鳴らすサンプルスクリプトを出力したものですが、素人耳には滑らかに自動演奏しているように聴こえます。
「演奏者のところではちゃんと聴こえてるが、周りではズレてる」とか言われると困るんですが、すみません、それは多分、FF14のサーバーかクライアントの問題でしょうとしか。
だってなんですか、フレに「今から自動演奏するから、音が詰まってないか教えて」って聞くんですか?
そんな事言った瞬間に国家権力(GM)とコンニチワする事になりそうですよ。