オーディオフィルター 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 までの乗数で、混合される入力の量を制御します。