Prepare Bass-Reactive patterns

This commit is contained in:
Kai Vogelgesang 2021-11-13 00:34:12 +01:00
parent 6df8a7344d
commit 63e4ced365
Signed by: kai
GPG Key ID: 0A95D3B6E62C0879
3 changed files with 24 additions and 0 deletions

View File

@ -45,6 +45,7 @@ declare module rust_native_module {
setConfig: (config: TrackerConfig) => void, setConfig: (config: TrackerConfig) => void,
tap: () => void, tap: () => void,
getProgress: () => Option<number>, getProgress: () => Option<number>,
getCurrentBass: () => number,
stop: () => Result<never>, stop: () => Result<never>,
getGraphPoints: () => GraphPoints, getGraphPoints: () => GraphPoints,
} }

View File

@ -29,6 +29,9 @@ pub fn get_beat_tracker(mut cx: FunctionContext) -> JsResult<JsObject> {
let get_progress_function = JsFunction::new(&mut cx, get_progress)?; let get_progress_function = JsFunction::new(&mut cx, get_progress)?;
value_obj.set(&mut cx, "getProgress", get_progress_function)?; 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)?; let close_function = JsFunction::new(&mut cx, close)?;
value_obj.set(&mut cx, "close", close_function)?; value_obj.set(&mut cx, "close", close_function)?;
@ -122,6 +125,18 @@ pub fn get_progress(mut cx: FunctionContext) -> JsResult<JsObject> {
Ok(obj) Ok(obj)
} }
fn get_current_bass(mut cx: FunctionContext) -> JsResult<JsNumber> {
let this = cx.this();
let boxed_tracker = this
.get(&mut cx, "_rust_ptr")?
.downcast_or_throw::<BoxedTracker, _>(&mut cx)?;
let bass = boxed_tracker.borrow().get_current_bass();
Ok(cx.number(bass))
}
fn get_graph_points(mut cx: FunctionContext) -> JsResult<JsObject> { fn get_graph_points(mut cx: FunctionContext) -> JsResult<JsObject> {
let this = cx.this(); let this = cx.this();

View File

@ -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<()> { pub fn stop(&mut self) -> Result<()> {
self.audio_capture_thread.stop() self.audio_capture_thread.stop()
} }