パワーを貯める時の音を作る(1)
今、作ってるゲームのドックフーディングがてら、
実践編ということで、パワーを貯める時の音を作ってみます。
use v5.14; use strict; use warnings; use Cassis; use constant SAMPLING_RATE => 44100; my $osc = Cassis::Osc::Tri->new( fs => SAMPLING_RATE, freq => 120 ); my $filter = Cassis::Iir2::LPF->new( cutoff => 0.2, q => 1.0 ); my $eg1 = Cassis::EG->new( fs => SAMPLING_RATE, adsr => [ 0.8, 0.0, 1.0, 0.01 ], curve => 1.3 ); my $eg2 = Cassis::EG->new( fs => SAMPLING_RATE, adsr => [ 1.0, 0.0, 1.0, 0.01 ], curve => 1.0 ); foreach my $freq ( 120, 140, 160 ) { $osc->set_freq( $freq ); my $eg_out1 = $eg1->one_shot( gatetime => 0.8 ); $eg2->trigger( gatetime => 0.8 ); my $eg_out2 = $eg2->exec( num => scalar(@{$eg_out1}) ); my $osc_out = $osc->exec( num => scalar(@{$eg_out1}), mod_freq => { src => $eg_out2, depth => 0.8 } ); my $amp = Cassis::Amp->new(); my $amp_out = $amp->exec( src => $filter->exec( src => $osc_out, mod_cutoff => { src => $eg_out2, depth => 0.2 } ), mod_volume => { src => $eg_out1, depth => 1.0 } ); Cassis::File::write( file => sprintf( 'boooooon_%d.wav', $freq ), fs => SAMPLING_RATE, channels => [ $amp_out ] ); }
音量と音程に変化を付ければなんとかなると思ったら、
案の定、だいたいうまくいきました。
でも、せっかくフィルターもあるので、
少しずつフィルターを開いてみました。
Cassisを使うメリットは、
こんな感じで簡単にバリエーションを増やせて、
しかも、カットする必要がないところですね。
他にも作り方はあると思いますが、今日のところはこんな感じで。
おしまい。
Leave a Comment