60 lines
1.2 KiB
GDScript
60 lines
1.2 KiB
GDScript
extends Node
|
|
|
|
|
|
|
|
#scene changing
|
|
var _scenelist = ["res://Main.tscn", "res://oscScene.tscn"]
|
|
var _sceneidx = 0
|
|
|
|
func nextScene():
|
|
_sceneidx = (_sceneidx + 1) % _scenelist.size()
|
|
get_tree().change_scene(_scenelist[_sceneidx])
|
|
|
|
|
|
|
|
|
|
#gdpd (pd interface with godot)
|
|
var _gdpd
|
|
var _patches = []
|
|
|
|
func _ready():
|
|
_gdpd = load("res://addons/gdpd/bin/gdpd.gdns").new()
|
|
var inps = _gdpd.get_available_input_devices()
|
|
var outs = _gdpd.get_available_output_devices()
|
|
_gdpd.init_devices(inps[0], outs[0])
|
|
_gdpd.subscribe("toGodot")
|
|
|
|
func _exit_tree():
|
|
if _patches.size() != 0:
|
|
print()
|
|
print("! ======== * purging leftover opened patches ... * ======== !")
|
|
print()
|
|
for id in _patches:
|
|
_gdpd.closePatch(id)
|
|
_patches.clear()
|
|
_gdpd.stop()
|
|
|
|
func load_patch(pd_patch) -> int:
|
|
#the patch path should be the absolute one
|
|
#separate file name from directory
|
|
var patch_name = pd_patch.split("/")[-1]
|
|
var patch_dir = pd_patch.trim_suffix(patch_name)
|
|
|
|
#load patch
|
|
var id = _gdpd.openPatch(patch_name, patch_dir)
|
|
_patches.append(id)
|
|
|
|
return id
|
|
|
|
func close_patch(id):
|
|
if id in _patches:
|
|
_gdpd.closePatch(id)
|
|
_patches.erase(id)
|
|
|
|
func _process(_delta) :
|
|
while _gdpd.has_message():
|
|
var msg = _gdpd.get_next()
|
|
print(msg)
|
|
# if msg[0] == "random":
|
|
# print("r")
|