Code:
	--==============================================    Command Line Stereo Waveform Script    ===============================================--
--  Make the dwell time and the step rate work together to maintain rotation speed. This allows thinning of the 'walls' and strengthening of corners.
--  Dwell time should be calculated on the difference in step sizes for the axis with the largest rate change.
    --  Note! Only works with very fine time resolution.  D=math.max(math.abs(RXN,RXO),math.abs(RYN,RYO))
--  LINE WEIGHT CALCULATION ERROR! It works, but the line length is not known till the rotator has done, and the draw length depends on step size and
--  count which are based on line length. You can't specify an accurate rotation rate at the outset, unless you also exactly specify the draw rate.
function Main()  local F,OUT,X,Y,A,N,P,R,S,D={},{},0,0,8192,2.33333333333333333333333,math.rad(0),math.rad(0.02),0.05,10
    for Z=1,N*3 do
        F[Z],F[-Z]=math.sin((Z-1)*2*math.pi/N),math.cos((Z-1)*2*math.pi/N)
    end
--    F[1],F[-1]=0,0                                                              -- Array for frame, instead of for-loop polygon draw.
--    F[2],F[-2]=-0.1,0.25
--    F[3],F[-3]=0.01,1
--    F[4],F[-4]=0.1,0.25
    local I,FL,SC,X,Y,SX,SY=1,table.getn(F)  local x,y,c,s=0,0  R=R/FL
    while table.getn(OUT)<44100*20  do
        c,s=math.cos(P),math.sin(P)  X,Y=c*F[I]+s*F[-I],c*F[-I]-s*F[I]          -- Rotator.
        SC=((X-x)^2+(Y-y)^2)^0.5/S+1  SX,SY=(X-x)/SC,(Y-y)/SC                   -- Step sizer.
        for Z=1,SC do  table.insert(OUT,Hex_Word(A,x+SX*Z,y+SY*Z))  end         -- Interpolator.
        for Z=1,D/SC+D do  table.insert(OUT,Hex_Word(A,X,Y))  end               -- Dwell points.
        I=I+1  if I>FL then  I=1  end  x,y=X,Y P=P+R
    end
    DataSave("TEST WAVE.raw",table.concat(OUT,"")) --,S+D+1
    wx.wxMessageBox("Finished Processing","",wx.wxOK+wx.wxICON_EXCLAMATION,wx.wxNull)
    os.exit()
end
--======================================================    Common  Functions   ==========================================================--
function Hex_Word(S,X,Y)  X,Y=S*X,S*Y
    if (X<0) then  X=X+65536  end  if (Y<0) then  Y=Y+65536  end  return string.char(math.mod(X,256),X/256,math.mod(Y,256),Y/256)
end
function OpenTest(F)
    F=io.open(F)  if F then  return io.close(F)  end
end
function DataLoad(F)
    F=assert(io.open(F,"rb"))  local D=F:read("*a")  F:close()  return D
end
function DataSave(F,D)
    F=assert(io.open(F,"wb"))  F:write(D)  F:close()
end
--=======================================================    End  Of  Script   ===========================================================--
Main()
 Edit: