{"id":610,"date":"2021-03-06T18:19:47","date_gmt":"2021-03-06T18:19:47","guid":{"rendered":"http:\/\/www.berkeleynoise.com\/celesteh\/podcast\/?p=610"},"modified":"2021-03-06T18:19:49","modified_gmt":"2021-03-06T18:19:49","slug":"sawtooth-minimalism","status":"publish","type":"post","link":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/2021\/03\/sawtooth-minimalism\/","title":{"rendered":"Sawtooth Minimalism"},"content":{"rendered":"\n<figure class=\"wp-block-audio\"><audio controls src=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism-1.mp3\"><\/audio><figcaption>Sawtooth Minimalism<\/figcaption><\/figure>\n\n\n\n<p>My colleague, <a href=\"https:\/\/www.jackiewalduck.org\/\">Jackie Walduck<\/a>, was showing students how to create phase music by putting loops out of synch in a DAW. Then I went home from teaching and created a PD patch to play low-pass filtered sawtooth waves, as an example for a different class.  I got curious how much easier it would be in SuperCollider and created a tiny program that did the same thing and set it going at the same time. Then I started it again. The phasing was fixed, but it called to mind the shifting relationships of earlier that day.<\/p>\n\n\n\n<pre id=\"block-619e8022-151d-4f22-b5ac-774d8392be04\" class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p>This version is only SuperCollider, but it uses a non band limitted sawtooth to mimic phasor~ in PD.  This version is 7 minutes long, but the proper version should be about 3 hours.  I get lost in the phasing and feel relaxed.<\/p>\n\n\n\n<p>I&#8217;ve attached the code below. If you want to to last longer, look for the number 340 &#8211; that&#8217;s 5&#8217;40&#8221; in seconds. Make it as long as you&#8217;d like.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>s.waitForBoot({\n\tvar scale, dur, pb, steps=16, loops = 4, loop_calc, env_dur, db = -14, fade_in=40, decay = 20;\n\n\tloop_calc = {|note_dur, section_dur|\n\t\tvar loop_dur, total_dur;\n\n\t\tloop_dur = note_dur * steps * loops;\n\t\ttotal_dur = loop_dur * (section_dur\/loop_dur).ceil;\n\t};\n\n\tSynthDef(\\saw, {|out=0, freq, amp, dur, pan|\n\t\tvar saw, env, lop, pan2;\n\t\tsaw = LFSaw.ar(freq);\n\t\tlop = LPF.ar(saw, freq*4);\n\t\tenv = EnvGen.kr(Env.triangle(dur), doneAction:2);\n\t\tpan2 = Pan2.ar(lop, pan, env);\n\t\tOut.ar(out, pan2 * amp);\n\t}).add;\n\n\t\/\/s.prepareForRecord(\"\/home\/celesteh\/Documents\/Pieces\/SawtoothMinimalism\/take-\" ++ Date.getDate.rawSeconds ++\".wav\" , 2);\n\n\ts.sync;\n\n\t\/\/s.record;\n\n\tdur = 60 \/ 250; \/\/ 250 BPM\n\n\tenv_dur = loop_calc.(dur, 340) - (fade_in+ decay);\n\tenv_dur.postln;\n\n\tscale = Scale.minorPentatonic(Tuning.choose(5));\n\n\tpb = {|limit = 7|\n\t\tPbind(\n\t\t\t\\instrument, \\saw,\n\t\t\t\\db, db,\n\t\t\t\\dur, dur,\n\t\t\t\\scale, scale,\n\t\t\t\\degree, Prout({\n\t\t\t\tvar loop;\n\n\t\t\t\tinf.do({\n\t\t\t\t\tloop = steps.collect({ \/*scale.degrees&#91;5.rand]*\/ limit.rand });\n\t\t\t\t\tloop = loop.scramble;\n\t\t\t\t\tloops.do({\n\t\t\t\t\t\tloop.do({|step|\n\t\t\t\t\t\t\tstep.yield;\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}),\n\t\t\t\/\/\\midinote, Pkey(\\add) + offset,\n\t\t\t\\out, 0\n\t\t);\n\t};\n\n\ts.sync;\n\n\tPseq(&#91;\n\t\tPbindf(pb.value, \\octave, 4, \\pan, 0, \\continue, Pn(1,loops*steps)),\n\t\tPtpar(&#91;\n\t\t\t0, Pseq(&#91;\n\t\t\t\tPbindf(pb.value, \\octave, 4, \\pan, -75, \\continue, Pn(1, loops*steps*4)),\n\t\t\t\tPbindf(pb.value(5), \\octave, &#91;4, 5], \\pan, -1, \\db, Penv(&#91;db, db-2, db, db], &#91;fade_in,decay, env_dur])),\n\t\t\t\tPbindf(pb.value, \\octave, 4, \\pan, -0.88, \\db, Pn(db+1, 1), \\degree, &#91;0, 2], \\dur, dur*8)\n\t\t\t] ),\n\t\t\t0.0008.rrand(dur\/10), Pseq(&#91;\n\t\t\t\tPbindf(pb.value, \\octave, 5, \\pan, 75, \\continue, Pn(1, loops*steps*4)),\n\t\t\t\tPtpar(&#91;\n\t\t\t\t\t0, Pseq(&#91;Pbindf(pb.(5), \\octave, &#91;4,5], \\pan, 1, \\db, Penv(&#91;db, db-2, db, db], &#91;fade_in,decay, env_dur])),\n\t\t\t\t\t\tPbindf(pb.value, \\octave, 4, \\pan, 0.88, \\db, Pn(db+1, 1), \\degree, &#91;1, 4], \\dur, dur*8)]),\n\t\t\t\t\t(dur * 0.3).rrand(dur*0.7), Pseq(&#91; Pbindf(pb.value,\n\t\t\t\t\t\t\\octave, 5,\n\t\t\t\t\t\t\\pan, Pwhite(-0.1, 0.1),\n\t\t\t\t\t\t\\dur, Pwhite((dur \/ -700), (dur\/700)) + dur,\n\t\t\t\t\t\t\\db, Penv(&#91;-60, db+1, db, db], &#91;fade_in, decay, env_dur])),\n\t\t\t\t\tPbindf(pb.value, \\octave, 5, \\pan, 0, \\db, Pn(db+1, 1), \\degree, &#91;0, 3, 5], \\dur, dur*8)\n\t\t\t\t\t])\n\t\t\t\t])\n\t\t\t])\n\n\t\t]),\n\n\t\tPbind(\n\t\t\t\\dur, dur,\n\t\t\t\\freq, Prout({\n\t\t\t\t\\rest.yield;\n\t\t\t\t\/\/s.stopRecording;\n\t\t\t})\n\t\t)\n\t]).play;\n});\n\n<\/code><\/pre>\n<div class=\"powerpress_player\" id=\"powerpress_player_4180\"><a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" title=\"Play\" onclick=\"return powerpress_embed_html5a('4180','https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3');\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/plugins\/powerpress\/play_audio.png\" title=\"Play\" alt=\"Play\" style=\"border:0;\" width=\"23px\" height=\"24px\" \/><\/a><\/div>\n<p class=\"powerpress_links powerpress_links_mp3\" style=\"margin-bottom: 1px !important;\">Podcast: <a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" class=\"powerpress_link_pinw\" target=\"_blank\" title=\"Play in new window\" onclick=\"return powerpress_pinw('https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/?powerpress_pinw=610-podcast');\" rel=\"nofollow\">Play in new window<\/a> | <a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" class=\"powerpress_link_d\" title=\"Download\" rel=\"nofollow\" download=\"SawtoothMinimalism.mp3\">Download<\/a> (Duration: 7:12 &#8212; 14.4MB)<\/p>","protected":false},"excerpt":{"rendered":"<p>My colleague, Jackie Walduck, was showing students how to create phase music by putting loops out of synch in a DAW. Then I went home from teaching and created a PD patch to play low-pass filtered sawtooth waves, as an example for a different class. I got curious how much easier it would be in [&hellip;]<\/p>\n<div class=\"powerpress_player\" id=\"powerpress_player_4181\"><a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" title=\"Play\" onclick=\"return powerpress_embed_html5a('4181','https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3');\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/plugins\/powerpress\/play_audio.png\" title=\"Play\" alt=\"Play\" style=\"border:0;\" width=\"23px\" height=\"24px\" \/><\/a><\/div>\n<p class=\"powerpress_links powerpress_links_mp3\" style=\"margin-bottom: 1px !important;\">Podcast: <a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" class=\"powerpress_link_pinw\" target=\"_blank\" title=\"Play in new window\" onclick=\"return powerpress_pinw('https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/?powerpress_pinw=610-podcast');\" rel=\"nofollow\">Play in new window<\/a> | <a href=\"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-content\/uploads\/2021\/03\/SawtoothMinimalism.mp3\" class=\"powerpress_link_d\" title=\"Download\" rel=\"nofollow\" download=\"SawtoothMinimalism.mp3\">Download<\/a> (Duration: 7:12 &#8212; 14.4MB)<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[119,10,2,8],"tags":[],"class_list":["post-610","post","type-post","status-publish","format-standard","hentry","category-119","category-looping","category-podcasts","category-supercollider"],"_links":{"self":[{"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/posts\/610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/comments?post=610"}],"version-history":[{"count":2,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/posts\/610\/revisions"}],"predecessor-version":[{"id":614,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/posts\/610\/revisions\/614"}],"wp:attachment":[{"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/media?parent=610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/categories?post=610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.berkeleynoise.com\/celesteh\/podcast\/wp-json\/wp\/v2\/tags?post=610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}