diff --git a/rhythm_manager.gd b/rhythm_manager.gd index a0a4334..bee9527 100644 --- a/rhythm_manager.gd +++ b/rhythm_manager.gd @@ -11,26 +11,67 @@ extends Node2D @export var tempo: int = 120 @export var beats_per_measure: int = 4 +var beats_elapsed: int = 0 +var beat_time_start: float = 0.0 +var beat_time_elapsed: float = 0.0 var seconds_per_beat: float -var seconds_elapsed: float = 0.0 +var useconds_per_beat: float +var song_time_elapsed: float = 0.0 +var total_time_elapsed: float = 0.0 +#var fmod: float var is_running: bool = false +var start_time: float +var end_time: float +var ready_time: float +var delay_time: float @onready var click_track: AudioStreamPlayer2D = %ClickTrack ## OVERRIDES func _ready() -> void: + ready_time = Time.get_ticks_usec() + print("Ready time: %s" % ready_time) + #var time_to_next_mix: float = AudioServer.get_time_to_next_mix() + #print(time_to_next_mix) + #var output_latency: float = AudioServer.get_output_latency() + #print(output_latency) + #var mix_rate: float = AudioServer.get_mix_rate() + #print(mix_rate) + #delay_time = time_to_next_mix + output_latency + #print(delay_time) seconds_per_beat = 60.0/float(tempo) - print(seconds_per_beat) + useconds_per_beat = seconds_per_beat * 1000000.0 + #print(useconds_per_beat) func _process(_delta: float) -> void: + total_time_elapsed = Time.get_ticks_usec() + #print("total time: %s" % total_time_elapsed) if is_running: - seconds_elapsed = Time.get_ticks_msec() / 1000.0 + song_time_elapsed = total_time_elapsed - start_time + #print("song time elapsed: %s" % song_time_elapsed) + beat_time_elapsed = song_time_elapsed - beat_time_start + #print("beat time elapsed: %s" % beat_time_elapsed) + #fmod = fmod(total_time_elapsed, useconds_per_beat) + #print(fmod) + if beat_time_elapsed >= useconds_per_beat: + beats_elapsed += 1 + print("that's beat %s in the books" % beats_elapsed) + beat_time_elapsed = 0.0 + beat_time_start = song_time_elapsed func _input(event: InputEvent) -> void: if event.is_action_pressed("ui_accept"): - is_running = true - click_track.play() + if is_running == false: + start_time = Time.get_ticks_usec() + print("start time: %s" % start_time) + is_running = true + click_track.play() + else: + click_track.stop() + is_running = false + end_time = Time.get_ticks_usec() + print("end_time: %s" % end_time) #func _physics_process(delta: float) -> void: #pass