nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
Audio Toolbox (audio)

Acoustic feature extraction (pitch, spectral flux, roll-off), audio representations (MFCC, Mel-spectrogram), and equalization DSP. More...

Files

file  pitch_harmonics.hpp
 Fundamental-frequency estimation and harmonic-content metrics.
file  audio_io.hpp
file  freq_scales.hpp
file  cepstral.hpp
file  melspec_delta.hpp
file  shape_descriptors.hpp
 Spectral-shape descriptors.

Classes

struct  nk::audio::AudioData
 Decoded audio waveform data and basic metadata. More...
struct  nk::audio::AudioInfo
 Audio file metadata container (info = audioinfo(filename)). More...

Functions

Value nk::audio::pitch (const Value &x, double fs, double minF=50.0, double maxF=400.0, std::pmr::memory_resource *mr=nullptr)
 Pitch via the Normalised Cross-correlation Function (the default estimator).
Value nk::audio::pitchCEP (const Value &x, double fs, double minF=50.0, double maxF=400.0, std::pmr::memory_resource *mr=nullptr)
 Pitch via the cepstrum method (Noll 1967).
Value nk::audio::pitchPEF (const Value &x, double fs, double minF=50.0, double maxF=400.0, std::pmr::memory_resource *mr=nullptr)
 Pitch Estimation Filter (Gonzalez & Brookes 2011).
Value nk::audio::pitchLHS (const Value &x, double fs, double minF=50.0, double maxF=400.0, std::pmr::memory_resource *mr=nullptr)
 Log Harmonic Sum / Subharmonic Summation (Hermes 1988).
Value nk::audio::pitchSRH (const Value &x, double fs, double minF=50.0, double maxF=400.0, std::pmr::memory_resource *mr=nullptr)
 Summation of Residual Harmonics (Drugman & Alwan 2011).
Value nk::audio::harmonicRatio (const Value &x, double fs, std::pmr::memory_resource *mr=nullptr)
 Harmonic ratio — strength of harmonic content per frame.
AudioData nk::audio::audioreadFromBytes (const std::uint8_t *data, std::size_t len, int64_t startSample=1, int64_t endSample=-1, bool nativeType=false, std::pmr::memory_resource *mr=nullptr)
 Decodes audio from raw memory buffer, sniffing format automatically ([y, Fs] = audioread(bytes)).
AudioData nk::audio::audioreadFromBytes (const std::string &bytes, int64_t startSample=1, int64_t endSample=-1, bool nativeType=false, std::pmr::memory_resource *mr=nullptr)
 Decodes audio from string memory buffer (audioread(bytes)).
AudioInfo nk::audio::audioinfoFromBytes (const std::uint8_t *data, std::size_t len)
 Reads audio metadata from memory buffer without decoding audio samples (info = audioinfo(bytes)).
AudioInfo nk::audio::audioinfoFromBytes (const std::string &bytes)
 Reads audio metadata from string memory buffer (info = audioinfo(bytes)).
std::vector< std::uint8_t > nk::audio::audiowriteToBytes (const Value &y, double sampleRate, const std::string &format="wav", uint16_t bitsPerSample=16, const std::string &title="", const std::string &artist="", const std::string &comment="")
 Encodes audio matrix y into memory byte buffer (bytes = audiowrite(y, Fs, ...)).
AudioData nk::audio::audioread (const std::string &path, int64_t startSample=1, int64_t endSample=-1, bool nativeType=false, std::pmr::memory_resource *mr=nullptr)
 Reads audio file from filesystem ([y, Fs] = audioread(filename)).
AudioInfo nk::audio::audioinfo (const std::string &path)
 Returns audio file metadata (info = audioinfo(filename)).
void nk::audio::audiowrite (const std::string &path, const Value &y, double sampleRate, uint16_t bitsPerSample=16, const std::string &title="", const std::string &artist="", const std::string &comment="")
 Writes audio data matrix y to file on disk (audiowrite(filename, y, Fs)).
