ミョンミョンした音を作る

そういえば、すでに書いてたわー。
けど、もう少しシンプルなスクリプトを書いてみようと思う。

use v5.14;
use strict;
use warnings;

use Cassis;
use constant SAMPLING_RATE => 44100;

my $dco = Cassis::DCO::Saw->new( fs => SAMPLING_RATE, pitch => 3.0 );
my $filter = Cassis::Iir2::LPF->new( cutoff => 0.08, q => 6.0 );
my $eg = Cassis::EG->new(
    fs      => SAMPLING_RATE,
    adsr    => [ 0.03, 0.1, 0.9, 1.2 ],
    curve   => 0.5
);
my $amp = Cassis::Amp->new( volume => 0.8 );

my $eg_out = $eg->one_shot( gatetime => 0.05 );
my $filter_out = $filter->exec(
    src => $dco->exec( num => scalar(@{$eg_out}) ),
    mod_cutoff => {
        src => $eg_out,
        depth => 0.5
    }
);
my $amp_out = $amp->exec(
    src => $filter_out,
    mod_volume => {
        src => $eg_out,
        depth => 1.0
    }
);

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

ポイントとしては、
エンベロープの出力をカットオフだけじゃなく、音量にも適用してるところ。
そうしないと、qが大きいので音が割れてしまう。
面倒でなければ、volumecutoffで別々のエンベロープを適用すると、
もっと面白い音になるはず。

という訳で、今日はここまで。

おしまい。

Leave a Comment