| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- extends GraphNode
- var ms = 1000.0
- var seconds
- var beats
- var hz
- var MIDI
- var samples
- var percent
- var bpm = 120.0
- var samplerate = 44100
- var length = 60.0
- signal open_help
- func _ready() -> void:
- #add button to title bar
- var titlebar = self.get_titlebar_hbox()
- var btn = Button.new()
- btn.text = "?"
- btn.tooltip_text = "Open help for " + self.title
- btn.connect("pressed", Callable(self, "_open_help")) #pass key (process name) when button is pressed
- titlebar.add_child(btn)
-
- $VBoxContainer/HBoxContainer7/BPMEdit.text = str(bpm)
- $VBoxContainer/HBoxContainer5/SampleRateEdit.text = str(samplerate)
- $VBoxContainer/HBoxContainer6/LengthEdit.text = str(length)
-
- calculate()
- func _open_help():
- open_help.emit(self.get_meta("command"), self.title)
- func calculate():
- seconds = ms / 1000
- beats = (seconds * bpm) / 60
- hz = 1000.0 / ms
- MIDI = 12 * (log(hz / 440) / log(2)) + 69
- samples = seconds * samplerate
- percent = (seconds / length) * 100
-
- $VBoxContainer/HBoxContainer/MsEdit.text = str(ms)
- $VBoxContainer/HBoxContainer2/SEdit.text = str(seconds)
- $VBoxContainer/HBoxContainer7/CrotchetEdit.text = str(beats)
- $VBoxContainer/HBoxContainer3/HzEdit.text = str(hz)
- $VBoxContainer/HBoxContainer4/MIDIEdit.text = str(MIDI)
- $VBoxContainer/HBoxContainer5/SampleNoEdit.text = str(samples)
- $VBoxContainer/HBoxContainer6/PercentEdit.text = str(percent)
-
- func _on_ms_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = new_text.to_float()
- calculate()
- else:
- $VBoxContainer/HBoxContainer/MsEdit.text = str(ms)
- func _on_ms_edit_focus_exited() -> void:
- _on_ms_edit_text_submitted($VBoxContainer/HBoxContainer/MsEdit.text)
- func _on_s_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = new_text.to_float() * 1000
- calculate()
- else:
- $VBoxContainer/HBoxContainer2/SEdit.text = str(seconds)
-
- func _on_s_edit_focus_exited() -> void:
- _on_s_edit_text_submitted($VBoxContainer/HBoxContainer2/SEdit.text)
-
- func _on_crotchet_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = (new_text.to_float() * 60000.0) / bpm
- calculate()
- else:
- $VBoxContainer/HBoxContainer7/CrotchetEdit.text = str(beats)
-
- func _on_crotchet_edit_focus_exited() -> void:
- _on_crotchet_edit_text_submitted($VBoxContainer/HBoxContainer7/CrotchetEdit.text)
-
- func _on_bpm_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- bpm = new_text.to_float()
- ms = (beats * 60000.0) / bpm
- calculate()
- else:
- $VBoxContainer/HBoxContainer7/BPMEdit.text = str(bpm)
-
- func _on_bpm_edit_focus_exited() -> void:
- _on_bpm_edit_text_submitted($VBoxContainer/HBoxContainer7/BPMEdit.text)
-
- func _on_hz_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = (1.0 / new_text.to_float()) * 1000
- calculate()
- else:
- $VBoxContainer/HBoxContainer3/HzEdit.text = str(hz)
- func _on_hz_edit_focus_exited() -> void:
- _on_hz_edit_text_submitted($VBoxContainer/HBoxContainer3/HzEdit.text)
-
- func _on_midi_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- var freq = 440.0 * pow(2, (new_text.to_float() - 69) / 12.0)
- ms = (1.0 / freq) * 1000
- calculate()
- else:
- $VBoxContainer/HBoxContainer4/MIDIEdit.text = str(MIDI)
-
- func _on_midi_edit_focus_exited() -> void:
- _on_midi_edit_text_submitted($VBoxContainer/HBoxContainer4/MIDIEdit.text)
-
- func _on_sample_no_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = (new_text.to_float() / samplerate) * 1000
- calculate()
- else:
- $VBoxContainer/HBoxContainer5/SampleNoEdit.text = str(samples)
-
- func _on_sample_no_edit_focus_exited() -> void:
- _on_sample_no_edit_text_submitted($VBoxContainer/HBoxContainer5/SampleNoEdit.text)
-
- func _on_sample_rate_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- samplerate = new_text.to_float()
- ms = (samples / samplerate) * 1000
- calculate()
- else:
- $VBoxContainer/HBoxContainer5/SampleRateEdit.text = str(samplerate)
-
- func _on_sample_rate_edit_focus_exited() -> void:
- _on_sample_rate_edit_text_submitted($VBoxContainer/HBoxContainer5/SampleRateEdit.text)
-
- func _on_percent_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- ms = (new_text.to_float() / 100.0) * (length * 1000)
- calculate()
- else:
- $VBoxContainer/HBoxContainer6/PercentEdit.text = str(percent)
-
- func _on_percent_edit_focus_exited() -> void:
- _on_percent_edit_text_submitted($VBoxContainer/HBoxContainer6/PercentEdit.text)
-
- func _on_length_edit_text_submitted(new_text: String) -> void:
- if new_text.is_valid_float():
- length = new_text.to_float()
- ms = (percent / 100.0) * (length * 1000)
- calculate()
- else:
- $VBoxContainer/HBoxContainer6/LengthEdit.text = str(length)
-
- func _on_length_edit_focus_exited() -> void:
- _on_length_edit_text_submitted($VBoxContainer/HBoxContainer6/LengthEdit.text)
|