summaryrefslogtreecommitdiff
path: root/src/emscripten_api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/emscripten_api.rs')
-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;
+ }
+ }
+}