../

compose


log




2025-07-06

A timeline with lanes.

--------------------------------------
[==]
--------------------------------------
[===|===|==]
--------------------------------------

--------------------------------------

In each of the lanes you can add phrase / script call OOPS: Could not find "/software/compose/===".. Here is the script for a simple sin osillator...

local picthMulti = .5
function process(sample, pitch, cycle, time, length)
return sample + math.sin(cycle*picthMulti)*.1
end

sample is the rendered signal so far. (clamped from -1 to 1)
pitch is the pitch of the note. (0 represents the basePitch, 2 is two octaves above basePitch, -1 is one octave bellow basePitch)
cycle is the current phase of the note in radians. (from 0 to TAU)
time is the amount of time (in seconds) that has past since starting this note.
length is the length of the note in seconds.

These could be used to create a filter or somthing. Use pitch to control the cutoff of a filter.

local filterSample = 0
function process(sample, progress, pitch, cycle, time)
filterSample = filterSample + (sample - filterSample) * pitch
return filterSample
end

The phrases are processed in the lane stack top to bottom, with each script call modifying the final signal.

--------------------------------------
[synth lead ]
--------------------------------------
[low pass filter ]
--------------------------------------
[echo ]
--------------------------------------



2025-05-18

Had a problem where the whole project would lag down. This was caused by newMeshes being created every frame for every visable note. Instead we create the meshes once and use them in static mode. This helped with performance alot. note.mesh = lg.newMesh(#note2,'strip','static') -- vs 'dynamic'

i like this loop
2025-05-18.wav