エンベロープでのデュレーション

前半のセクションでは、音を演奏したい時にどのようにsleepコマンドを 使用するかを見てきました。ですが、わたしたちはまだ音のデュレーション(長さ)について 制御できていませんね。

音のデュレーションを制御するための、パワフルでシンプルな手段として、 Sonic PiにはADSR amplitude envelope(ADSR・アンプ・エンベロープ)という 概念があります(ADSRが何を意味するかはこのセクションの後半で紹介します)。 アンプ・エンベロープは制御のための便利な2つの側面を持っています。

デュレーション

デュレーションは音の持続する長さのことです。長いデュレーションは、より長く音が 鳴ることを意味します。Sonic Piの全てのサウンドは、アンプ・エンベロープで制御でき、 ひとつのエンベロープ(音量や音色の時間的な変化)の長さは、音の長さでもあります。

アンプ(音量)

ADSRエンベロープは、デュレーションの制御だけでなく、アンプ(音量)の緻密な 制御も可能にします。全てのサウンドは、サイレント(無音)で始まり、間に音があり、 またサイレントで終了します。エンベロープを使用すると、サウンドの音がある部分の音量を スライドさせたり、保持したりすることができます。これは、音楽の音量を上げたり下げたり するのを、誰かに指示するような感じです。例えば、あなたは誰かに「無音で始めて、 ゆっくりとフル・ボリュームにして、少しそのままで、そして一気に無音に戻る。」と頼むとします。 Sonic Piはエンベロープでこれをプログラムできるようにしてくれます。

前のセクションで見てきたように、アンプの0は無音、1は通常の音量です。

リリース・タイム(終わるまでの時間)

通常、全てのシンセのリリース・タイム(終わるまでの時間)は1です。 これは、終了するまでに1秒間のデュレーションを持っているということです。 playに対してrelease:という命令を渡すことで、デュレーションを 変更することができます。例えば、2 秒間シンセを再生するには、release:2に設定します。

play 60, release: 2

非常に小さなリリース・タイムの値を使って、シンセのサウンドをとても短くすることができます。

play 60, release: 0.2

だから、リリース・タイムって一体なんなのでしょうか?それはサウンドが、フル・アンプ(だいたい1の値)から ゼロ・アンプ(無音)になるまでにかかる時間のことです。これはリリース・フェーズと呼ばれていて、 リニア・トランジション(直線的な移行、つまり真っ直ぐ)です。以下の図は、この移行を表したものです。

release envelope

図の左端の縦の線は、サウンドが0の音量(ゼロ・アンプ)からスタートしていることを示しています。 しかし、すぐにフル・アンプに上がります(これは私たちが後で学ぶ、アタック・フェーズというものです)。 いったんフル・アンプになり、それからrelease:で指定した値を取りながら、直線的にゼロに下がります。 長いリリース・タイムは長いシンセ・フェード・アウト(徐々に消えること)を生成します

これにより、リリース・タイムを変更して、あなたのサウンドのデュレーションを 変えることができます。自分の音楽にリリース・タイムを追加して演奏してみましょう。

アタック・タイム

通常、アタック・フェーズは全てのシンセにおいて0です。つまり、0アンプから 1にただちに移動することを意味します。シンセは最初から音が打たれます。 けれども、あなたは音をフェード・イン(徐々に大きく)したいかも知れません。 これは、attack:の命令で実現することができます。いくつかの音をフェード・インしてみましょう。

play 60, attack: 2
sleep 3
play 65, attack: 0.5

複数の命令を使うこともできます。例えば、短いアタック、長いリリースに、変更してみましょう。

play 60, attack: 0.7, release: 4

この、短いアタックに長いリリースのエンベロープは、以下の図のように表します。

attack release envelope

もちろん、ほかに変更することもできます。長いアタックに短いリリースを試してみましょう。

play 60, attack: 4, release: 0.7

long attack short release envelope

そして、アタックとリリース両方短くして、短いサウンドにもできます。

play 60, attack: 0.5, release: 0.5

short attack short release envelope

サステイン・タイム(持続時間)

アタック・タイムとリリース・タイムの設定に付け加えて、サステイン・タイム(持続時間)を 指定することができます。サステイン・タイムとは、アタックとリリースの間でフル・アンプの 音が鳴り続ける時間のことです。

play 60, attack: 0.3, sustain: 1, release: 1

ASR envelope

サステイン・タイムは、オプションのリリース・フェーズに入る前に、ミックスの中で主となる 存在感を与えたい重要なサウンドにとって有効です。もちろん、アタックとリリース両方の命令を 0に設定することもとても有効ですし、サウンドに対して、完全にフェード・インなし、 フェード・アウトなしにするためにサステインを使えば良いのです。けれど、注意してください、 0 のリリースはオーディオの中にクリック音を生成します。たいていの場合、0.2のような ごく小さい値を使う方が良いです。

ディケイ・タイム(減衰時間)

そして、今あなたがさらなる制御のレベルを必要としているならば、ディケイ・タイムというものを 設定することもできます。これは、アタックとサステインの間にくるエンベロープのフェーズで、 音量がattack_levelからsustain_levelに落ちる時間を指定します。 通常では、ディケイの指令は 0 で、アタックとサステインのレベルは両方とも 1 です。ですから、ディケイ・タイムで効果を得るには、アタック、サステインのレベルも指定しなくてはなりません。

play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5

ADSR envelope

AADSR エンベロープ

つまり要約すると、Sonic PiのADSRエンベロープには、以下のフェーズがあります。

  1. attack(アタック)- 0 アンプからattack_levelまでの時間
  2. decay(ディケイ)- 音量をattack_levelからsustain_levelまで移行させる時間
  3. sustain(サステイン)- 音量をsustain_levelで保持する時間
  4. release(リリース) - 音量をsustain_levelから 0 に移行させる時間

サウンドのデュレーションは、これらのフェーズの合計であることに注意することが大切です。 したがって、以下のサウンドは 0.5 + 1 + 2 + 0.5 = 4 で、4秒のデュレーションになります。

play 60, attack: 0.5, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5

ではあなたのサウンドにエンベロープを追加して演奏してみましょう。