Skip to content

3. ADSR - Make Envelopes

header light header dark


Goal

daisy bud

In this tutorial, we will be learning how to build and trigger an ADSR envelope. The tutorial is a continuation of the "Intro To Bell - Make A Synth" tutorial series.

Example Patcher


Prerequisites

This tutorial is designed for users with a cursory understanding of Bell. If you are unfamiliar with Bell, we recommend heading to the beginning of our Intro To Bell - Make A Synth tutorial series.

For this tutorial, you will need:

  • Computer with an internet connection
  • Web browser

Tutorial

daisy bud

Video Tutorial

Let's begin!

To get started, open up bell.audio in a web browser.


Step 1: Open subtractive_synth.bell

Log into your Bell account. Then click File, then click Open project....

For this tutorial, we will be using the subtractive_synth.bell project from the Shape Sound - Filter & VCA Bell tutorial. If you do not have this file, either follow the Bell tutorial, or download the file here.


Step 2: Remove vca~ Knob And Add adsr~

Select and delete the knob connected to vca~. Then, create an adsr~ object and connect it to the vca~'s gain inlet.

adsr~ is a four-stage envelope, broken up into attack, decay, sustain, and release stages. adsr~ requires a boolean signal at the trigger input, and outputs a signal range between 0.0 and 1.0.


Step 3: Add toggle

Create a toggle object, and connect its outlet to the adsr~'s trigger inlet. Lock the patcher, and click the toggle on and off to activate and deactive the envelope!


Step 4: Add metro

Create a metro object and give the argument a value of 500. Patch the metro~ 500 outlet to the toggle inlet. Open the metro~ 500 inspector and set it to active.

metro is a time-based metronome, which outputs a bang at its determined rate. In this example, we are sending a bang to the toggle every 500 milliseconds. Subsequently, our adsr~ now triggers every second!


Step 5: Add Knobs To adsr~

Create 4 knob objects. Then, create 3 scale 0 1 0 1000 objects. For the attack, decay, and release inlets, patch a knob object to a scale object, then patch the scale outlet to the appropriate argument inlet. The fourth knob can be patched directly into the sustain inlet.

Our adsr~ inlets give us control over each stage of the envelope. The attack, decay, and release inlets accept an argument in milliseconds, while the sustain inlet accepts a range between 0 and 1.

In this example, we use scale to give our knobs a 1 second range for each stage control.


Bloom: Gate Length

Toggle length is an important control when taking full advantage of adsr~, but how can we set up an adjustable control for that in Bell?

Or, more specifically, how can we send a bang to the toggle to turn it on, and how can we send a second bang to turn it off? Then, how can we adjust the time between the first and second bang?

Solve the problem on your own, or take a look at our example below!

Gate Length Example

example


ADSR Explained


How ADSRs & Envelopes Work


Next Steps

daisy bud

We've learned how to make sound, how to shape it, and how to automate that shaping with an envelope. However, there's one big piece missing from our subtractive synth: sequencing!

Head to the next tutorial where we will learn how to control our synth's pitch, and how to generate a quantized melody!

Tutorial 4: Sequencing