adsr~
ADSR envelope generator
Description
The adsr~ object is an Attack-Decay-Sustain-Release signal controllable by signals. In some situations, a combination of the function and line~ objects may be a useful alternative.
Discussion
Any non-zero value in the trigger inlet will trigger an envelope with that amplitude. Like an adsr~ triggered by an input float, a zero value represents "note-off" and will begin the release stage. unlike the event-trigger model, a signal-triggered adsr~ must receive a zero before it will retrigger.
The adsr~ object uses the Max time format syntax; envelope times can be specified in either fixed or tempo-relative formats.
Arguments
attack[float]
optional
The initial attack time
decay[float]
optional
The initial decay time
sustain[float]
optional
The initial sustain level
release[float]
optional
The initial release time
Attributes
attack[Time Value]
Sets the attack of the ADSR-envelope in milliseconds.
decay[Time Value]
Sets the decay of the ADSR-envelope in milliseconds.
legato[int]
Given as input, the word
, followed by a 0 or a non-zero number, disables or enables legato mode. If legato mode is enabled, the envelope will not drop to zero in the event of a retrigger while the envelope is active - instead, the envelope ramps to the new amplitude over the attack period.
maxsustain[float]
Given as input, the word
, followed by a float, sets the maximum amount of time that the envelope will remain in the sustain stage. A negative number sets no maximum; the envelope will remain forever in the sustain stage until a note-off is received. To create a simple three-stage sustainless envelope (an ADR), you can use the message maxsustain 0.0.
release[Time Value]
Sets the release of the ADSR-envelope in milliseconds.
retrigger[float]
Given as input, the word
, followed by a float, sets the amount of time taken to ramp down to zero in the event of a retrigger while the envelope is active (the default is 5 milliseconds). This ramping prevents clicking.
sustain[float]
Sets the sustain of the ADSR-envelope, as a factor of the amplitude. For example, a value of 0.5 means the sustain level will be half of the amplitude height.
triggermode[int]
The triggermode attributes determines whether the envelope waits for a zero to complete the release phase or plays to the end once triggered.
Possible values:
0 = 'ADSR'
(
Normal ADSR triggering
)
In ADSR mode, the envelope starts when a non-zero signal or float is received and begins the release phase when a zero is reeived.
1 = 'Play to End'
(
Play to End
)
In Play to End mode, the envelope starts and plays the attack, decay and release segments, ignoring further input until the envelope completes.
Common Box Attributes
annotation[symbol]
Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.
background[int]: 0
Adds or removes the object from the patcher's background layer.
adds the object to the background layer, removes it. Objects in the background layer are shown behind all objects in the default foreground layer.
color[4 floats]
Sets the color for the object box outline.
fontface[int]
Sets the type style used by the object. The options are:
plain
bold
italic
bold italic
Possible values:
0 = 'regular'
1 = 'bold'
2 = 'italic'
3 = 'bold italic'
fontname[symbol]
Sets the object's font.
fontsize[float]
Sets the object's font size (in points).
Possible values:
'8'
'9'
'10'
'11'
'12'
'13'
'14'
'16'
'18'
'20'
'24'
'30'
'36'
'48'
'64'
'72'
hint[symbol]
Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.
ignoreclick[int]: 0
Toggles whether an object ignores mouse clicks in a locked patcher.
jspainterfile[symbol]
You can override the default appearance of a user interface object by assigning a JavaScript file with code for painting the object. The file must be in the search path.
patching_rect[4 floats]: 0. 0. 100. 0.
Sets the position and size of the object in the patcher window.
position[2 floats]
write-only
Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.
presentation[int]: 0
Sets whether an object belongs to the patcher's presentation.
presentation_rect[4 floats]: 0. 0. 0. 0.
Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.
rect[4 floats]
write-only
Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).
size[2 floats]
write-only
Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.
textcolor[4 floats]
Sets the color for the object's text in RGBA format.
textjustification[int]
Sets the justification for the object's text.
Possible values:
0 = 'left'
1 = 'center'
2 = 'right'
varname[symbol]
Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.
Messages
int
Converted to
- trigger/ADSR-parameters
[int]
float
In left inlet: A non-zero number triggers an envelope with the given amplitude. The envelope will sustain until a zero is input to trigger the release stage, or until another non-zero int retriggers the envelope.
In second inlet: sets the attack time in milliseconds.
In third inlet: sets the decay time in milliseconds.
In fourth inlet: sets the envelope's sustain level, as a factor of the amplitude. For example, a value of 2 means the sustain level will be twice the value of the amplitude height.
In fifth inlet: sets the envelope's release time, in milliseconds.
- trigger/ADSR-parameters
[float]
list
A list of four numbers will set the attack, decay, sustain and release values.
- attack
[float]
- decay
[float]
- sustain
[float]
- release
[float]
anything
In left inlet: Performs the same function as
Any other inlet: A list may be used to specify time in one of the Max time formats.
- attack
[float]
- decay
[float]
- sustain
[float]
- release
[float]
signal
In left inlet: A non-zero value triggers an envelope with that value as its amplitude. After the envelope starts, a zero signal value will begin the release phase of the envelope. If triggermode is enabled the envelope is completed fully even if the signal is zero.
In second inlet: sets the attack time in milliseconds.
In third inlet: sets the decay time in milliseconds.
In fourth inlet: sets the envelope's sustain level, as a factor of the amplitude. For example, a value of 0.5 means the sustain level will be half of the amplitude.
In right inlet: sets the release time in milliseconds.
Output
message
message
The fourth outlet responds to query messages for the various attributes (i.e.
).signal
Left outlet: the envelope.
Middle outlet: signals the beginning of an envelope by sending when in the attack, decay, or sustain stages and otherwise (release, retrigger, or inactive). You can use this outlet in conjunction with the sah~ object to synchronize pitch (or other information) with the beginning of an envelope with sample accuracy.
See Also
Name | Description |
---|---|
function | Breakpoint function editor |
line~ | Linear signal ramp generator |
techno~ | Signal-driven step sequencer |
transport | Control a clock |
zigzag~ | Linked list function editor |