From 17b3c1e4231288056b794ab22771d2b3fb423984 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sun, 15 Oct 2017 21:44:15 +0200 Subject: Added emscripten calls for hz interpretation This also uncovered a weird compilation issue. Emscripten did NOT like me using the remainder operator with a floating point number. --- src/emscripten_api.rs | 24 ++++++------------------ src/transforms.rs | 2 +- 2 files changed, 7 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/emscripten_api.rs b/src/emscripten_api.rs index ec6704e..c371d86 100644 --- a/src/emscripten_api.rs +++ b/src/emscripten_api.rs @@ -1,5 +1,8 @@ use transforms; +use std::os::raw::c_char; +use std::ffi::CString; + #[no_mangle] pub extern "C" fn find_fundamental_frequency(signal: *const f32, signal_length: isize, sample_rate: f32) -> f32 { use std::slice; @@ -10,30 +13,15 @@ pub extern "C" fn find_fundamental_frequency(signal: *const f32, signal_length: transforms::find_fundamental_frequency(&signal_slice, sample_rate).unwrap_or(0.0) } -#[no_mangle] -pub extern "C" fn correlation(signal: *const f32, signal_length: isize) { - //TODO correlate inline -} - #[no_mangle] pub extern "C" fn hz_to_cents_error(hz: f32) -> f32 { - //TODO implement - 0.0 + transforms::hz_to_cents_error(hz) } -use std::os::raw::c_char; -use std::ffi::CStr; -use std::ffi::CString; - #[no_mangle] pub extern "C" fn hz_to_pitch(hz: f32) -> *mut c_char { - //TODO implement - CString::new("C 4") + let pitch = transforms::hz_to_pitch(hz); + CString::new(pitch) .unwrap() .into_raw() } - -#[no_mangle] -pub extern "C" fn align_to_rising_edge(signal: *const f32, signal_length: isize) { - //TODO format signal nicely inline -} diff --git a/src/transforms.rs b/src/transforms.rs index 55f81b6..aaae83b 100644 --- a/src/transforms.rs +++ b/src/transforms.rs @@ -169,7 +169,7 @@ fn hz_to_midi_number(hz: f32) -> f32 { pub fn hz_to_cents_error(hz: f32) -> f32 { let midi_number = hz_to_midi_number(hz); - let cents = (midi_number % 1.0) * 100.0; + let cents = (midi_number - midi_number.floor()) * 100.0; if cents >= 50.0 { cents - 100.0 } -- cgit v1.2.3