Klangsynthesizer verwenden Hüllkurvengeneratoren, um zu steuern, wie sich bestimmte Parameter des Klangs (z. B. die Gesamtlautstärke) mit der Zeit ändern. In vielen Synthesizern wird eine Hüllkurve durch vier Parameter definiert, wie in der folgenden Abbildung aus Wikipedia dargestellt :
- Attack Time (A) : Zeit, die die Hüllkurve benötigt, um ihren Maximalpegel zu erreichen, beginnend mit Null, wenn die Taste zum ersten Mal gedrückt wird.
- Decay Time (D) : Zeit, die die Hüllkurve benötigt, um den angegebenen Sustain-Pegel zu erreichen.
- Sustain Level (S) : Level, der nach dem ersten Attack und Decay so lange gehalten wird, wie die Taste gedrückt wird.
- Release Time (R) : Zeit, die der Briefumschlag benötigt, um beim Loslassen der Taste Null zu erreichen.
Die Herausforderung
Geben Sie die vier Parameter A, D, S, R ein und zeichnen Sie die Hüllkurve .
Parameter sind ganzzahlige Werte von 0 bis 127 .
Das maximale Level (erreicht am Ende der Angriffsphase) wird mit 127 angenommen .
Es wird angenommen, dass das horizontale Segment auf dem Sustain-Pegel eine Dauer von 64 hat (im tatsächlichen Klang ist diese Dauer nicht festgelegt, sondern wird durch die Zeitdauer bestimmt, die die Taste gehalten wird).
Format und weitere Details
Die Ausgabe sollte ein Bild im Raster- oder Vektorformat sein. Wenn es sich um ein Raster handelt, sollte die polygonale Linie vertikal und horizontal mindestens 50 Pixel einnehmen.
Das Bild kann entweder angezeigt oder als Datei in einem Standardbildformat erstellt werden. Die Datei kann auf die Festplatte geschrieben werden, oder der genaue Inhalt kann entweder nach STDERR oder als Funktionsrückgabeargument ausgegeben werden.
Das Diagramm muss nur die polygonale Linie enthalten, die die Hüllkurve definiert. Der Maßstab jeder Achse kann frei gewählt werden. Andere Elemente wie Achsenlinien, numerische Beschriftungen oder Linienfarben sind optional.
Eingabemittel und Format sind wie gewohnt flexibel . Beispielsweise können Sie die vier Zahlen in beliebiger Reihenfolge oder ein Array mit ihnen nehmen. Ein Programm oder eine Funktion kann bereitgestellt werden. Standardlücken sind verboten.
Kürzester Code in Bytes gewinnt.
Testfälle
Die Eingabe erfolgt im Format [A D S R]
. Beachten Sie, dass der Maßstab in jeder Figur unterschiedlich ist (gemäß der Regel, dass der Maßstab frei gewählt werden kann)
[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]