Build a Pitch and Harmony Engine

The timing block decides when a note may change. The pitch block decides which pitch is available at that moment. Keeping those decisions separate lets you change the rhythm without rebuilding the melody.

The Idea

The pitch engine needs five stages:

changing value -> sample -> limit range -> add root -> constrain to scale

The output should be one stable pitch signal that any sound layer can use. Oscillators, envelopes, and timbre controls do not belong in this block.

Build It Step by Step

  1. Open Grid System 01 - Timing.
  2. In the PITCH area, add Pink Noise.
  3. Add Average or a low-pass module after the noise. This makes neighboring values less extreme.
  4. Add Sample / Hold after the smoothing stage.
  5. Connect the NOTES trigger lane to the Sample / Hold trigger input.
  6. Add Attenuate after Sample / Hold and reduce the range strongly. Start with enough movement for roughly one or two octaves.

At this point the signal changes only eight times per bar and remains stable between triggers.

Make It Follow the Project Key

For Bitwig Studio 6, build the key-aware part like this:

  1. Add Root Key and set its octave so C3 represents the neutral center.
  2. Add Pitch Buss.
  3. Connect the attenuated random pitch to one Pitch Buss input.
  4. Connect Root Key to another input.
  5. Add by Scale after Pitch Buss so the final pitch follows the current global scale.
  6. Connect the result to the Value Readout and set the readout to a pitch display mode.
Pink Noise -> Average -> Sample / Hold -> Attenuate --\
                                                       Pitch Buss -> by Scale -> PITCH
Root Key ---------------------------------------------/

If you are building the patch in an older Bitwig version, use a fixed Bias or Transpose for the root and Pitch Quantize with manually selected pitch classes instead.

Listen Without Building a Sound Layer

Add one temporary Sine oscillator beside the pitch block:

  1. Connect the final pitch signal to the oscillator pitch input.
  2. Turn your monitoring level down.
  3. Connect the oscillator to Audio Out through a low Gain - dB.
  4. Listen for a few bars, then remove the temporary audio connection.

The sound is only a test probe. Do not turn it into the final melody voice yet.

Change the project root and scale while the patch runs. The pitch range should move to the new root and every selected pitch should remain inside the global scale.

Checkpoint

The pitch output should:

Save the preset as:

Grid System 02 - Pitch

Common Problems

Notes jump across too many octaves

Reduce Attenuate before changing the scale or timing. Range and pitch collection are separate problems.

The patch follows the root but not the scale

Root Key only supplies the current root pitch. Keep by Scale after the summed pitch when you want the complete global key signature.

Pitch changes between note events

Confirm that Sample / Hold is before the range and key processing and that only the NOTES lane triggers it.

Changing the key produces an unexpected octave

Check the octave setting on Root Key. Keep the pitch engine centered around one known reference such as C3 before transposing individual layers.

Extend the System

Branch the final pitch to three empty destinations and label them MELODY, BASS, and TEXTURE. Do not transpose them yet. The branches show that several future layers will share the same harmonic source.

In the next lesson we add probability and short-term memory without changing the underlying clock or key.


▶ Next Lesson: Add Controlled Variation and Memory
◀ Previous Lesson: Build a Shared Timing Backbone
Building Large Bitwig Grid Patches