pfun=ParametricNDSolveValue[{x''[t]==-ω x[t],x[0]==x0,x'[0]==x1},x,{t,0,4π},{ω,x0,x1}];
Plot[Evaluate@Table[pfun[ω,1,0][t],{ω,.5,3,.5}],{t,0,4π},ImageSize->Medium]

GraphicsColumn[{Plot[Evaluate@Table[pfun[1,x0,0][t],{x0,-1,1,.1}],{t,0,4π},ImageSize->Medium],Plot[Evaluate@Table[pfun[1,0,x1][t],{x1,-1,1,.1}],{t,0,4π},ImageSize->Medium]}]

pfun=ParametricNDSolveValue[{x''[t]==-ω x[t],x[0]==x0,x'[0]==x1},x,{t,0,4π},{ω,x0,x1,wp},Method->"Extrapolation",WorkingPrecision->wp ];
ListLogPlot[Table[{wp,Abs[pfun[1,1,0,wp][4 π]-1]},{wp,16,60}],AxesLabel->{wp,"Error"},ImageSize->Medium]