ノイズをモジュレーションしてみる

あー、ちょっと遅れちゃった。
なので、今日は2つ書く予定です。

use v5.14;
use strict;
use warnings;

use Cassis;
use constant SAMPLING_RATE => 44100;

{
    my $eg = Cassis::EG->new(
        fs => SAMPLING_RATE, # sampling-rate
        adsr => [
            0.01,   # Attack : time(sec)
            0.0,    # Decay  : time(sec)
            1.0,    # Sustain: gain
            3.0     # Release: time(sec)
        ],
        curve => 0.05 # default: 1.0 / exp(1.0)
    );

    my $eg_out = $eg->one_shot( gatetime => 0.01 );
    my $noise = Cassis::Noise->new( speed => 0.5 );
    my $wav = $noise->exec(
        num => scalar(@{$eg_out}),
        mod_speed => {
            src => $eg_out,
            depth => 1.0
        }
    );

    Cassis::File::write(
        file => 'jet_sound1.wav',
        fs => SAMPLING_RATE, channels => [ $wav ] );
}

{
    my $eg = Cassis::EG->new(
        fs => SAMPLING_RATE, # sampling-rate
        adsr => [
            3.0,    # Attack : time(sec)
            0.0,    # Decay  : time(sec)
            1.0,    # Sustain: gain
            0.0     # Release: time(sec)
        ],
        curve => 3.0 # default: 1.0 / exp(1.0)
    );

    my $eg_out = $eg->one_shot( gatetime => 3.0 );
    my $noise = Cassis::Noise->new( speed => 0.7 );
    my $wav = $noise->exec(
        num => scalar(@{$eg_out}),
        mod_speed => {
            src => $eg_out,
            depth => 0.98
        }
    );

    Cassis::File::write(
        file => 'jet_sound2.wav',
        fs => SAMPLING_RATE, channels => [ $wav ] );
}

mod_pitchをエンベロープで変化させると、
こんな感じでジェットサウンドを作る事ができます。

少しだけ、ゲームの効果音っぽいですね!

おしまい。

Leave a Comment