Ein Heftiges Heft

heftig: 1) von starkem Ausmaß, großer Intensität 2) leicht erregbar, aufbrausend (von Duden)

Морожеのエフェ講座② ~ updateTrigger の話 ~

【ℹ️ この記事は K-Shoot Mania 譜面制作チーム TapeStop100アドベントカレンダー企画,TapeStop100 Advent Calendar 2019 の 11 日目の記事です。】

おはようございます,TapeStop100 の Мороже です🛰️ この記事は昨日の記事の続編になっていますので,まだご覧になっていない方はそちらを先にお願いします。 nitrone7.hatenablog.com さて,今日も K-Shoot Mania のエフェクトのうち,Retrigger のパラメータについて話そうと思います。特に今日は updateTrigger について具体例を使いながら説明をします。


updatePeriod について詳しく

前回けっこう雑に流してしまったので,もう少し厳密な説明をします。
Retrigger によって繰り返されるために使う音の区間のことをサンプルと呼ぶことにします。サンプルの開始地点を updateTrigger,開始地点が更新される間隔のことを updatePeriod と呼びます*1。デフォルトの Retrigger はまず updateTrigger が譜面の最初のところにあり,そこから updatePeriod で指定された周期で updateTrigger を更新し直すという流れになっています。
たとえばある 8 分の Retrigger があったとして,この Retrigger が繰り返すものは,今まで見てきた中で*2最も近い updateTrigger から始まるサンプルの最初の 8 分ぶんの区間を取り出したものになります。
言葉だけではすこし説明しづらいので,感覚的な理解のために画像を用意しました*3。(左上にスペースが余って寂しかったのでボム兵を描きました)

右側 2 行のエフェクトを実際にかけてみるとこうなります:



任意位置の updateTrigger

ところで,この updateTrigger は手動で変更することができます(変更方法は後述します)。これを利用すると,updateTrigger がある場所から音を取り出して好きな場所でリピートできます。
たとえば free という名前のエフェクトの updateTrigger を変更することによってどんな挙動になるか確認してみましょう。黄緑色の線が updateTrigger の更新線です。

サンプリングボイスを連発したりするとネタ色の強い感じのエフェクトになります。

なお巷では「押した瞬間を updateTrigger の更新線とする」というエフェクト *R が流行っていますが激しく非推奨です。一見便利そうですが,本当に押した瞬間に更新されるのでプレイヤーがいつ押したかに音が左右され,少しでもズレると意図していない音が鳴ることがよくあります。公式ブログにも書いてある上やたら広まっていますが,このような欠点から撤廃すべきものです。絶対に使わないようにしましょう。

updateTrigger を実際に置いてみる

ここから実際に updateTrigger を手動変更するための方法について説明します。
free という名前の定義エフェクトの updateTrigger を変更するためには,まず freeupdatePeriod0 にしておき,テキストエディタ内で updateTrigger を置きたい位置に fx:free:updateTrigger=on と書けば良いです。

#define_fx free type=Retrigger;updatePeriod=0;rate=100%

しかし,テキストエディタ内で置きたい場所を探すのは不可能に近いので,テキストエディタの置換機能を利用します。次のようにしましょう: 追記: K-shoot Mania のバージョンアップによって,ツールバーの「ツール」→「注釈による譜面ファイルの直接編集を有効にする」で簡単に書き込めるようになりました(反映は再読み込みすることで可能)。以下は古い記述となります。

  1. エディタ内で「注釈の挿入」(Ctrl+Shift+右クリック)を用いて,updateTrigger を変更したい場所でfx:free:updateTrigger=on と書き込む。エディタで上書き保存する。
  2. テキストエディタで譜面を読み込み,// を空文字列に一斉置換した*4のち,テキストエディタで上書き保存する。
  3. エディタで譜面を開き,注釈を挿入していた場所を見ると入力した文字列が緑色になっていれば成功。

以上の手順を実際にキャプチャしてみました。慣れればすぐに出来る作業なので,みなさんもじゃんじゃん updateTrigger を編集していきましょう。


まとめ

これは僕の譜面ではないのですが,今までの知識を用いてこんなエフェクトをかけることができます。拡張した Retrigger は強いので大抵のことはできます:

Effectors Challenge 2 の『もぺもぺ[peace]』という差分譜面です。拡張エフェクトをふんだんに使用した面白い譜面となっているので,是非ご覧になってください。

さて,2 日間の間 Retrigger について熱く語ってきました。紹介したユーザー定義エフェクトを使うことでかなり自由度の高いリトリガーをかけることができます。(紹介しきれていないことディスコンのドゥルルドゥルルッっぽいエフェクトとか,両FX押したときの挙動とか)もけっこうあるのですが,それはまたの機会に……)
それでは,みなさんも良いエフェクトライフを!

(追記) 2 年越しの続編が出ました。こっちもぜひ見てください。

執筆: Мороже auch bekannt als ……?

*1:実はこれは区間の長さではなくて,「updatePeriod = x として小節の初めからスタートして x 小節ごとに updateTrigger を置き直す」という仕様になっています。つまり小節の始まりから 1/4 経過したところで updateTrigger を置き,そこから 1/2 小節周期で updateTrigger を更新するために updatePeriod = 1/2 としても期待した動作にはならず,小節の始まりから 1/2 経過したところで updateTrigger が置かれます

*2:今まで見てきた中でというより実際に見る必要があります。つまり,曲の最初から最後まで再生する過程でサンプルをリアルタイムで取り出しています。なので updateTrigger よりも後の部分で再生すると,取り出し元の区間が存在しないために別の音が流れます

*3:けっこうわかりやすい画像だと思うので説明するとき是非勝手に貼ったりして使ってください

*4:注釈は内部では // で始まる文字列として扱われています