usingMakiefunctioncartesian(ll)returnPoint3f0(cos(ll[1])*sin(ll[2]),sin(ll[1])*sin(ll[2]),cos(ll[2]))endfract(x)=x-floor(x)functioncalcpositions(rings,index,time,audio)movement,radius,speed,spin=1,2,3,4;position=Point3f0(0.0)precision=0.2f0forringinringsposition+=ring[radius]*cartesian(precision*index*Point2f0(ring[spin]+Point2f0(sin(time*ring[speed]),cos(time*ring[speed]))*ring[movement]))endamplitude=audio[round(Int,clamp(fract(position[1]*0.1),0,1)*(25000-1))+1];# index * 0.002position*=1.0+amplitude*0.5;positionendrings=[(0.1f0,1.0f0,0.00001f0,Point2f0(0.2,0.1)),(0.1f0,0.0f0,0.0002f0,Point2f0(0.052,0.05))]N2=25000t_audio=sin.(range(0,stop=10pi,length=N2)).+(cos.(range(-3,stop=7pi,length=N2)).*0.6).+(rand(Float32,N2).*0.1)./2f0start=time()t=(time()-start)*100pos=calcpositions.((rings,),1:N2,t,(t_audio,))scene=lines(pos,color=RGBAf0.(to_colormap(:RdBu,N2),0.6),thickness=0.6f0,show_axis=false,transparency=true)linesegments!(scene,FRect3D(Vec3f0(-1.5),Vec3f0(3)),raw=true,linewidth=3,linestyle=:dot)eyepos=Vec3f0(5,1.5,0.5)lookat=Vec3f0(0)update_cam!(scene,eyepos,lookat)scene.center=false# prevent scene from recentering on displayl=scene[1]N=150record(scene,"output.mp4",1:N)doit=(time()-start)*700pos.=calcpositions.((rings,),1:N2,t,(t_audio,))l[1]=pos# update argument 1rotate_cam!(scene,0.0,0.01,0.01)end