Initial commit 2, but its broken

This commit is contained in:
Sebastian Cabrera 2023-09-20 15:28:30 -04:00
parent 556e8b5e31
commit 16383bec0c
7 changed files with 115 additions and 13 deletions

48
Scripts/Waves.gd Normal file
View file

@ -0,0 +1,48 @@
extends Node
# Constants
var SAMPLE_RATE = 44100 # Adjust as needed
var DURATION = 5.0 # Duration of the wave in seconds
var AMPLITUDE = 0.5 # Amplitude of the wave
var FREQUENCY = 440.0 # Frequency in Hz
func _ready():
# Calculate the number of samples
var num_samples = int(SAMPLE_RATE * DURATION)
# Generate the wave data using FFT
var wave_data = generate_sine_wave(num_samples, AMPLITUDE, FREQUENCY)
# Create a VisualInstance (for visualization purposes)
var visual_instance = VisualInstance3D.new()
var mesh = Mesh.new()
# Create a SurfaceTool to manipulate the mesh
var st = SurfaceTool.new()
# Create vertices and triangles for the 3D grid
for i in range(num_samples):
var t = i / float(SAMPLE_RATE)
var sample = wave_data[i]
st.add_vertex(Vector3(t, sample, 3.0)) # Adjust the third dimension as needed
# Connect vertices to form triangles
if i > 0:
st.add_index(i - 1)
st.add_index(i)
# Create the surface and set the mesh
st.create_to(mesh)
visual_instance.set_surface_material(0, ShaderMaterial.new())
visual_instance.mesh_instance_set_mesh(0, mesh)
# Add the VisualInstance as a child to visualize the wave
add_child(visual_instance)
func generate_sine_wave(num_samples, amplitude, frequency):
var wave_data = []
for i in range(num_samples):
var t = i / float(SAMPLE_RATE)
var sample = amplitude * sin(2.0 * PI * frequency * t)
wave_data.append(sample)
return wave_data