Os sintetizadores de som usam geradores de envelope para controlar como certos parâmetros do som (como o volume geral) mudam com o tempo. Em muitos sintetizadores, um envelope é definido por quatro parâmetros, conforme representado na figura a seguir da Wikipedia :
- Tempo de ataque (A) : tempo necessário para o envelope atingir seu nível máximo, começando do zero, quando a tecla é pressionada pela primeira vez.
- Tempo de decaimento (D) : tempo necessário para o envelope atingir o nível de sustentação especificado.
- Nível de sustentação (S) : nível que é mantido, após o ataque e deterioração inicial, enquanto a tecla estiver sendo pressionada.
- Tempo de liberação (R) : tempo necessário para o envelope chegar a zero quando a tecla é liberada.
O desafio
Insira os quatro parâmetros A, D, S, R e plote o envelope .
Os parâmetros serão valores inteiros de 0 a 127 .
O nível máximo (atingido no final da fase de ataque) será assumido como 127 .
O segmento horizontal ao nível sustentar será assumido como tendo duração de 64 (o som real, a sua duração não é fixo, mas é determinada pela quantidade de tempo que a tecla é mantida).
Formato e mais detalhes
A saída deve ser uma imagem em formato raster ou vetorial. Se for raster, a linha poligonal deve ocupar pelo menos 50 pixels na vertical e na horizontal.
A imagem pode ser exibida ou produzida como um arquivo em um formato de imagem padrão. O arquivo pode ser gravado no disco ou seu conteúdo exato pode ser gerado para STDERR ou como argumento de retorno da função.
O gráfico precisa conter apenas a linha poligonal que define o envelope. A escala de cada eixo pode ser escolhida livremente. Outros elementos, como linhas de eixo, etiquetas numéricas ou cores de linha, são opcionais.
Os meios e o formato de entrada são flexíveis, como de costume. Por exemplo, você pode pegar os quatro números em qualquer ordem ou em uma matriz que os contenha. Um programa ou uma função pode ser fornecida. As brechas padrão são proibidas.
O menor código em bytes vence.
Casos de teste
A entrada está no formato [A D S R]
. Observe que a escala é diferente em cada figura (de acordo com a regra de que a escala pode ser escolhida livremente)
[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]