Zero Crossings
Bitwig Platform
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.
Related material
- Grid Modules course reference
- Bitwig Zero-Crossings Module - Simple Pitch Detection
- Pitch Tracking: Use Your Voice as Pitch Information
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
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.
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.
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.
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.
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.