This time with a code example, since most of the API is non-volatile now.
http://youtu.be/PZDzZAEXkR4
side_actors[pn]= screen_gameplay:GetChild("Player" .. ToEnumShortString(pn))
notefields[pn]= side_actors[pn]:GetChild("NoteField")
notecolumns[pn]= notefields[pn]:get_column_actors()
for i= 1, #notecolumns[pn] do
local rot_handler= notecolumns[pn][i]:get_rot_handler()
rot_handler:set_beats_per_t(2 * i)
:set_spline_mode("NoteColumnSplineMode_Position")
:set_subtract_song_beat(false)
local rot_spline= rot_handler:get_spline()
local pi= math.pi
-- poff gives each column slightly different behavior
local poff= pi * .0625 * i
rot_spline:set_loop(true):resize(4)
:set_spatial_extent(1, pi*2)
:set_spatial_extent(2, pi*2)
:set_spatial_extent(3, pi*2)
:set_point(1, {poff, poff, poff})
:set_point(2, {poff+pi/4, poff+pi/2, poff+pi})
:set_point(3, {poff+pi, poff+pi, poff+pi*2})
:set_point(4, {poff+pi*1.75, poff+pi*1.5, poff+pi*3})
-- Normally, spline:solve would be called to produce a smooth point.
-- Setting the coefficients directly instead gives the spline a rather different shape.
local coeff= {{pi/4, pi/2, pi}, {0, 0, 0}, {0, 0, 0}}
for p= 1, rot_spline:size() do
rot_spline:set_coefficients(p, coeff[1], coeff[2], coeff[3])
end
end