Звуковые синтезаторы используют генераторы огибающей для управления тем, как определенные параметры звука (например, общая громкость) меняются со временем. Во многих синтезаторах оболочка определяется четырьмя параметрами, как показано на следующем рисунке из Википедии :
- Время атаки (A) : время, необходимое для того, чтобы конверт достиг максимального уровня, начиная с нуля, при первом нажатии клавиши.
- Время затухания (D) : время, необходимое конверту для достижения заданного уровня сустейна.
- Уровень сустейна (S) : уровень, который поддерживается после первоначальной атаки и затухания в течение всего времени нажатия клавиши.
- Время выпуска (R) : время, необходимое для достижения конвертом нуля при отпускании ключа.
Соревнование
Введите четыре параметра A, D, S, R и нанесите огибающую .
Параметры будут целочисленными значениями от 0 до 127 .
Максимальный уровень будет предполагаться (достигнуто в конце фазы атаки) , чтобы быть 127 .
Предполагается, что горизонтальный сегмент на уровне сустейна имеет длительность 64 (в реальном звуке эта длительность не является фиксированной, а определяется количеством времени, в течение которого удерживается клавиша).
Формат и дальнейшие детали
На выходе должно быть изображение в растровом или векторном формате. Если это растр, то полигональная линия должна занимать не менее 50 пикселей по вертикали и по горизонтали.
Изображение может отображаться или создаваться в виде файла в стандартном формате изображения. Файл может быть записан на диск, или его точное содержимое может быть выведено либо в STDERR, либо в качестве аргумента возврата функции.
Граф должен содержать только многоугольную линию, которая определяет оболочку. Масштаб каждой оси может быть выбран произвольно. Другие элементы, такие как оси линий, числовые метки или цвета линий, являются необязательными.
Средства ввода и формат, как обычно, гибки . Например, вы можете взять четыре числа в любом порядке или массив, содержащий их. Программа или функция может быть предоставлена. Стандартные лазейки запрещены.
Самый короткий код в байтах побеждает.
Контрольные примеры
Ввод в формате [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]