1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! Signal processing for multi-channel recordings on the device (any GPU through wgpu, CUDA or HIP,
//! or the CPU), written as CubeCL kernels: filters, spatial operators, statistics, linear algebra,
//! peak finding, threshold crossings and resampling.
//!
//! # Where things are
//!
//! | Need | Module | Start with |
//! |---|---|---|
//! | Chain preprocessing steps | [`pipeline`] | [`Pipeline`], [`PipelineStage`] |
//! | Filters (IIR, FIR, median, templates) | [`filter`] | [`filter::FilterSpec`], [`filter::DeviceFilter`] |
//! | Mix channels (CAR, whitening, Laplacian) | [`spatial`] | [`SpatialWhitening`], [`SurfaceLaplacian`] |
//! | Noise, percentiles, element-wise math | [`math`] | [`math::estimate_noise_std`] |
//! | Matrix products, PCA, ICA | [`linalg`] | [`PcaModel`], [`linalg::matmul`](fn@linalg::matmul) |
//! | Peaks (`find_peaks`) | [`peaks`] | [`peaks::find_peak_candidates`] |
//! | Threshold crossings as events (onset, offset, peak) | [`crossings`] | [`crossings::detect_crossings_on_device`] |
//! | Resampling | [`resampler`] | [`resampler::execute_resample_poly`] |
//! | Device buffers and shared kernels | [`core`] | [`core::buffer`] |
//!
//! Data is a `[channels, samples]` buffer, channel-major. Functions take a cubecl `Client`, from
//! [`dspk_core::compute::ComputeTarget`]: `ComputeTarget::from_env()?.client()?` picks the runtime
//! named by `DSPK_RUNTIME`, otherwise the first compiled in. See [`Pipeline`] for a complete
//! example.
pub use ;
pub use ;
pub use ;
pub use ;