オーディオフィルター link
オーディオフィルタによりオーディオファイルのサウンドとはチャンネルのサウンドを変更できます。リバーブ、ディレイ/エコー、ハイパス/ローパスフィルタを含むエフェクトなどをサウンドに加えられます。
オーディオフィルターは renpy.audio.filter モジュールにあります。厳密には必須ではありませんが、 af
のような短いエイリアスをモジュールに付けるようお勧めします
define af = renpy.audio.filter
renpy.music.set_audio_filter()
関数を使って、次のようにフィルタを呼び出せます。
$ renpy.music.set_audio_filter("music", af.Reverb(0.5))
デフォルトでは、フィルターはキューに入れられた、あるいは再生された次のオーディオファイルの開始時に有効になります。現在再生中またはキューに入っているオーディオにフィルタを適用したい場合は、 replace 引数を使います
$ renpy.music.set_audio_filter("music", af.Lowpass(440), replace=True)
これは、できるだけ早くオーディオにフィルタを適用します。
最後に、フィルターに None を渡せば、チャンネルからフィルタを削除できます
$ renpy.music.set_audio_filter("music", None)
(replace を True にして None を渡すことも出来ます)
フィルターの再使用 link
チャンネルにフィルターを設定すると、そのチャンネルで再生されるすべてのオーディオにフィルタが適用されます。具体的には、コムフィルター、ディレイフィルター、リバーブフィルターがフィルターが変更されない限り、新しいオーディオファイルの再生が開始された後も、しばらくの間、古いオーディオファイルから情報を出力し続けます。
これは Ren'Py がオーディオ情報を filter オブジェクト内に格納しているためです。一般に、チャネル間でフィルター オブジェクトを共有したり、1 つのチャネルにあるフィルター オブジェクトを複数回使用したりすることはお勧めできません。
無音パディング link
オーディオフィルターがアクティブで、チャンネルの最後にキューに入れられたサウンドが再生を終了すると、Ren'Py はチャンネルに 2 秒間の無音を追加し、ディレイフィルターとリバーブフィルターが再生を終了する時間を確保します。
さらに無音が必要な場合は、次のようにキューに入れられます。
queue sound "<silence 10">
オーディオフィルター link
フィルターが受け取られるところでは、代わりにリストでも指定できます。これはそれらのフィルターの組み合わせである renpy.audio.filter.Sequence
を表します。つまり
renpy.music.set_audio_filter("music", [af.Reverb(0.5), af.Lowpass(440)])
これは次と等しいです
renpy.music.set_audio_filter("music",
af.Sequence([
af.Reverb(0.5),
af.Lowpass(440),
]))
それとは別に、オーディオフィルターは次のクラスで構成されています。パフォーマンス上の理由から、ユーザーが独自に定義はできません。
- renpy.audio.filter.Allpass(frequency=350, q=1.0) link
オールパスフィルターはすべての周波数を通過させますが、さまざまな周波数間の位相関係を変更します。
- frequency
位相変化の中心にある周波数です。
- q
位相シフトのシャープネスをコントロールします。値が大きいほど、位相シフトが急になります。
- renpy.audio.filter.Bandpass(frequency=350, q=1.0) link
バンドパスフィルター
- frequency
中心周波数。
- q
バンドの幅をコントロールします。Qの値が大きくなると、幅は狭くなります。
- class renpy.audio.filter.Comb(delay, filter=None, multiplier=1.0, wet=True) link
コムフィルター。コムフィルターは、フィルタ処理され、係数が掛けられた遅延と入力との混合で構成されており、さらに遅延にフィードバックされ、フィルターが複数回適用されます。
- delay
遅延 (秒単位)。遅延のリストが指定されると、各サブチャネルは対応する量だけ遅延します。各遅延は 0.01 秒以上でなければなりません。
- filter
遅延信号に適用するフィルター。None なら、Null フィルタが使用されます。
- multiplier
フィルター処理された信号に乗算する量。
- wet
True ならフィルターの出力は、入力とフィルター処理および乗算された信号の合計になります。 False なら出力は単にフィルター処理と乗算された信号のみになります。
- class renpy.audio.filter.Delay(delay) link
このフィルターは遅延を実装します。入力に提供されるサンプルは、 delay 秒後に出力から出力されます。
- delay
遅延 (秒単位)。遅延のリストが指定されると、各サブチャネルは対応する量だけ遅延します。各遅延は 0.01 秒以上でなければなりません。
- renpy.audio.filter.Highpass(frequency=350, q=1.0) link
12/dB オクターブロールオフのハイパスフィルターです。
- frequency
カットオフ周波数。
- q
応答のピークの度合いをデシベル単位で制御します。このフィルタタイプの場合、この値は従来のQではなく、デシベル単位の共振値です。
- renpy.audio.filter.Highshelf(frequency=350, gain=0) link
すべての周波数を通過させるが、特定の周波数を超える周波数を一定量ブーストするハイシェルフフィルターです。
- frequency
低い周波数。
- gain
低い周波数よりも高い周波数をブーストする量(デシベル単位)。
- renpy.audio.filter.Lowpass(frequency=350, q=1.0) link
12/dBオクターブロールオフのローパスフィルター。
- frequency
カットオフ周波数。
- q
応答のピークの度合いをデシベル単位で制御します。このフィルタタイプの場合、この値は従来のQではなく、デシベル単位の共振値です。
- renpy.audio.filter.Lowshelf(frequency=350, gain=0) link
すべての周波数を通すが、特定の周波数を下回る周波数を一定量ブーストするローシェルフフィルター。
- frequency
上限周波数。
- gain
上限周波数より低い周波数をブーストする量(デシベル単位)。
- class renpy.audio.filter.Mix(*filters) link
入力を複数のストリームに分割し、各引数をストリームに適用し、それらのストリームを合計してミックスするオーディオ フィルター。
例
init python: import renpy.audio.filter as af # This mixes the the unchanged input with a delay. $ echo = af.Mix(af.Null(), af.Delay(.3))
- class renpy.audio.filter.Multiply(multiplier) link
入力に multiplier を掛けるオーディオフィルター。
- renpy.audio.filter.Notch(frequency=350, q=1.0) link
バンドパスフィルターの反対です。 frequency を囲む範囲内の周波数はカットされ、他の周波数は通過します。
- frequency
中心周波数。
- q
ノッチの幅をコントロールします。 q の値が大きくなるにつれて、幅は狭くなります。
- class renpy.audio.filter.Null link
入力を変更せずに出力に渡すオーディオ フィルターです。
- renpy.audio.filter.Peaking(frequency=350, q=1.0, gain=0) link
すべての周波数を通すが、特定の周波数の周りの周波数を一定量ブーストするピーキングフィルター。
- frequency
中心周波数。
- q
ピークのシャープネスをコントロールします。値が大きいほど、ピークがシャープになります。
- gain
中心周波数付近の周波数をブーストする量(デシベル単位)。
- renpy.audio.filter.Reverb(resonance=.5, dampening=880, wet=1.0, dry=1.0, delay_multiplier=1.0, delay_times=[0.0253, 0.0269, 0.029, 0.0307, 0.0322, 0.0338, 0.0353, 0.0367], delay_subchannel=0.001, allpass_frequences=[225, 556, 441, 341]) link
部屋やホールの音をシミュレートする人工リバーブフィルターで、 Freeverb にいくらかインスパイアされています。
- resonance
リバーブのフィードバックの量です。これは 0 から 1 の間でなければなりません。数値が大きいほど、リバーブが長持ちします。値が大きすぎると、リバーブが制御不能になります。
- dampening
これにより、各残響にローパスフィルターが適用され、音が空気中を通過するときに高周波数が失われるのをシミュレートします。
- wet
リバーブ信号が出力に渡される前に適用される乗数。
- dry
入力信号が出力に渡される前に入力信号に適用される乗数。これを 0.0 に設定すると、リバーブだけが聞こえ、元のサウンドは聞こえません。
- delay_multiplier
遅延時間に適用される乗数。リバーブの長さを調整するために使用できます。
- delay_times
初期反射の作成に使用される遅延時間のリスト (秒単位)です。これらはコムフィルターを作成するために使用されます。
- delay_subchannel
2 番目のサブチャネルを作成するために各遅延時間に追加される時間 (秒単位)です。これは、ステレオ効果を作成するために使用されます。
- allpass_frequences
後期反射をシミュレートするオールパスフィルターの作成に使用される周波数のリスト(ヘルツ単位)。
- class renpy.audio.filter.Sequence(*filters) link
入力を一連のフィルターに順番に適用する AudioFilter。これはオーディオフィルターのリストが与えられたときに内部的に使用されるため、これを直接使用することはめったにありません。
- class renpy.audio.filter.WetDry(filter, wet=1.0, dry=1.0) link
入力とフィルターの出力を混合するフィルター。
- filter
入力に適用するフィルター。
- wet
通常は 0.0 から 1.0 までの乗数で、混合するフィルターの量を制御します。
- dry
通常は 0.0 から 1.0 までの乗数で、混合される入力の量を制御します。