{
   "description" : "Reverb study",
   "ancestor_list" : [],
   "author" : "LFSaw",
   "name" : "Verber",
   "code" : "(\r\ns.options.memSize_(65536 * 2);\r\ns.reboot;\r\n\r\nSpec.add(\\damp, [0, 1]);\r\nSpec.add(\\earlydiff, [0, 1]);\r\nSpec.add(\\highband, [1000, 10000, \\exp]);\r\nSpec.add(\\highx, [0, 1]);\r\nSpec.add(\\lowband, [100, 6000, \\exp]);\r\nSpec.add(\\lowx, [0, 1]);\r\nSpec.add(\\mdepth, [0, 50]);\r\nSpec.add(\\mfreq, [0, 10]);\r\nSpec.add(\\midx, [0, 1]);\r\nSpec.add(\\size, [0.5, 3]);\r\nSpec.add(\\t60, [0.1, 60, \\exp]);\r\nSpec.add(\\wet, [0, 1]);\r\nSpec.add(\\shelfslope, [1, 10]);\r\nSpec.add(\\shelfFreq, \\freq);\r\n)\r\n\r\n\r\nNdef(\\src).clear\r\n(\r\nNdef(\\src).fadeTime = 4;\r\nNdef(\\src).quant = 2;\r\nNdef(\\src, {\r\n    var src = 10.collect{\r\n        Pan2.ar([HPF, LPF, ComplexRes].choose.performKeyValuePairs(\\ar,[\r\n            \\in, [Impulse, LFPulse].choose.ar(\r\n                [4, 2, 1, 1/2, 1/3, 1/4, 1/6].choose,\r\n                iphase: [0, 1/4, 1/8, 1/2, 1/3].choose,\r\n                phase: [0, 1/4, 1/8, 1/2, 1/3].choose,\r\n                width:  [0.001, 0.0001, 0.01, 0.1, 0.2].choose,\r\n                mul:    [1, 2, 3, 4].choose.reciprocal * [1, -1].choose\r\n            ),\r\n            \\freq, [10000, 2000, 1000, 500, 250, 125, 125/2].choose,\r\n            \\decay, [0.1, 0.2, 0.4, 1].choose,\r\n        ]\r\n        ), Rand(-1, 1));\r\n    }.sum;\r\n    HighShelf.ar(src, \\shelfFreq.kr(1000), \\shelfslope.kr(1));\r\n})\r\n)\r\n\r\nNdef(\\src).rebuild;\r\nNdef(\\src).play\r\n\r\nNdef(\\src).edit\r\n(\r\nNdef(\\reverb).fadeTime = 1;\r\nNdef(\\reverb, {\r\n    var src = Ndef(\\src).ar * \\amp.kr(1);\r\n    src = JPverb.ar(\r\n        src[0],src[1],\r\n        \\damp.kr(0,          0.05),\r\n        \\earlydiff.kr(0.707, 0.05),\r\n        \\highband.kr(2000,   0.05),\r\n        \\highx.kr(1,         0.05),\r\n        \\lowband.kr(500,     0.05),\r\n        \\lowx.kr(1,          0.05),\r\n        \\mdepth.kr(5,        0.05),\r\n        \\mfreq.kr(2,         0.05),\r\n        \\midx.kr(1,          0.05),\r\n        \\size.kr(1,          0.05),\r\n        \\t60.kr(1,           0.05)\r\n    );\r\n\r\n\r\n    Limiter.ar(src);\r\n    //Compander.ar(src, src, 0.4, 0.7);\r\n\r\n});\r\n)\r\nNdef('reverb').set('lowx', 0.84375, 'amp', 0.66015625, 'damp', 0.671875, 'size', 0.94921875, 'highband', 4450.794062356, 't60', 16.362108855354, 'mdepth', 17.96875, 'mfreq', 0.0, 'highx', 0.0, 'lowband', 2450.0822520097, 'earlydiff', 0.421875, 'midx', 0.5546875);\r\n\r\n// Dreamverb song setting.\r\n// play with size and earlydiff\r\nNdef('reverb').set('wet', 0.9921875, 'lowx', 0.609375, 'amp', 0.38092041015625, 'damp', 0.2890625, 'size', 0.6171875, 'highband', 7233.9416273667, 't60', 4.0375572334984, 'mdepth', 0.0, 'mfreq', 2.03125, 'highx', 0.2265625, 'lowband', 681.56675509913, 'fadeTime', 1, 'earlydiff', 0.765625, 'midx', 0.515625);\r\n\r\nNdef('reverb').set('wet', 0.9921875, 'lowx', 0.84375, 'amp', 0.66015625, 'damp', 0.875, 'size', 0.5, 'highband', 5829.4153471361, 't60', 0.16483258382257, 'mdepth', 17.96875, 'mfreq', 0.0, 'highx', 0.0, 'lowband', 100.0, 'fadeTime', 1, 'earlydiff', 0.703125, 'midx', 0.5546875);\r\n\r\ns.latency = nil;\r\n\r\nNdef(\\reverb).play\r\n\r\nNdef(\\reverb).edit;\r\n//*ar { | in1, in2, damp(0.0), earlydiff(0.707), highband(2000.0), highx(1.0), lowband(500.0), lowx(1.0), mdepth(5.0), mfreq(2.0), midx(1.0), size(1.0), t60(1.0) |\r\n\r\n\r\nMIDIIn.connectAll\r\n/*\r\nMIDIdef.cc(\\test, {arg ... args; args.postln});\r\nMIDIdef.cc(\\test).free;\r\n*/\r\n\r\n(\r\nMIDIdef.cc(\\t60,       {|val, num| Ndef(\\reverb).set(\\t60,       \\t60      .asSpec.map(val/128))},  0);\r\nMIDIdef.cc(\\mdepth,    {|val, num| Ndef(\\reverb).set(\\mdepth,    \\mdepth   .asSpec.map(val/128))},  2);\r\nMIDIdef.cc(\\lowx,      {|val, num| Ndef(\\reverb).set(\\lowx,      \\lowx     .asSpec.map(val/128))},  3);\r\nMIDIdef.cc(\\midx,      {|val, num| Ndef(\\reverb).set(\\midx,      \\midx     .asSpec.map(val/128))},  4);\r\nMIDIdef.cc(\\highx,     {|val, num| Ndef(\\reverb).set(\\highx,     \\highx    .asSpec.map(val/128))},  5);\r\nMIDIdef.cc(\\vol,       {|val, num| Ndef(\\reverb).set(\\amp,       \\amp      .asSpec.map(val/128))},  7);\r\n\r\nMIDIdef.cc(\\size,      {|val, num| Ndef(\\reverb).set(\\size,      \\size     .asSpec.map(val/128))}, 16);\r\nMIDIdef.cc(\\earlydiff, {|val, num| Ndef(\\reverb).set(\\earlydiff, \\earlydiff.asSpec.map(val/128))}, 17);\r\nMIDIdef.cc(\\mfreq,     {|val, num| Ndef(\\reverb).set(\\mfreq,     \\mfreq    .asSpec.map(val/128))}, 18);\r\nMIDIdef.cc(\\lowband,   {|val, num| Ndef(\\reverb).set(\\lowband,   \\lowband  .asSpec.map(val/128))}, 20);\r\nMIDIdef.cc(\\highband,  {|val, num| Ndef(\\reverb).set(\\highband,  \\highband .asSpec.map(val/128))}, 21);\r\nMIDIdef.cc(\\damp,      {|val, num| Ndef(\\reverb).set(\\damp,      \\damp     .asSpec.map(val/128))}, 22);\r\nMIDIdef.cc(\\dryAmp,    {|val, num| Ndef(\\src   ).vol_(\\amp.asSpec.map(val/128))}, 23);\r\nMIDIdef.cc(\\rebuild,   {|val, num|\r\n    (val > 0).if{\r\n        Ndef(\\src).rebuild;\r\n    }\r\n}, 39)\r\n)",
   "id" : "1-5hH",
   "is_private" : null,
   "labels" : [
      "feedback",
      "composition",
      "reverb"
   ]
}
