7个版本
0.5.6 | 2024年1月4日 |
---|---|
0.5.5 | 2022年11月1日 |
0.5.4 | 2022年8月28日 |
#253 在 音频
被 2 个crates使用
235KB
4K SLoC
synfx-dsp
synfx-dsp DSP实时音频合成、效果算法和实用工具
本库中的大部分算法和实现已针对HexoDSP实现并用于HexoSynth。由于它们在其他环境中也很有用,例如synfx-dsp-jit crate,因此我将它们提取出来。
我从各种GPLv3兼容的来源收集了本crate中的大部分算法。它们还部分翻译自多个不同的C++项目。我在此crate的注释中尽力记录了源代码和源代码许可。如果遗漏了任何归属,我将欢迎补丁或报告。
请自由使用这些算法和实用工具。如果它们符合GPL-3.0-or-later许可并且不会破坏HexoDSP的测试套件,则将赞赏帮助、补丁和添加。
注意: HexoDSP附带一个大型测试套件,它还涵盖了这些算法。而且,这些算法也要通过测试。另一方面,这些实现实际上也被测试套件所覆盖。
由于std::simd!,自2022年10月2日起需要Nightly版
版权、许可、归属、贡献
以下是从本库中复制或翻译代码的部分来源列表
- crate::quicker_tanh64 / crate::quicker_tanh
quickerTanh / quickerTanh64 credits to mopo synthesis library: Under GPLv3 or any later. Little IO <[email protected]> Matt Tytel <[email protected]>
- crate::quick_tanh64 / crate::quick_tanh
quickTanh / quickTanh64 credits to mopo synthesis library: Under GPLv3 or any later. Little IO <[email protected]> Matt Tytel <[email protected]>
- crate::tanh_approx_drive
Taken from ValleyAudio Copyright Dale Johnson https://github.dev/ValleyAudio/ValleyRackFree/tree/v2.0 Under GPLv3 license
- crate::AtomicFloat
Implementation from vst-rs https://github.com/RustAudio/vst-rs/blob/master/src/util/atomic_float.rs Under MIT License Copyright (c) 2015 Marko Mijalkovic
- crate::Biquad
The implementation of this Biquad Filter has been adapted from SamiPerttu, Copyright (c) 2020, under the MIT License. See also: https://github.com/SamiPerttu/fundsp/blob/master/src/filter.rs
- crate::DattorroReverb
This file contains a reverb implementation that is based on Jon Dattorro's 1997 reverb algorithm. It's also largely based on the C++ implementation from ValleyAudio / ValleyRackFree ValleyRackFree Copyright (C) 2020, Valley Audio Soft, Dale Johnson Adapted under the GPL-3.0-or-later License. See also: https://github.com/ValleyAudio/ValleyRackFree/blob/v1.0/src/Plateau/Dattorro.cpp and: https://github.com/ValleyAudio/ValleyRackFree/blob/v1.0/src/Plateau/Dattorro.hpp And: https://ccrma.stanford.edu/~dattorro/music.html And: https://ccrma.stanford.edu/~dattorro/EffectDesignPart1.pdf
- crate::process_1pole_lowpass / crate::process_1pole_highpass
one pole lp from valley rack free: https://github.com/ValleyAudio/ValleyRackFree/blob/v1.0/src/Common/DSP/OnePoleFilters.cpp
- crate::process_1pole_tpt_lowpass / crate::process_1pole_tpt_highpass
one pole from: http://www.willpirkle.com/Downloads/AN-4VirtualAnalogFilters.pdf (page 5)
- crate::FixedOnePole
Fixed one pole with setable pole and gain. Implementation taken from tubonitaub / alec-deason from https://github.com/alec-deason/virtual_modular/blob/4025f1ef343c2eb9cd74eac07b5350c1e7ec9c09/src/simd_graph.rs#L4292 under MIT License
- crate::process_hal_chamberlin_svf
Hal Chamberlin's State Variable (12dB/oct) filter https://www.earlevel.com/main/2003/03/02/the-digital-state-variable-filter/ Inspired by SynthV1 by Rui Nuno Capela, under the terms of GPLv2 or any later:
- crate::process_simper_svf
Simper SVF implemented from https://cytomic.com/files/dsp/SvfLinearTrapezoidalSin.pdf Big thanks go to Andrew Simper @ Cytomic for developing and publishing the paper.
- crate::process_stilson_moog
Stilson/Moog implementation partly translated from here: https://github.com/ddiakopoulos/MoogLadders/blob/master/src/MusicDSPModel.h without any copyright as found on musicdsp.org (http://www.musicdsp.org/showone.php?id=24). It's also found on MusicDSP and has probably no proper license anyways. See also: https://github.com/ddiakopoulos/MoogLadders and https://github.com/rncbc/synthv1/blob/master/src/synthv1_filter.h#L103 and https://github.com/ddiakopoulos/MoogLadders/blob/master/src/MusicDSPModel.h
- crate::DCBlockFilter
translated from Odin 2 Synthesizer Plugin Copyright (C) 2020 TheWaveWarden under GPLv3 or any later
- crate::cubic_interpolate
Hermite interpolation, take from https://github.com/eric-wood/delay/blob/main/src/delay.rs#L52 Thanks go to Eric Wood! For the interpolation code: MIT License, Copyright (c) 2021 Eric Wood
- crate::TriSawLFO
Adapted from https://github.com/ValleyAudio/ValleyRackFree/blob/v1.0/src/Common/DSP/LFO.hpp ValleyRackFree Copyright (C) 2020, Valley Audio Soft, Dale Johnson Adapted under the GPL-3.0-or-later License.
- crate::PolyBlepOscillator
PolyBLEP by Tale (slightly modified) http://www.kvraudio.com/forum/viewtopic.php?t=375517 from http://www.martin-finke.de/blog/articles/audio-plugins-018-polyblep-oscillator/
- crate::VPSOscillator
This oscillator is based on the work "VECTOR PHASESHAPING SYNTHESIS" by: Jari Kleimola*, Victor Lazzarini†, Joseph Timoney†, Vesa Välimäki* *Aalto University School of Electrical Engineering Espoo, Finland; †National University of Ireland, Maynooth Ireland See also this PDF: http://recherche.ircam.fr/pub/dafx11/Papers/55_e.pdf
- crate::Oversampling
Loosely adapted from https://github.com/VCVRack/Befaco/blob/v1/src/ChowDSP.hpp Copyright (c) 2019-2020 Andrew Belt and Befaco contributors Under GPLv-3.0-or-later Which was originally taken from https://github.com/jatinchowdhury18/ChowDSP-VCV/blob/master/src/shared/AAFilter.hpp Copyright (c) 2020 jatinchowdhury18
- crate::next_xoroshiro128
Taken from xoroshiro128 crate under MIT License Implemented by Matthew Scharley (Copyright 2016) https://github.com/mscharley/rust-xoroshiro128
- crate::u64_to_open01
Taken from rand::distributions Licensed under the Apache License, Version 2.0 Copyright 2018 Developers of the Rand project.
- crate::SplitMix64
Copyright 2018 Developers of the Rand project. Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or https://apache.ac.cn/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option. This file may not be copied, modified, or distributed except according to those terms. - splitmix64 (http://xoroshiro.di.unimi.it/splitmix64.c)
- crate::f_distort / crate::f_fold_distort
Ported from LMMS under GPLv2 * DspEffectLibrary.h - library with template-based inline-effects * Copyright (c) 2006-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net> Original source seems to be musicdsp.org, Author: Bram de Jong see also: https://www.musicdsp.org/en/latest/Effects/41-waveshaper.html
- crate::PolyIIRHalfbandFilter
Taken from va-filter by Fredemus aka Frederik Halkjær aka RocketPhysician https://github.com/Fredemus/va-filter Under License GPL-3.0-or-later originally translated from the freely available source code at https://www.musicdsp.org/en/latest/Filters/39-polyphase-filters.html
- crate::DCFilterX4
Basic 4 channel SIMD DC-filter from Understanding Digital Signal Processing by Richard Lyons. Taken from va-filter by Fredemus aka Frederik Halkjær aka RocketPhysician https://github.com/Fredemus/va-filter Under License GPL-3.0-or-later
- crate::fh_va::LadderFilter / crate::fh_va::Svf / crate::fh_va::SallenKey
Taken from va-filter by Fredemus aka Frederik Halkjær aka RocketPhysician https://github.com/Fredemus/va-filter Under License GPL-3.0-or-later
许可:GPL-3.0或更新版本
依赖项
~150KB