got a metronome working
This commit is contained in:
parent
6bf0b2dadc
commit
99fec4d07d
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user