{
	"add": {
		"body": [
			"add(${1:number})"
		],
		"description": "Add a value to the p5.Oscillator's output amplitude, and return the oscillator. Calling this method again will override the initial add() with new values.",
		"prefix": "add"
	},
	"attackLevel": {
		"body": [
			"attackLevel"
		],
		"description": "Level once attack is complete.",
		"prefix": "attackLevel"
	},
	"attackTime": {
		"body": [
			"attackTime"
		],
		"description": "Time until envelope reaches attackLevel",
		"prefix": "attackTime"
	},
	"decayLevel": {
		"body": [
			"decayLevel"
		],
		"description": "Level after decay. The envelope will sustain here until it is released.",
		"prefix": "decayLevel"
	},
	"decayTime": {
		"body": [
			"decayTime"
		],
		"description": "Time until envelope reaches decayLevel.",
		"prefix": "decayTime"
	},
	"mult": {
		"body": [
			"mult(${1:number})"
		],
		"description": "Multiply the p5.Env's output amplitude by a fixed value. Calling this method again will override the initial mult() with new values.",
		"prefix": "mult"
	},
	"play": {
		"body": [
			"play(${1:unit}, ${2:[startTime]}, ${3:[sustainTime]})"
		],
		"description": "Play tells the envelope to start acting on a given input. If the input is a p5.sound object (i.e. AudioIn, Oscillator, SoundFile), then Env will control its output volume. Envelopes can also be used to control any \u003ca href=\" http://docs.webplatform.org/wiki/apis/webaudio/AudioParam\"\u003e Web Audio Audio Param.",
		"prefix": "play"
	},
	"ramp": {
		"body": [
			"ramp(${1:unit}, ${2:secondsFromNow}, ${3:v}, ${4:[v2]})"
		],
		"description": "Exponentially ramp to a value using the first two values from setADSR(attackTime, decayTime) as  time constants for simple exponential ramps. If the value is higher than current value, it uses attackTime, while a decrease uses decayTime.",
		"prefix": "ramp"
	},
	"releaseLevel": {
		"body": [
			"releaseLevel"
		],
		"description": "Level at the end of the release.",
		"prefix": "releaseLevel"
	},
	"releaseTime": {
		"body": [
			"releaseTime"
		],
		"description": "Duration of the release portion of the envelope.",
		"prefix": "releaseTime"
	},
	"scale": {
		"body": [
			"scale(${1:inMin}, ${2:inMax}, ${3:outMin}, ${4:outMax})"
		],
		"description": "Scale this envelope's amplitude values to a given range, and return the envelope. Calling this method again will override the initial scale() with new values.",
		"prefix": "scale"
	},
	"set": {
		"body": [
			"set(${1:attackTime}, ${2:attackLevel}, ${3:decayTime}, ${4:decayLevel}, ${5:releaseTime}, ${6:releaseLevel})"
		],
		"description": "Reset the envelope with a series of time/value pairs.",
		"prefix": "set"
	},
	"setADSR": {
		"body": [
			"setADSR(${1:attackTime}, ${2:[decayTime]}, ${3:[susRatio]}, ${4:[releaseTime]})"
		],
		"description": "Set values like a traditional  ADSR envelope .",
		"prefix": "setADSR"
	},
	"setExp": {
		"body": [
			"setExp(${1:isExp})"
		],
		"description": "Set whether the envelope ramp is linear (default) or exponential. Exponential ramps can be useful because we perceive amplitude and frequency logarithmically.",
		"prefix": "setExp"
	},
	"setInput": {
		"body": [
			"setInput(${1:unit})"
		],
		"description": "Assign a parameter to be controlled by this envelope. If a p5.Sound object is given, then the p5.Env will control its output gain. If multiple inputs are provided, the env will control all of them.",
		"prefix": "setInput"
	},
	"setRange": {
		"body": [
			"setRange(${1:aLevel}, ${2:rLevel})"
		],
		"description": "Set max (attackLevel) and min (releaseLevel) of envelope.",
		"prefix": "setRange"
	},
	"triggerAttack": {
		"body": [
			"triggerAttack(${1:unit}, ${2:secondsFromNow})"
		],
		"description": "Trigger the Attack, and Decay portion of the Envelope. Similar to holding down a key on a piano, but it will hold the sustain level until you let go. Input can be any p5.sound object, or a \u003ca href=\" http://docs.webplatform.org/wiki/apis/webaudio/AudioParam\"\u003e Web Audio Param.",
		"prefix": "triggerAttack"
	},
	"triggerRelease": {
		"body": [
			"triggerRelease(${1:unit}, ${2:secondsFromNow})"
		],
		"description": "Trigger the Release of the Envelope. This is similar to releasing the key on a piano and letting the sound fade according to the release level and release time.",
		"prefix": "triggerRelease"
	}
}