| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- extends GraphNode
- @export var min_gap: float = 0.5 # editable value in inspector for the minimum gap between min and max
- 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)
-
- var i = 0
- while i <= 6:
- $Note.set_item_tooltip_enabled(i, false)
- i += 1
- $Accidental.set_item_tooltip(0, "3/4 Flat")
- $Accidental.set_item_tooltip(1, "Flat")
- $Accidental.set_item_tooltip(2, "1/4 Flat")
- $Accidental.set_item_tooltip(3, "Natural")
- $Accidental.set_item_tooltip(4, "1/4 Sharp")
- $Accidental.set_item_tooltip(5, "Sharp")
- $Accidental.set_item_tooltip(6, "3/4 Sharp")
-
- $Note.select(0, true)
- $Accidental.select(3, true)
- calculate_freq()
- func _open_help():
- open_help.emit(self.get_meta("command"), self.title)
-
- func _on_item_list_item_selected(index: int) -> void:
- calculate_freq()
- func _on_item_list_2_item_selected(index: int) -> void:
- calculate_freq()
-
- const NOTE_TO_MIDI = {
- 0: 9, 1: 11, 2: 12, 3: 14, 4: 16, 5: 17, 6: 19,
- }
- const ACCIDENTAL_TO_MODIFIER = {
- 0: -1.5, 1: -1, 2: -0.5, 3: 0, 4: 0.5, 5: 1, 6: 1.5,
- }
- func calculate_freq():
- var note = $Note.get_selected_items()[0]
- var accidental = $Accidental.get_selected_items()[0]
- var freq
- var textout = ""
-
- $FreqOutput.text = ""
-
- note = NOTE_TO_MIDI.get(note, null)
- accidental = ACCIDENTAL_TO_MODIFIER.get(accidental, null)
-
- note = note + accidental
-
- freq = 440.0 * pow(2, (note - 69) / 12.0)
-
- var count = 0
-
- while count < 11:
- textout += "%.2f, " % freq
- freq = freq * 2
- count +=1
-
- $FreqOutput.text = textout
|