|
@@ -0,0 +1,36 @@
|
|
|
+extends Node2D
|
|
|
+
|
|
|
+
|
|
|
+const VU_COUNT=16
|
|
|
+const FREQ_MAX = 11050.0
|
|
|
+
|
|
|
+const WIDTH = 400
|
|
|
+const HEIGHT = 100
|
|
|
+
|
|
|
+const MIN_DB = 60
|
|
|
+
|
|
|
+var spectrum
|
|
|
+
|
|
|
+func _draw():
|
|
|
+
|
|
|
+ var w = WIDTH / VU_COUNT
|
|
|
+ var prev_hz = 0
|
|
|
+ for i in range(1,VU_COUNT+1):
|
|
|
+ var hz = i * FREQ_MAX / VU_COUNT;
|
|
|
+ var f = spectrum.get_magnitude_for_frequency_range(prev_hz,hz)
|
|
|
+ var energy = clamp((MIN_DB + linear2db(f.length()))/MIN_DB,0,1)
|
|
|
+ #print("db ",db,": ",f.length())
|
|
|
+ var height = energy * HEIGHT
|
|
|
+ draw_rect(Rect2(w*i,HEIGHT-height,w,height),Color(1,1,1))
|
|
|
+ prev_hz = hz
|
|
|
+
|
|
|
+
|
|
|
+func _process(delta):
|
|
|
+ update()
|
|
|
+
|
|
|
+func _ready():
|
|
|
+ spectrum = AudioServer.get_bus_effect_instance(0,0)
|
|
|
+
|
|
|
+# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
|
+#func _process(delta):
|
|
|
+# pass
|