見出し画像

レーザーにTapeStopを適用する【TapeStop100 Advent Calender 9日目】

この記事は TapeStop100 の Advent Calender 9日目の記事です。

TapeStop100 (TP100) についてはこちらの記事から

みゃん

1.本題

2019年12月現在で2年近く前になるんですが、K-Shoot Mania の譜面を作る時に作成したユーザー定義エフェクトがあるんですよね。
それはレーザーに TapeStep を適用するというものなのですが、調べてみたところ同じようなことを書いている方がいないようなので、今回執筆させて頂きます。

2.レーザーにTapeStopを適用した...が、しかし

それでは早速作って行きましょう。
まずは ksh ファイルをテキストエディタで開きます。
そして、一番最後の行にこのコードを追加します。

#define_filter TSLZ type=TapeStop;speed=0%>50%

次にエディタ上で、レーザーをこのように配置してみます。

画像1

ツマミを回す度に「ミュン⤵ ミュン⤵ ミュン⤵」といった感じで TapeStop50 がかかるのを想定しています。
再生速度をツマミでギュインって調整している感じが、なかなか良くないですか?

てなわけで、期待に胸を膨らませながら、いざ再生してみると、


「ミュン⤵......」


かなしいね。

個人的にはこのエフェクトをかけるのは諦めきれないので、何か対応手がないかの試行錯誤が始まるのです。

3.レーザーとレーザーの間に間を開けてみる

K-Shoot Mania の仕様を完全に理解しているわけではありませんが、レーザーの色が変わっても前のレーザーとの隙間が無いと、前のエフェクトがかかった状態をそのまま引き継ぐようです。
ならば、レーザーの間に少しでも隙間があれば、ちゃんとエフェクトがかかるのではないか。

画像2

ただこれ、環境にもよると思いますが動作が安定しないんですよね。
たまに無音になったり、かと思えばちゃんと鳴ってくれたり。
そういう時には隙間の間隔を広くすれば安定するとは思うんですが、個人的にはあんまりやりたくないんですよね。

そもそもの話、少しでも隙間を開けるのはやりたくないんですよね。
そういうわけで、隙間を開けずにどうにかできないかを考えてみます。

4.ロングFXの仕様を思い出してみる

そういえば、ロングFXに関してもこれと似たような状態になる時があります。
その例がこの画像のような場合です。

画像3

この場合、1つ目のFXロングではちゃんとエフェクトがかかりますが、その後ろにあるFXロングの部分では無音になってしまいます。
同じエフェクトが続いて隙間がない場合は、一つのFXロングとして判断されるんですかね。

では、TapeStopを連続でかけることはできないのかというと、そうではありません。
この場合は、上のFXロングを入れ替えると、TapeStopを連続でかけることができます。

画像4

こうすることで、無音の状態でなんも鳴らへん問題を解決することができます。
ということはですよ、レーザーエフェクトもこれと同じようにすれば、無音の状態でなんも鳴らへん問題を解決できるのではないでしょうか。

5.レーザーエフェクトでもやってみる

では、レーザーエフェクトでどのようにするのかというと、まずは ksh ファイルをテキストエディタで開いて、ユーザー定義エフェクトをこのようにします。

#define_filter TSLZ type=TapeStop;speed=0%>50%
#define_filter TSLZ2 type=TapeStop;speed=0%>50%

全く同じ働きをするエフェクトを、別の名前で定義します。
そして、先程のFXロングのようにするというのが、どういうことなのかというと、

画像5

このように、レーザーの色が変わる度に、エフェクトの種類も変えます (エフェクトの働き自体は全く同じ)。
この状態で再生すると...?


「ミュン⤵ ミュン⤵ ミュン⤵」


やったー!

無事に実現したいことができるようになりました!

おしまい

2019年12月現在、TP100 では K-Shoot Mania のパッケージ「#KSM_TP300」(仮題) を制作しております。
そのパッケージにて譜面を作成させてもらえることになったのですが、その譜面でこのレーザーエフェクトが使えそう...かな?

ちなみに、#KSM_TP300 では現在、楽曲とジャケット画像の担当者を募集していますので、興味のある方は応募してみてはいかがでしょうか。

それでは、TP100 Advent Calender 9日目の記事は、これにて終わりとします。
次の記事執筆はあるのかな?
もしあればまたその時に、無ければまたどこかでお会いしましょう。
ここまで見てくださりありがとうございました。

以下追記

2019/12/11 追記

この記事のエフェクト定義について、masakaさんから直々にご指摘を頂いたので、追記致します。

レーザーにかけるエフェクトを定義している部分ですが、TapeStopはデフォルトで「trigger=off>on」が指定されているため、「speed=0%>50%」は少し余分な記述でして、「speed=50%」と指定するだけで十分でした。

また、TapeStop の speed の値はデフォルトで 50% に設定されており、今回定義したエフェクトの speed の値はデフォルト値と同じため、speed の値を指定する記述自体が冗長なものでした。

よって、TSLZ の定義は以下の記述で十分でした。

#define_filter TSLZ type=TapeStop

これは、TSLZ2 においても同様です。

リンクとか

書いた人 : 空色髪ノ猫 (ついった→@CYANHAIR_NEKO)

Team TapeStop100 ついった→@TapeStop100

TapeStop100 Advent Calender に戻る


この記事が気に入ったらサポートをしてみませんか?