summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2017-10-16 21:57:54 +0200
committerJustin Worthe <justin@worthe-it.co.za>2017-10-16 21:57:54 +0200
commit669987f0ebd01963d0eb52849fd4f16640350232 (patch)
treefadeac386fde11ad1a3c61bcd1a1495513fa8ec2 /src
parent921d14d947108dc6e8f628ffe3a179e20005928e (diff)
Added correlation function which updated array in place
Diffstat (limited to 'src')
-rw-r--r--src/emscripten_api.rs17
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;
+ }
+ }
+}