{
   "code" : "// Using MultiSliderView to control the harmonics of a wavetable\r\n\r\n// example by James McCartney extracted from the mailing list\r\n// https://listarc.cal.bham.ac.uk/lists/sc-users-2003/msg05160.html\r\n\r\n(\r\nvar s, b, x, bufsize, secperbuf;\r\nvar w, ms, slid, cspec;\r\nvar changed, harmonics;\r\n\r\nbufsize=128;\r\n\r\ns = Server.local;\r\n\r\nb=Buffer.alloc(s, bufsize, 1);\r\n\r\nx = { arg rate=440;\r\n        Osc.ar(b.bufnum, rate, 0, 0.2)\r\n}.play;\r\n\r\nharmonics=10;\r\n\r\nw = Window(\"uiosc\", Rect(200, 450, 20*harmonics+50,\r\n150));\r\nms = MultiSliderView(w, Rect(0, 0, 20*harmonics,\r\n100));\r\n\r\nms.value_(Array.fill(harmonics,0.0));\r\nms.isFilled_(true);\r\nms.valueThumbSize_(1.0);\r\nms.indexThumbSize_(10.0);\r\nms.gap_(10);\r\n\r\nslid=Slider(w,Rect(20*harmonics+10, 0, 20, 100));\r\ncspec= ControlSpec(70,1000, 'exponential', 10, 440);\r\nslid.action_({x.set(\\rate, cspec.map(slid.value)); });\r\n\r\nslid.value_(0.3); slid.action.value;\r\n\r\nw.front;\r\n\r\nchanged=false;\r\n\r\nms.action_({b.sine1(ms.value, false, true, true)});\r\n\r\n)",
   "id" : "1-5hb",
   "is_private" : null,
   "labels" : [
      "gui",
      "wavetable",
      "harmonic series",
      "sinusoid"
   ],
   "ancestor_list" : [],
   "description" : "example by James McCartney extracted from the mailing list: https://listarc.cal.bham.ac.uk/lists/sc-users-2003/msg05160.html",
   "name" : "Using MultiSliderView to control the harmonics of a wavetable",
   "author" : "zecraum"
}
