37 lines
743 B
GDScript3
37 lines
743 B
GDScript3
|
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
|