Skip to content

Commit

Permalink
Fix large volume jumps at very small harmonic 0.0 to 0.0001 changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ardura committed Apr 19, 2024
1 parent 30e74a7 commit 5390b69
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 16 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "Subhoofer"
version = "2.2.0"
version = "2.2.1"
edition = "2021"
authors = ["Ardura <azviscarra@gmail.com>"]
license = "GPL-3.0-or-later"
Expand Down
27 changes: 14 additions & 13 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,13 @@ fn chebyshev_tape(sample: f32, drive: f32) -> f32 {

// Modified tape saturation using transfer function from Duro Console
fn tape_saturation(input_signal: f32, drive: f32) -> f32 {
if drive == 0.0 { return 0.0; }
let idrive = drive;
// Define the transfer curve for the tape saturation effect
let transfer = |x: f32| -> f32 {
(x * idrive).tanh()
// Smoothly transition to linear function as drive approaches 0.0
let tanh_saturation = (x * idrive).tanh();
let linear_saturation = x * idrive;
tanh_saturation + (linear_saturation - tanh_saturation) * 0.5
};
// Apply the transfer curve to the input sample
let output_sample = transfer(input_signal);
Expand Down Expand Up @@ -152,13 +154,7 @@ fn b_bass_saturation(signal: f32, mut harmonic_strength: f32) -> f32 {
summed += harmonic_component;
}
}
if harmonic_strength > 0.0
{
summed - signal
}
else {
0.0
}
summed - signal
}


Expand Down Expand Up @@ -864,13 +860,18 @@ Double-click to reset");
processed_sample_r = b_bass_saturation(in_r, harmonics) + (sub_bump * sub_gain);
},
AlgorithmType::CBass => {
processed_sample_l = c_bass_saturation(in_l, harmonics) + (sub_bump * sub_gain);
processed_sample_r = c_bass_saturation(in_r, harmonics) + (sub_bump * sub_gain);
if harmonics > 0.0 {
processed_sample_l = c_bass_saturation(in_l, harmonics) + (sub_bump * sub_gain);
processed_sample_r = c_bass_saturation(in_r, harmonics) + (sub_bump * sub_gain);
} else {
processed_sample_l = sub_bump * sub_gain;
processed_sample_r = sub_bump * sub_gain;
}
}
AlgorithmType::TanH => {
// Generate tanh curve harmonics gently
processed_sample_l = tape_saturation(in_l, harmonics);
processed_sample_r = tape_saturation(in_r, harmonics);
processed_sample_l = tape_saturation(in_l, harmonics) + (sub_bump * sub_gain);
processed_sample_r = tape_saturation(in_r, harmonics) + (sub_bump * sub_gain);
},
AlgorithmType::CustomSliders => {
processed_sample_l = custom_sincos_saturation(in_l, harmonics*custom_harmonics1, harmonics*custom_harmonics2, harmonics*custom_harmonics3, harmonics*custom_harmonics4) + (sub_bump * sub_gain);
Expand Down
2 changes: 1 addition & 1 deletion target/.rustc_info.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"rustc_fingerprint":10273999674826962700,"outputs":{"12744816824612481171":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\azvis\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.77.1 (7cf61ebde 2024-03-27)\nbinary: rustc\ncommit-hash: 7cf61ebde7b22796c69757901dd346d0fe70bd97\ncommit-date: 2024-03-27\nhost: x86_64-pc-windows-msvc\nrelease: 1.77.1\nLLVM version: 17.0.6\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\azvis\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}
{"rustc_fingerprint":10273999674826962700,"outputs":{"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\azvis\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"12744816824612481171":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\azvis\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.77.1 (7cf61ebde 2024-03-27)\nbinary: rustc\ncommit-hash: 7cf61ebde7b22796c69757901dd346d0fe70bd97\ncommit-date: 2024-03-27\nhost: x86_64-pc-windows-msvc\nrelease: 1.77.1\nLLVM version: 17.0.6\n","stderr":""}},"successes":{}}

0 comments on commit 5390b69

Please sign in to comment.