Source reference
tests/synthesis/stress/game.luau
--!strict
local byt = require("@bytorio")
local audio, data = byt.audio, byt.data
return {
init = function()
local pcm = data.pcm(32, 1)
for i = 0, 31 do
buffer.writef32(pcm.samples, i * 4, i / 16 - 1)
end
local wave = audio.wavetable({ frames = 32, waves = 1 }, pcm)
local nodes: { byt.SynthNode } = { { kind = "wavetable", source = wave } }
for i = 1, 13 do
local filter: byt.SynthNode =
{ kind = "filter", input = i - 1, cutoff_hz = 6000, resonance = 0.4 }
table.insert(nodes, filter)
end
local finalGain: byt.SynthNode = { kind = "gain", input = 13, gain = 0.03 }
table.insert(nodes, finalGain)
local output: byt.SynthNode = { kind = "output", input = 14 }
table.insert(nodes, output)
local instrument = audio.instrument(nodes)
local buses = { audio.master() }
for _ = 1, 7 do
table.insert(buses, audio.bus())
end
local fx: { byt.SynthNode } = {
{ kind = "input" },
{ kind = "filter", input = 0, cutoff_hz = 6000, resonance = 0.4 },
{
kind = "delay",
input = 1,
max_delay_frames = 256,
delay_frames = 128,
feedback = 0.5,
},
{ kind = "gain", input = 2 },
{ kind = "gain", input = 3 },
{ kind = "gain", input = 4 },
{ kind = "gain", input = 5 },
{ kind = "output", input = 6 },
}
for _, bus in buses do
audio.effects(bus, fx)
end
for i = 0, 15 do
audio.note_on(audio.voice(i), instrument, 220 + i * 11, { bus = buses[i % 8 + 1] })
end
for i = 0, 31 do
buffer.writef32(pcm.samples, i * 4, -(i / 16 - 1))
end
audio.edit_wavetable(wave, 0, pcm, 512)
for i = 0, 15 do
audio.node_control(audio.voice(i), instrument, 0, "frequency", 660, 1024, 128)
end
for _, bus in buses do
audio.effect_control(bus, 1, "cutoff", 1200, 2048, 512)
end
end,
update = function(_dt: number)
local status = audio.status()
byt.debug_position(status.completed, #audio.completions())
end,
draw = function()
byt.clear(byt.rgb(20, 28, 44))
byt.text("DSP LOAD: 16 VOICES / 8 BUSES / 320 NODES", 8, 20, byt.rgb(240, 240, 240))
end,
}
Get started