{
   "code" : "s.boot;\r\n\r\n(\r\nq = ();\r\nq.length = 16; // 16 seconds == 8 bars @ 120bpm\r\nq.numFrames = q.length * s.sampleRate; \r\nq.looperInBus = Bus.audio(s);\r\n\r\nSpec.add(\\switch,     [0, 1, \\lin, 1, 0]);\r\nSpec.add(\\recLevel,   \\db);\r\nSpec.add(\\preLevel,   \\db);\r\nSpec.add(\\playbackRate, \\rate);\r\nSpec.add(\\recEnable,  \\switch);\r\nSpec.add(\\recCuePoint,  [0, q.length]);\r\nSpec.add(\\playCuePoint, \\recCuePoint);\r\nSpec.add(\\resetRec, \\switch);\r\nSpec.add(\\resetPlay,\\switch);\r\n)\r\n\r\nNdefMixer(s)\r\n\r\n(\r\nNdef(\\clicktrack, {\r\n  Mix([\r\n    SinOsc.ar(440) * Decay.ar(Impulse.ar(2), 0.1, 0.2), \r\n    SinOsc.ar(880) * Decay.ar(Impulse.ar(0.5), 0.1, 0.2)\r\n  ]);\r\n})\r\n)\r\n\r\n(\r\nNdef(\\oneTrackLooper, { // A looper for one track, mono.\r\n  var in = Ndef(\\input).ar; // your input\r\n\r\n  var buffer = LocalBuf.newFrom(0!q.numFrames); // stores loop\r\n  var recEnable = \\recEnable.kr(0).lag2(0.01);\r\n  var recLevel  = \\recLevel .kr(0).dbamp;\r\n  var preLevel  = \\preLevel .kr(0).dbamp;\r\n    // converts from samples to seconds\r\n  var playCuePoint = \\playCuePoint.kr(0) * s.sampleRate; \r\n  var resetRec  =  \\resetRec.tr(1);\r\n  var resetPlay = \\resetPlay.tr(1);\r\n  var playRate = \\playbackRate.kr(1);\r\n  \r\n  // recording\r\n  RecordBuf.ar(\r\n    in, \r\n    buffer, \r\n    loop: 1, \r\n    recLevel: recLevel * recEnable,\r\n    preLevel: preLevel,\r\n    trigger:  resetRec\r\n  );\r\n\r\n  // playing back\r\n  PlayBuf.ar(\r\n    1,\r\n    buffer, \r\n    rate:   playRate, \r\n    trigger:  resetPlay, \r\n    startPos: playCuePoint, \r\n    loop: 1\r\n  );\r\n\r\n\r\n})\r\n\r\n)\r\n\r\n\r\n// something to loop\r\n(\r\nNdef(\\input, {\r\n  SoundIn.ar(0);\r\n})\r\n)",
   "id" : "1-4Sm",
   "is_private" : null,
   "labels" : [
      "looper",
      "basic",
      "ndef"
   ],
   "description" : "very basic, more explanation and a sound example here:\r\nhttp://tai-studio.org/index.php/2013/02/looper/",
   "ancestor_list" : [],
   "author" : "LFSaw",
   "name" : "(mono) looper on Ndef basis"
}
