Ein Heftiges Heft

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

Мороже のエフェ講座① ~ rate と updatePeriod の話~

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

おはようございます,TapeStop100 の Мороже です🛰️ 今回で Advent Calender への投稿は 2 回目になります。
前回(2 日目)の記事や僕についての紹介などはこちらをどうぞ ↓ nitrone7.hatenablog.com

さて今回は,今日と明日のぶんの枠を使って K-Shoot Mania のエフェクトのうち,Retrigger のパラメータについて話そうと思います。特に今日は rateupdatePeriod について具体例を使いながら説明をします。

ユーザー定義エフェクトについて

K-Shoot Mania におけるエフェクトには内部的にパラメータがいくつか存在していますが,それらのパラメータは本体付属のエディタ(以下,エディタ)からでは部分的にしか*1編集できません。これを編集するために,テキストエディタからフッター部分にパラメータを指定したユーザー定義エフェクトを追加する方法があります。詳しくは K-Shoot Mania の製作者である masaka 氏のブログ記事をご覧ください:
mtstdy.blog.fc2.com
エディタの編集画面はオンライン*2ではない,つまりユーザー定義エフェクトをテキストエディタから追加した瞬間にエディタでエフェクトを使うことができるようになるわけではないので,テキストエディタでエフェクトを追加した後は必ずエディタで読み込み直すようにしてください。更新したときに再読み込みができるように,テキストエディタには Windows 標準のメモ帳でなく Notepad++ などを使うのがおすすめです*3

使用音源について

本記事を書くにあたって,やどりぎ さんの『星の彼方』という楽曲を使用させて頂いています。 説明に使用するので(あとめっちゃ良い曲なので),聞いたことのない方はぜひここで楽曲を視聴してください🛰️

星の彼方は B4UT の 2018 年度の 五月祭パッケージ の収録曲です,やったことない人は是非遊びましょう!
作曲者本人による高音質音源も配布されていますので遊ぶ際はこれを使ってみてください🐈

ちなみに Effectors Challenge の 2 と 3 にも有志による差分譜面があります,こちらもぜひどうぞ🐈

rate parameter

まず Retrigger のパラメータの内,rate について説明します。この rate はデフォルトで 70% になっています*4
わかりやすさのためにまずデフォルトの 70% を流します:

みなさんが普段聞いているリトリだったと思います。では rate の値を変更するとどうなるでしょう?
次のようにユーザー定義エフェクトを指定して,rate35%, 70%, 85%, 100% の Retrigger を流してみましょう*5:

#define_fx 35 type=Retrigger;rate=35%
#define_fx 70 type=Retrigger;rate=70%
#define_fx 85 type=Retrigger;rate=85%
#define_fx 100 type=Retrigger;rate=100%

rate の値が上がっていくにつれてサンプルの繰り返しがだんだんシームレスになっていて,とくに rate=100% のときは完全に刻みのない繰り返しになっていることが分かります。35% のときの少し強い刻みや,85% のときの少し弱い刻みも面白いですね。使えるところはかなり多いので,rate=100%85% のものはぜひデフォルトで持っておきましょう(ちなみに僕は 70% のデフォルトの Retrigger をあんまり使っていません)。
ところで,rate のパーセンテージの値はサンプルに対する繰り返し部分の時間の割合を指しています。即ち, rate=0% のときは音が鳴らず,逆に 100% のときはシームレスな繰り返しになります。

updatePeriod parameter

Retrigger を長い区間にかけるとこのような挙動をします。つまり,Retrigger は 1/2 小節ごとにリピートする場所が変更(更新)されます。
短い Retrigger を置いた場合も同様に,1/2 小節 ごとの音を拾って刻みます:

ところで,この画像において,水色の線の部分の音を繰り返す場合にはどうすればいいでしょう?

今までの Retrigger は 1/2 小節ごとにリピートしていましたが,実はこの更新間隔は updatePeriod というパラメータで定義されていて,デフォルトの updatePeriod=1/2 から変更が可能です。
これを使うと次のように実現可能です:

#define_fx 1/2 type=Retrigger;updatePeriod=1/2
#define_fx 1/4 type=Retrigger;updatePeriod=1/4

updatePeriod には他にも 11/8 などを指定することもできます。

特に 11/4 のものを持っておくだけでも表現の幅を広げられるのでこちらもデフォルトで持っておくのがオススメです。rate=100%85% のものと合わせて持っておきましょう。
次のような 7 つのエフェクトを定義エフェクトとして持っておけば大抵は十分だと思います:

#define_fx 1f type=Retrigger;updatePeriod=1;rate=100%
#define_fx 1w type=Retrigger;updatePeriod=1;rate=85%
#define_fx 1/2f type=Retrigger;updatePeriod=1/2;rate=100%
#define_fx 1/2w type=Retrigger;updatePeriod=1/2;rate=85%
#define_fx 1/4f type=Retrigger;updatePeriod=1/4;rate=100%
#define_fx 1/4w type=Retrigger;updatePeriod=1/4;rate=85%
#define_fx 1/8w type=Retrigger;updatePeriod=1/8;rate=85%

f(=full) は rate=100%,w(=weak) は rate=85% を表しています。命名はこの記事のために適当につけたものなので,実際に使う際はお好みの名前でどうぞ。

まとめ

応用することでこんな感じのエフェクトをかけることができます。拡張した Retrigger の強さがよく分かります。(ちなみにこのエフェクトと譜面配置は記事を書いている途中に適当に書いたものなのであまり気にせずに見てください)

rateupdatePeriod に限らず,エフェクトのパラメータをいろいろ変えて試すことで,譜面全体に大きく多様性を生み出すことができるので,みなさんも是非試してみましょう!(⋈◍>◡<◍)。✧♡
それでは今回は以上です。ありがとうございました🛰️

執筆: Мороже auch bekannt als ███3█XJfY███████...

*1:たとえばエディタ上で FX の Retrigger の上で shift + 右クリックでサンプルを刻む間隔を編集することができますが,このパラメータには内部的に waveLength という名前がついています

*2:現在進行でデータの変化を捉えるという意味

*3:テキストエディタ宗教戦争を起こすつもりはないので,好きなものをお使いください(個人的には背景を黒くできてフォントの変更と自動インデントとEOL変換とシンタックスハイライトができるものであれば何でもいいと思います,逆にそれ以外はテキストエディタではないと思います)

*4:Gate の場合は 60% がデフォルトです

*5:FX-R→FX-Lのロングで同じユーザー定義エフェクトをかけると 2 つ目以降のエフェクトが鳴らなくなる不具合がありますが,全く同じ内容で名前の異なるユーザー定義エフェクトを 2 つ定義して交互に使うなどの方法で回避できます。また,この記事シリーズの③で紹介する臨時命令を用いてバグを回避することもできます(詳細