+ first build

This commit is contained in:
Dooho Yi 2023-10-29 10:48:15 +09:00
parent 6960de27e5
commit f023e93c57
31 changed files with 6947 additions and 891 deletions

Binary file not shown.

View file

@ -52,6 +52,7 @@ func _exit_tree():
_gdpd.closePatch(id)
_patches.clear()
_gdpd.stop()
_gdpd.queue_free()
func load_patch(pd_patch) -> int:
#the patch path should be the absolute one

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 12) var preset = 1
export (int, 1, 12) var preset = 1
var _my_patch = "res://buoyancy/SoundBoxLying.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://buoyancy/SoundBoxLying.pd"
var _my_id = 0
func set_size(size):
@ -44,7 +46,10 @@ func set_color(color):
func _ready():
# save patch (for export)
# _save_patch()
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
@ -79,17 +84,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
#func _save_patch():
# # save patch
# # prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 12) var preset = 1
export (int, 1, 12) var preset = 1
var _my_patch = "res://buoyancy/SoundBoxLying.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://buoyancy/SoundBoxLying.pd"
var _my_id = 0
func set_param(param):
@ -23,23 +25,20 @@ func set_preset(prs):
func _ready():
# save patch (for export)
# _save_patch()
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
# send a 'individual' bang.
Global._gdpd.start_message(1)
Global._gdpd.add_symbol('bang') # there's no 'add_bang', only 'add_symbol' => add_symbol('bang') is a pseudo-bang
Global._gdpd.finish_list("fromGodot" + String(_my_id)) # send msg. individually ($0)
# listen 'player_transform_updated' event
Events.connect("player_transform_updated", self, "_on_Events_player_transform_updated")
# send 'preset'
set_preset(preset)
func _on_Events_player_transform_updated(playerpos, playerheading):
var mypos = get_global_translation()
var mypos2d = Vector2(mypos.x, mypos.z)
@ -64,17 +63,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
#func _save_patch():
# # save patch
# # prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -11,6 +11,271 @@ points = PoolVector3Array( 1, 1, 0, 1, -1, 0, 0.995106, 1, -0.0980814, 0.995106,
[node name="SoundBuoyy1" type="RigidBody"]
script = ExtResource( 2 )
use_embeded_patch = true
patch = "#N canvas 67 146 456 518 12;
#X msg 361 51 \\; pd dsp 1;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 200 408 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 361 21 loadbang;
#X obj 21 70 route bang panvol param preset;
#N canvas 52 27 1207 801 Lying 0;
#X floatatom 26 425 5 0 0 0 - - - 0;
#X obj 25 179 metro 0.25 120 permin;
#X obj 25 153 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 25 208 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 78 149 tempo \\$1 permin;
#X floatatom 78 124 5 0 300 2 BPM - - 0;
#X obj 25 234 f;
#X obj 69 233 + 1;
#X floatatom 25 282 5 0 0 0 - - - 0;
#X obj 25 305 hradio 15 1 0 16 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X obj 65 377 > 0;
#X obj 26 401 spigot;
#X obj 25 349 trigger f f;
#X obj 26 448 mtof;
#X floatatom 26 472 5 0 0 0 - - - 0;
#X obj 55 508 pack;
#X floatatom 190 213 5 0 0 1 Slew - - 0;
#X msg 55 538 \\$1 \\$2;
#X obj 55 562 line~;
#X obj 55 642 phasor~;
#X obj 125 612 *~ 1.003;
#X obj 125 642 phasor~;
#X obj 125 682 expr~ $v1 - 1;
#X obj 228 409 bob~;
#X floatatom 240 361 5 0 0 0 - - - 0;
#X floatatom 286 361 5 0 0 0 - - - 0;
#X obj 228 439 hip~ 5;
#X obj 551 795 *~ 0.1;
#X obj 331 512 delwrite~ \\$0-buffer 1000;
#X obj 331 482 *~;
#X obj 352 456 hsl 128 15 0 5 0 0 empty empty gain -2 -8 0 10 #fcfcc4 #000000 #000000 0 1;
#X obj 429 601 delread~ \\$0-buffer 10;
#X obj 475 761 *~;
#X obj 500 652 hsl 128 15 0 127 0 0 empty empty feedback -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X floatatom 497 678 5 0 0 0 - - - 0;
#X floatatom 429 578 5 0 0 0 - - - 0;
#X obj 432 558 hsl 128 15 0 127 0 0 empty empty delay -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 107 15 inlet;
#X floatatom 107 69 5 0 0 0 - - - 0;
#X floatatom 151 69 5 0 0 0 - - - 0;
#X floatatom 196 69 5 0 0 0 - - - 0;
#X floatatom 240 69 5 0 0 0 - - - 0;
#X floatatom 370 482 5 0 0 0 - - - 0;
#X floatatom 285 69 5 0 5 0 - - - 0;
#X floatatom 329 69 5 0 0 0 - - - 0;
#X floatatom 374 69 5 0 2 0 - - - 0;
#X obj 25 14 loadbang;
#X msg 25 38 1;
#X obj 595 113 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 595 34 loadbang;
#X obj 25 258 % 16;
#X floatatom 591 586 5 0 0 0 - - - 0;
#X obj 107 39 unpack f f f f f f f f, f 45;
#X floatatom 419 69 5 0 0 0 - - - 0;
#X msg 595 253 111 56 116 75 115 92 118 101 110 104 94 106 112 98 113 82;
#X obj 595 229 list trim;
#X obj 595 205 list prepend set;
#X obj 595 161 t a b;
#X msg 649 180 set;
#X obj 551 819 outlet~;
#X obj 598 292 inlet;
#X obj 157 15 r \\$0-preset;
#X obj 658 704 s \\$0-preset;
#X obj 598 332 sel 1 2 3 4 5 6 7 8 9 10 11 12, f 54;
#N canvas 0 22 450 278 (subpatch) 0;
#X array \\$0-pitches 16 float 3;
#A 0 7.32 9.26 105 9.35 9.94 8.81 9 8 9 12 62 15 15 16 16 18;
#X coords 0 127 16 0 50 50 1 0 0;
#X restore 786 143 graph;
#X obj 595 82 array set \\$0-pitches;
#X obj 595 137 array get \\$0-pitches;
#X obj 25 325 array get \\$0-pitches;
#X msg 595 58 7.32 9.26 105 9.35 9.94 8.81 9 8 9 12 62 15 15 16 16 18;
#X msg 598 386 43 1000 316 3.04 2.45 2.06 0.67 0.2;
#X msg 608 410 43 834.7 212 4.11 0.7 74.1 0.63 0.21;
#X msg 618 434 39 165.9 607.2 2.2 2.35 15.93 0.5 0.2;
#X msg 628 458 28 513 134.1 4.54 1.27 0.53 0.78 0.13;
#X msg 638 482 57 32 319.4 3.15 0.17 129.5 0.96 0.22;
#X msg 648 506 6 782 197.6 1.75 1.16 92.26 0.37 0.19;
#X msg 658 530 296 1.4 330.6 1.6 2 17.92 0.566 0.23;
#X msg 668 554 98.46 388.2 196 4 3.2 1.67 0.97 0.21;
#X msg 678 578 67.01 399 338 5.04 4.43 0.113 0.251 0.18;
#X msg 688 602 17 0 267 2.13 1 80.15 0.88 0.18;
#X msg 698 626 43 995 298 4.04 2.45 2.88 0.63 0.33;
#X msg 709 650 8.7 23.23 1.69 53.26 0.96 0.19;
#X connect 0 0 13 0;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 0 1 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 0 50 0;
#X connect 7 0 6 1;
#X connect 8 0 9 0;
#X connect 9 0 67 0;
#X connect 10 0 11 1;
#X connect 11 0 0 0;
#X connect 12 0 11 0;
#X connect 12 1 10 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 16 0 15 1;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 0 20 0;
#X connect 19 0 22 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 23 0 26 0;
#X connect 24 0 23 1;
#X connect 25 0 23 2;
#X connect 26 0 27 0;
#X connect 26 0 29 0;
#X connect 27 0 59 0;
#X connect 29 0 28 0;
#X connect 30 0 29 1;
#X connect 30 0 42 0;
#X connect 31 0 32 0;
#X connect 32 0 28 0;
#X connect 32 0 27 0;
#X connect 33 0 32 1;
#X connect 33 0 34 0;
#X connect 35 0 31 0;
#X connect 36 0 35 0;
#X connect 37 0 52 0;
#X connect 38 0 5 0;
#X connect 39 0 16 0;
#X connect 40 0 24 0;
#X connect 41 0 25 0;
#X connect 43 0 30 0;
#X connect 44 0 36 0;
#X connect 45 0 33 0;
#X connect 46 0 47 0;
#X connect 47 0 2 0;
#X connect 48 0 66 0;
#X connect 49 0 68 0;
#X connect 50 0 8 0;
#X connect 51 0 27 1;
#X connect 52 0 38 0;
#X connect 52 1 39 0;
#X connect 52 2 40 0;
#X connect 52 3 41 0;
#X connect 52 4 43 0;
#X connect 52 5 44 0;
#X connect 52 6 45 0;
#X connect 52 7 53 0;
#X connect 53 0 51 0;
#X connect 55 0 54 0;
#X connect 56 0 55 0;
#X connect 57 0 56 0;
#X connect 57 1 58 0;
#X connect 58 0 54 0;
#X connect 60 0 63 0;
#X connect 61 0 52 0;
#X connect 63 0 69 0;
#X connect 63 1 70 0;
#X connect 63 2 71 0;
#X connect 63 3 72 0;
#X connect 63 4 73 0;
#X connect 63 5 74 0;
#X connect 63 6 75 0;
#X connect 63 7 76 0;
#X connect 63 8 77 0;
#X connect 63 9 78 0;
#X connect 63 10 79 0;
#X connect 63 11 80 0;
#X connect 66 0 57 0;
#X connect 67 0 12 0;
#X connect 68 0 65 0;
#X connect 69 0 62 0;
#X connect 70 0 62 0;
#X connect 71 0 62 0;
#X connect 72 0 62 0;
#X connect 73 0 62 0;
#X connect 74 0 62 0;
#X connect 75 0 62 0;
#X connect 76 0 62 0;
#X connect 77 0 62 0;
#X connect 78 0 62 0;
#X connect 79 0 62 0;
#X connect 80 0 62 0;
#X restore 18 269 pd Lying;
#X obj 189 264 line~;
#X msg 189 240 \\$1 100;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 132 310 switch~;
#X obj 132 286 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 262 change;
#X text 89 155 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 216 max 0;
#X obj 132 238 > -0.3;
#X obj 203 336 *~;
#X connect 1 0 2 0;
#X connect 2 0 16 0;
#X connect 3 0 6 0;
#X connect 4 0 8 1;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 9 0;
#X connect 8 1 9 1;
#X connect 10 0 8 0;
#X connect 11 0 20 0;
#X connect 11 1 12 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 3 0;
#X connect 15 0 0 0;
#X connect 16 1 11 0;
#X connect 16 2 17 0;
#X connect 16 3 17 1;
#X connect 17 0 10 0;
#X connect 18 0 27 0;
#X connect 18 0 27 1;
#X connect 19 0 18 0;
#X connect 20 0 25 0;
#X connect 20 0 26 0;
#X connect 22 0 21 0;
#X connect 23 0 22 0;
#X connect 25 0 19 0;
#X connect 26 0 23 0;
#X connect 27 0 10 1;
"
[node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 1.91069e-15, 4.37114e-08, 1, 1, -4.37114e-08, 0, 4.37114e-08, 1, -4.37114e-08, 0, 0, 0 )

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 12) var preset = 1
export (int, 1, 12) var preset = 1
var _my_patch = "res://buoyancy/SoundBuoyFloating.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://buoyancy/SoundBuoyFloating.pd"
var _my_id = 0
func set_param(param):
@ -22,32 +24,21 @@ func set_preset(prs):
Global._gdpd.finish_list("fromGodot" + String(_my_id))
func _ready():
# # save patch
# # prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
# save patch (for export)
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
# send a 'individual' bang.
Global._gdpd.start_message(1)
Global._gdpd.add_symbol('bang') # there's no 'add_bang', only 'add_symbol' => add_symbol('bang') is a pseudo-bang
Global._gdpd.finish_list("fromGodot" + String(_my_id)) # send msg. individually ($0)
# listen 'player_transform_updated' event
Events.connect("player_transform_updated", self, "_on_Events_player_transform_updated")
# send 'preset'
set_preset(preset)
func _on_Events_player_transform_updated(playerpos, playerheading):
var mypos = get_global_translation()
var mypos2d = Vector2(mypos.x, mypos.z)
@ -61,7 +52,7 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
# (check)
# print(str(_my_id) +" : ("+ str(distance) +","+ str(angle) +")")
# calculate gain
var gain = max(1 - distance/audible_range_max, 0)
var gain = 1 - distance/audible_range_max
# send to the patch
Global._gdpd.start_message(3)
Global._gdpd.add_symbol("panvol")
@ -72,4 +63,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -20,5 +20,5 @@ shader_param/wave_b_dir = Vector2( 1, 1 )
shader_param/wave_c = Vector3( 1, 0.15, 14 )
shader_param/wave_c_dir = Vector2( 1, 0.5 )
shader_param/foam_level = 0.4
shader_param/time = 116.641
shader_param/time = 682.979
shader_param/noise = SubResource( 2 )

View file

