107 lines
3.2 KiB
GDScript3
107 lines
3.2 KiB
GDScript3
extends Control
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
var spectrum_play
|
|
var spectrum_record
|
|
var recorder
|
|
var populated_devices
|
|
|
|
func capture_device_name_to_id(find_device_name):
|
|
var capture_devices = AudioServer.capture_get_device_list()
|
|
var current_device_id = 0
|
|
for device in capture_devices:
|
|
if device == find_device_name:
|
|
return current_device_id
|
|
current_device_id += 1
|
|
|
|
func capture_id_to_device_name(find_device_id):
|
|
var capture_devices = AudioServer.capture_get_device_list()
|
|
var current_device_id = 0
|
|
for device in capture_devices:
|
|
if current_device_id == find_device_id:
|
|
return device
|
|
current_device_id += 1
|
|
|
|
func playback_device_name_to_id(find_device_name):
|
|
var playback_devices = AudioServer.get_device_list()
|
|
var current_device_id = 0
|
|
for device in playback_devices:
|
|
if device == find_device_name:
|
|
return current_device_id
|
|
current_device_id += 1
|
|
|
|
func playback_id_to_device_name(find_device_id):
|
|
var playback_devices = AudioServer.get_device_list()
|
|
var current_device_id = 0
|
|
for device in playback_devices:
|
|
if current_device_id == find_device_id:
|
|
return device
|
|
current_device_id += 1
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
Globals.loadConfig() # noop if startup has done it.
|
|
populated_devices = false
|
|
var capture_device_list = $MarginContainer/VBoxContainer/TabContainer/Audio/GridContainer/HBoxContainer/RecordDeviceDropdown
|
|
var playback_device_list = $MarginContainer/VBoxContainer/TabContainer/Audio/GridContainer/HBoxContainer3/PlaybackDeviceDropdown
|
|
capture_device_list.clear()
|
|
playback_device_list.clear()
|
|
var capture_devices = AudioServer.capture_get_device_list()
|
|
print(capture_devices)
|
|
var current_device_id = 0
|
|
for device in capture_devices:
|
|
capture_device_list.add_item(device, current_device_id)
|
|
current_device_id += 1
|
|
if Globals.capture_device != "":
|
|
capture_device_list.select(capture_device_name_to_id(Globals.capture_device))
|
|
|
|
var playback_devices = AudioServer.get_device_list()
|
|
print(playback_devices)
|
|
current_device_id = 0
|
|
for device in playback_devices:
|
|
playback_device_list.add_item(device, current_device_id)
|
|
current_device_id += 1
|
|
if Globals.playback_device != "":
|
|
playback_device_list.select(playback_device_name_to_id(Globals.playback_device))
|
|
|
|
var idx = AudioServer.get_bus_index("Record")
|
|
recorder = AudioServer.get_bus_effect(idx, 0)
|
|
spectrum_play = AudioServer.get_bus_effect_instance(0,0)
|
|
spectrum_record = AudioServer.get_bus_effect_instance(1,1)
|
|
populated_devices = true
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
pass
|
|
|
|
|
|
func _on_Quit_pressed():
|
|
get_tree().change_scene("res://main_menu.tscn")
|
|
|
|
|
|
func _on_DecordDeviceDropdown_item_selected(index):
|
|
if !populated_devices:
|
|
return
|
|
var deviceString = capture_id_to_device_name(index)
|
|
AudioServer.capture_set_device(deviceString)
|
|
Globals.capture_device = deviceString
|
|
Globals.saveConfig()
|
|
|
|
|
|
|
|
func _on_TestPlaybackButton_pressed():
|
|
$AudioStreamPlayer.play()
|
|
|
|
|
|
func _on_PlaybackDeviceDropdown_item_selected(index):
|
|
if !populated_devices:
|
|
return
|
|
var deviceString = playback_id_to_device_name(index)
|
|
AudioServer.set_device(deviceString)
|
|
Globals.playback_device = deviceString
|
|
Globals.saveConfig()
|