Topics / Bitwig Studio / Bitwig Grid / Bitwig Grid Modules / Grid Pitch Modules / Zero Crossings

Zero Crossings

Zero Crossings module panel in Bitwig Grid
Zero Crossings in Bitwig Grid 6.0.6.

A lightweight pitch estimator based on the spacing of zero crossings in an audio waveform.

What it does

Zero Crossings watches an audio signal pass through zero and estimates the repetition rate from the time between crossings. Its Low and Hi settings restrict the frequency region being tracked and help reject waveform components outside the expected fundamental range.

Controls and ports

Control Label Official description
low Low Lowest frequency tracked
hi Hi Highest frequency tracked

Practical uses

  • Track a clean monophonic sine-like source and use the output to control a Grid oscillator.
  • Pre-filter voice, bass, or another complex source before analysis, then constrain the result with by Semitone or a scale quantizer.
  • Use the intentionally rough estimate as a responsive modulation source even when perfect note recognition is unnecessary.

Things to know

  • Simple periodic waveforms produce regular crossings; harmonics, noise, DC offset, multiple notes, and transient edges can create missing or extra crossings.
  • Low-pass and high-pass filtering before the detector can make a complex waveform easier to track.
  • This is explicitly described as a rough estimator, not a robust polyphonic pitch detector.
  • The output's hold behavior when no valid period is found and its exact detection latency are not documented by a recovered Nitro body.

Technical details

No Nitro implementation has been confirmed for this visible module. The behavior is described conservatively from module metadata and editorial research.

A zero-crossing estimator counts samples between comparable crossings. For same-direction crossings separated by N samples, the basic estimate is f = sample_rate/N; alternating crossings require accounting for two half cycles. Frequency becomes raw Grid pitch as p = 0.1*log2(f/261.625565), equivalent to converting the semitone distance and dividing it by 120. Exact filtering, interpolation, validation, averaging, and missing-signal state remain unrecovered.

Open questions

  • Measure latency, pitch error, jitter, and update rate across sine waves from Low to Hi at several sample rates.
  • Test square, saw, pulse, asymmetric, DC-offset, noisy, polyphonic, and silent inputs; record invalid-period and range-exit behavior.
  • Determine filter slopes, whether Low/Hi are analysis limits or audible prefilters, stereo reduction, reset, smoothing, and voice scope.

Version and sources

Checked against Bitwig Studio 6.0.6. This page combines Bitwig's module metadata, the existing Grid course and guides, and Nitro analysis where the mapping is strong enough to support a technical statement.

Return to Bitwig Grid Modules or the Grid Modules course lesson.

Also matches: Bitwig Zero Crossings module, Bitwig Grid Zero Crossings, Zero Crossings Grid module, Bitwig Zero Crossings, Zero Crossings, Zero-Crossings

Posts in this topic

Bitwig Zero-Crossings Module - Simple Pitch Detection
Bitwig Guide Bitwig Zero-Crossings Module - Simple Pitch Detection

The Zero Crossings module in Bitwig Studio's Grid is a simple pitch estimator that measures the distance between zero crossings of an audio waveform to determine pitch or frequency, working best with simple signals like sine waves. Filtering options, both inside the module and externally, help make complex signals easier to analyze for more accurate pitch detection. While not precise for complex audio, it is a handy tool for generating pitch signals from audio input, which can then be processed or quantized further within Bitwig.

Pitch Tracking and Manipulation in Bitwig Studio: Creating Unique Sounds with Zero Crossings and Voice Triggers
Tutorial Pitch Tracking and Manipulation in Bitwig Studio: Creating Unique Sounds with Zero Crossings and Voice Triggers

In this video, I explore using the zero crossings module in Bitwig Studio to change the pitch of a sine oscillator. I demonstrate how to set up the pulley grid and select the microphone input as the hardware input. To clean up the signal and make the pitch changes smoother, I use an LFO device. I also show how to trigger the gate signal using voice input from the microphone. I use a select module and a constant with a gain to achieve this. I discuss the concept of an inverted threshold and mention that using a gate length module can slow down the switching of the select box. Finally, I mention the possibility of using pitch scalar plugins for pitch quantization and the potential for creating pads and vocal sounds with these techniques.

Why Your Synth Keeps Clicking (And How To Fix It)
Tutorial Why Your Synth Keeps Clicking (And How To Fix It)

Clicking or crackling sounds in synthesizers occur when waveforms are abruptly restarted at non-zero crossings, causing sudden jumps in speaker movement. These artifacts can be prevented by restarting oscillators at zero crossings, adding short fades using amplitude envelopes, or by using voice allocation techniques like digimono or polyphonic modes to allow smooth fades between notes. In monophonic setups, introducing delayed retriggering or precise envelope shaping ensures smooth transitions and eliminates unwanted clicks and pops.

Calculate Time-Based Units with the Grid
Tutorial Calculate Time-Based Units with the Grid

In this video, I explain how to use the grid in Bitwig Studio to calculate release time for a compressor based on beats instead of milliseconds. I show how to convert a ramp signal into a sound, measure the pitch using zero crossings, and then convert it to hertz and milliseconds. Although it's a hacky approach, it's a fun challenge and allows for time-based calculations in the grid.

Unlock the Power of Your Voice in Bitwig Studio
Tutorial Unlock the Power of Your Voice in Bitwig Studio

In this video, I showed how to use my voice as an instrument inside Bitwig Studio. I demonstrated how to create a vocal pad sound by using a Voice stack modulator and then showed how to use the Poly-Grid to control synths with my voice. I also showed how to use the Melda Auto Pitch Plug-in to create sounds on the fly and use a Zero Crossings module to get a clean pitch signal. Finally, I demonstrated how to create percussion sounds with my voice by using filters and transient shapers.