@ -1,83 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ {
"base": "Spatial",
"class": "Floater",
"language": "GDScript",
"path": "res://buoyancy/ocean/Floater.gd"
} ]
_global_script_class_icons={
"Floater": ""
}
[application]
config/name="Buoyancy and Waves"
run/main_scene="res://buoyancy/ocean/Ocean.tscn"
config/icon="res://buoyancy/icon.png"
[autoload]
Global="*res://buoyancy/autoload/Global.tscn"
Events="*res://buoyancy/autoload/Events.tscn"
[input]
forward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
backward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
pause={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
sprint={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
interact={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
[physics]
common/physics_fps=144
common/physics_jitter_fix=0.191
common/enable_pause_aware_picking=true
[rendering]
environment/default_environment="res://buoyancy/default_env.tres"

View file

@ -1,87 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ {
"base": "Spatial",
"class": "Branch",
"language": "GDScript",
"path": "res://crickets/src/Branch.gd"
}, {
"base": "Spatial",
"class": "Branch2",
"language": "GDScript",
"path": "res://crickets/src/Branch2.gd"
}, {
"base": "Spatial",
"class": "Leaves",
"language": "GDScript",
"path": "res://crickets/src/Leave.gd"
}, {
"base": "Spatial",
"class": "PolyTree",
"language": "GDScript",
"path": "res://crickets/src/Tree.gd"
}, {
"base": "Spatial",
"class": "PolyTree2",
"language": "GDScript",
"path": "res://crickets/src/Tree2.gd"
} ]
_global_script_class_icons={
"Branch": "",
"Branch2": "",
"Leaves": "",
"PolyTree": "",
"PolyTree2": ""
}
[application]
config/name="Procedural Trees"
run/main_scene="res://crickets/src/Sandbox.tscn"
[autoload]
Global="*res://crickets/Global.tscn"
Events="*res://crickets/Events.tscn"
[input]
move_forward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
[rendering]
quality/reflections/texture_array_reflections=false
quality/reflections/high_quality_ggx=false
environment/default_environment="res://crickets/default_env.tres"

View file

@ -1,14 +1,336 @@
extends Spatial
class_name PolyTree
export (String, MULTILINE) var patch = "res://crickets/cricket.pd"
export (float, 0, 100) var audible_range_max = 30.0
export (float, 1, 32) var preset = 1
export (int, 1, 32) var preset = 1
var _my_patch = "res://crickets/cricket.pd"
export (bool) var use_embeded_patch = true
export (String, MULTILINE) var patch = """#N canvas 0 82 1045 747 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 407 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 21 70 route bang panvol param preset;
#X obj 20 470 *~;
#X obj 38 446 vline~;
#X msg 38 422 0 \\, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \\; pd dsp 1;
#N canvas 0 23 1440 807 synth 0;
#X obj 334 43 inlet;
#X obj 254 630 +~ 1;
#X obj 254 658 *~ 50;
#X obj 572 671 *~;
#X obj 95 350 metro 0.5 120 permin;
#X obj 95 380 bng 16 250 50 0 empty empty empty 0 -12 0 16 #fcfcfc #000000 #000000;
#X obj 21 192 tgl 24 0 empty empty empty 0 -12 0 16 #fcfcfc #000000 #000000 0 1;
#X msg 95 310 tempo \\$1 permin;
#X floatatom 95 281 5 0 0 1 bpm - - 0;
#X obj 95 407 f;
#X obj 141 407 + 1;
#X floatatom 95 437 5 0 0 0 - - - 0;
#X obj 95 526 bng 16 250 50 0 empty empty empty 0 -16 0 24 #fcfcfc #000000 #000000;
#X obj 122 526 bng 16 250 50 0 empty empty empty 0 -16 0 24 #fcfcfc #000000 #000000;
#X obj 149 526 bng 16 250 50 0 empty empty empty 0 -16 0 24 #fcfcfc #000000 #000000;
#X floatatom 95 563 5 0 0 0 - - - 0;
#X obj 95 602 sel 0;
#X obj 127 632 mtof;
#X obj 127 750 line~;
#X msg 127 721 \\$1 \\$2;
#X obj 127 694 pack;
#X floatatom 127 668 5 0 0 0 - - - 0;
#X floatatom 171 606 5 0 0 1 ramp - - 0;
#X floatatom 458 475 5 0 0 1 AM - - 0;
#X obj 404 594 expr~ ($v1+1)/2;
#X obj 404 622 expr~ 1-$v1;
#X obj 404 649 *~;
#X floatatom 275 476 5 0 3 1 VolAM - - 0;
#X obj 493 721 *~;
#X obj 404 561 osc~;
#X obj 254 605 osc~ 440;
#X obj 275 452 line;
#X msg 95 243 10;
#X msg 133 244 20;
#X msg 170 243 30;
#X msg 210 243 40;
#X obj 275 315 random 3;
#X obj 275 339 sel 0 1 2;
#X obj 95 171 random 4;
#X obj 95 209 sel 0 1 2 3;
#X obj 95 111 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 95 140 metro 3000;
#X msg 238 513 1 200;
#X msg 315 415 0 1800;
#X obj 180 526 bng 16 250 50 0 empty empty empty 0 -16 0 24 #fcfcfc #000000 #000000;
#X floatatom 200 563 5 0 0 0 - - - 0;
#X obj 95 496 sel 0 1 2 3 4 5;
#X obj 95 466 mod 6;
#X obj 430 225 osc~;
#X obj 430 253 +~ 1;
#X obj 430 309 snapshot~;
#X obj 504 266 metro 100;
#X obj 506 231 tgl 20 0 empty empty empty 0 -16 0 24 #fcfcfc #000000 #000000 0 1;
#X obj 433 338 hsl 100 18 0 300 0 0 empty empty empty -2 -16 0 24 #fcfcfc #000000 #000000 0 1;
#X floatatom 430 367 5 0 0 0 - - - 0;
#X floatatom 404 537 5 0 0 0 - - - 0;
#X obj 404 513 +;
#X obj 430 279 *~ 150;
#X obj 20 136 loadbang;
#X msg 21 159 1;
#X obj 95 11 loadbang;
#X msg 95 51 1;
#X obj 507 170 loadbang;
#X msg 508 193 1;
#X floatatom 388 117 5 0 0 0 - - - 0;
#X floatatom 430 117 5 0 0 0 - - - 0;
#X floatatom 305 117 5 0 0 0 - - - 0;
#X floatatom 347 117 5 0 0 0 - - - 0;
#X obj 334 74 unpack f f f f f;
#X floatatom 589 117 5 0 0 0 - - - 0;
#X obj 206 40 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 206 88 t b b;
#X obj 341 225 +;
#X floatatom 341 249 5 0 0 0 - - - 0;
#X obj 206 136 * 10;
#X obj 206 112 random 4;
#X obj 206 64 metro 3000;
#X obj 254 691 tabread~ \\$0-shaping;
#N canvas 0 22 450 278 (subpatch) 0;
#X array \\$0-shaping 100 float 1;
#A 0 0.159999 0.159999 0.159999 0.159999 0.159999 0.159999 0.159999 0.159999 0.159999 0.15 0.14 0.14 0.13 0.12 0.110001 0.110001 0.110001 0.100001 0.100001 0.100001 0.100001 0.100001 0.0900012 0.0900012 0.0900012 0.0800015 0.060002 0.0500022 7.15256e-07 -0.0399983 -0.0599978 -0.0899971 -0.119996 -0.134996 -0.159995 -0.189995 -0.209994 -0.229994 -0.249993 -0.269993 -0.299992 -0.339991 -0.35999 -0.38999 -0.429989 -0.479987 -0.509987 -0.519986 -0.489987 -0.459988 -0.439988 -0.419989 -0.37999 -0.329991 -0.299992 -0.269993 -0.249993 -0.219994 -0.199994 -0.179995 -0.169995 -0.159995 -0.129996 -0.109997 -0.0799973 -0.0699975 -0.049998 -0.0399983 -0.0199988 7.15256e-07 0.0100005 0.0200002 0.03 0.03 0.03 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.0399997 0.03 0.03 0.0200002 0.0100005 0.0100005 7.15256e-07 -0.00999904 -0.00999904 -0.00999904;
#X coords 0 -1 100 1 200 200 1 0 0;
#X restore 676 38 graph;
#X obj 394 43 r \\$0-preset;
#X obj 697 720 s \\$0-preset;
#X obj 630 241 inlet;
#X obj 630 265 sel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
#X msg 275 367 0 2200;
#X msg 295 391 0 2000;
#X msg 770 305 1 -2 3596 30 0.5;
#X msg 770 329 -1 1 2789 80 0.6;
#X msg 770 353 2 -5 1839 30 0.4;
#X msg 770 377 2 -5 1220 60 0.5;
#X msg 770 401 -3 2 1615 10 0.5;
#X msg 770 425 4 -7 2380 100 0.5;
#X msg 770 449 -7 -2 3996 30 0.7;
#X msg 769 473 1 7 11086 390 0.6;
#X msg 771 498 1 -9 9 10 0.5;
#X msg 770 521 2 4 12644 1962 0.7;
#X msg 770 545 -1 -11 11200 120 0.7;
#X msg 770 569 -1 -1 -11111 90 0.6;
#X msg 770 593 -2 2 1 -10 0.5;
#X msg 770 617 -1 -2 -20 60 0.6;
#X msg 770 641 1 -2 100 10 0.4;
#X msg 770 665 1 7 11086 390 0.6;
#X obj 571 724 outlet~;
#X connect 0 0 68 0;
#X connect 1 0 2 0;
#X connect 2 0 77 0;
#X connect 3 0 101 0;
#X connect 4 0 5 0;
#X connect 5 0 9 0;
#X connect 6 0 4 0;
#X connect 7 0 4 0;
#X connect 8 0 7 0;
#X connect 9 0 10 0;
#X connect 9 0 11 0;
#X connect 10 0 9 1;
#X connect 11 0 47 0;
#X connect 12 0 15 0;
#X connect 13 0 36 0;
#X connect 15 0 16 0;
#X connect 16 1 17 0;
#X connect 17 0 21 0;
#X connect 18 0 30 0;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 21 0 20 0;
#X connect 22 0 20 1;
#X connect 23 0 56 1;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X connect 26 0 28 1;
#X connect 27 0 26 1;
#X connect 28 0 3 0;
#X connect 29 0 24 0;
#X connect 30 0 1 0;
#X connect 31 0 27 0;
#X connect 32 0 8 0;
#X connect 33 0 8 0;
#X connect 34 0 8 0;
#X connect 35 0 8 0;
#X connect 36 0 37 0;
#X connect 37 0 83 0;
#X connect 37 1 84 0;
#X connect 37 2 43 0;
#X connect 38 0 39 0;
#X connect 39 0 32 0;
#X connect 39 1 33 0;
#X connect 39 2 34 0;
#X connect 39 3 35 0;
#X connect 40 0 41 0;
#X connect 41 0 38 0;
#X connect 42 0 31 0;
#X connect 43 0 31 0;
#X connect 44 0 45 0;
#X connect 44 0 42 0;
#X connect 45 0 16 0;
#X connect 46 0 12 0;
#X connect 46 1 13 0;
#X connect 46 2 14 0;
#X connect 46 5 44 0;
#X connect 47 0 46 0;
#X connect 48 0 49 0;
#X connect 49 0 57 0;
#X connect 50 0 53 0;
#X connect 51 0 50 0;
#X connect 52 0 51 0;
#X connect 53 0 54 0;
#X connect 54 0 56 0;
#X connect 55 0 29 0;
#X connect 56 0 55 0;
#X connect 57 0 50 0;
#X connect 58 0 59 0;
#X connect 59 0 6 0;
#X connect 60 0 61 0;
#X connect 60 0 70 0;
#X connect 61 0 40 0;
#X connect 62 0 63 0;
#X connect 63 0 52 0;
#X connect 64 0 56 1;
#X connect 64 0 72 0;
#X connect 65 0 48 0;
#X connect 66 0 15 0;
#X connect 67 0 45 0;
#X connect 68 0 66 0;
#X connect 68 1 67 0;
#X connect 68 2 64 0;
#X connect 68 3 65 0;
#X connect 68 4 69 0;
#X connect 69 0 3 1;
#X connect 70 0 76 0;
#X connect 71 0 75 0;
#X connect 71 1 64 0;
#X connect 72 0 73 0;
#X connect 73 0 56 1;
#X connect 74 0 72 1;
#X connect 75 0 74 0;
#X connect 76 0 71 0;
#X connect 77 0 28 0;
#X connect 79 0 68 0;
#X connect 81 0 82 0;
#X connect 82 0 85 0;
#X connect 82 1 86 0;
#X connect 82 2 87 0;
#X connect 82 3 88 0;
#X connect 82 4 89 0;
#X connect 82 5 90 0;
#X connect 82 6 91 0;
#X connect 82 7 92 0;
#X connect 82 8 94 0;
#X connect 82 9 95 0;
#X connect 82 10 96 0;
#X connect 82 11 97 0;
#X connect 82 12 98 0;
#X connect 82 13 99 0;
#X connect 82 14 100 0;
#X connect 82 15 93 0;
#X connect 83 0 31 0;
#X connect 84 0 31 0;
#X connect 85 0 80 0;
#X connect 86 0 80 0;
#X connect 87 0 80 0;
#X connect 88 0 80 0;
#X connect 89 0 80 0;
#X connect 90 0 80 0;
#X connect 91 0 80 0;
#X connect 92 0 80 0;
#X connect 93 0 80 0;
#X connect 94 0 80 0;
#X connect 95 0 80 0;
#X connect 96 0 80 0;
#X connect 97 0 80 0;
#X connect 98 0 80 0;
#X connect 99 0 80 0;
#X connect 100 0 80 0;
#X restore 40 300 pd synth;
#X obj 203 339 *~;
#X obj 189 264 line~;
#X msg 189 240 \\$1 100;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 132 310 switch~;
#X obj 132 286 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 262 change;
#X text 89 155 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 216 max 0;
#X obj 132 238 > -0.3;
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 26 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 16 0 14 0;
#X connect 16 1 10 0;
#X connect 16 2 22 0;
#X connect 16 3 22 1;
#X connect 18 0 17 1;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 22 0 9 0;
#X connect 23 0 9 1;
#X connect 24 0 23 0;
#X connect 24 0 23 1;
#X connect 25 0 24 0;
#X connect 26 0 31 0;
#X connect 26 0 32 0;
#X connect 28 0 27 0;
#X connect 29 0 28 0;
#X connect 31 0 25 0;
#X connect 32 0 29 0;
"""
var _my_patch = "user://crickets/cricket.pd"
var _my_id = 0
func set_size(size):
@ -47,13 +369,16 @@ func set_color(color):
$MeshInstance.material_override.albedo_color = color
func _ready():
add_child(Branch.new(Leaves.new(2)))
# save patch (for export)
# _save_patch()
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
add_child(Branch.new(Leaves.new(2)))
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
# listen 'player_transform_updated' event
@ -86,4 +411,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -1,14 +1,265 @@
extends Spatial
class_name PolyTree2
export (String, MULTILINE) var patch = "res://crickets/wind.pd"
export (float, 0, 100) var audible_range_max = 40.0
export (float, 1, 16) var preset = 1
export (int, 1, 16) var preset = 1
var _my_patch = "res://crickets/wind.pd"
export (bool) var use_embeded_patch = true
export (String, MULTILINE) var patch = """#N canvas 0 82 446 513 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 407 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 21 70 route bang panvol param preset;
#X obj 20 470 *~;
#X obj 38 446 vline~;
#X msg 38 422 0 \\, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \\; pd dsp 1;
#N canvas 478 23 962 799 synth 0;
#X obj 403 150 inlet;
#X obj 404 553 +;
#X floatatom 457 224 5 0 0 0 - - - 0;
#X floatatom 499 224 5 0 0 0 - - - 0;
#X floatatom 374 224 5 0 0 0 - - - 0;
#X floatatom 416 224 5 0 0 0 - - - 0;
#X obj 403 181 unpack f f f f f;
#X floatatom 544 224 5 0 0 0 - - - 0;
#X obj 463 150 r \\$0-preset;
#X obj 697 720 s \\$0-preset;
#X obj 630 241 inlet;
#X obj 630 265 sel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
#X obj 243 375 mtof;
#X floatatom 243 352 5 0 150 0 - \\$0-pit - 0;
#X obj 234 322 noise~;
#X floatatom 243 400 5 0 0 0 - - - 0;
#X obj 234 458 bp~;
#X text 275 460 band-pass filter;
#X text 288 400 <= cutoff (Hertz);
#X obj 302 557 *~;
#X obj 401 552 hsl 60 19 0 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 345 342 line;
#X floatatom 299 440 5 0 0 0 - - - 0;
#X obj 280 167 random 3;
#X obj 280 191 sel 0 1 2;
#X obj 354 278 pack 0 0;
#X msg 352 312 \\$1 \\$2;
#X obj 185 197 + 500;
#X floatatom 403 592 5 0 0 0 - - - 0;
#X obj 185 170 random 800;
#X obj 301 602 outlet~;
#X msg 770 305 915 987 1070 290 0.8;
#X msg 770 329 103 126 205 10 0.8;
#X msg 770 353 260 366 317 61 0.8;
#X msg 771 378 123 80 184 22 0.9;
#X msg 770 401 1833 1998 2100 272 0.7;
#X msg 770 425 415 498 286 323 0.9;
#X msg 770 449 1567 1648 1606 323 0.8;
#X msg 770 473 195 186 150 102 0.9;
#X msg 771 498 219 294 279 269 1;
#X msg 770 521 330 305 354 31 0.7;
#X msg 770 545 92 55 66 22 0.8;
#X msg 770 569 37 43 22 9 0.9;
#X msg 770 593 3183 3117 3224 538 0.6;
#X msg 770 617 2878 2589 2357 996 0.6;
#X msg 770 641 378 396 267 996 0.8;
#X msg 770 665 538 567 735 191 0.7;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 202 74 pd retro;
#X obj 202 7 loadbang;
#X obj 202 31 t b b;
#X msg 280 50 500 2500;
#X obj 202 119 t b b;
#X connect 0 0 6 0;
#X connect 2 0 25 0;
#X connect 3 0 22 0;
#X connect 4 0 25 0;
#X connect 5 0 25 0;
#X connect 6 0 4 0;
#X connect 6 1 5 0;
#X connect 6 2 2 0;
#X connect 6 3 3 0;
#X connect 6 4 7 0;
#X connect 7 0 20 0;
#X connect 8 0 6 0;
#X connect 10 0 11 0;
#X connect 11 0 31 0;
#X connect 11 1 32 0;
#X connect 11 2 33 0;
#X connect 11 3 34 0;
#X connect 11 4 35 0;
#X connect 11 5 36 0;
#X connect 11 6 37 0;
#X connect 11 7 38 0;
#X connect 11 8 40 0;
#X connect 11 9 41 0;
#X connect 11 10 42 0;
#X connect 11 11 43 0;
#X connect 11 12 44 0;
#X connect 11 13 45 0;
#X connect 11 14 46 0;
#X connect 11 15 39 0;
#X connect 12 0 15 0;
#X connect 13 0 12 0;
#X connect 14 0 16 0;
#X connect 15 0 16 1;
#X connect 16 0 19 0;
#X connect 19 0 30 0;
#X connect 20 0 19 1;
#X connect 20 0 28 0;
#X connect 21 0 15 0;
#X connect 22 0 16 2;
#X connect 23 0 24 0;
#X connect 24 0 4 0;
#X connect 24 1 5 0;
#X connect 24 2 2 0;
#X connect 25 0 26 0;
#X connect 26 0 21 0;
#X connect 27 0 25 1;
#X connect 29 0 27 0;
#X connect 31 0 9 0;
#X connect 32 0 9 0;
#X connect 33 0 9 0;
#X connect 34 0 9 0;
#X connect 35 0 9 0;
#X connect 36 0 9 0;
#X connect 37 0 9 0;
#X connect 38 0 9 0;
#X connect 39 0 9 0;
#X connect 40 0 9 0;
#X connect 41 0 9 0;
#X connect 42 0 9 0;
#X connect 43 0 9 0;
#X connect 44 0 9 0;
#X connect 45 0 9 0;
#X connect 46 0 9 0;
#X connect 47 0 51 0;
#X connect 48 0 49 0;
#X connect 49 0 47 0;
#X connect 49 1 50 0;
#X connect 50 0 47 1;
#X connect 51 0 23 0;
#X connect 51 1 29 0;
#X restore 40 300 pd synth;
#X obj 208 330 *~;
#X obj 189 264 line~;
#X msg 189 240 \\$1 100;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 132 310 switch~;
#X obj 132 286 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 262 change;
#X text 89 155 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 216 max 0;
#X obj 132 238 > -0.3;
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 26 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 16 0 14 0;
#X connect 16 1 10 0;
#X connect 16 2 22 0;
#X connect 16 3 22 1;
#X connect 18 0 17 1;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 22 0 9 0;
#X connect 23 0 9 1;
#X connect 24 0 23 0;
#X connect 24 0 23 1;
#X connect 25 0 24 0;
#X connect 26 0 31 0;
#X connect 26 0 32 0;
#X connect 28 0 27 0;
#X connect 29 0 28 0;
#X connect 31 0 25 0;
#X connect 32 0 29 0;
"""
var _my_patch = "user://crickets/wind.pd"
var _my_id = 0
func set_size(size):
@ -47,9 +298,16 @@ func set_color(color):
$MeshInstance.material_override.albedo_color = color
func _ready():
add_child(Branch2.new(Leaves.new(2)))
# save patch (for export)
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
# listen 'player_transform_updated' event
@ -82,4 +340,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -41,40 +41,37 @@
#X obj 38 398 loadbang;
#X msg 361 51 \; pd dsp 1;
#N canvas 478 23 962 799 synth 0;
#X obj 403 110 inlet;
#X obj 404 513 +;
#X floatatom 457 184 5 0 0 0 - - - 0;
#X floatatom 499 184 5 0 0 0 - - - 0;
#X floatatom 374 184 5 0 0 0 - - - 0;
#X floatatom 416 184 5 0 0 0 - - - 0;
#X obj 403 141 unpack f f f f f;
#X floatatom 544 184 5 0 0 0 - - - 0;
#X obj 463 110 r \$0-preset;
#X obj 403 150 inlet;
#X obj 404 553 +;
#X floatatom 457 224 5 0 0 0 - - - 0;
#X floatatom 499 224 5 0 0 0 - - - 0;
#X floatatom 374 224 5 0 0 0 - - - 0;
#X floatatom 416 224 5 0 0 0 - - - 0;
#X obj 403 181 unpack f f f f f;
#X floatatom 544 224 5 0 0 0 - - - 0;
#X obj 463 150 r \$0-preset;
#X obj 697 720 s \$0-preset;
#X obj 630 241 inlet;
#X obj 630 265 sel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
#X obj 243 335 mtof;
#X floatatom 243 312 5 0 150 0 - \$0-pit - 0;
#X obj 234 282 noise~;
#X floatatom 243 360 5 0 0 0 - - - 0;
#X obj 234 418 bp~;
#X text 275 420 band-pass filter;
#X text 288 360 <= cutoff (Hertz);
#X obj 302 517 *~;
#X obj 401 512 hsl 60 19 0 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 345 302 line;
#X floatatom 299 400 5 0 0 0 - - - 0;
#X obj 279 42 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 280 127 random 3;
#X obj 280 151 sel 0 1 2;
#X obj 354 238 pack 0 0;
#X msg 352 272 \$1 \$2;
#X obj 185 157 + 500;
#X obj 248 12 loadbang;
#X floatatom 403 552 5 0 0 0 - - - 0;
#X obj 185 130 random 800;
#X obj 280 72 retro 500 2500;
#X obj 301 562 outlet~;
#X obj 243 375 mtof;
#X floatatom 243 352 5 0 150 0 - \$0-pit - 0;
#X obj 234 322 noise~;
#X floatatom 243 400 5 0 0 0 - - - 0;
#X obj 234 458 bp~;
#X text 275 460 band-pass filter;
#X text 288 400 <= cutoff (Hertz);
#X obj 302 557 *~;
#X obj 401 552 hsl 60 19 0 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 345 342 line;
#X floatatom 299 440 5 0 0 0 - - - 0;
#X obj 280 167 random 3;
#X obj 280 191 sel 0 1 2;
#X obj 354 278 pack 0 0;
#X msg 352 312 \$1 \$2;
#X obj 185 197 + 500;
#X floatatom 403 592 5 0 0 0 - - - 0;
#X obj 185 170 random 800;
#X obj 301 602 outlet~;
#X msg 770 305 915 987 1070 290 0.8;
#X msg 770 329 103 126 205 10 0.8;
#X msg 770 353 260 366 317 61 0.8;
@ -91,11 +88,59 @@
#X msg 770 617 2878 2589 2357 996 0.6;
#X msg 770 641 378 396 267 996 0.8;
#X msg 770 665 538 567 735 191 0.7;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 202 74 pd retro;
#X obj 202 7 loadbang;
#X obj 202 31 t b b;
#X msg 280 50 500 2500;
#X obj 202 119 t b b;
#X connect 0 0 6 0;
#X connect 2 0 26 0;
#X connect 2 0 25 0;
#X connect 3 0 22 0;
#X connect 4 0 26 0;
#X connect 5 0 26 0;
#X connect 4 0 25 0;
#X connect 5 0 25 0;
#X connect 6 0 4 0;
#X connect 6 1 5 0;
#X connect 6 2 2 0;
@ -104,44 +149,43 @@
#X connect 7 0 20 0;
#X connect 8 0 6 0;
#X connect 10 0 11 0;
#X connect 11 0 34 0;
#X connect 11 1 35 0;
#X connect 11 2 36 0;
#X connect 11 3 37 0;
#X connect 11 4 38 0;
#X connect 11 5 39 0;
#X connect 11 6 40 0;
#X connect 11 7 41 0;
#X connect 11 8 43 0;
#X connect 11 9 44 0;
#X connect 11 10 45 0;
#X connect 11 11 46 0;
#X connect 11 12 47 0;
#X connect 11 13 48 0;
#X connect 11 14 49 0;
#X connect 11 15 42 0;
#X connect 11 0 31 0;
#X connect 11 1 32 0;
#X connect 11 2 33 0;
#X connect 11 3 34 0;
#X connect 11 4 35 0;
#X connect 11 5 36 0;
#X connect 11 6 37 0;
#X connect 11 7 38 0;
#X connect 11 8 40 0;
#X connect 11 9 41 0;
#X connect 11 10 42 0;
#X connect 11 11 43 0;
#X connect 11 12 44 0;
#X connect 11 13 45 0;
#X connect 11 14 46 0;
#X connect 11 15 39 0;
#X connect 12 0 15 0;
#X connect 13 0 12 0;
#X connect 14 0 16 0;
#X connect 15 0 16 1;
#X connect 16 0 19 0;
#X connect 19 0 33 0;
#X connect 19 0 30 0;
#X connect 20 0 19 1;
#X connect 20 0 30 0;
#X connect 20 0 28 0;
#X connect 21 0 15 0;
#X connect 22 0 16 2;
#X connect 23 0 32 0;
#X connect 24 0 25 0;
#X connect 25 0 4 0;
#X connect 25 1 5 0;
#X connect 25 2 2 0;
#X connect 26 0 27 0;
#X connect 27 0 21 0;
#X connect 28 0 26 1;
#X connect 29 0 23 0;
#X connect 31 0 28 0;
#X connect 32 0 24 0;
#X connect 32 0 31 0;
#X connect 23 0 24 0;
#X connect 24 0 4 0;
#X connect 24 1 5 0;
#X connect 24 2 2 0;
#X connect 25 0 26 0;
#X connect 26 0 21 0;
#X connect 27 0 25 1;
#X connect 29 0 27 0;
#X connect 31 0 9 0;
#X connect 32 0 9 0;
#X connect 33 0 9 0;
#X connect 34 0 9 0;
#X connect 35 0 9 0;
#X connect 36 0 9 0;
@ -155,9 +199,13 @@
#X connect 44 0 9 0;
#X connect 45 0 9 0;
#X connect 46 0 9 0;
#X connect 47 0 9 0;
#X connect 48 0 9 0;
#X connect 49 0 9 0;
#X connect 47 0 51 0;
#X connect 48 0 49 0;
#X connect 49 0 47 0;
#X connect 49 1 50 0;
#X connect 50 0 47 1;
#X connect 51 0 23 0;
#X connect 51 1 29 0;
#X restore 40 300 pd synth;
#X obj 208 330 *~;
#X obj 189 264 line~;

View file

@ -7,7 +7,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="./Sands and Waves (cosmic runner).dmg"
export_path="./Sand and Receive.dmg"
script_export_mode=1
script_encryption_key=""
@ -18,7 +18,7 @@ custom_template/release=""
application/name=""
application/info="Made with Godot Engine"
application/icon=""
application/identifier="org.sandreceive.cosmicrunner"
application/identifier="org.sandreceive.sandandreceive"
application/signature=""
application/app_category="Games"
application/short_version="1.0"

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 12) var preset = 0
export (int, 1, 12) var preset = 0
var _my_patch = "res://mirrors/WooWang.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://mirrors/WooWang.pd"
var _my_id = 0
func set_size(size):
@ -44,7 +46,10 @@ func set_color(color):
func _ready():
# save patch (for export)
# _save_patch()
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
@ -79,17 +84,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
#func _save_patch():
# # save patch
# # prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -18,6 +18,232 @@ collision_mask = 0
physics_material_override = SubResource( 3 )
gravity_scale = 0.0
script = ExtResource( 1 )
use_embeded_patch = true
patch = "#N canvas 80 207 548 621 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 407 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X msg 361 81 \\; pd dsp 1;
#X obj 21 70 route bang panvol param preset;
#X obj 361 45 del 300;
#N canvas 0 23 1014 927 Ww 0;
#X obj 542 128 inlet;
#X obj 487 678 s \\$0-preset;
#X obj 542 168 sel 1 2 3 4 5 6 7 8 9 10 11 12, f 65;
#X msg 542 222 47.97 62 60 67 0.6 0.3;
#X msg 552 246 114 120 158 183 0.55 0.3;
#X msg 562 270 223 126 166 217 0.62 0.73;
#X msg 572 294 101 399 250 96.57 0.43 1.03;
#X msg 582 318 64 108 109 46 0.5 8.99;
#X msg 592 342 69 251 281 311 0.22 3.21;
#X msg 602 366 387 328 296 378 0.31 0.38;
#X msg 612 390 32 120 276.3 74 0.32 0.3;
#X msg 622 414 220 251 280 310 0.31 0.35;
#X msg 632 438 73 87 97 132 0.37 0.79;
#X msg 642 462 595.8 65.23 135 471 0.36 0.22;
#X msg 652 486 66 128 112 127 0.3 2.42;
#X obj 111 788 *~ 0.1;
#X obj 133 490 rpole~;
#X obj 133 465 rzero_rev~;
#X obj 133 539 rpole~;
#X obj 133 514 rzero_rev~;
#X obj 133 587 rpole~;
#X obj 133 562 rzero_rev~;
#X obj 133 636 rpole~;
#X obj 133 611 rzero_rev~;
#X obj 121 663 +~;
#X obj 242 399 phasor~ 0.3;
#X obj 242 426 expr~ 1 - 0.03 - 0.6*abs($v1-0.5)*abs($v1-0.5);
#X obj 29 207 -~ 0.5;
#X obj 28 251 clip~ -0.5 0.5;
#X obj 29 279 cos~;
#X obj 162 365 hip~ 5;
#X obj 29 232 *~ 3;
#X obj 28 179 phasor~ 220;
#X obj 162 202 -~ 0.5;
#X obj 162 251 clip~ -0.5 0.5;
#X obj 162 274 cos~;
#X obj 162 227 *~ 3;
#X obj 297 205 -~ 0.5;
#X obj 297 254 clip~ -0.5 0.5;
#X obj 297 277 cos~;
#X obj 297 230 *~ 3;
#X obj 432 205 -~ 0.5;
#X obj 432 254 clip~ -0.5 0.5;
#X obj 432 277 cos~;
#X obj 432 230 *~ 3;
#X obj 162 179 phasor~ 251;
#X obj 297 182 phasor~ 281;
#X obj 432 182 phasor~ 311;
#X obj 162 398 *~ 0.2;
#X floatatom 29 153 5 0 0 0 - - - 0;
#X floatatom 163 153 5 0 0 0 - - - 0;
#X floatatom 297 155 5 0 0 0 - - - 0;
#X floatatom 433 155 5 0 0 0 - - - 0;
#X obj 115 14 inlet;
#X floatatom 154 738 5 0 0 0 - - - 0;
#X obj 111 760 *~;
#X floatatom 235 151 5 0 0 0 - - - 0;
#X obj 116 40 unpack f f f f f f;
#X obj 164 13 r \\$0-preset;
#X obj 111 812 outlet~;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 4 0;
#X connect 2 2 5 0;
#X connect 2 3 6 0;
#X connect 2 4 7 0;
#X connect 2 5 8 0;
#X connect 2 6 9 0;
#X connect 2 7 10 0;
#X connect 2 8 11 0;
#X connect 2 9 12 0;
#X connect 2 10 13 0;
#X connect 2 11 14 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 1 0;
#X connect 10 0 1 0;
#X connect 11 0 1 0;
#X connect 12 0 1 0;
#X connect 13 0 1 0;
#X connect 14 0 1 0;
#X connect 15 0 59 0;
#X connect 16 0 19 0;
#X connect 17 0 16 0;
#X connect 18 0 21 0;
#X connect 19 0 18 0;
#X connect 20 0 23 0;
#X connect 21 0 20 0;
#X connect 22 0 24 1;
#X connect 23 0 22 0;
#X connect 24 0 55 0;
#X connect 25 0 26 0;
#X connect 26 0 17 1;
#X connect 26 0 16 1;
#X connect 26 0 19 1;
#X connect 26 0 18 1;
#X connect 26 0 21 1;
#X connect 26 0 20 1;
#X connect 26 0 23 1;
#X connect 26 0 22 1;
#X connect 27 0 31 0;
#X connect 28 0 29 0;
#X connect 29 0 30 0;
#X connect 30 0 48 0;
#X connect 31 0 28 0;
#X connect 32 0 27 0;
#X connect 33 0 36 0;
#X connect 34 0 35 0;
#X connect 35 0 30 0;
#X connect 36 0 34 0;
#X connect 37 0 40 0;
#X connect 38 0 39 0;
#X connect 39 0 30 0;
#X connect 40 0 38 0;
#X connect 41 0 44 0;
#X connect 42 0 43 0;
#X connect 43 0 30 0;
#X connect 44 0 42 0;
#X connect 45 0 33 0;
#X connect 46 0 37 0;
#X connect 47 0 41 0;
#X connect 48 0 24 0;
#X connect 48 0 17 0;
#X connect 49 0 32 0;
#X connect 50 0 45 0;
#X connect 51 0 46 0;
#X connect 52 0 47 0;
#X connect 53 0 57 0;
#X connect 54 0 55 1;
#X connect 55 0 15 0;
#X connect 56 0 25 0;
#X connect 57 0 49 0;
#X connect 57 1 50 0;
#X connect 57 2 51 0;
#X connect 57 3 52 0;
#X connect 57 4 54 0;
#X connect 57 5 56 0;
#X connect 58 0 57 0;
#X restore 80 300 pd Ww;
#X obj 189 264 line~;
#X msg 189 240 \\$1 100;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 132 310 switch~;
#X obj 132 286 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 262 change;
#X text 89 155 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 216 max 0;
#X obj 203 336 *~;
#X obj 132 238 > -0.1;
#X connect 0 0 1 0;
#X connect 1 0 17 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 22 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 15 0 18 0;
#X connect 17 0 14 0;
#X connect 17 1 10 0;
#X connect 17 3 19 1;
#X connect 18 0 16 0;
#X connect 19 0 9 0;
#X connect 20 0 28 0;
#X connect 20 0 28 1;
#X connect 21 0 20 0;
#X connect 22 0 27 0;
#X connect 22 0 29 0;
#X connect 24 0 23 0;
#X connect 25 0 24 0;
#X connect 27 0 21 0;
#X connect 28 0 9 1;
#X connect 29 0 25 0;
"
[node name="CollisionShape" type="CollisionShape" parent="."]
shape = SubResource( 1 )

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 23) var preset = 1
var _my_patch = "res://mirrors/Dotdots.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://mirrors/Dotdots.pd"
var _my_id = 0
func set_size(size):
@ -44,7 +46,10 @@ func set_color(color):
func _ready():
# save patch (for export)
# _save_patch()
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
@ -80,17 +85,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
#func _save_patch():
# # save patch
# # prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -15,6 +15,261 @@ collision_mask = 0
physics_material_override = SubResource( 3 )
gravity_scale = 0.0
script = ExtResource( 1 )
use_embeded_patch = true
patch = "#N canvas 217 167 548 621 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 408 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X msg 361 81 \\; pd dsp 1;
#X obj 21 70 route bang panvol param preset;
#X obj 361 45 del 300;
#N canvas 404 97 1087 864 Dotdots 0;
#X obj 107 15 inlet;
#X obj 73 723 outlet~;
#X obj 542 128 inlet;
#X obj 157 15 r \\$0-preset;
#X obj 487 678 s \\$0-preset;
#X obj 76 438 expr~ round($v1/$f2);
#X floatatom 225 416 5 0 3 0 - - - 0;
#X obj 75 662 *~;
#X obj 75 690 *~;
#X floatatom 75 386 5 0 0 0 - - - 0;
#X obj 280 325 hsl 162 19 1 16 0 0 empty empty empty -2 -10 0 12 #c6ffc7 #000000 #000000 0 1;
#X floatatom 276 380 5 0 0 0 - - - 0;
#X obj 277 354 int;
#X obj 277 406 expr pow (2 \\, $f1)-1;
#X floatatom 277 430 5 0 0 0 - - - 0;
#X text 316 381 bitDepth;
#X text 319 430 resolution;
#X obj 276 456 expr 1/$f1;
#X obj 277 276 snapshot~;
#X obj 354 226 metro 100;
#X obj 354 201 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X floatatom 277 300 5 0 0 0 - - - 0;
#X floatatom 110 149 5 0 0 0 - - - 0;
#X obj 277 252 *~ 8;
#X obj 76 412 osc~;
#X obj 276 227 phasor~;
#X obj 68 301 snapshot~;
#X obj 138 384 metro 100;
#X obj 136 358 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 68 228 osc~;
#X obj 68 252 +~ 1;
#X floatatom 64 149 5 0 0 0 - - - 0;
#X obj 355 150 loadbang;
#X msg 356 173 1;
#X obj 135 310 loadbang;
#X msg 136 333 1;
#X floatatom 240 146 5 0 0 0 - - - 0;
#X obj 78 553 vcf~ 1;
#X obj 97 523 sig~;
#X floatatom 153 148 5 0 0 0 - - - 0;
#X floatatom 197 146 5 0 0 0 - - - 0;
#X obj 68 276 *~ 10;
#X floatatom 284 146 5 0 0 0 - - - 0;
#X obj 134 113 unpack f f f f f f;
#X floatatom 674 91 5 0 0 0 - - - 0;
#X obj 674 119 s rev_a;
#X obj 673 62 line;
#X msg 666 7 3 2000;
#X msg 732 7 10 2000;
#X msg 610 8 0 2000;
#X obj 542 168 sel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23, f 65;
#X msg 542 222 27.1 27 516 355.9 1.53 0.11;
#X msg 552 246 2.92 500 776 451 3.3 1;
#X msg 562 270 95 1208 447 1228 0.84 12;
#X msg 572 294 111.1 1 339 372 2.9 15;
#X msg 582 318 512 0.78 376 543 0.63 8.56;
#X msg 592 342 362.1 0 1620 709 0.75 929;
#X msg 602 366 110.1 0.2 388 607.4 7.99 65;
#X msg 612 390 3 17 445 1413 -0.32 0.93;
#X msg 622 414 11.42 0.16 653 1026 0.52 908.2;
#X msg 632 438 980.7 0.53 608 1109 0.56 282.4;
#X msg 642 462 486 0.05 135 297 0.75 458;
#X msg 652 486 427 0.04 122 384 0.89 66;
#X msg 660 510 27.1 27 516 355.9 1.53 0.11;
#X msg 671 537 2.92 500 776 451 3.3 1;
#X msg 684 563 95 1208 447 1228 0.84 12;
#X msg 697 589 111.1 1 339 372 2.9 15;
#X msg 704 613 512 0.78 376 543 0.63 8.56;
#X msg 712 637 362.1 0 1620 709 0.75 929;
#X msg 723 660 110.1 0.2 388 607.4 7.99 65;
#X msg 732 684 3 17 445 1413 -0.32 0.93;
#X msg 738 709 11.42 0.16 653 1026 0.52 908.2;
#X msg 748 734 980.7 0.53 608 1109 0.56 282.4;
#X msg 755 758 486 0.05 135 297 0.75 458;
#X connect 0 0 43 0;
#X connect 2 0 50 0;
#X connect 3 0 43 0;
#X connect 5 0 37 0;
#X connect 6 0 5 1;
#X connect 6 0 7 1;
#X connect 7 0 8 0;
#X connect 8 0 1 0;
#X connect 9 0 24 0;
#X connect 10 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 14 0;
#X connect 14 0 17 0;
#X connect 17 0 6 0;
#X connect 18 0 21 0;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 21 0 10 0;
#X connect 22 0 25 0;
#X connect 23 0 18 0;
#X connect 24 0 5 0;
#X connect 25 0 23 0;
#X connect 26 0 9 0;
#X connect 27 0 26 0;
#X connect 28 0 27 0;
#X connect 29 0 30 0;
#X connect 30 0 41 0;
#X connect 31 0 29 0;
#X connect 32 0 33 0;
#X connect 33 0 20 0;
#X connect 34 0 35 0;
#X connect 35 0 28 0;
#X connect 36 0 8 1;
#X connect 37 0 7 0;
#X connect 38 0 37 1;
#X connect 39 0 38 0;
#X connect 40 0 37 2;
#X connect 41 0 26 0;
#X connect 42 0 41 1;
#X connect 43 0 31 0;
#X connect 43 1 22 0;
#X connect 43 2 39 0;
#X connect 43 3 40 0;
#X connect 43 4 36 0;
#X connect 43 5 42 0;
#X connect 44 0 45 0;
#X connect 46 0 44 0;
#X connect 47 0 46 0;
#X connect 48 0 46 0;
#X connect 49 0 46 0;
#X connect 50 0 51 0;
#X connect 50 1 52 0;
#X connect 50 2 53 0;
#X connect 50 3 54 0;
#X connect 50 4 55 0;
#X connect 50 5 56 0;
#X connect 50 6 57 0;
#X connect 50 7 58 0;
#X connect 50 8 59 0;
#X connect 50 9 60 0;
#X connect 50 10 61 0;
#X connect 50 11 62 0;
#X connect 50 12 63 0;
#X connect 50 13 64 0;
#X connect 50 14 65 0;
#X connect 50 15 66 0;
#X connect 50 16 67 0;
#X connect 50 17 68 0;
#X connect 50 18 69 0;
#X connect 50 19 70 0;
#X connect 50 20 71 0;
#X connect 50 21 72 0;
#X connect 50 22 73 0;
#X connect 51 0 4 0;
#X connect 52 0 4 0;
#X connect 53 0 4 0;
#X connect 54 0 4 0;
#X connect 55 0 4 0;
#X connect 56 0 4 0;
#X connect 57 0 4 0;
#X connect 58 0 4 0;
#X connect 59 0 4 0;
#X connect 60 0 4 0;
#X connect 61 0 4 0;
#X connect 62 0 4 0;
#X connect 63 0 4 0;
#X connect 64 0 4 0;
#X connect 65 0 4 0;
#X connect 66 0 4 0;
#X connect 67 0 4 0;
#X connect 68 0 4 0;
#X connect 69 0 4 0;
#X connect 70 0 4 0;
#X connect 71 0 4 0;
#X connect 72 0 4 0;
#X connect 73 0 4 0;
#X restore 20 300 pd Dotdots;
#X obj 189 264 line~;
#X msg 189 240 \\$1 100;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 132 310 switch~;
#X obj 132 286 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 262 change;
#X text 89 155 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 216 max 0;
#X obj 203 336 *~;
#X obj 132 238 > -0.1;
#X connect 0 0 1 0;
#X connect 1 0 17 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 22 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 15 0 18 0;
#X connect 17 0 14 0;
#X connect 17 1 10 0;
#X connect 17 3 19 1;
#X connect 18 0 16 0;
#X connect 19 0 9 0;
#X connect 20 0 28 0;
#X connect 20 0 28 1;
#X connect 21 0 20 0;
#X connect 22 0 27 0;
#X connect 22 0 29 0;
#X connect 24 0 23 0;
#X connect 25 0 24 0;
#X connect 27 0 21 0;
#X connect 28 0 9 1;
#X connect 29 0 25 0;
"
[node name="CollisionShape" type="CollisionShape" parent="."]
shape = SubResource( 1 )

