このセクションでは、エフェクト「リバーブとエコー」の組み合わせを見ていきます。それらをどのようにチェイン接続するか、どのように制御するのか、これらの使用方法について説明します。
Sonic Piのエフェクトシステムは、ブロックを使用します。セクション5.1を読んでいなければ、戻って目を通してください。
リバーブを使用する場合、次のように特殊なコードwith_fx :reverb
をブロックに書きます。
with_fx :reverb do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
早速コードを実行してリバーブを聞いてみましょう。いいでしょ! 音全体が残響効果で素晴らしくなります。
さあ、次はブロックの外にコードを書いて何が起こるか見てみましょう。
with_fx :reverb do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
sleep 1
play 55
どうして最後のplay 55
にリバーブが適用されないのでしょうか。それはブロックの外部に書かれているため、リバーブエフェクトは適応されないのです。
do/endブロックの手前で音を生成する場合も同様にリバーブは適用されません。
play 55
sleep 1
with_fx :reverb do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
sleep 1
play 55
選択できるエフェクトは他にもたくさんあります。エコーはどうでしょうか?
with_fx :echo do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
Sonic Piのエフェクトブロックの強力な側面の1つは、既にplay
とsample
で見てきたオプションと同様のオプションが渡されることです。たとえば、エコーの楽しいオプションは、拍単位で遅れの長さを示すphase
があります。下記のコードで、エコーの遅れをゆっくりにしてみましょう。
with_fx :echo, phase: 0.5 do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
エコーの遅れを早くしてみましょう。
with_fx :echo, phase: 0.125 do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
エコーが8拍の時間でフェードアウトする様に、decay:
を設定してみましょう。
with_fx :echo, phase: 0.5, decay: 8 do
play 50
sleep 0.5
sample :elec_plip
sleep 0.5
play 62
end
エフェクトブロックで最も強力な側面の1つは、入れ子ができるということです。これはとても簡単にエフェクト同士を連結することができます。たとえば、あるコードにエコーとリバーブを掛けたい場合どうしますか? その答えは単純です。1つのエフェクトの内側にもう一方を配置するだけです。
with_fx :reverb do
with_fx :echo, phase: 0.5, decay: 8 do
play 50
sleep 0.5
sample :elec_blup
sleep 0.5
play 62
end
end
オーディオの流れについて内側から外側へ追ってみましょう。play 50
を含むblock
のdo/endブロック内のコード全ては、最初にエコーエフェクトに送られ、その音がリバーブエフェクトへと順に送られていきます。
クレイジーなサウンドを得るために非常に深く入れ子を使用することができます。しかし、一度にたくさんのエフェクトを入れ子で実行すると多くのリソースを必要とするため、注意してください。そのため、特にRaspberry Piのような低電力供給のプラットフォームではエフェクトの使用を節約することも必要です。
Sonic Piは、あなたが演奏するためにたくさんのエフェクトを搭載しています。どういったエフェクトが使えるのかを見つけ出すためには、ヘルプシステム画面の下にあるエフェクト
ボタンをクリックし、利用可能なリストを見てください。ここに私のお気に入りを記載しておきます。
さあ、エフェクトを追加して驚きの新しいサウンドの虜となってください!