diff --git a/rust_native_module/index.d.ts b/rust_native_module/index.d.ts index d533a43..3f23065 100644 --- a/rust_native_module/index.d.ts +++ b/rust_native_module/index.d.ts @@ -45,6 +45,7 @@ declare module rust_native_module { setConfig: (config: TrackerConfig) => void, tap: () => void, getProgress: () => Option, + getCurrentBass: () => number, stop: () => Result, getGraphPoints: () => GraphPoints, } diff --git a/rust_native_module/src/beat_tracking/mod.rs b/rust_native_module/src/beat_tracking/mod.rs index 7ad9a4a..07b44eb 100644 --- a/rust_native_module/src/beat_tracking/mod.rs +++ b/rust_native_module/src/beat_tracking/mod.rs @@ -29,6 +29,9 @@ pub fn get_beat_tracker(mut cx: FunctionContext) -> JsResult { let get_progress_function = JsFunction::new(&mut cx, get_progress)?; value_obj.set(&mut cx, "getProgress", get_progress_function)?; + let get_current_bass_function = JsFunction::new(&mut cx, get_current_bass)?; + value_obj.set(&mut cx, "getCurrentBass", get_current_bass_function)?; + let close_function = JsFunction::new(&mut cx, close)?; value_obj.set(&mut cx, "close", close_function)?; @@ -122,6 +125,18 @@ pub fn get_progress(mut cx: FunctionContext) -> JsResult { Ok(obj) } +fn get_current_bass(mut cx: FunctionContext) -> JsResult { + let this = cx.this(); + + let boxed_tracker = this + .get(&mut cx, "_rust_ptr")? + .downcast_or_throw::(&mut cx)?; + + let bass = boxed_tracker.borrow().get_current_bass(); + + Ok(cx.number(bass)) +} + fn get_graph_points(mut cx: FunctionContext) -> JsResult { let this = cx.this(); diff --git a/rust_native_module/src/beat_tracking/tracker.rs b/rust_native_module/src/beat_tracking/tracker.rs index 96c07b7..4d56b28 100644 --- a/rust_native_module/src/beat_tracking/tracker.rs +++ b/rust_native_module/src/beat_tracking/tracker.rs @@ -226,6 +226,14 @@ impl BeatTracker { } } + pub fn get_current_bass(&self) -> f32 { + self.audio_capture_thread + .get_points() + .last() + .unwrap() + .clone() + } + pub fn stop(&mut self) -> Result<()> { self.audio_capture_thread.stop() }