Value nk::audio::hz2mel (const Value &hz, std::pmr::memory_resource *mr=nullptr)
 Hertz → Mel (O'Shaughnessy 1987 default form).
Value nk::audio::mel2hz (const Value &mel, std::pmr::memory_resource *mr=nullptr)
 Mel → Hertz (inverse of hz2mel).
Value nk::audio::hz2bark (const Value &hz, std::pmr::memory_resource *mr=nullptr)
 Hertz → Bark (Traunmüller 1990 with low/high-frequency corrections).
Value nk::audio::bark2hz (const Value &bark, std::pmr::memory_resource *mr=nullptr)
 Bark → Hertz (inverse of hz2bark).
Value nk::audio::hz2erb (const Value &hz, std::pmr::memory_resource *mr=nullptr)
 Hertz → ERB (Glasberg & Moore 1990).
Value nk::audio::erb2hz (const Value &erb, std::pmr::memory_resource *mr=nullptr)
 ERB → Hertz (inverse of hz2erb).
Value nk::audio::phon2sone (const Value &phon, bool standardIs532_2=false, std::pmr::memory_resource *mr=nullptr)
 Phon → Sone — loudness-level to loudness conversion.
Value nk::audio::sone2phon (const Value &sone, bool standardIs532_2=false, std::pmr::memory_resource *mr=nullptr)
 Sone → Phon — loudness to loudness-level conversion.
Value nk::audio::cepstralCoefficients (const Value &S, int numCoeffs=13, std::pmr::memory_resource *mr=nullptr)
 Generic cepstral coefficient extractor.
std::tuple< Value, Value, Value > nk::audio::mfcc (const Value &x, double fs, int numCoeffs=13, std::pmr::memory_resource *mr=nullptr)
 Mel-frequency cepstral coefficients (MFCC).
std::tuple< Value, Value, Value > nk::audio::gtcc (const Value &x, double fs, int numCoeffs=13, std::pmr::memory_resource *mr=nullptr)
 Gammatone cepstral coefficients (GTCC).
std::tuple< Value, Value, Value > nk::audio::melSpectrogram (const Value &x, double fs, int numBands=32, std::pmr::memory_resource *mr=nullptr)
 Mel-band power spectrogram.
Value nk::audio::audioDelta (const Value &x, int windowLength=9, std::pmr::memory_resource *mr=nullptr)
 Locally-smoothed first derivative along the time axis.
Value nk::audio::spectralCentroid (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral centroid — power-weighted mean frequency.
Value nk::audio::spectralSpread (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral spread — power-weighted std around the centroid.
Value nk::audio::spectralRolloffPoint (const Value &x, const Value &f, double percentile=0.95, std::pmr::memory_resource *mr=nullptr)
 Spectral rolloff frequency.
Value nk::audio::spectralDecrease (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral decrease — slope-like measure relative to first bin.
Value nk::audio::spectralSlope (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral slope — least-squares slope of (f, X).
Value nk::audio::spectralFlux (const Value &x, const Value &f, double p=2.0, std::pmr::memory_resource *mr=nullptr)
 Spectral flux — p-norm of frame-to-frame spectrum differences.
Value nk::audio::spectralCrest (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral crest — max(X) / mean(X) per frame.
Value nk::audio::spectralEntropy (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral entropy — Shannon entropy of normalised spectrum.
Value nk::audio::spectralFlatness (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral flatness — geomean(X) / mean(X).
Value nk::audio::spectralKurtosis (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral kurtosis — X-weighted 4th central moment.
Value nk::audio::spectralSkewness (const Value &x, const Value &f, std::pmr::memory_resource *mr=nullptr)
 Spectral skewness — X-weighted 3rd central moment.

Detailed Description

Acoustic feature extraction (pitch, spectral flux, roll-off), audio representations (MFCC, Mel-spectrogram), and equalization DSP.

Function Documentation

◆ audioDelta()

Value nk::audio::audioDelta ( const Value & x,
int windowLength = 9,
std::pmr::memory_resource * mr = nullptr )

Locally-smoothed first derivative along the time axis.

Implements the standard delta-coefficient filter: \( \Delta x[n] = \frac{\sum_{k=1}^{M} k \cdot (x[n+k] - x[n-k])}{2 \sum_{k=1}^{M} k^2} \) where M = floor(windowLength / 2).

Parameters
xFeature matrix (rows = time, cols = channels).
windowLengthFilter window length (odd, ≥ 3). Default 9.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of delta coefficients.
See also
melSpectrogram, mfcc

◆ audioinfo()

AudioInfo nk::audio::audioinfo ( const std::string & path)

Returns audio file metadata (info = audioinfo(filename)).

Parameters
pathPath to audio file.
Returns
AudioInfo struct containing format, channels, sample rate, and duration.
See also
audioread, audiowrite

◆ audioinfoFromBytes() [1/2]

AudioInfo nk::audio::audioinfoFromBytes ( const std::string & bytes)

Reads audio metadata from string memory buffer (info = audioinfo(bytes)).

Parameters
bytesAudio file bytes as string.
Returns
AudioInfo metadata struct.

◆ audioinfoFromBytes() [2/2]

AudioInfo nk::audio::audioinfoFromBytes ( const std::uint8_t * data,
std::size_t len )

Reads audio metadata from memory buffer without decoding audio samples (info = audioinfo(bytes)).

Parameters
dataPointer to raw audio bytes.
lenLength of buffer in bytes.
Returns
AudioInfo containing file format, sample rate, channels, and duration.

◆ audioread()

AudioData nk::audio::audioread ( const std::string & path,
int64_t startSample = 1,
int64_t endSample = -1,
bool nativeType = false,
std::pmr::memory_resource * mr = nullptr )

Reads audio file from filesystem ([y, Fs] = audioread(filename)).

Parameters
pathPath to audio file.
startSample1-based start frame index (default: 1).
endSample1-based end frame index (default: -1 for all).
nativeTypeTrue to return integer types, false for normalized [-1.0, 1.0] double.
mrMemory resource for output allocation.
Returns
AudioData containing decoded samples matrix and metadata.
See also
audiowrite, audioinfo

◆ audioreadFromBytes() [1/2]

AudioData nk::audio::audioreadFromBytes ( const std::string & bytes,
int64_t startSample = 1,
int64_t endSample = -1,
bool nativeType = false,
std::pmr::memory_resource * mr = nullptr )

Decodes audio from string memory buffer (audioread(bytes)).

Parameters
bytesByte string containing audio file contents.
startSample1-based start sample index.
endSample1-based end sample index (-1 for end of stream).
nativeTypeTrue to return integer types, false for normalized [-1.0, 1.0] double.
mrMemory resource for output allocation.
Returns
AudioData containing audio matrix and sampling rate.

◆ audioreadFromBytes() [2/2]

AudioData nk::audio::audioreadFromBytes ( const std::uint8_t * data,
std::size_t len,
int64_t startSample = 1,
int64_t endSample = -1,
bool nativeType = false,
std::pmr::memory_resource * mr = nullptr )

Decodes audio from raw memory buffer, sniffing format automatically ([y, Fs] = audioread(bytes)).

Parameters
dataPointer to raw audio file bytes.
lenLength of buffer in bytes.
startSample1-based start sample index.
endSample1-based end sample index (-1 for end of stream).
nativeTypeTrue to return integer types, false for normalized [-1.0, 1.0] double.
mrMemory resource for output allocation.
Returns
AudioData containing audio matrix and sampling rate.

◆ audiowrite()

void nk::audio::audiowrite ( const std::string & path,
const Value & y,
double sampleRate,
uint16_t bitsPerSample = 16,
const std::string & title = "",
const std::string & artist = "",
const std::string & comment = "" )

Writes audio data matrix y to file on disk (audiowrite(filename, y, Fs)).

Parameters
pathPath to output audio file (e.g. .wav, .aiff, .au).
yAudio matrix N x C.
sampleRateSampling rate in Hz.
bitsPerSampleQuantization bit depth (default 16).
titleOptional track title metadata.
artistOptional artist metadata.
commentOptional comment metadata.
See also
audioread, audioinfo

◆ audiowriteToBytes()

std::vector< std::uint8_t > nk::audio::audiowriteToBytes ( const Value & y,
double sampleRate,
const std::string & format = "wav",
uint16_t bitsPerSample = 16,
const std::string & title = "",
const std::string & artist = "",
const std::string & comment = "" )

Encodes audio matrix y into memory byte buffer (bytes = audiowrite(y, Fs, ...)).

Parameters
yAudio sample matrix N x C.
sampleRateSampling rate in Hz.
formatAudio format string ("wav", "aiff", "au").
bitsPerSampleBit depth (16, 24, 32).
titleOptional metadata title.
artistOptional metadata artist.
commentOptional metadata comment.
Returns
Vector of encoded file bytes.

◆ bark2hz()

Value nk::audio::bark2hz ( const Value & bark,
std::pmr::memory_resource * mr = nullptr )

Bark → Hertz (inverse of hz2bark).

Parameters
barkBark-scale values.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of Hz values.
See also
hz2bark

◆ cepstralCoefficients()

Value nk::audio::cepstralCoefficients ( const Value & S,
int numCoeffs = 13,
std::pmr::memory_resource * mr = nullptr )

Generic cepstral coefficient extractor.

Pipeline: log10 / cubic-root rectification → DCT-II → keep first numCoeffs coefficients. Input S is L × M (filterbank bands × frames). Output is M × numCoeffs (frames first).

Parameters
SL × M real filterbank energy matrix.
numCoeffsNumber of cepstral coefficients to keep. Default 13.
mrMemory resource (nullptr → process default).
Returns
M × numCoeffs DOUBLE matrix.
See also
mfcc, gtcc

◆ erb2hz()

Value nk::audio::erb2hz ( const Value & erb,
std::pmr::memory_resource * mr = nullptr )

ERB → Hertz (inverse of hz2erb).

Parameters
erbERB-scale values.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of Hz values.
See also
hz2erb

◆ gtcc()

std::tuple< Value, Value, Value > nk::audio::gtcc ( const Value & x,
double fs,
int numCoeffs = 13,
std::pmr::memory_resource * mr = nullptr )

Gammatone cepstral coefficients (GTCC).

Same STFT + cepstralCoefficients pipeline as mfcc but with an ERB-spaced Patterson-Holdsworth gammatone filterbank (Slaney 1993): cascaded 4-stage biquad frequency response, FrequencyRange = [50, fs/2], NumFilters = ceil(hz2erb(fs/2) - hz2erb(50)).

Parameters
xReal 1-D audio signal.
fsSample rate in Hz.
numCoeffsNumber of cepstral coefficients. Default 13.
mrMemory resource (nullptr → process default).
Returns
Tuple (coeffs, delta, deltaDelta).
See also
mfcc, hz2erb

◆ harmonicRatio()

Value nk::audio::harmonicRatio ( const Value & x,
double fs,
std::pmr::memory_resource * mr = nullptr )

Harmonic ratio — strength of harmonic content per frame.

Computed as the maximum of the normalised autocorrelation function over the search range, clipped to [0, 1]. High values indicate periodic (tonal) content; low values indicate noise. Window defaults: WindowLength = round(0.03 · fs), OverlapLength = round(0.02 · fs).

Parameters
xReal 1-D audio signal.
fsSample rate in Hz.
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame harmonic ratios in [0, 1].
See also
pitch

◆ hz2bark()

Value nk::audio::hz2bark ( const Value & hz,
std::pmr::memory_resource * mr = nullptr )

Hertz → Bark (Traunmüller 1990 with low/high-frequency corrections).

Parameters
hzFrequency values in Hz.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array.
See also
bark2hz

◆ hz2erb()

Value nk::audio::hz2erb ( const Value & hz,
std::pmr::memory_resource * mr = nullptr )

Hertz → ERB (Glasberg & Moore 1990).

Equivalent Rectangular Bandwidth scale used in psychoacoustic models.

Parameters
hzFrequency values in Hz.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array.
See also
erb2hz

◆ hz2mel()

Value nk::audio::hz2mel ( const Value & hz,
std::pmr::memory_resource * mr = nullptr )

Hertz → Mel (O'Shaughnessy 1987 default form).

\( m = 2595 \log_{10}(1 + f / 700) \)

Parameters
hzFrequency values in Hz (real array).
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of mel-frequency values.
See also
mel2hz

◆ mel2hz()

Value nk::audio::mel2hz ( const Value & mel,
std::pmr::memory_resource * mr = nullptr )

Mel → Hertz (inverse of hz2mel).

Parameters
melMel-frequency values.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of Hz values.

◆ melSpectrogram()

std::tuple< Value, Value, Value > nk::audio::melSpectrogram ( const Value & x,
double fs,
int numBands = 32,
std::pmr::memory_resource * mr = nullptr )

Mel-band power spectrogram.

Defaults:

  • NumBands = 32
  • FrequencyRange = [0, fs/2]
  • MelStyle = 'oshaughnessy'
  • Window = hamming(round(0.03·fs), 'periodic')
  • OverlapLength = round(0.02·fs)
  • FFTLength = numel(Window)
  • Normalization = 'bandwidth'
  • SpectrumType = 'power'
  • WindowNormalization = true
Parameters
xReal 1-D audio signal.
fsSample rate in Hz.
numBandsNumber of mel bands. Default 32.
mrMemory resource (nullptr → process default).
Returns
Tuple (S, F, T):
  • S — numBands × NumFrames mel-band power matrix.
  • F — 1 × numBands band-center frequencies (Hz).
  • T — NumFrames × 1 frame-center times (seconds).
See also
mfcc, hz2mel, audioDelta

◆ mfcc()

std::tuple< Value, Value, Value > nk::audio::mfcc ( const Value & x,
double fs,
int numCoeffs = 13,
std::pmr::memory_resource * mr = nullptr )

Mel-frequency cepstral coefficients (MFCC).

Pipeline:

  1. Hamming (0.03 · fs, 'periodic') STFT.
  2. |FFT| magnitude.
  3. Slaney mel filterbank ('Bandwidth' normalisation).
  4. log10 + DCT-II via cepstralCoefficients.
  5. Natural-log unwindowed-frame energy prepended ('append' default).
Parameters
xReal 1-D audio signal.
fsSample rate in Hz.
numCoeffsNumber of cepstral coefficients. Default 13.
mrMemory resource (nullptr → process default).
Returns
Tuple (coeffs, delta, deltaDelta) — three matrices, each NumFrames × (numCoeffs + 1). delta and deltaDelta are the first and second time-derivative estimates of the coefficients.
See also
cepstralCoefficients, audioDelta, gtcc

◆ phon2sone()

Value nk::audio::phon2sone ( const Value & phon,
bool standardIs532_2 = false,
std::pmr::memory_resource * mr = nullptr )

Phon → Sone — loudness-level to loudness conversion.

Default standard ISO 532-1: closed-form piecewise power law. Pass standardIs532_2 = true to use ISO 532-2 (table lookup with PCHIP interpolation per Table 5, linear extrapolation beyond 120 phon).

Parameters
phonLoudness level in phon.
standardIs532_2Use ISO 532-2 table form instead of 532-1.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of loudness in sone.
See also
sone2phon

◆ pitch()

Value nk::audio::pitch ( const Value & x,
double fs,
double minF = 50.0,
double maxF = 400.0,
std::pmr::memory_resource * mr = nullptr )

Pitch via the Normalised Cross-correlation Function (the default estimator).

Per-frame f0 estimation via normalised autocorrelation, peak-picked within [minF, maxF]. Window defaults:

  • WindowLength = round(0.052 · fs)
  • OverlapLength = round(0.042 · fs)
  • Range = [50, 400] Hz
Parameters
xReal 1-D audio signal.
fsSample rate in Hz.
minFMinimum pitch search bound in Hz (default 50).
maxFMaximum pitch search bound in Hz (default 400).
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame f0 in Hz.
See also
pitchCEP, pitchPEF, pitchLHS, pitchSRH, harmonicRatio

◆ pitchCEP()

Value nk::audio::pitchCEP ( const Value & x,
double fs,
double minF = 50.0,
double maxF = 400.0,
std::pmr::memory_resource * mr = nullptr )

Pitch via the cepstrum method (Noll 1967).

Same arg semantics as pitch.

Parameters
xSee pitch.
fsSee pitch.
minFSee pitch.
maxFSee pitch.
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame f0 in Hz.
See also
pitch

◆ pitchLHS()

Value nk::audio::pitchLHS ( const Value & x,
double fs,
double minF = 50.0,
double maxF = 400.0,
std::pmr::memory_resource * mr = nullptr )

Log Harmonic Sum / Subharmonic Summation (Hermes 1988).

Same arg semantics as pitch.

Parameters
xSee pitch.
fsSee pitch.
minFSee pitch.
maxFSee pitch.
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame f0 in Hz.
See also
pitch

◆ pitchPEF()

Value nk::audio::pitchPEF ( const Value & x,
double fs,
double minF = 50.0,
double maxF = 400.0,
std::pmr::memory_resource * mr = nullptr )

Pitch Estimation Filter (Gonzalez & Brookes 2011).

Same arg semantics as pitch.

Parameters
xSee pitch.
fsSee pitch.
minFSee pitch.
maxFSee pitch.
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame f0 in Hz.
See also
pitch

◆ pitchSRH()

Value nk::audio::pitchSRH ( const Value & x,
double fs,
double minF = 50.0,
double maxF = 400.0,
std::pmr::memory_resource * mr = nullptr )

Summation of Residual Harmonics (Drugman & Alwan 2011).

LPC inverse filtering + harmonic summation on the residual spectrum. Same arg semantics as pitch.

Parameters
xSee pitch.
fsSee pitch.
minFSee pitch.
maxFSee pitch.
mrMemory resource (nullptr → process default).
Returns
Column vector of per-frame f0 in Hz.
See also
pitch

◆ sone2phon()

Value nk::audio::sone2phon ( const Value & sone,
bool standardIs532_2 = false,
std::pmr::memory_resource * mr = nullptr )

Sone → Phon — loudness to loudness-level conversion.

Inverse of phon2sone.

Parameters
soneLoudness in sone (any shape).
standardIs532_2Use ISO 532-2 table form instead of 532-1.
mrMemory resource (nullptr → process default).
Returns
Same-shape DOUBLE array of loudness in phon.
See also
phon2sone

◆ spectralCentroid()

Value nk::audio::spectralCentroid ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral centroid — power-weighted mean frequency.

\( \mu_X = \sum_k f_k \cdot X_k \big/ \sum_k X_k \)

Parameters
xTime signal or M × N spectrum (see file note).
fSample rate or frequency vector (see file note).
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column centroid.
See also
spectralSpread

◆ spectralCrest()

Value nk::audio::spectralCrest ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral crest — max(X) / mean(X) per frame.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column crest.
See also
spectralFlatness

◆ spectralDecrease()

Value nk::audio::spectralDecrease ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral decrease — slope-like measure relative to first bin.

\( d = \dfrac{1}{\sum_{k \ge 2} X_k}\,\sum_{k \ge 2} \dfrac{X_k - X_1}{k - 1} \)

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column decrease.

◆ spectralEntropy()

Value nk::audio::spectralEntropy ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral entropy — Shannon entropy of normalised spectrum.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column normalised spectral entropy, in [0, 1].

◆ spectralFlatness()

Value nk::audio::spectralFlatness ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral flatness — geomean(X) / mean(X).

1 = white, 0 = tonal.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column flatness.
See also
spectralCrest

◆ spectralFlux()

Value nk::audio::spectralFlux ( const Value & x,
const Value & f,
double p = 2.0,
std::pmr::memory_resource * mr = nullptr )

Spectral flux — p-norm of frame-to-frame spectrum differences.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
pNorm order (default 2 — Euclidean).
mrMemory resource (nullptr → process default).
Returns
N - 1 flux values (one per frame transition).

◆ spectralKurtosis()

Value nk::audio::spectralKurtosis ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral kurtosis — X-weighted 4th central moment.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column kurtosis.
See also
spectralSkewness, spectralSpread

◆ spectralRolloffPoint()

Value nk::audio::spectralRolloffPoint ( const Value & x,
const Value & f,
double percentile = 0.95,
std::pmr::memory_resource * mr = nullptr )

Spectral rolloff frequency.

f such that the cumulative spectral power below f equals percentile of the total power.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
percentileCumulative power fraction in (0, 1). Default 0.95.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column rolloff frequency.

◆ spectralSkewness()

Value nk::audio::spectralSkewness ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral skewness — X-weighted 3rd central moment.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column skewness.
See also
spectralKurtosis, spectralSpread

◆ spectralSlope()

Value nk::audio::spectralSlope ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral slope — least-squares slope of (f, X).

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column slope.

◆ spectralSpread()

Value nk::audio::spectralSpread ( const Value & x,
const Value & f,
std::pmr::memory_resource * mr = nullptr )

Spectral spread — power-weighted std around the centroid.

Parameters
xTime signal or spectrum.
fSample rate or frequency vector.
mrMemory resource (nullptr → process default).
Returns
Per-frame / per-column spread.
See also
spectralCentroid, spectralSkewness, spectralKurtosis