いやー、今回の極蛮神、かなり難しくないですか?
スサノオより全然難しかった印象なんですが、火曜~土曜まで挑み続けて、土曜日にようやくクリア、2回目で弓が出たので解放されるまでの時間的にはスサノオと大差なかったのかも知れません。
とにかく、ものすごく疲れましたよ極ツクヨミ。
さて「使っているプレイヤー人口が多いから」「零式で竜とセットで席有るから」とか言う零式行かない勢からすると全く意味不明な理由で今回もジョブ調整からハブられた詩人ちゃんですが、また楽器演奏に変更が加わったご様子。
ロジクールのGシリーズを買うと使えるようになるハードウェアマクロ機能で楽器演奏をさせてみようという拙作のツールFF14PlayMusicScripterですが、しょうがないから対応しましたよ。
ツール最新版及び演奏サンプル動画
※ツール用固定ページを作りました。こちらに最新版とマニュアルがまとまっています。
ダウンロード
Ver0.5.0はこちらからダウンロードできます。
過去バージョンの説明
このページではツールVer0.5.0での変更点についてのみ、記述されています。
基本的な使い方については、過去バージョンの記事を参照して下さい。
Ver0.5.0の説明
FF14パッチ4.3で楽器演奏に加えられた変更点ですが、以下の3点のようです。
- 3オクターブ分のキーアサインが可能になった
- 楽器によっては、キーを押している間、音が鳴り続けるようになった
- 音色が追加された
これらのうち、ツールに影響があるのは1,2です。
ですが、FF14PlayMusicScripterのVer0.4.0で出力されたロジクール用のスクリプトについては、パッチ4.3でも問題なく動作します。
FF14側からすると、旧バージョンのスクリプトによる演奏は「キーの押しっぱなし」に対応していないので鍵盤を叩いてすぐ離す、という動作になっているだけです。
音色がピアノ等の場合、パッチ4.3でキーを押しっぱなしにしても音が鳴り続けたりはしないため、前パッチと今パッチで演奏に変化は無いかと思います。
また、3オクターブ分のキーアサインが可能になった件ですが、このように、
従来のShift, Ctrl を押す事でオクターブの上下を切り替えるモードと、上下のオクターブ分もキーアサインしてしまうモードが選べるようになりました。
この変更点については、本バージョンでは対応しません。
従来のShift, Ctrlを押すことで上下のオクターブを切り替える仕様のままです。
対応が難しいわけでは全くないのですが、ツールでスクリプトを出力する分には、新たに上下のオクターブの鍵盤にキーアサインするのは面倒なだけで不要に思えましたので。
次のバージョンで対応するかもしれません。
ツールの変更点
変更点と言っても、楽譜データ(csv)に新たなデータ=duration(キーを押しっぱなしにする長さ)が追加されただけです。
ただ、先に述べたようにVer0.4.0までの楽譜データや出力したスクリプトデータはそのまま使えます。
Ver0.4.0の楽譜データのフォーマットですが、
ド, 500
レ, 1000
ミ, 500
と書くと、
ドを押してすぐ離し、500msec待つ
レを押してすぐ離し、1000msec待つ
ミを押してすぐ離し、500msec待つ
というスクリプト(lua)を出力していました。
この同じ楽譜データをVer0.5.0のツールに読み込ませ、スクリプト(lua)を出力すると、
ドを400msecの間押し続け、離す
100msec待つ
レを800msecの間押し続け、離す
200msec待つ
ミを400msecの間押し続け、離す
100msec待つ
という出力になります。
どういう事かと言うと、「押しっぱなしの時間指定が無いため、次の音を鳴らすまでの待ち時間 x 0.8 の値を押しっぱなしの時間と判断し、残り時間を純粋な待ち時間とする」という挙動になります。
押しっぱなしの時間指定をしたい場合は、単純に後ろに追加します
ド, 500, 200
レ, 1000, 300
ミ, 500, 100
こう書くと、
ドを200msecの間押し続け、離す
300msec待つ
レを300msecの間押し続け、離す
700msec待つ
ミを100msecの間押し続け、離す
400msec待つ
このように出力されます。
押しっぱなしの時間指定がパラメータとして最後尾に追加され、これが存在する場合はその値を使用する、という挙動です。
「次の音を鳴らすまでの待ち時間」ですが、「キー押しっぱなし時間」を減算(労働7号の技じゃなくて)した値になります。
「キー押しっぱなし時間」の方が「次の音を鳴らすまでの待ち時間」より長かった場合、まぁこれは不正なデータなんですが、
ド, 500, 1000
レ, 1000, 1000
ミ, 500, 100
こう処理されます
ドを1000msecの間押し続け、離す
レを1000msecの間押し続け、離す
ミを100msecの間押し続け、離す
400msec待つ
押しっぱなしの時間は絶対に適用され、待ち時間が無くなる、という事です。
また「キー押しっぱなしの時間」を1未満の値で書くと、旧バージョンと同じスクリプトを出力します。
ド, 500, 0
レ, 1000, 0
ミ, 500, 0
このように、明示的に「0」と書くと「最短でキーを押して離す」という動作になります。
押しっぱなしをしないという事ですね。
実際にどのようなスクリプトが出力されるかは、サンプルの挙動を見てもらえれば分かります。
サンプル楽譜データ=sample_playdata_doremi.csv
楽譜データをツールでコンバートしたスクリプト=sample_playdata_doremi.lua
ツールから出力した sample_playdata_doremi.lua を割り当てたいGボタンのスクリプト部分にコピペする事でマクロによる自動演奏が可能になります(Ver0.1.0の記事を参照)。
上記サンプルのcsvとluaの相関関係を見て頂ければ、ツールの行っている処理を理解して頂けるかと思います。
ツール自体の演奏機能について
Ver0.5.0ですが、ハードウェアマクロ用のスクリプトを出力する部分はほんの10行程書き換えれば対応できるレベルなんですが、ツール自体の演奏機能を「キー押しっぱなし」に対応させるのが面倒で、そちらの方が時間かかりました。
ボタンを押すとMIDIメッセージを送る、というのと、ボタンを押しっぱなしの間音を鳴らし続ける、というのは全く違うプログラムになるんですが、MIDIメッセージの仕様がネットの何か中途半端な記事しか情報が無くてねえ・・・私自身、実はMIDIやらサウンドプログラムに関して殆ど知識も経験も無いもので。
という事で、Ver0.5.0では、音色(Timbre)が選べるようになっています。
選べるようになっていると言うか、デフォルトのオルガンの音(17=Drawbar Organ)以外では、キー長押しの効果が分からなくなるので変えないほうがいいでしょうね。