Exercise 4

Exercise 4: Modulation

One of the more important synthesis techniques is modulation. Last semester we learned how to use an LFO to change the pitch of an oscillator slowly, creating vibrato. This week, we learn how to build that structure from the ground up using Max audio objects. The basic modulation scheme can be applied to any parameter, not just oscillator frequency. Any waveform, including band-limited noise (as generated by rand~), can act as a modulation source.

When one oscillator controls a parameter of another oscillator, we call the former a modulator and the latter a carrier. The carrier is the oscillator whose audio signal we hear; the modulator controls the behavior of the carrier.

If you raise the frequency of a periodic modulation source, such as a sine wave oscillator, so that it is higher than 20 Hz, you create timbral changes in the carrier oscillator. This technique of modulation synthesis comes in two basic forms: amplitude modulation (AM) and frequency modulation (FM), depending on whether the modulator) controls the amplitude or the frequency of the carrier.

We will try ring modulation (RM), which is a more commonly used special case of amplitude modulation. Then we will explore FM synthesis, which is more complex than either AM or RM.

Goals

We’re learning how to...

  • perform ring modulation by multiplying the outputs of two oscillators,
  • create a sub-audio rate (i.e., less than 20 Hz) modulation structure to produce vibrato, and
  • use that same structure to implement FM synthesis.

A Few Basic DSP Concepts

The term digital signal processing (DSP) refers to the theory and practice of modifying digital signals. A digital signal is just a stream of digital data: audio samples or visual image sequences, for example. Some applications of DSP are filtering audio, changing the saturation of video, or performing data compression on audio or video.

Here are two basic DSP concepts for audio.

  • Adding two audio signals together mixes them. This means adding the corresponding amplitude points of the two signals to produce a combined waveform. (We did this to combine multiple oscillators in Exercise 3.)
  • Multiplying a stream of audio samples by a constant value scales the instantaneous amplitudes of the individual samples of the stream, attenuating or increasing its volume. (We did this to apply amplitude envelopes in Exercise 3.)

We expand the application of these two principles to the sphere of modulation synthesis: we add a constant (or slowly changing) offset to an oscillator signal as part of FM synthesis, and we multiply two oscillator waveforms together to implement RM synthesis.

How to Do This Exercise

Working on the assignment is a three-stage process: studying the tutorial patches, making a ring modulation patch, and making an FM synthesis patch.

  1. Download Exercise 4 Max Tips. This folder of Max patches shows you how to implement two kinds of modulation synthesis.
  2. Take your detuned oscillator patch from Exercise 3, and ring modulate it. You can reduce the detuned patch to mono before ring modulating it with a sine wave oscillator. It’s better to omit the noise layer of Exercise 3 for this.

    The tutorial shows how you can ring modulate one sine oscillator by another. But you’re doing something more complex here: ring modulating a rich drone waveform by a sine oscillator. The basic ring modulation operation — multiplying two signals — doesn’t change, but the input signals can be more complex than sine waves.

    You should insert your ring modulator into the signal chain directly above the master volume fader (the live.gain~ that connects to ezdac~).

  3. Make a patch that uses the FM structure shown in Part 2 of the Ex4 Max Tips: create two layers, one for the left channel, one for the right channel. So, two copies of what you see in the Part 2 example patch.

    Specific requirements...

    • Encapsulate the guts of the FM structure, excluding the number boxes that let you adjust the parameter values and the live.gain~, into a subpatcher. Arrange the left-to-right order of the inlet objects inside the subpatcher in a way that makes sense to you. (If you don’t remember how to encapsulate parts of a patch, please review Exercise 3.)
    • Then copy (alt-drag) the subpatcher to make the second layer.
    • Save several settings of the parameters (number boxes) to get contrasting sounds, using a preset object.

      The preset object sees only user-interface objects in the same patch. It can’t see objects in a subpatch. That’s one reason to exclude user-interface objects from subpatches.

    • Make some presets that use the modulator to create vibrato — with a sub-audio-rate (< 20 Hz) modulator frequency.
    • Also make some presets that use a modulator frequency higher than 20 Hz, to create FM synthesis.
    • For your FM synthesis presets, try simple integer ratios between the carrier and modulator frequencies. Also try a 1:1.31 ratio, which produces inharmonic, rather than harmonic, partials.
    • For FM synthesis, try setting the modulation depth (the number fed to *~) to a very high value (above 10,000), in order to get bright FM timbres. The depth must be much higher than you would ever use for vibrato.

      In a complete implementation of FM synthesis, we would express the modulation depth in terms of a modulation index, which combines with the modulator frequency to produce consistent brightness when you change pitch. But we won’t bother with that here.

    • OPTIONAL: Try automating the modulation depth. For example, you could use the familiar metro - random structure to create random changes in modulation depth.

Submission

  • Be sure you satisfied the criteria listed above.
  • Submit your two Max patches in Canvas.

Grading Criteria

This exercise is graded pass/fail. You must submit the exercise by Thursday midnight to be eligible for a pass.