Add midi device select.

This commit is contained in:
iandoesallthethings 2024-05-16 19:31:26 -04:00
parent 2198e87aaa
commit bc5358c0f6
9 changed files with 240 additions and 131 deletions

View file

@ -40,6 +40,9 @@ var volumeSensitivity = 0.0
var volumeLimit = 0.0
var senseLimit = 0.0
# Midi
var currentMidiDevices = []
#Speak Signals
signal startSpeaking
signal stopSpeaking

View file

@ -0,0 +1,41 @@
extends MenuButton
var popup = self.get_popup()
var available_devices = []
func _ready():
popup.hide_on_checkable_item_selection = false
popup.connect("index_pressed", toggle_checked)
available_devices = OS.get_connected_midi_inputs()
print("midiinputselect ready" + str(available_devices))
Global.currentMidiDevices = available_devices # Listen to all devices by default
func _on_about_to_popup():
popup.clear(true)
available_devices = OS.get_connected_midi_inputs() # update every open
for i in range(len(available_devices)):
popup.add_check_item(available_devices[i])
var already_checked = available_devices[i] in Global.currentMidiDevices
popup.set_item_checked(i, already_checked)
update_checked_items()
func toggle_checked(index: int):
popup.set_item_checked(index, not popup.is_item_checked(index))
update_checked_items()
func update_checked_items():
var checked_items = []
for i in range(popup.get_item_count()):
if popup.is_item_checked(i):
checked_items.append(popup.get_item_text(i))
Global.currentMidiDevices = checked_items

View file

@ -64,7 +64,7 @@ func _ready():
ElgatoStreamDeck.on_key_down.connect(changeCostumeStreamDeck)
OS.open_midi_inputs()
# print(OS.get_connected_midi_inputs())
Global.currentMidiDevices = OS.get_connected_midi_inputs()
if Saving.settings["newUser"]:
_on_load_dialog_file_selected("default")
@ -331,7 +331,6 @@ func _on_load_dialog_file_selected(path):
sprite.offset = str_to_var(data[item]["offset"])
sprite.z = data[item]["zindex"]
sprite.dragSpeed = data[item]["drag"]
sprite.useMidiWobble = data[item]["useMidiWobble"]
sprite.xFrq = data[item]["xFrq"]
sprite.xAmp = data[item]["xAmp"]

File diff suppressed because one or more lines are too long

4
midi.svg Normal file
View file

@ -0,0 +1,4 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" fill="white">
<path
d="m12 2a10 10 0 0 1 10 10 10 10 0 0 1 -10 10 10 10 0 0 1 -10-10 10 10 0 0 1 10-10m8.18 10c0-3.82-2.63-7.04-6.18-7.93v1.93h-4v-1.93c-3.55.89-6.18 4.11-6.18 7.93a8.18 8.18 0 0 0 8.18 8.18 8.18 8.18 0 0 0 8.18-8.18m-13.18-1.36a1.36 1.36 0 0 1 1.36 1.36 1.36 1.36 0 0 1 -1.36 1.36c-.75 0-1.36-.61-1.36-1.36s.61-1.36 1.36-1.36m10 0a1.36 1.36 0 0 1 1.36 1.36 1.36 1.36 0 0 1 -1.36 1.36 1.36 1.36 0 0 1 -1.36-1.36 1.36 1.36 0 0 1 1.36-1.36m-8.64 3.63a1.37 1.37 0 0 1 1.37 1.37c0 .75-.61 1.36-1.37 1.36a1.36 1.36 0 0 1 -1.36-1.36c0-.76.61-1.37 1.36-1.37m7.28 0c.75 0 1.36.61 1.36 1.37a1.36 1.36 0 0 1 -1.36 1.36c-.76 0-1.37-.61-1.37-1.36a1.37 1.37 0 0 1 1.37-1.37m-3.64 1.37a1.36 1.36 0 0 1 1.36 1.36 1.36 1.36 0 0 1 -1.36 1.36 1.36 1.36 0 0 1 -1.36-1.36 1.36 1.36 0 0 1 1.36-1.36z" />
</svg>

After

Width:  |  Height:  |  Size: 891 B

37
midi.svg.import Normal file
View file

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cauhghrw3sv2r"
path="res://.godot/imported/midi.svg-c263547cda7da4e037f0b6bf02e57d99.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://midi.svg"
dest_files=["res://.godot/imported/midi.svg-c263547cda7da4e037f0b6bf02e57d99.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View file

@ -23,6 +23,7 @@ config/icon="res://icon.png"
[audio]
driver/enable_input=true
driver/mix_rate=48000
[autoload]

View file

@ -162,7 +162,11 @@ func _ready():
func _input(event):
if self.useMidiWobble and event is InputEventMIDI:
if not self.useMidiWobble or not event is InputEventMIDI:
return
var device = OS.get_connected_midi_inputs()[event.device]
if device in Global.currentMidiDevices:
match event.message:
MIDIMessage.MIDI_MESSAGE_START:
tick = 0
@ -339,7 +343,9 @@ func drag(delta):
if dragSpeed == 0:
dragger.global_position = wob.global_position
else:
dragger.global_position = lerp(dragger.global_position, wob.global_position, 1 / dragSpeed)
dragger.global_position = lerp(
dragger.global_position, wob.global_position, 1.0 / dragSpeed
)
dragOrigin.global_position = dragger.global_position

File diff suppressed because one or more lines are too long