サウンドシンセサイザーは、エンベロープジェネレーターを使用して、サウンドの特定のパラメーター(全体的なラウドネスなど)の経時変化を制御します。多くのシンセサイザーでは、Wikipediaの次の図に示すように、エンベロープは4つのパラメーターによって定義されます。
- 攻撃時間(A):キーが最初に押されたときに、エンベロープがゼロから開始して最大レベルに達するまでにかかった時間。
- 減衰時間(D):エンベロープが指定された持続レベルに達するまでにかかった時間。
- 持続レベル(S):最初の攻撃と減衰の後、キーが押されている限り維持されるレベル。
- リリース時間(R):キーがリリースされたときにエンベロープがゼロに達するまでにかかった時間。
挑戦
4つのパラメーターA、D、S、Rを入力し、エンベロープをプロットします。
パラメータは0〜127の整数値です。
最大レベル(アタックフェーズの終わりに達した)があると仮定されるであろう127。
サステインレベルの水平セグメントは、持続時間64を持つと想定されます(実際の音では、この持続時間は固定されていませんが、キーが保持されている時間によって決まります)。
フォーマットと詳細
出力は、ラスターまたはベクター形式の画像でなければなりません。ラスタの場合、折れ線は少なくとも50ピクセル、垂直方向および水平方向に占有する必要があります。
画像は、表示するか、標準画像形式のファイルとして作成できます。ファイルはディスクに書き込むことができます。または、正確な内容をSTDERRに出力するか、関数の戻り引数として出力できます。
グラフには、エンベロープを定義する折れ線のみを含める必要があります。各軸のスケールは自由に選択できます。軸線、数値ラベル、線の色などの他の要素はオプションです。
入力手段と形式は通常どおり柔軟です。たとえば、4つの数値を任意の順序で、またはそれらを含む配列を取ることができます。プログラムまたは機能を提供できます。標準的な抜け穴は禁止されています。
バイト単位の最短コードが優先されます。
テストケース
入力の形式はです[A D S R]
。スケールは各図で異なることに注意してください(スケールは自由に選択できるというルールに従って)
[15 30 70 40]
[64 64 64 64]
[0 10 50 80]
[0 0 90 80]
[5 50 0 0]
[5 50 0 80]
[24 32 127 48]