パワーを貯める時の音を作る(1)
今、作ってるゲームのドックフーディングがてら、
実践編ということで、パワーを貯める時の音を作ってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 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