Wave Interference Pattern — User Guide

Whole-file FFT spectral colouration using a deterministic sine/cosine interference law across frequency-bin index.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.6 (2026) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

Wave Interference Pattern applies a static gain pattern to a whole-file FFT. The gain combines a sine pattern and a weighted cosine pattern across FFT-bin index, takes the absolute value, and multiplies the result by a linear brightness ramp. The same non-negative scalar multiplies the real and imaginary parts of each complex FFT bin, so bin phase is preserved while magnitude is reshaped.

This is not a time-varying phaser and not an acoustic beating simulation. The interference occurs in the frequency-bin gain law. Once created, that spectral pattern is static for the duration of the file.

Quick start

  1. Select exactly one mono or stereo Sound.
  2. Run Wave_Interference_Pattern.praat.
  3. Choose a preset. Subtle Spectral Interference is a useful first test; Slow Spectral Moire makes the large-scale modulation most obvious.
  4. Adjust the sine/cosine divisors to change the spacing of the spectral pattern.
  5. Set Wet/Dry and the desired output channel mode.
  6. The result is named originalName_PresetName.

What “interference” and “moiré” mean here

In physical wave interference, overlapping waves add and can reinforce or cancel one another depending on relative phase. This processor borrows that visual/mathematical idea but applies it to a spectral gain curve, not to two propagating acoustic waves.

G[k] = | sin(k / Dₛ) + W · cos(k / D𝚌) | · B[k]

Here k is FFT-bin index. Dₛ and D𝚌 control the two bin-domain periods, W is the cosine weight, and B[k] is the brightness ramp. Because the absolute value is taken, the gain remains non-negative and therefore does not introduce π phase flips.

Moiré analogy

When the two bin-domain periods are close but not identical, their sum produces a slower large-scale envelope across frequency. The script calls this a spectral moiré pattern by analogy with the broad beat-like patterns that appear when similar spatial grids are superimposed.

Duration dependence: the divisors are measured in FFT bins, not Hz. Therefore the pattern's physical spacing in Hz depends on the input's FFT bin width and thus on the source duration. This dependency is intentional.

Presets

PresetSine divisorCosine divisorWeightBrightnessCutoff
Custom80012000.51.211000 Hz
Strong Spectral Interference4006000.81.5user value
Subtle Spectral Interference120020000.21.1user value
Alien Radio1501600.92.0user value
Slow Spectral Moire200020051.01.0user value
Metallic Ring3004500.71.8user value
Underwater Transmission5007000.60.86000 Hz

Except where shown, presets leave Frequency cutoff, Wet/Dry, stereo controls and output settings at the values entered in the form.

Controls

ControlMeaning
Frequency cutoff HzBins below the realizable cutoff receive the interference law; bins above it remain at gain 1. Requested values above Nyquist are clamped.
Sine / Cosine divisorPeriod controls in FFT-bin units. Larger divisors make slower changes across bin index.
Cosine weightRelative contribution of the cosine component. Negative values are rejected.
Brightness compensationLinear ramp across bin index. 1 = neutral; >1 progressively emphasizes higher patterned bins; <1 progressively reduces them.
Wet/Dry percent0% = dry path with no peak scaling; 100% = pure patterned spectrum before final target normalization.
Stereo outputFor mono input, optionally makes stereo by delaying only the wet right channel. For stereo input, OFF intentionally downmixes to mono before processing.
Stereo delay msDelay applied to the wet right channel only when mono input is converted to stereo.
Scale peakFor every nonzero Wet setting, final target peak normalization.

Processing pipeline

  1. Prepare the dry/output topology: mono or stereo according to input and Stereo output.
  2. Create a whole-file FFT for the processing channel(s).
  3. Compute one exact gain-map Matrix from the bin-domain interference law.
  4. Multiply both complex Spectrum rows by the same gain map and inverse-transform.
  5. For stereo input, process L/R independently with the same gain law while retaining each channel's own complex spectrum.
  6. For mono→stereo, duplicate the wet signal and delay only the wet right channel.
  7. Mix dry and wet. Wet = 0 copies the dry path and skips peak scaling; Wet > 0 is target-normalized to Scale peak.

Channel, phase and level behavior

Visualization

The summary also reports FFT-bin width, realized cutoff, Wet percentage, channel count and transfer-proof error.