I sintetizzatori sonori usano i generatori di inviluppo per controllare come determinati parametri del suono (come il volume generale) cambiano nel tempo. In molti sintetizzatori un inviluppo è definito da quattro parametri, come rappresentato nella seguente figura da Wikipedia :
- Tempo di attacco (A) : tempo impiegato dall'inviluppo a raggiungere il suo livello massimo, a partire da zero, alla prima pressione del tasto.
- Decay time (D) : tempo impiegato dalla busta per raggiungere il livello di sustain specificato.
- Livello di sustain (S) : livello che viene mantenuto, dopo l'attacco iniziale e il decadimento, per tutto il tempo in cui il tasto viene premuto.
- Tempo di rilascio (R) : tempo impiegato dall'inviluppo a raggiungere lo zero quando si rilascia la chiave.
La sfida
Immettere i quattro parametri A, D, S, R e tracciare l'inviluppo .
I parametri saranno valori interi da 0 a 127 .
Si presume che il livello massimo (raggiunto alla fine della fase di attacco) sia 127 .
Si presume che il segmento orizzontale a livello di sustain abbia una durata 64 (nel suono effettivo questa durata non è fissa, ma è determinata dalla quantità di tempo in cui si tiene premuto il tasto).
Formato e ulteriori dettagli
L'output dovrebbe essere un'immagine in formato raster o vettoriale. Se è raster, la linea poligonale dovrebbe occupare almeno 50 pixel in verticale e in orizzontale.
L'immagine può essere visualizzata o prodotta come file in un formato immagine standard. Il file può essere scritto su disco o il suo esatto contenuto può essere emesso, su STDERR o come argomento di ritorno della funzione.
Il grafico deve contenere solo la linea poligonale che definisce la busta. La scala di ciascun asse può essere scelta liberamente. Altri elementi come linee degli assi, etichette numeriche o colori delle linee sono opzionali.
I mezzi di input e il formato sono flessibili come al solito. Ad esempio, puoi prendere i quattro numeri in qualsiasi ordine o un array che li contiene. È possibile fornire un programma o una funzione . Sono vietate le scappatoie standard .
Vince il codice più breve in byte.
Casi test
L'input è nel formato [A D S R]
. Si noti che la scala è diversa in ogni figura (in conformità con la regola che la scala può essere scelta liberamente)
[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]