View file

@ -1,130 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ ]
_global_script_class_icons={
}
[application]
config/name="Mirrors"
run/main_scene="res://mirrors/assets/levels/Game.tscn"
config/icon="res://mirrors/icon.png"
[autoload]
Events="*res://mirrors/autoload/Events.tscn"
Global="*res://mirrors/autoload/Global.tscn"
[input]
ui_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_up={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_down={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
]
}
move_fd={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_bk={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
use={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
FlyCheat={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":51,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
fullscreen_toggle={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":true,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
add={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777349,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
sub={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777347,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
reset_speed={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777345,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
reload_scene={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
toggle_help={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777244,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
toggle_mouse={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
mouse_toggle={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":74,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}

View file

@ -1,75 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
[application]
config/name="Sands and Waves (panty tunnel)"
run/main_scene="res://pantyTunnel/Scene.tscn"
config/icon="res://pantyTunnel/icon.png"
[autoload]
Global="*res://pantyTunnel/autoload/Global.tscn"
Events="*res://pantyTunnel/autoload/Events.tscn"
[display]
window/size/fullscreen=true
[gui]
common/drop_mouse_on_gui_input_disabled=true
[input]
move_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_forward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
toggle_mouse={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
[layer_names]
3d_physics/layer_1="world"
3d_physics/layer_2="player"
3d_physics/layer_3="sounder"
[physics]
common/enable_pause_aware_picking=true
[rendering]
environment/default_environment="res://pantyTunnel/default_env.tres"

View file

@ -136,3 +136,490 @@ mesh = SubResource( 49 )
skeleton = NodePath("../../..")
script = ExtResource( 4 )
audible_range_max = 50.0
use_embeded_patch = true
patch = "#N canvas 56 89 446 513 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 407 *~;
#X obj 189 230 line~;
#X msg 189 206 \\$1 100;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 21 70 route bang panvol param preset;
#X obj 20 470 *~;
#X obj 38 446 vline~;
#X msg 38 422 0 \\, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \\; pd dsp 1;
#N canvas 0 23 1440 805 synth 0;
#X obj 308 770 outlet~;
#X obj 57 359 vline~;
#X obj 57 625 osc~;
#X obj 27 649 *~;
#X obj 27 393 *~;
#X obj 57 601 +~;
#X obj 57 272 metro 500;
#X obj 75 580 *~;
#X obj 57 315 f;
#X msg 57 337 1 1 0 \\, 0 \\$1 1;
#X obj 73 294 * 200;
#X obj 134 690 *~;
#X obj 89 222 line;
#X obj 152 415 sig~;
#X obj 57 491 *~;
#X obj 57 199 t b a;
#X msg 57 177 1 \\, 0 3000;
#X obj 57 427 *~;
#X obj 117 248 * 3000;
#X obj 57 513 +~ 30;
#X obj 94 555 *~ 100;
#X floatatom 212 504 5 0 0 0 - - - 0;
#X obj 74 100 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 331 330 5 0 0 0 - - - 0;
#X obj 322 257 random 9;
#X obj 75 466 *~ 30;
#X obj 180 261 mtof;
#X obj 240 289 mtof;
#X obj 92 141 t b b b b;
#X obj 239 256 + 10;
#X obj 222 711 *~;
#X obj 446 361 vline~;
#X obj 446 627 osc~;
#X obj 416 651 *~;
#X obj 416 395 *~;
#X obj 446 603 +~;
#X obj 446 274 metro 500;
#X obj 464 582 *~;
#X obj 446 317 f;
#X msg 446 339 1 1 0 \\, 0 \\$1 1;
#X obj 462 296 * 200;
#X obj 523 692 *~;
#X obj 478 224 line;
#X obj 541 417 sig~;
#X obj 446 493 *~;
#X obj 446 201 t b a;
#X msg 446 179 1 \\, 0 3000;
#X obj 446 429 *~;
#X obj 506 250 * 3000;
#X obj 446 515 +~ 30;
#X obj 483 557 *~ 100;
#X floatatom 601 506 5 0 0 0 - - - 0;
#X obj 463 102 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 720 332 5 0 0 0 - - - 0;
#X obj 711 259 random 9;
#X obj 465 536 osc~ 70;
#X obj 464 468 *~ 30;
#X obj 569 263 mtof;
#X obj 629 291 mtof;
#X obj 481 143 t b b b b;
#X obj 628 258 + 10;
#X obj 475 719 *~;
#X obj 201 109 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X obj 179 228 + 10;
#X obj 568 230 + 10;
#X obj 175 204 random 60;
#X obj 564 206 random 60;
#X obj 235 232 random 50;
#X obj 624 234 random 50;
#X obj 76 535 osc~ 700;
#X floatatom 577 309 5 0 0 0 - - - 0;
#X obj 325 304 / 14;
#X obj 795 362 vline~;
#X obj 795 628 osc~;
#X obj 765 652 *~;
#X obj 765 396 *~;
#X obj 795 604 +~;
#X obj 795 275 metro 500;
#X obj 813 583 *~;
#X obj 795 318 f;
#X msg 795 340 1 1 0 \\, 0 \\$1 1;
#X obj 811 297 * 200;
#X obj 872 693 *~;
#X obj 827 225 line;
#X obj 890 418 sig~;
#X obj 795 494 *~;
#X obj 795 202 t b a;
#X msg 795 180 1 \\, 0 3000;
#X obj 795 430 *~;
#X obj 855 251 * 3000;
#X obj 795 516 +~ 30;
#X obj 832 558 *~ 100;
#X floatatom 950 507 5 0 0 0 - - - 0;
#X obj 812 103 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 1069 333 5 0 0 0 - - - 0;
#X obj 1060 260 random 9;
#X obj 814 537 osc~ 70;
#X obj 813 469 *~ 30;
#X obj 918 264 mtof;
#X obj 978 292 mtof;
#X obj 830 144 t b b b b;
#X obj 977 259 + 10;
#X obj 824 720 *~;
#X obj 917 231 + 10;
#X obj 913 207 random 60;
#X obj 973 235 random 50;
#X floatatom 926 310 5 0 0 0 - - - 0;
#X obj 1062 305 / 60;
#X obj 711 280 + 4;
#X obj 1060 281 + 5;
#X obj 713 304 / 20;
#X obj 322 278 + 5;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 232 101 pd retro;
#X obj 232 34 loadbang;
#X obj 232 58 t b b;
#X msg 310 77 800 2000;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 615 120 pd retro;
#X obj 615 53 loadbang;
#X obj 615 77 t b b;
#X msg 693 96 500 1200;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 938 99 pd retro;
#X obj 938 32 loadbang;
#X obj 938 56 t b b;
#X msg 1016 75 500 1000;
#X connect 1 0 4 0;
#X connect 1 0 4 1;
#X connect 2 0 3 1;
#X connect 3 0 11 0;
#X connect 4 0 3 0;
#X connect 4 0 17 0;
#X connect 4 0 17 1;
#X connect 5 0 2 0;
#X connect 6 0 8 0;
#X connect 7 0 5 1;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 10 0 8 1;
#X connect 11 0 30 0;
#X connect 12 0 10 0;
#X connect 12 0 13 0;
#X connect 12 0 18 0;
#X connect 13 0 11 1;
#X connect 13 0 20 0;
#X connect 13 0 25 0;
#X connect 14 0 19 0;
#X connect 15 0 6 0;
#X connect 15 1 12 0;
#X connect 16 0 15 0;
#X connect 17 0 14 0;
#X connect 18 0 6 1;
#X connect 19 0 5 0;
#X connect 20 0 7 1;
#X connect 21 0 20 1;
#X connect 22 0 28 0;
#X connect 23 0 30 1;
#X connect 24 0 111 0;
#X connect 25 0 14 1;
#X connect 26 0 19 1;
#X connect 26 0 69 1;
#X connect 27 0 21 0;
#X connect 28 0 16 0;
#X connect 28 1 65 0;
#X connect 28 2 67 0;
#X connect 28 3 24 0;
#X connect 29 0 27 0;
#X connect 30 0 0 0;
#X connect 31 0 34 0;
#X connect 31 0 34 1;
#X connect 32 0 33 1;
#X connect 33 0 41 0;
#X connect 34 0 33 0;
#X connect 34 0 47 0;
#X connect 34 0 47 1;
#X connect 35 0 32 0;
#X connect 36 0 38 0;
#X connect 37 0 35 1;
#X connect 38 0 39 0;
#X connect 39 0 31 0;
#X connect 40 0 38 1;
#X connect 41 0 61 0;
#X connect 42 0 40 0;
#X connect 42 0 43 0;
#X connect 42 0 48 0;
#X connect 43 0 41 1;
#X connect 43 0 50 0;
#X connect 43 0 56 0;
#X connect 44 0 49 0;
#X connect 45 0 36 0;
#X connect 45 1 42 0;
#X connect 46 0 45 0;
#X connect 47 0 44 0;
#X connect 48 0 36 1;
#X connect 49 0 35 0;
#X connect 50 0 37 1;
#X connect 51 0 50 1;
#X connect 52 0 59 0;
#X connect 53 0 61 1;
#X connect 54 0 108 0;
#X connect 55 0 37 0;
#X connect 56 0 44 1;
#X connect 57 0 49 1;
#X connect 57 0 70 0;
#X connect 57 0 55 1;
#X connect 58 0 51 0;
#X connect 59 0 46 0;
#X connect 59 1 66 0;
#X connect 59 2 68 0;
#X connect 59 3 54 0;
#X connect 60 0 58 0;
#X connect 61 0 0 0;
#X connect 62 0 28 0;
#X connect 63 0 26 0;
#X connect 64 0 57 0;
#X connect 65 0 63 0;
#X connect 66 0 64 0;
#X connect 67 0 29 0;
#X connect 68 0 60 0;
#X connect 69 0 7 0;
#X connect 71 0 23 0;
#X connect 72 0 75 0;
#X connect 72 0 75 1;
#X connect 73 0 74 1;
#X connect 74 0 82 0;
#X connect 75 0 74 0;
#X connect 75 0 88 0;
#X connect 75 0 88 1;
#X connect 76 0 73 0;
#X connect 77 0 79 0;
#X connect 78 0 76 1;
#X connect 79 0 80 0;
#X connect 80 0 72 0;
#X connect 81 0 79 1;
#X connect 82 0 102 0;
#X connect 83 0 81 0;
#X connect 83 0 84 0;
#X connect 83 0 89 0;
#X connect 84 0 82 1;
#X connect 84 0 91 0;
#X connect 84 0 97 0;
#X connect 85 0 90 0;
#X connect 86 0 77 0;
#X connect 86 1 83 0;
#X connect 87 0 86 0;
#X connect 88 0 85 0;
#X connect 89 0 77 1;
#X connect 90 0 76 0;
#X connect 91 0 78 1;
#X connect 92 0 91 1;
#X connect 93 0 100 0;
#X connect 94 0 102 1;
#X connect 95 0 109 0;
#X connect 96 0 78 0;
#X connect 97 0 85 1;
#X connect 98 0 90 1;
#X connect 98 0 106 0;
#X connect 98 0 96 1;
#X connect 99 0 92 0;
#X connect 100 0 87 0;
#X connect 100 1 104 0;
#X connect 100 2 105 0;
#X connect 100 3 95 0;
#X connect 101 0 99 0;
#X connect 103 0 98 0;
#X connect 104 0 103 0;
#X connect 105 0 101 0;
#X connect 107 0 94 0;
#X connect 108 0 110 0;
#X connect 109 0 107 0;
#X connect 110 0 53 0;
#X connect 111 0 71 0;
#X connect 112 0 62 0;
#X connect 113 0 114 0;
#X connect 114 0 112 0;
#X connect 114 1 115 0;
#X connect 115 0 112 1;
#X connect 116 0 52 0;
#X connect 117 0 118 0;
#X connect 118 0 116 0;
#X connect 118 1 119 0;
#X connect 119 0 116 1;
#X connect 120 0 93 0;
#X connect 121 0 122 0;
#X connect 122 0 120 0;
#X connect 122 1 123 0;
#X connect 123 0 120 1;
#X restore 80 300 pd synth;
#X connect 0 0 1 0;
#X connect 1 0 19 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 9 1;
#X connect 11 0 10 0;
#X connect 12 0 16 0;
#X connect 12 1 13 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 2 0;
#X connect 16 0 11 0;
#X connect 19 0 17 0;
#X connect 19 1 12 0;
#X connect 21 0 20 1;
#X connect 22 0 21 0;
#X connect 23 0 22 0;
#X connect 25 0 9 0;
"

View file

@ -1,43 +1,48 @@
extends MeshInstance
export (float, 0, 100) var audible_range_max = 10.0
export (int, 1, 12) var preset = 1
var _my_patch = "res://tenniscourts/bouncing.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://tenniscourts/bouncing.pd"
var _my_id = 0
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (Array, float) var parameters = [-7, -2, 3996, 30, 0.7]
func set_param(param):
parameters = param
Global._gdpd.start_message(param.size()+1)
Global._gdpd.add_symbol("param")
for i in range(param.size()):
Global._gdpd.add_float(param[i])
Global._gdpd.finish_list("fromGodot" + String(_my_id))
func set_preset(prs):
preset = prs
Global._gdpd.start_message(2)
Global._gdpd.add_symbol("preset")
Global._gdpd.add_float(prs)
Global._gdpd.finish_list("fromGodot" + String(_my_id))
func set_color(color):
$MeshInstance.material_override = SpatialMaterial.new()
$MeshInstance.material_override.albedo_color = color
func relocate(center, radius_range):
# relocate randomly into a circular zone
var rr = radius_range[1] - radius_range[0]
var displacement = polar2cartesian(randf()*rr+radius_range[0], randf()*2*PI)
var loc = center + displacement
look_at_from_position(Vector3(loc.x, randf()*2 + 1, loc.y), Vector3.FORWARD, Vector3.UP)
func _ready():
# save patch (for export)
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
# listen 'player_transform_updated' event
Events.connect("player_transform_updated", self, "_on_Events_player_transform_updated")
# send to the patch
Global._gdpd.start_message(6)
Global._gdpd.add_symbol("param")
Global._gdpd.add_float(parameters[0])
Global._gdpd.add_float(parameters[1])
Global._gdpd.add_float(parameters[2])
Global._gdpd.add_float(parameters[3])
Global._gdpd.add_float(parameters[4])
Global._gdpd.finish_list("fromGodot" + String(_my_id))
# send 'preset'
set_preset(preset)
func _on_Events_player_transform_updated(playerpos, playerheading):
var mypos = get_global_translation()
@ -50,10 +55,9 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
if angle > PI:
angle = angle - PI*2
# (check)
# print(str(_my_id) +" : ("+ str(playerpos) +","+ str(mypos) +")")
# print(str(_my_id) +" : ("+ str(distance) +","+ str(angle) +")")
# calculate gain
var gain = max(1 - distance/audible_range_max, 0)
var gain = 1 - distance/audible_range_max
# send to the patch
Global._gdpd.start_message(3)
Global._gdpd.add_symbol("panvol")
@ -65,4 +69,15 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -1,4 +1,4 @@
#N canvas 652 105 446 513 12;
#N canvas 56 89 446 513 12;
#X obj 21 22 r fromGodot\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
@ -28,13 +28,10 @@
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 199 407 *~;
#X obj 189 230 line~;
#X msg 189 206 \$1 100;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X floatatom 189 177 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 21 70 route bang panvol param preset;
@ -43,125 +40,260 @@
#X msg 38 422 0 \, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \; pd dsp 1;
#N canvas 197 23 962 799 synth 0;
#X obj 162 801 outlet~;
#X obj -89 390 vline~;
#X obj -89 656 osc~;
#X obj -119 680 *~;
#X obj -119 424 *~;
#X obj -89 632 +~;
#X obj -89 303 metro 500;
#X obj -71 611 *~;
#X obj -89 346 f;
#X msg -89 368 1 1 0 \, 0 \$1 1;
#X obj -73 325 * 200;
#X obj -12 721 *~;
#X obj -57 253 line;
#X obj 6 446 sig~;
#X obj -89 522 *~;
#X obj -89 230 t b a;
#X msg -89 208 1 \, 0 3000;
#X obj -89 458 *~;
#X obj -29 279 * 3000;
#X obj -89 544 +~ 30;
#X obj -52 586 *~ 100;
#X floatatom 66 535 5 0 0 0 - - - 0;
#X obj -72 131 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 185 361 5 0 0 0 - - - 0;
#X obj 176 288 random 9;
#X obj -71 497 *~ 30;
#X obj 34 292 mtof;
#X obj 94 320 mtof;
#X obj -54 172 t b b b b;
#X obj 93 287 + 10;
#X obj 76 742 *~;
#X obj 300 392 vline~;
#X obj 300 658 osc~;
#X obj 270 682 *~;
#X obj 270 426 *~;
#X obj 300 634 +~;
#X obj 300 305 metro 500;
#X obj 318 613 *~;
#X obj 300 348 f;
#X msg 300 370 1 1 0 \, 0 \$1 1;
#X obj 316 327 * 200;
#X obj 377 723 *~;
#X obj 332 255 line;
#X obj 395 448 sig~;
#X obj 300 524 *~;
#X obj 300 232 t b a;
#X msg 300 210 1 \, 0 3000;
#X obj 300 460 *~;
#X obj 360 281 * 3000;
#X obj 300 546 +~ 30;
#X obj 337 588 *~ 100;
#X floatatom 455 537 5 0 0 0 - - - 0;
#X obj 317 133 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 574 363 5 0 0 0 - - - 0;
#X obj 565 290 random 9;
#X obj 319 567 osc~ 70;
#X obj 318 499 *~ 30;
#X obj 423 294 mtof;
#X obj 483 322 mtof;
#X obj 335 174 t b b b b;
#X obj 482 289 + 10;
#X obj 329 750 *~;
#X obj 55 140 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X obj 33 259 + 10;
#X obj 422 261 + 10;
#X obj 29 235 random 60;
#X obj 418 237 random 60;
#X obj 89 263 random 50;
#X obj 478 265 random 50;
#X obj -70 566 osc~ 700;
#X floatatom 431 340 5 0 0 0 - - - 0;
#X obj 179 335 / 14;
#X obj 44 55 loadbang;
#X obj 276 77 loadbang;
#X obj 55 95 retro 800 2000;
#X obj 349 110 retro 500 1200;
#X obj 649 393 vline~;
#X obj 649 659 osc~;
#X obj 619 683 *~;
#X obj 619 427 *~;
#X obj 649 635 +~;
#X obj 649 306 metro 500;
#X obj 667 614 *~;
#X obj 649 349 f;
#X msg 649 371 1 1 0 \, 0 \$1 1;
#X obj 665 328 * 200;
#X obj 726 724 *~;
#X obj 681 256 line;
#X obj 744 449 sig~;
#X obj 649 525 *~;
#X obj 649 233 t b a;
#X msg 649 211 1 \, 0 3000;
#X obj 649 461 *~;
#X obj 709 282 * 3000;
#X obj 649 547 +~ 30;
#X obj 686 589 *~ 100;
#X floatatom 804 538 5 0 0 0 - - - 0;
#X obj 666 134 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 923 364 5 0 0 0 - - - 0;
#X obj 914 291 random 9;
#X obj 668 568 osc~ 70;
#X obj 667 500 *~ 30;
#X obj 772 295 mtof;
#X obj 832 323 mtof;
#X obj 684 175 t b b b b;
#X obj 831 290 + 10;
#X obj 678 751 *~;
#X obj 771 262 + 10;
#X obj 767 238 random 60;
#X obj 827 266 random 50;
#X floatatom 780 341 5 0 0 0 - - - 0;
#X obj 625 78 loadbang;
#X obj 698 111 retro 500 1000;
#X obj 916 336 / 60;
#X obj 565 311 + 4;
#X obj 914 312 + 5;
#X obj 567 335 / 20;
#X obj 176 309 + 5;
#N canvas 0 23 1440 805 synth 0;
#X obj 308 770 outlet~;
#X obj 57 359 vline~;
#X obj 57 625 osc~;
#X obj 27 649 *~;
#X obj 27 393 *~;
#X obj 57 601 +~;
#X obj 57 272 metro 500;
#X obj 75 580 *~;
#X obj 57 315 f;
#X msg 57 337 1 1 0 \, 0 \$1 1;
#X obj 73 294 * 200;
#X obj 134 690 *~;
#X obj 89 222 line;
#X obj 152 415 sig~;
#X obj 57 491 *~;
#X obj 57 199 t b a;
#X msg 57 177 1 \, 0 3000;
#X obj 57 427 *~;
#X obj 117 248 * 3000;
#X obj 57 513 +~ 30;
#X obj 94 555 *~ 100;
#X floatatom 212 504 5 0 0 0 - - - 0;
#X obj 74 100 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 331 330 5 0 0 0 - - - 0;
#X obj 322 257 random 9;
#X obj 75 466 *~ 30;
#X obj 180 261 mtof;
#X obj 240 289 mtof;
#X obj 92 141 t b b b b;
#X obj 239 256 + 10;
#X obj 222 711 *~;
#X obj 446 361 vline~;
#X obj 446 627 osc~;
#X obj 416 651 *~;
#X obj 416 395 *~;
#X obj 446 603 +~;
#X obj 446 274 metro 500;
#X obj 464 582 *~;
#X obj 446 317 f;
#X msg 446 339 1 1 0 \, 0 \$1 1;
#X obj 462 296 * 200;
#X obj 523 692 *~;
#X obj 478 224 line;
#X obj 541 417 sig~;
#X obj 446 493 *~;
#X obj 446 201 t b a;
#X msg 446 179 1 \, 0 3000;
#X obj 446 429 *~;
#X obj 506 250 * 3000;
#X obj 446 515 +~ 30;
#X obj 483 557 *~ 100;
#X floatatom 601 506 5 0 0 0 - - - 0;
#X obj 463 102 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 720 332 5 0 0 0 - - - 0;
#X obj 711 259 random 9;
#X obj 465 536 osc~ 70;
#X obj 464 468 *~ 30;
#X obj 569 263 mtof;
#X obj 629 291 mtof;
#X obj 481 143 t b b b b;
#X obj 628 258 + 10;
#X obj 475 719 *~;
#X obj 201 109 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X obj 179 228 + 10;
#X obj 568 230 + 10;
#X obj 175 204 random 60;
#X obj 564 206 random 60;
#X obj 235 232 random 50;
#X obj 624 234 random 50;
#X obj 76 535 osc~ 700;
#X floatatom 577 309 5 0 0 0 - - - 0;
#X obj 325 304 / 14;
#X obj 795 362 vline~;
#X obj 795 628 osc~;
#X obj 765 652 *~;
#X obj 765 396 *~;
#X obj 795 604 +~;
#X obj 795 275 metro 500;
#X obj 813 583 *~;
#X obj 795 318 f;
#X msg 795 340 1 1 0 \, 0 \$1 1;
#X obj 811 297 * 200;
#X obj 872 693 *~;
#X obj 827 225 line;
#X obj 890 418 sig~;
#X obj 795 494 *~;
#X obj 795 202 t b a;
#X msg 795 180 1 \, 0 3000;
#X obj 795 430 *~;
#X obj 855 251 * 3000;
#X obj 795 516 +~ 30;
#X obj 832 558 *~ 100;
#X floatatom 950 507 5 0 0 0 - - - 0;
#X obj 812 103 bng 16 250 50 0 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000;
#X floatatom 1069 333 5 0 0 0 - - - 0;
#X obj 1060 260 random 9;
#X obj 814 537 osc~ 70;
#X obj 813 469 *~ 30;
#X obj 918 264 mtof;
#X obj 978 292 mtof;
#X obj 830 144 t b b b b;
#X obj 977 259 + 10;
#X obj 824 720 *~;
#X obj 917 231 + 10;
#X obj 913 207 random 60;
#X obj 973 235 random 50;
#X floatatom 926 310 5 0 0 0 - - - 0;
#X obj 1062 305 / 60;
#X obj 711 280 + 4;
#X obj 1060 281 + 5;
#X obj 713 304 / 20;
#X obj 322 278 + 5;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 232 101 pd retro;
#X obj 232 34 loadbang;
#X obj 232 58 t b b;
#X msg 310 77 800 2000;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 615 120 pd retro;
#X obj 615 53 loadbang;
#X obj 615 77 t b b;
#X msg 693 96 500 1200;
#N canvas 386 23 374 377 retro 0;
#X obj 43 211 del;
#X obj 43 261 spigot;
#X obj 139 72 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 145 216 random;
#X obj 82 235 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 50 47 inlet;
#X obj 43 286 outlet;
#X obj 50 104 t b f;
#X obj 113 191 t b b;
#X obj 158 72 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 234 37 inlet;
#X obj 266 135 unpack f f;
#X obj 234 107 expr $f2-$f1;
#X floatatom 234 197 5 0 0 0 range - - 0;
#X floatatom 266 223 5 0 0 0 start - - 0;
#X obj 145 242 +;
#X floatatom 171 69 5 0 0 1 r - - 0;
#X obj 145 286 outlet;
#X obj 234 71 t a a;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 1 0 9 0;
#X connect 2 0 7 0;
#X connect 3 0 15 0;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 7 0 9 0;
#X connect 7 1 4 0;
#X connect 8 0 0 0;
#X connect 8 1 3 0;
#X connect 9 0 8 0;
#X connect 10 0 18 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 3 1;
#X connect 14 0 15 1;
#X connect 15 0 0 1;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 18 0 12 0;
#X connect 18 1 11 0;
#X coords 0 -1 1 1 85 40 1 135 50;
#X restore 938 99 pd retro;
#X obj 938 32 loadbang;
#X obj 938 56 t b b;
#X msg 1016 75 500 1000;
#X connect 1 0 4 0;
#X connect 1 0 4 1;
#X connect 2 0 3 1;
@ -193,7 +325,7 @@
#X connect 21 0 20 1;
#X connect 22 0 28 0;
#X connect 23 0 30 1;
#X connect 24 0 117 0;
#X connect 24 0 111 0;
#X connect 25 0 14 1;
#X connect 26 0 19 1;
#X connect 26 0 69 1;
@ -235,7 +367,7 @@
#X connect 51 0 50 1;
#X connect 52 0 59 0;
#X connect 53 0 61 1;
#X connect 54 0 114 0;
#X connect 54 0 108 0;
#X connect 55 0 37 0;
#X connect 56 0 44 1;
#X connect 57 0 49 1;
@ -257,66 +389,85 @@
#X connect 68 0 60 0;
#X connect 69 0 7 0;
#X connect 71 0 23 0;
#X connect 72 0 74 0;
#X connect 73 0 75 0;
#X connect 74 0 62 0;
#X connect 75 0 59 0;
#X connect 76 0 79 0;
#X connect 76 0 79 1;
#X connect 77 0 78 1;
#X connect 78 0 86 0;
#X connect 79 0 78 0;
#X connect 79 0 92 0;
#X connect 79 0 92 1;
#X connect 80 0 77 0;
#X connect 81 0 83 0;
#X connect 82 0 80 1;
#X connect 72 0 75 0;
#X connect 72 0 75 1;
#X connect 73 0 74 1;
#X connect 74 0 82 0;
#X connect 75 0 74 0;
#X connect 75 0 88 0;
#X connect 75 0 88 1;
#X connect 76 0 73 0;
#X connect 77 0 79 0;
#X connect 78 0 76 1;
#X connect 79 0 80 0;
#X connect 80 0 72 0;
#X connect 81 0 79 1;
#X connect 82 0 102 0;
#X connect 83 0 81 0;
#X connect 83 0 84 0;
#X connect 84 0 76 0;
#X connect 85 0 83 1;
#X connect 86 0 106 0;
#X connect 87 0 85 0;
#X connect 87 0 88 0;
#X connect 87 0 93 0;
#X connect 88 0 86 1;
#X connect 88 0 95 0;
#X connect 88 0 101 0;
#X connect 89 0 94 0;
#X connect 90 0 81 0;
#X connect 90 1 87 0;
#X connect 91 0 90 0;
#X connect 92 0 89 0;
#X connect 93 0 81 1;
#X connect 94 0 80 0;
#X connect 95 0 82 1;
#X connect 96 0 95 1;
#X connect 97 0 104 0;
#X connect 98 0 106 1;
#X connect 99 0 115 0;
#X connect 100 0 82 0;
#X connect 101 0 89 1;
#X connect 102 0 94 1;
#X connect 102 0 110 0;
#X connect 102 0 100 1;
#X connect 103 0 96 0;
#X connect 104 0 91 0;
#X connect 104 1 108 0;
#X connect 104 2 109 0;
#X connect 104 3 99 0;
#X connect 105 0 103 0;
#X connect 107 0 102 0;
#X connect 108 0 107 0;
#X connect 109 0 105 0;
#X connect 111 0 112 0;
#X connect 112 0 104 0;
#X connect 113 0 98 0;
#X connect 114 0 116 0;
#X connect 115 0 113 0;
#X connect 116 0 53 0;
#X connect 117 0 71 0;
#X restore 80 300 pd synth;
#X connect 83 0 89 0;
#X connect 84 0 82 1;
#X connect 84 0 91 0;
#X connect 84 0 97 0;
#X connect 85 0 90 0;
#X connect 86 0 77 0;
#X connect 86 1 83 0;
#X connect 87 0 86 0;
#X connect 88 0 85 0;
#X connect 89 0 77 1;
#X connect 90 0 76 0;
#X connect 91 0 78 1;
#X connect 92 0 91 1;
#X connect 93 0 100 0;
#X connect 94 0 102 1;
#X connect 95 0 109 0;
#X connect 96 0 78 0;
#X connect 97 0 85 1;
#X connect 98 0 90 1;
#X connect 98 0 106 0;
#X connect 98 0 96 1;
#X connect 99 0 92 0;
#X connect 100 0 87 0;
#X connect 100 1 104 0;
#X connect 100 2 105 0;
#X connect 100 3 95 0;
#X connect 101 0 99 0;
#X connect 103 0 98 0;
#X connect 104 0 103 0;
#X connect 105 0 101 0;
#X connect 107 0 94 0;
#X connect 108 0 110 0;
#X connect 109 0 107 0;
#X connect 110 0 53 0;
#X connect 111 0 71 0;
#X connect 112 0 62 0;
#X connect 113 0 114 0;
#X connect 114 0 112 0;
#X connect 114 1 115 0;
#X connect 115 0 112 1;
#X connect 116 0 52 0;
#X connect 117 0 118 0;
#X connect 118 0 116 0;
#X connect 118 1 119 0;
#X connect 119 0 116 1;
#X connect 120 0 93 0;
#X connect 121 0 122 0;
#X connect 122 0 120 0;
#X connect 122 1 123 0;
#X connect 123 0 120 1;
#X restore 50 300 pd synth;
#X obj 204 329 *~;
#X obj 189 276 line~;
#X msg 189 252 \$1 100;
#X floatatom 189 189 5 0 0 0 - - - 0;
#X obj 132 322 switch~;
#X obj 132 298 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 274 change;
#X text 89 167 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 228 max 0;
#X obj 132 250 > -0.3;
#X connect 0 0 1 0;
#X connect 1 0 19 0;
#X connect 1 0 16 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
@ -325,17 +476,24 @@
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 9 1;
#X connect 11 0 10 0;
#X connect 12 0 16 0;
#X connect 12 1 13 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 2 0;
#X connect 16 0 11 0;
#X connect 19 0 17 0;
#X connect 19 1 12 0;
#X connect 21 0 20 1;
#X connect 22 0 21 0;
#X connect 23 0 22 0;
#X connect 25 0 9 0;
#X connect 10 0 26 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 16 0 14 0;
#X connect 16 1 10 0;
#X connect 18 0 17 1;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 22 0 9 0;
#X connect 23 0 9 1;
#X connect 24 0 23 0;
#X connect 24 0 23 1;
#X connect 25 0 24 0;
#X connect 26 0 31 0;
#X connect 26 0 32 0;
#X connect 28 0 27 0;
#X connect 29 0 28 0;
#X connect 31 0 25 0;
#X connect 32 0 29 0;

View file

@ -1,10 +1,12 @@
extends RigidBody
export (String, MULTILINE) var patch = ""
export (float, 0, 100) var audible_range_max = 10.0
export (float, 1, 12) var preset = 1
var _my_patch = "res://tenniscourts/morae.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://tenniscourts/morae.pd"
var _my_id = 0
func set_param(param):
@ -39,17 +41,12 @@ func relocate(center, radius_range):
look_at_from_position(Vector3(loc.x, randf()*2 + 1, loc.y), Vector3.FORWARD, Vector3.UP)
func _ready():
# save patch
# prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
# save patch (for export)
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
@ -73,6 +70,8 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
var angle = fmod(fmod(playerpos2d.angle_to_point(mypos2d) + playerheading - PI/2, PI*2) + PI*2, PI*2)
if angle > PI:
angle = angle - PI*2
# (check)
# print(str(_my_id) +" : ("+ str(distance) +","+ str(angle) +")")
# calculate gain
var gain = 1 - distance/audible_range_max
# send to the patch
@ -85,4 +84,16 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
func _exit_tree():
Global.close_patch(_my_id)
pass
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()

View file

@ -16,6 +16,286 @@ albedo_color = Color( 0.180392, 0.972549, 0.776471, 1 )
[node name="morae" type="RigidBody"]
transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 9.251, 80, 0 )
script = ExtResource( 1 )
use_embeded_patch = true
patch = "#N canvas 11 263 583 567 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 195 409 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 20 470 *~;
#X obj 38 446 vline~;
#X msg 38 422 0 \\, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \\; pd dsp 1;
#N canvas 478 23 873 806 synth 0;
#X obj 3 447 noise~;
#X obj -13 491 *~;
#X obj -29 375 sig~ 1;
#X obj -29 403 /~;
#X obj 20 353 *~;
#X obj 20 323 *~;
#X obj -29 515 +~;
#X obj 20 375 +~ 1;
#X obj -13 426 *~ 0.4;
#X obj 3 469 bp~ 700 1;
#X obj 20 274 osc~ 12;
#X obj 29 696 outlet~;
#X obj 197 70 r \\$0-preset;
#X obj 519 680 s \\$0-preset;
#X obj 566 305 inlet;
#X obj 126 73 inlet;
#X floatatom 124 137 5 0 0 0 - - - 0;
#X floatatom 166 137 5 0 0 0 - - - 0;
#X obj 436 165 del;
#X obj 436 215 spigot;
#X obj 397 62 tgl 15 0 empty empty empty 17 7 0 10 #0400fc #f8fc00 #000000 0 1;
#X obj 544 122 expr \\$2-\\$1;
#X obj 510 184 random;
#X obj 544 72 loadbang;
#X obj 475 189 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 428 110 t b f;
#X obj 478 159 t b b;
#X obj 451 139 bng 10 250 50 0 empty empty empty 17 7 0 10 #f8fc00 #0400fc #000000;
#X obj 653 101 unpack f f;
#X obj 669 130 expr $f2-$f1;
#X floatatom 543 157 5 0 0 0 range - - 0;
#X floatatom 598 183 5 0 0 0 start - - 0;
#X obj 599 153 f \\$1;
#X obj 510 210 +;
#X obj 544 97 t b b;
#X floatatom 510 239 5 0 0 1 r - - 0;
#X msg 651 65 500 3500;
#X obj 157 481 cos~;
#X floatatom 205 270 4 0 100 0 - - - 0;
#X obj 204 294 / 10;
#X obj 157 451 *~;
#X obj 204 366 line~;
#X obj 204 318 max 0;
#X floatatom 107 373 4 0 0 0 - - - 0;
#X text 86 325 fundamental;
#X text 86 344 frequency;
#X obj 199 481 cos~;
#X obj 240 394 wrap~;
#X obj 204 421 -~;
#X obj 199 451 +~;
#X obj 199 526 -~;
#X obj 222 576 *~;
#X obj 204 616 +~;
#X obj 204 342 pack 0 50;
#X obj 107 397 phasor~ 100;
#X text 36 135 center frequency (in;
#X text 35 155 tenths of fundamental);
#X obj 204 662 hip~ 5;
#X obj 225 703 *~;
#X obj 296 718 vline~;
#X floatatom 451 363 5 0 0 0 - - - 0;
#X msg 294 690 \\$1 1000;
#X obj 421 265 random 8;
#X obj 644 39 loadbang;
#X obj 72 597 vline~;
#X obj 126 104 unpack f f f;
#X obj 382 30 loadbang;
#X obj 2 607 *~;
#X msg 637 374 10 27 21;
#X msg 636 542 5 12 46;
#X msg 636 423 2 52 2;
#X msg 636 447 9 11 78;
#X msg 636 471 7 16 38;
#X floatatom 49 210 5 0 0 0 - - - 0;
#X msg 636 495 28 -20 15;
#X msg 636 519 1 -12 41;
#X msg 635 397 17 28 46;
#X obj 595 332 sel 1 2 3 4 5 6 7 8 9 10 11 12;
#X msg 638 567 21 14 19;
#X msg 639 614 14 -16 49;
#X msg 639 638 4 10 40;
#X msg 638 591 61 31 25;
#X obj 435 299 / 10;
#X obj 446 323 + 0.5;
#X connect 0 0 9 0;
#X connect 1 0 6 1;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 3 0 8 0;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 5 0 4 1;
#X connect 6 0 67 0;
#X connect 7 0 3 1;
#X connect 8 0 1 0;
#X connect 9 0 1 1;
#X connect 10 0 5 0;
#X connect 12 0 65 0;
#X connect 14 0 77 0;
#X connect 15 0 65 0;
#X connect 16 0 43 0;
#X connect 17 0 38 0;
#X connect 18 0 19 0;
#X connect 19 0 27 0;
#X connect 19 0 62 0;
#X connect 20 0 25 0;
#X connect 21 0 30 0;
#X connect 22 0 33 0;
#X connect 23 0 34 0;
#X connect 24 0 19 1;
#X connect 25 0 27 0;
#X connect 25 1 24 0;
#X connect 26 0 18 0;
#X connect 26 1 22 0;
#X connect 27 0 26 0;
#X connect 28 0 31 0;
#X connect 29 0 30 0;
#X connect 30 0 22 1;
#X connect 31 0 33 1;
#X connect 32 0 31 0;
#X connect 33 0 18 1;
#X connect 33 0 35 0;
#X connect 34 0 21 0;
#X connect 34 1 32 0;
#X connect 36 0 28 0;
#X connect 36 0 29 0;
#X connect 37 0 50 1;
#X connect 37 0 52 0;
#X connect 38 0 39 0;
#X connect 39 0 42 0;
#X connect 40 0 37 0;
#X connect 40 0 49 0;
#X connect 41 0 48 0;
#X connect 41 0 47 0;
#X connect 42 0 53 0;
#X connect 43 0 54 0;
#X connect 46 0 50 0;
#X connect 47 0 48 1;
#X connect 47 0 51 1;
#X connect 48 0 40 1;
#X connect 49 0 46 0;
#X connect 50 0 51 0;
#X connect 51 0 52 1;
#X connect 52 0 57 0;
#X connect 53 0 41 0;
#X connect 54 0 40 0;
#X connect 54 0 49 1;
#X connect 57 0 58 0;
#X connect 58 0 11 0;
#X connect 59 0 58 1;
#X connect 60 0 61 0;
#X connect 61 0 59 0;
#X connect 61 0 64 0;
#X connect 62 0 82 0;
#X connect 63 0 36 0;
#X connect 64 0 67 1;
#X connect 65 0 73 0;
#X connect 65 1 16 0;
#X connect 65 2 17 0;
#X connect 66 0 20 0;
#X connect 67 0 11 0;
#X connect 68 0 13 0;
#X connect 69 0 13 0;
#X connect 70 0 13 0;
#X connect 71 0 13 0;
#X connect 72 0 13 0;
#X connect 73 0 5 1;
#X connect 74 0 13 0;
#X connect 75 0 13 0;
#X connect 76 0 13 0;
#X connect 77 0 68 0;
#X connect 77 1 69 0;
#X connect 77 2 70 0;
#X connect 77 3 71 0;
#X connect 77 4 72 0;
#X connect 77 5 74 0;
#X connect 77 6 75 0;
#X connect 77 7 76 0;
#X connect 77 8 78 0;
#X connect 77 9 81 0;
#X connect 77 10 79 0;
#X connect 77 11 80 0;
#X connect 78 0 13 0;
#X connect 79 0 13 0;
#X connect 80 0 13 0;
#X connect 81 0 13 0;
#X connect 82 0 83 0;
#X connect 83 0 60 0;
#X restore 16 286 pd synth;
#X obj 204 329 *~;
#X obj 21 70 route bang panvol param preset rev;
#X floatatom 266 103 5 0 0 0 - - - 0;
#X obj 331 117 s rev_v;
#X obj 189 276 line~;
#X msg 189 252 \\$1 100;
#X floatatom 189 189 5 0 0 0 - - - 0;
#X obj 132 322 switch~;
#X obj 132 298 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 132 274 change;
#X text 89 167 switch on/off before 0 to stop startup pops, f 12;
#X obj 189 228 max 0;
#X obj 132 250 > -0.3;
#X connect 0 0 1 0;
#X connect 1 0 23 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 28 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 17 0 16 1;
#X connect 18 0 17 0;
#X connect 19 0 18 0;
#X connect 21 0 9 0;
#X connect 22 0 9 1;
#X connect 23 0 14 0;
#X connect 23 1 10 0;
#X connect 23 3 21 1;
#X connect 23 4 24 0;
#X connect 24 0 25 0;
#X connect 26 0 22 0;
#X connect 26 0 22 1;
#X connect 27 0 26 0;
#X connect 28 0 33 0;
#X connect 28 0 34 0;
#X connect 30 0 29 0;
#X connect 31 0 30 0;
#X connect 33 0 27 0;
#X connect 34 0 31 0;
"
[node name="CollisionShape2" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.79, 0 )

View file

@ -1,56 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
[application]
config/name="Procedural Trees"
run/main_scene="res://tenniscourts/src/Sandbox.tscn"
[autoload]
Global="*res://tenniscourts/Global.tscn"
Events="*res://tenniscourts/Events.tscn"
[input]
move_forward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
move_jump={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
guide={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":71,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
}
[rendering]
environment/default_environment="res://tenniscourts/default_env.tres"

View file

@ -6,19 +6,14 @@ var morae = load("res://tenniscourts/morae.tscn")
var mr = null
func _ready():
randomize()
for i in range(12):
yield(get_tree().create_timer(rand_range(30, 60)), "timeout")
mr = morae.instance()
# rstone.set_param(preset_grps[0][randi()%4])
# rstone.set_color(preset_colors[0])
mr.set_preset(i+1)
mr.audible_range_max = 130
mr.translate(Vector3(rand_range(30, 100), 20, rand_range(-30,-70)))
add_child(mr)

View file

@ -87,6 +87,160 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19, 0.27, -65 )
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 9.78137, 1.43407, -21.4578 )
script = ExtResource( 5 )
audible_range_max = 200.0
use_embeded_patch = true
patch = "#N canvas 22 179 583 567 12;
#X obj 21 22 r fromGodot\\$0;
#X obj 21 46 list trim;
#X obj 303 253 hsl 100 20 -1 1 0 0 empty empty empty -2 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 300 349 line~;
#X msg 300 325 \\$1 100;
#X obj 300 278 expr ($f1 + 1)/8;
#X floatatom 300 302 5 0 0 0 - - - 0;
#N canvas 68 97 450 300 pan2~ 0;
#X obj 51 98 cos~;
#X obj 111 98 cos~;
#X obj 33 128 *~;
#X obj 93 128 *~;
#X obj 33 158 outlet~;
#X obj 93 158 outlet~;
#X obj 33 24 inlet~;
#X obj 111 24 inlet~;
#X obj 111 74 +~ 0.75;
#X connect 0 0 2 1;
#X connect 1 0 3 1;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 0 0;
#X connect 8 0 1 0;
#X restore 199 437 pd pan2~;
#X obj 199 467 dac~ 1 2;
#X obj 195 409 *~;
#X obj 189 127 unpack f f;
#X floatatom 296 159 5 0 0 0 - - - 0;
#X obj 296 182 sin;
#X floatatom 296 206 5 0 0 0 - - - 0;
#X obj 21 120 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 361 21 loadbang;
#X obj 20 470 *~;
#X obj 38 446 vline~;
#X msg 38 422 0 \\, 1 1000 300;
#X obj 38 398 loadbang;
#X msg 361 51 \\; pd dsp 1;
#N canvas 567 23 873 806 synth 0;
#X obj 197 70 r \\$0-preset;
#X obj 519 680 s \\$0-preset;
#X obj 566 305 inlet;
#X obj 126 73 inlet;
#X floatatom 124 137 5 0 0 0 - - - 0;
#X floatatom 166 137 5 0 0 0 - - - 0;
#X text 36 135 center frequency (in;
#X text 35 155 tenths of fundamental);
#X obj 121 593 *~;
#X obj 644 39 loadbang;
#X obj 126 104 unpack f f f;
#X msg 637 374 10 27 21;
#X msg 636 542 5 12 46;
#X msg 636 423 2 52 2;
#X msg 636 447 9 11 78;
#X msg 636 471 7 16 38;
#X msg 636 495 28 -20 15;
#X msg 636 519 1 -12 41;
#X msg 635 397 17 28 46;
#X obj 595 332 sel 1 2 3 4 5 6 7 8 9 10 11 12;
#X msg 638 567 21 14 19;
#X msg 639 614 14 -16 49;
#X msg 639 638 4 10 40;
#X msg 638 591 61 31 25;
#X obj 125 482 osc~;
#X obj 224 463 vline~;
#X obj 200 349 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 210 192 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X msg 138 393 420;
#X obj 197 268 metro 4000;
#X obj 147 703 outlet~;
#X obj 238 153 r guide;
#X msg 227 422 0.3 60 0 \\, 0.1 100 200 \\, 0 2000 200;
#X connect 0 0 10 0;
#X connect 2 0 19 0;
#X connect 3 0 10 0;
#X connect 8 0 30 0;
#X connect 10 1 4 0;
#X connect 10 2 5 0;
#X connect 11 0 1 0;
#X connect 12 0 1 0;
#X connect 13 0 1 0;
#X connect 14 0 1 0;
#X connect 15 0 1 0;
#X connect 16 0 1 0;
#X connect 17 0 1 0;
#X connect 18 0 1 0;
#X connect 19 0 11 0;
#X connect 19 1 12 0;
#X connect 19 2 13 0;
#X connect 19 3 14 0;
#X connect 19 4 15 0;
#X connect 19 5 16 0;
#X connect 19 6 17 0;
#X connect 19 7 18 0;
#X connect 19 8 20 0;
#X connect 19 9 23 0;
#X connect 19 10 21 0;
#X connect 19 11 22 0;
#X connect 20 0 1 0;
#X connect 21 0 1 0;
#X connect 22 0 1 0;
#X connect 23 0 1 0;
#X connect 24 0 8 0;
#X connect 25 0 8 1;
#X connect 26 0 28 0;
#X connect 26 0 32 0;
#X connect 27 0 29 0;
#X connect 28 0 24 0;
#X connect 29 0 26 0;
#X connect 31 0 27 0;
#X connect 32 0 25 0;
#X restore 16 286 pd synth;
#X obj 204 329 *~;
#X floatatom 266 103 5 0 0 0 - - - 0;
#X obj 189 276 line~;
#X msg 189 252 \\$1 100;
#X floatatom 189 189 5 0 0 0 - - - 0;
#X obj 21 70 route bang panvol param preset guide;
#X text 64 155 comment, f 12;
#X obj 346 133 s guide;
#X connect 0 0 1 0;
#X connect 1 0 27 0;
#X connect 2 0 5 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 9 0 7 0;
#X connect 10 0 26 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 2 0;
#X connect 17 0 16 1;
#X connect 18 0 17 0;
#X connect 19 0 18 0;
#X connect 21 0 9 0;
#X connect 22 0 9 1;
#X connect 23 0 29 0;
#X connect 24 0 22 0;
#X connect 24 0 22 1;
#X connect 25 0 24 0;
#X connect 26 0 25 0;
#X connect 27 0 14 0;
#X connect 27 1 10 0;
#X connect 27 3 21 1;
#X connect 27 4 23 0;
"
[node name="CollisionShape" type="CollisionShape" parent="guide"]
shape = SubResource( 8 )

View file

@ -1,12 +1,14 @@
extends StaticBody
export (String, MULTILINE) var patch = ""
export (float, 0, 400) var audible_range_max = 400.0
export (float, 1, 12) var preset = 1
export (int, 1, 12) var preset = 1
var _my_patch = "res://tenniscourts/guide.pd"
export (bool) var use_embeded_patch = false
export (String, MULTILINE) var patch = ""
var _my_patch = "user://tenniscourts/guide.pd"
var _my_id = 0
var _gg = false
func set_param(param):
@ -41,17 +43,12 @@ func relocate(center, radius_range):
look_at_from_position(Vector3(loc.x, randf()*2 + 1, loc.y), Vector3.FORWARD, Vector3.UP)
func _ready():
# save patch
# prepare directory
# var patch_name = _my_patch.split("/")[-1]
# var patch_dir = _my_patch.trim_suffix(patch_name)
# var dir = Directory.new()
# dir.make_dir_recursive(patch_dir)
# # save to file
# var file = File.new()
# file.open(_my_patch, File.WRITE)
# file.store_string(patch)
# file.close()
# save patch (for export)
if use_embeded_patch:
assert(_my_patch.substr(0, 7) == "user://", "use userpath with embeded_patch enabled !")
assert(patch != "", "patch is empty?")
_save_patch()
# load patch
_my_id = Global.load_patch(ProjectSettings.globalize_path(_my_patch))
@ -71,8 +68,10 @@ func _on_Events_player_transform_updated(playerpos, playerheading):
var angle = fmod(fmod(playerpos2d.angle_to_point(mypos2d) + playerheading - PI/2, PI*2) + PI*2, PI*2)
if angle > PI:
angle = angle - PI*2
# (check)
# print(str(_my_id) +" : ("+ str(distance) +","+ str(angle) +")")
# calculate gain
var gain = max(1 - distance/audible_range_max, 0)
var gain = 1 - distance/audible_range_max
# send to the patch
Global._gdpd.start_message(3)
Global._gdpd.add_symbol("panvol")
@ -91,4 +90,16 @@ func _physics_process(delta):
func _exit_tree():
Global.close_patch(_my_id)
pass
func _save_patch():
# save patch
# prepare directory
var patch_name = _my_patch.split("/")[-1]
var patch_dir = _my_patch.trim_suffix(patch_name)
var dir = Directory.new()
dir.make_dir_recursive(patch_dir)
# save to file
var file = File.new()
file.open(_my_patch, File.WRITE)
file.store_string(patch)
file.close()