diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2017-10-16 21:57:54 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2017-10-16 21:57:54 +0200 |
commit | 669987f0ebd01963d0eb52849fd4f16640350232 (patch) | |
tree | fadeac386fde11ad1a3c61bcd1a1495513fa8ec2 /src | |
parent | 921d14d947108dc6e8f628ffe3a179e20005928e (diff) |
Added correlation function which updated array in place
Diffstat (limited to 'src')
-rw-r--r-- | src/emscripten_api.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/emscripten_api.rs b/src/emscripten_api.rs index c371d86..0f1bcc7 100644 --- a/src/emscripten_api.rs +++ b/src/emscripten_api.rs @@ -2,10 +2,10 @@ use transforms; use std::os::raw::c_char; use std::ffi::CString; +use std::slice; #[no_mangle] pub extern "C" fn find_fundamental_frequency(signal: *const f32, signal_length: isize, sample_rate: f32) -> f32 { - use std::slice; let signal_slice = unsafe { &slice::from_raw_parts(signal, signal_length as usize) }; @@ -25,3 +25,18 @@ pub extern "C" fn hz_to_pitch(hz: f32) -> *mut c_char { .unwrap() .into_raw() } + +#[no_mangle] +pub extern "C" fn correlation(signal: *mut f32, signal_length: isize) { + let signal_slice = unsafe { + &slice::from_raw_parts(signal, signal_length as usize) + }; + + let correlated_signal = transforms::correlation(&signal_slice); + + unsafe { + for (i, cor) in correlated_signal.iter().enumerate() { + *signal.offset(i as isize) = *cor; + } + } +} |