Initial commit 2, but its broken
This commit is contained in:
parent
556e8b5e31
commit
16383bec0c
7 changed files with 115 additions and 13 deletions
48
Scripts/Waves.gd
Normal file
48
Scripts/Waves.gd
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue