【ℹ️ この記事は K-Shoot Mania 譜面制作チーム TapeStop100 のアドベントカレンダー企画,TapeStop100 Advent Calendar 2021 の 5 日目の記事です。】
おはようございます,K-Shoot Mania パッケージ制作チーム(?) TapeStop100 の Мороже(まろーじぇ)です🛰️*1
この記事は 2 年前の記事の続編となっています。続編といいつつも,前回の記事の内容を理解していることを前提とする応用編になっています。定義エフェクト(ユーザー定義エフェクト)によってどういう可能性が広がるのかを知りたいだけの場合はこのまま読み進めてもらって大丈夫ですが,実際にエフェクトをかけるためには定義エフェクトに関する基礎知識が要求されるので,まだの方は前編をぜひ先にご覧ください。
さて,今回は付点 8 分*2に関するリトリの Tipps を,
- 付点 8 分をハネたリズムに
- 夢の付点 8 分リトリを実現!
目次
前置き
譜面を作っているときに,曲中でこういう付点 8 分 + 8 分のリズム*4に遭遇してエフェクトをどうするか悩んだことはありませんか?
具体的には,こういうリズムに遭遇したときに,標準のリトリの仕様に縛られて,こんな感じのリトリ置きがち*5じゃないですか?
(ちなみに曲線つまみは先日公開したK-Shoot Mania 曲線つまみ自動生成ツールを使用しています(ダイマ*6)
これはこれで良いのですが,付点 8 分の音をもっと有効活用したいと思いませんか?例えばメロディーの始まりを「テッテ・テン・テン」から「テッテ・テッテ・テン」とかにしてみたら面白そうじゃないですか?もっと言うとディスコンっぽくしたくないですか?
というわけでここからは,定義エフェクトの機能をフル活用した,別の可能性を提案してみます。
(追記) 大したものは入っていませんがなにかの参考になるかもしれないので,今回の動画撮影に用いた音源と譜面ファイル×3を配布しておきます。手元で動かしてみたいという方はぜひ使ってください🛰️*7
その① | 付点 8 分をハネたリズムに(簡単お手軽)
前回のエフェ講座②で覚えたばかりの,任意位置に updateTrigger=on
を置くテクニックを使ってみましょう*8。拍の頭から付点 8 分ぶん後ろ*9のところに fx:*w:updateTrigger=on
を置いてみます。
ただし,*w
は以下のような定義エフェクトとします:
#define_fx *w type=Retrigger;updatePeriod=0;rate=88%
実際にどうなるか聞いてみましょう。
ハネた音がキマっていますね!このエフェクトのかけ方は付点 8 分に対する汎用性がとても高く,しかも定義エフェクト 1 行と直接編集 1 回で済み,簡単に作成できます。みなさんも是非覚えて今日から積極的に使ってみましょう。
ただし 1 つだけ欠点があって,4 つ打ち主体の曲でこのようなエフェクトをかけると,4 つ打ちのバスドラの 2 拍目が鳴らないせいで音に違和感が生じてグルーヴ感を損なってしまうことがあるので,その点は要注意です。
なおこのようなエフェクトのかけ方は某ゲームにも普通に登場しています。ぱっと思いつくところでは,び[EXH](クリックで動画が開きます)の白でいうクソ長縦連地帯のフレーズ中に,付点 8 分のリズムを活かすためにこのタイプのエフェクトが入っています。
その② | 夢の付点 8 分リトリを実現(ちょっと難しい)
KSM で譜面を制作している皆さん,「付点 8 分でリトリをかけたい!」と思ったことはありませんか?僕もありましたし,皆さんもきっとあると思います。でも Editor にはそんな機能ついてないからできないし……と諦めている皆さんへ朗報です。なんと K-Shoot Editor で付点 8 分リトリはユーザー定義エフェクトを駆使することで実現可能です。
ただしちょっと説明が長くなるので,先に完成品の動画をご覧ください。(1 個目が付点 4 分,2 個目が付点 8 分です)
……なんかライム色の文字の書き込みが一箇所大変なことになっていますが,まぁよくあることなので気にせずに*10。
臨時命令について
さらっと前回の講座からずっと fx:free:updateTrigger=on
とか fx:*w:updateTrigger=on
という謎の呪文を唱えていますが,これは臨時命令と呼ばれる(というか僕たちが勝手に呼んでいる)表現です。臨時命令は,以下のフォーマットで書かれます*11:
fx:(定義エフェクトの名前):(パラメータ)=(値)
これを ksh ファイル上に書き込むことによって,「この行が再生される楽曲中の位置において,この定義エフェクトのこのパラメータをこの値に変更せよ」という命令が実行されます。なので今まで挿入していた fx:free:updateTrigger=on
というのは,「定義エフェクト free
の updateTrigger
パラメータをこの場で変更せよ」という命令だったわけです。ちなみに #define_filter
で定義したつまみエフェクトの場合は
filter:(定義エフェクトの名前):(パラメータ)=(値)
と書くことで同様にパラメータが変更可能です。
変更するパラメータはもちろん updateTrigger
以外でもかまいません。たとえば定義エフェクトで FL
という名前の Flanger エフェクトを定義しておいて,曲の途中で FL
の stereoWidth
パラメータを変える臨時命令を挟めば,そこ以降 FL
で鳴る音が変化するようになります。「ユーザー定義エフェクトの数をあんまり増やしたくないけど,ここだけは updatePeriod
を変えておきたいなぁ……」みたいな時にも便利です。
ところで SideChain
を除く全種類のエフェクト (Retrigger
, Gate
, Flanger
, Pitchshift
, BitCrusher
, Phaser
, Wobble
, Tapestop
, Echo
, SwitchAudio
) に共通するパラメータとして mix
があります。
mix
は FX ロングが押されている間ずっと,音源とエフェクトをどれくらい混ぜるかを指定するためのパラメータで, 例えば Retrigger
を設定した FX ロングを押したときはデフォルトで mix=100%
に変更される設定になっています*12。
ここで,ちょっとややこしいのですが,「FX ロングが押されている間ずっと」というのは「その(Editor 上で右クリックして選んだ)エフェクトが設定された FX ロングが押されている間ずっと」ではないことに注意してください。例えば下の画像のように指定すると,この FX-R ロングを押している間はずっと定義エフェクト FL
が鳴ります。
しかしエフェクトを鳴らしたいだけならわざわざこんなことせず,普通にエディタで FX ロングを置いて右クリックでエフェクトを指定すればいいように思えますが,この手法は,Editor でのエフェクト指定方式に縛られないというのが嬉しいポイントです。具体的には,以下に述べる 2 つの利点があります:
① エフェクトが 1 本の FX(orつまみ) で 2 つ以上同時にかけられる
たとえば先程の画像で何も指定していなかった FX ロングに BitCrusher
を指定しておくと BitCrusher
と Flanger
が同時に鳴ります。単純に臨時命令を 3 行くらい重ねて書いても期待通りの動作をします。以下は実在する例です*13:
filter:TS60:mix=0%<100%
filter:RP16:mix=90%
filter:PS:mix=80%
複数個重ねるときは順番に地味に注意が必要で*14,(当たり前ではあるんですが)書いた順番でエフェクトが重なります。たとえば Gate
でガタガタさせた音に Wobble
を上からふんわり重ねたいときは Gate
→ Wobble
の順番で書く必要があります。ここでもし Wobble
→ Gate
としてしまうとふんわりした音をガタガタさせた音になり,まるっきり意図と異なる結果になってしまいます。
エフェクトの同時使用は FX ロングだと少しレアですが,つまみの場合は標準の PEAK, HPF, LPF, BITC に Re16 や Ga16 などを混ぜてかけておく例が某ゲームで非常に多く見られます。KSM の譜面だと Re16 をかけるときに音を mix
していないものが多く見られますが,間違いなく混ぜたほうが良く聞こえるのでつまみにリトリなどをかけるときは臨時命令で指定しましょう*15。mix
の値はお好みですが,とりあえず mix=80%
らへんにしておけば無難?個人的には 50%
くらいで rate=60%
くらいの尖った Gate
をかけたりするのも好みです。
なお,KSM の譜面では FX ロングを 2 本置いてそれぞれで異なるエフェクトを設定しエフェクトを混ぜる手法がよく見られますが,実は某ゲームの同時押し FX ロングは 2 本のロングのうち後から押したほうに設定されているエフェクトが独立に鳴る仕様となっています。*17
② 定義した waveLength パラメータ*18をそのまま使える
① の説明が長くなりましたがこっちが今回の本質です。Editor 上で Retrigger
や Gate
の刻み(waveLength
)は 1〜192 の整数に限定されますが,この方法を使えばファイル末尾で定義した waveLength
の通りに鳴らすことができます。残念ながら waveLength
パラメータには使用上直接 3/16 のような数値を指定することはできませんが,ms による長さの指定が可能で,これによって(微小なズレは発生するものの)夢の付点 8 分エフェクトを鳴らすことができるのです*19。
実際に付点 8 分リトリをかけてみる
まず,エフェクトをかけたい曲における付点 8 分の長さを計測します。
といっても非常に簡単で,K-Shoot Editior には「カーソル位置の時間を表示」*20というこのためだけに用意されたかのような便利機能がなぜか備わっています。ドロップダウンメニューから「編集(E)」→「カーソル位置の時間を表示(V)」を選択するだけです。
付点 8 分ぶんの区間の始端と終端の時刻がわかったので,差を取れば区間の長さが求まります*21。
区間の長さが求まったのでエフェクトを定義しましょう。今回はついでに全く同じ原理で可能な付点 4 分*22リトリも試してみます。
#define_fx 3/8f type=Retrigger;updatePeriod=0;rate=100%;waveLength=563ms
#define_fx 3/16w type=Retrigger;updatePeriod=0;rate=90%;waveLength=282ms
定義すればあとはリトリで引っ張ってきたいサンプルの始端に fx:(エフェクト名):updateTrigger=on
を置き,FX ロングを fx:(エフェクト名):mix=100%
と fx:(エフェクト名):mix=0%
で囲めば完了です。なお,このとき 1 箇所に 2 行の臨時命令を置く必要が出てくる場合*23がありますが,現状 Editor 上では 2 行以上の臨時命令の入力になんと対応していないので,素直に適当なコメントを Editor から記入して足跡にして,テキストエディタから手書きしましょう*24。
あとがきっぽいやつ
これまでの講座含め,この記事の内容は僕の周りの TP100 メンバーの人たちにとってはだいたい既知の情報です*25。というのも,ここ数年 TP100 以外の人々とも交流をしてきた中で気づいたのですが,TP100 外だとそもそもエフェクトをちゃんと考えて置く人ってまだまだ少なくて,なんなら初期デッキのエフェクトのみでやりくりしている人もたくさんいることを知り,それで譜面制作技術を広める記事が必要だなと思ったわけです。KSM にはこの手の技術を広めるためのフォーラムとかもなく,詳しい人同士で集まって情報が循環しているだけという状態に見えるので,こういう啓蒙活動によってさまざまな人に情報が行き届いてくれれば嬉しいです。
この記事を読んでいる方を含め,KSM で活躍しているエフェクターの方々は多かれ少なかれ某ゲームへの憧れがあるはずです。これまでの講座で紹介してきた内容は幾分ハイレベルなテクニックにも見えますが,某ゲームのエフェクトは,III 後期 ~ IV の頃からとっくに KSM の初期デッキのエフェクトでは簡単に再現できないほど多様化しています。例えば,つまみで LPF をかけつつ Re48 を同時にかけたり,ダブルレーザーへの移行/着地をゆるくするためにつまみに TapeStop
をかけたり,ナチュラルに updatePeriod=1/4
のリトリを使ってみたり,付点 4 分の rate=100%
のリトリで曲をぶっ壊したり,つまみに Wobble
をかけることで本来動いても音が鳴らない状況でもそれっぽい音を出したり……。某ゲームのノリを目指すのなら,初期デッキに縛られず,好きなエフェクターを観察してみて,様々なエフェクトを試してみるのが良いでしょう。
もちろん譜面の要素はエフェクトだけじゃないですが,極めてみて損はないはずです。これを読んでいるあなたもエフェクト沼に……沈んでみませんか?*26
おわりに
たくさん書いてたら終わり方が本当にわからなくなったのでここで無理やり終わらせます。7000 文字近くある長文記事をここまで読んでくれてありがとうございました🛰️*27
人々が空気を読めば*28昨年と同じく,今年も TP100 メンバーたちによる音ゲーに関する記事の集まった良質な Adventskalender になると思います。残りの 20 記事もぜひお楽しみください!🛰️*29
まえ: 【最悪】人の声で遊んでみよう!【Serum波形取り込みチュートリアル】 - きてるぐまの日記
つぎ: 【TRPG】今更!Discord1つでサクッとオンセのススメ【初心者へ】|木枯らし 楓|note
*1:これはポップンのパラボーというキャラを表す絵文字です(パラボーかわいくない?)
*2:16 分 3 つぶんの長さ
*3:3 記事分くらいの内容を無理やり圧縮しました
*4:いい感じの説明用の K-Shoot Mania 楽曲が思いつかなかったので,短いメロディーを自分で作ることになりました。5 分くらいで作った謎ファイルなのでもちろん曲名とかもありません
*5:58577
*7:これはポップンのパラボーというキャラを表す絵文字です(パラボーかわいくない?)
*8:言うまでもありませんが,「アップデートトリガー」はゴママヨです。もはやゴママヨのことを知らない人は誰もいないと思いますが,もし情報が必要であればこのアドカレの2日目の記事をご参照ください
*9:言うまでもありませんが,「付点 8 分ぶん」もゴママヨです
*10:レーザーでリトリかけまくったりしてるとわりとすぐ画面一面黄緑色になったりするから困る
*12:正確には,記号 > を用いて (FX ロングオブジェクトの判定が入っていないときのパラメータ)>(FX ロングオブジェクトの判定が入っているときのパラメータ)という記法があって,mix=0%>100% と書かれています。詳しくは公式ブログ読んでください
*13:エフェクト名は変えてあります
*14:57575
*15:この記事で一番言いたかった内容かもしれない
*16:僕と楓さんでつまみ譜面を作りました,ぜひ遊んでくれ
*17:もっとも,某ゲームと KSM は特に関係がないので,どうでもいいっちゃどうでもいい話ではあります。僕も正直あまり気にしてません
*18:575
*19:3/16 = 0.1875 を指定すればいいのでは?と推察する人もいるかもしれませんが,この辺の挙動めちゃくちゃ謎で,3/16 = 0.1875 は適用できるのに 3/8 = 0.375 が適用できなかったり,そもそも謎に音がズレてたりします。とりあえず少なくとも現在は ms 指定が有用かなぁ
*20:下の句
*21:575
*22:8 分 3 つぶん
*23:57577
*24:2 行以上の臨時命令を書き込む頻度は割と高くて,たとえば先述の「エフェクトを 2 つ以上同時にかける」場合も使ったりするので,なんとか Editor から編集できるようにしてほしい……
*25:既知じゃなかったらごめんね
*26:訳註: 沈め
*27:これはポップンのパラボーというキャラを表す絵文字です(パラボーかわいくない?)
*28:(?)
*29:これはポップンのパラボーというキャラを表す絵文字です(ところで僕が好きそうな目にハイライトのないタイプのメカマスコットを見つけたらぜひ教えてください)