{
   "is_private" : null,
   "id" : "1-5dc",
   "code" : "/*\r\nJason_SK\r\n042420\r\n\"Guldhornene\" [1803] by Adam Oehlenschläger.\r\nSonification\r\n*/\r\n\r\n////////////////// PATH TO Guldhornene.txt \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\r\nx = FileReader.read(\"C:/Users/----------------------/Guldhornene.txt\",true, true ).postcs\r\n\r\n//OPTIONAL\r\ns.options.memSize;\r\ns.quit;\r\ns.options.memSize = 65536;\r\ns.boot;\r\n\r\n\r\n(\r\n~r = {\r\n    var i, c,  ss, f, b, b1;\r\n    //INITIALIZATION\r\n    i = 0;\r\n    c = 0;\r\n    ss = x[c][i];\r\n    //WAVETABLE\r\n    b = Buffer.alloc(s, 512/8, 1, {\r\n        |buf| var ar = Array.fill(8, {1.0.rand.round(0.001)});\r\n        buf.sine1Msg(ar)});//El.Guitar\r\n\r\n    b1 = Buffer.alloc(s, 512, 1, {\r\n        |buf| var ar = Array.fill(10, {654.rand});\r\n        buf.sine2Msg(ar,[1,0,1,0,1,1])});//Bellish\r\n\r\n    166.do{\r\n        //Abort NIL Values --> Next Line\r\n        if(ss.isNil, {c = c + 1; i = 0});\r\n        ss = x[c][i];\r\n\r\n        //NOT NIL VALUES\r\n       if (ss.notNil,{\r\n            ss.postln; //POST POEM WORDS\r\n            ss = x[c][i].ascii;\r\n            ss = ss.choose;\r\n\r\n            f = ss;\r\n            //IF NEGATIVE\r\n            if (f.isNegative, {f = f * (-1)});\r\n            //f.postln; //NEG VALUES POST\r\n\r\n            //SOUND\r\n            SynthDef(\"guldhornene\",{\r\n                |amp = 0.5|\r\n                var env, env0, env1, envcl, out, out0, out1, outcl, sig, sig0, sig1, sig2, fionian, pangtr;\r\n                pangtr = -0.5;\r\n                //AMBIENT\r\n                if (f <= 100, {\r\n                    //f =  f.explin(0, 100, 40, 4000);\r\n                    sig = LFTri.ar(Gendy1.kr(1, 5, 0.1, 1.0,  20, 2000, ampscale: 0.2, durscale: 0.12)) *\r\n                    (3*SinOsc.ar(f, SinOsc.kr(1000).range(0.01, 0.999)));\r\n                    sig = (sig * 0.666) + FreeVerb.ar(sig, 1.0, 0.777, 0.666);\r\n                    env = Env.new([0, 1, 0.4, 0.6, 0.0],[4.1, 1.1, 0.5, 2.6] ).kr(doneAction:2);//AmpEnvelope\r\n                    out = sig * env * amp * 0.03 * 0.1;\r\n                    out = LPF.ar(out, 1200);\r\n                    //f.postln; //VALUE AS FREQ POSTLN\r\n                });\r\n\r\n                //AMBIENT&&GUITAR\r\n                if ( f <= 300, {\r\n\r\n                    //f =  f.explin(0, 100, 40, 400);\r\n                    sig = Array.fill(5, {SinOsc.ar(f* Rand(0.333, 1.0), Rand(0.1, 1.0), Rand(0.0, 0.4))*8});\r\n                    sig  = sig + Array.fill(2, {VarSaw.ar(f* Rand(0.888, 0.333), Rand(0.0, 1.0), Rand(0.0 , 1.0),Rand(0.1, 0.25))*8});\r\n                    sig = sig + (Dust.ar(3, 0.8)) *0.3;\r\n                    sig = sig + SinOsc.ar(f, mul: 0.5);\r\n                    env = EnvGen.ar(Env.new([0.0, 1.0, 0.666, 0.8, 0.0],[5, 1, 0.5, 5]), Line.kr(1.0, 0.0, 15.0, doneAction:2));\r\n                    out = sig * env * 0.05 ;\r\n                    out = FreeVerb.ar(out, 0.33, 1.0, 1.0);\r\n                    out = sig * env * 0.1;\r\n                    out = HPF.ar(out, 150);\r\n\r\n                    if ((f >= 75) && (f <= 116), {\r\n                    //GTR MEL\r\n                    //GUIDE    IONIAN -->> \"KEY C\" ////// 264   297   330   352    396    440   495 \\\\\\\\\\\\\\\\\r\n                    if(f < 80, {fionian = 264; pangtr = -0.9});\r\n                    if ((f >= 80) && (f < 90), { fionian = 297; pangtr = -0.75});\r\n                    if ((f >= 90) && (f < 100), { fionian = 330; pangtr = -0.7});\r\n                    if ((f >= 100) && (f < 104), { fionian = 352; pangtr = -0.2});\r\n\r\n                        //BELL&&NOTE_GTR\r\n                        if ((f >= 104) && (f < 110), { fionian = 396; pangtr = 0.4;\r\n                            sig1 = Shaper.ar(b1.bufnum, LFSaw.ar(f, LFNoise2.kr(1).range(0.0, 1.0), /*SinOsc.kr(Line.kr(1, 12, 1, 0.1))*/));\r\n                            env1 = Env.perc(0.003, pi/2).kr(doneAction:0);//Amp_Env\r\n                            out1 = sig;\r\n                            out1 = (out1 * 0.5) + DelayC.ar(out1, 1, Rand(0.11, 0.2), 0.4, out1);//SomeDelay\r\n                            out1 = (out1) + FreeVerb.ar(out1, 1.0, 0.8, 0.666, 0.766) * env * 0.01;\r\n                            Out.ar(0, Pan2.ar(out1, pangtr));\r\n                    });\r\n\r\n                    if ((f >= 110) && (f < 115), { fionian = 440; pangtr = -0.4});\r\n                    if ((f >= 115), { fionian = 352});\r\n                    sig0 = Shaper.ar(b.bufnum, LFSaw.ar(fionian, LFNoise2.kr(1).range(0.0, 1.0), /*SinOsc.kr(Line.kr(1, 12, 1, 0.1))*/));\r\n                    env0 = Env.perc(2.5, pi).kr(doneAction:0);//Amp_Env\r\n                    out0 = sig0  * 0.05 ;\r\n                    out0 = (out0 * 0.5) + DelayC.ar(out0, 0.2, Rand(0.05, 0.3), 2*pi.reciprocal, out0);//SomeDelay\r\n                    out0 = ((out0 * 0.1) + FreeVerb.ar(out0 , 1.0, 1.0, 0.666))* env0 * 0.5;\r\n\r\n                    //out = out + out0;\r\n                        Out.ar(0, Pan2.ar(out0, pangtr))\r\n\r\n                    });\r\n                    //f.postln; //VALUE AS FREQ POSTLN\r\n                });\r\n\r\n                //GLING SOUND\r\n                if ((f >116) && (f <= 126), {\r\n                    sig = Shaper.ar(b1.bufnum, LFSaw.ar(f, LFNoise2.kr(1).range(0.0, 1.0), /*SinOsc.kr(Line.kr(1, 12, 1, 0.1))*/));\r\n                    env = Env.perc(0.003, pi/2).kr(doneAction:2);//Amp_Env\r\n                    out = sig  * amp * 0.1;\r\n                    out = (out * 0.5) + DelayC.ar(out, 1, Rand(0.11, 0.2), 0.4, out);//SomeDelay\r\n                    Out.ar(1, GVerb.ar(out, 100, pi*pi, 0.28 , 0.5, pi**2.5, pi.reciprocal, 0.5, 0.3) * env * 0.5);\r\n                   // f.postln; //VAL AS FREQ POSTLN\r\n                });\r\n\r\n                //CLICKING\r\n                if((f < 100) && (f >= 69), {\r\n                    sig2 = ClipNoise.ar(0.5) + BrownNoise.ar(0.7);\r\n                    envcl = Env.circle([0, 1, 0.001, 0], [0.001, 0.015, 1], -8).kr(doneAction:2);\r\n                    sig2 = BPF.ar(sig2, 2000, 0.5);\r\n                    outcl = sig2 + FreeVerb.ar(sig2, 1.0, 0.666,0.666);\r\n                    outcl = sig2 * envcl * 0.6;\r\n                    Out.ar(0, Pan2.ar(outcl, Rand(0.666, 0.777)))\r\n                });\r\n\r\n                //OUTPUT\r\n                Out.ar([0,1], out);\r\n\r\n            }).play\r\n        }\r\n        );\r\n\r\n        i = i + 1;\r\n        (f/90).wait;\r\n    };\r\n}.fork\r\n)",
   "labels" : [
      "sonification"
   ],
   "description" : "Hello!\r\n\r\nGuldhornene is one of my favourite poems by Adam Oehlenschläger So I decided to sonificate it!\r\n\r\nSC reads, posts the poem from the txt file word by word in real time and converts the letters to numbers (via ascii). Chooses a random letter from every word and maps the value for frequency, pan etc.\r\n\r\n***You will need the txt file for it*** You can download it from here! -->>\r\nhttps://github.com/JasonSKK/SuperCollider-poem-Sonification\r\n\r\nI Hope you will like it! Thanks!\r\n\r\nJason SK",
   "ancestor_list" : [],
   "author" : "Jason_SK",
   "name" : "Danish Poem Sonification"
}
