diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2017-10-15 21:44:15 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2017-10-15 21:44:15 +0200 |
commit | 17b3c1e4231288056b794ab22771d2b3fb423984 (patch) | |
tree | 6ab29ad91fca570389c42713d2ca420a24a70a3d /src | |
parent | 44e8d9cee54a24367d25410f78aa10d479eda572 (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/emscripten_api.rs | 24 | ||||
-rw-r--r-- | src/transforms.rs | 2 |
2 files changed, 7 insertions, 19 deletions
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; @@ -11,29 +14,14 @@ pub extern "C" fn find_fundamental_frequency(signal: *const f32, signal_length: } #[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 } |