(* created at 2012/3/11 *)
(* from AnalyticSignalSynthesizer.nb *)

(* 離散ユニットステップフィルタ *)
step[n_Integer?Positive]:=1+Sign[Sin[π Range[1,-1,-2/n]//Most]]
(* 実関数の複素化 *)
wind[li_List]:=InverseFourier[Fourier[li]*step[Length[li]]]

Manipulate[DynamicModule[{s={Re[#],Im[#]}&/@N[Exp[-2π I Most[Range[0,1,1/64]]]]},Grid[{{Graphics[{{EdgeForm[{Black}],FaceForm[],Polygon[Dynamic[s]]},Table[With[{k=k},Locator[Dynamic[s[[k]],(tmp=#-s[[k]];s=s+({Re[#],Im[#]}&
/@wind[RotateRight[(((((1+Cos[2π Most[Range[0,1,1/64]]])/2)))^a)Complex@@tmp ,k-1]]))&]]],{k,1,64}]},PlotRange->1.5,ImageSize->500],SpanFromLeft},{Dynamic[ListLinePlot[Reverse/@s,AspectRatio->Automatic,PlotRange->All,Mesh->All]],Dynamic[ListPlot[{Range[0,63],Abs[Fourier[Complex@@@s]]}\[Transpose],
PlotRange->{{-1,15},{0,All}},Filling->Axis]],Dynamic[ListLinePlot[s\[Transpose]//First,Mesh->All]]}}]],{{a,10},1,100}]