Created
April 15, 2020 19:32
-
-
Save chriskiefer/00f9d0f4414bf6dc1506f7999e9c065d to your computer and use it in GitHub Desktop.
sema test environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"drag":{"top":null,"left":null,"dragging":false},"resize":{"width":null,"height":null,"resizing":false},"responsive":{"valueW":0},"static":false,"resizable":true,"draggable":true,"min":{},"max":{},"x":0,"y":0,"w":7,"h":3,"id":"_uj7tdlhe0","type":"liveCodeEditor","name":"hello-world","background":"#151515","lineNumbers":true,"hasFocus":false,"theme":"icecoder","data":"{0.11}clfreq;\n{1}barfreq;\n\n\t\t\t \n:k1:{{16}clp,<1,3>}rsq;\n:k2:{{8}clp,<2,2,1,2,1>}rsq;\n:kk:{{1}clp,<3,1>,<:k1:,:k2:>}rsq;\n:kick1:{:kk:,{{{:kk:,100}line,5,0.1}ulin,-0.1}add,0}\\909b;\n:kick1:{{:kk:,{{{:kk:,20}line,1,1}ulin,0}add,0}\\909b, :kick1:}mix;\n:t4:{:kick1:,20}dist;\t \n\n:hh:{{{16,0.5}clp,<1,3>}rsq,0.9,0.03}\\909open;\n:hh:{:hh:,3}dist;\n\t\t \n\n:tr:{{32}clp,<1,1>}rsq;\n:pit:{{24}clp,<1,2>,<40,20,60,1,40,20,1,20>}rsq;\n:cut:{{1}clp,300,300}uexp;\n:slide:{{32}clp,<1>,<1,0,0,0,0>}rsq;\t\t\t\n:a:{:tr:,{:pit:,10}add,:slide:,0,1,:cut:,90,100,10,50}o303;\n:a:{{:a:,500,3}hpz,12}dist;\n:a:{:a:,0.8}mul;\n\t\t\t\t\n:trb:{{16,0.5}clp,<1>}rsq;\n:noteoff:{{16,0.8}clp,<1>}rsq;\n:pitb:{{16}clp,<1>,<20>}rsq;\n:cutb:{{1}clp,600,600}uexp;\n:slideb:{{16}clp,<1>,<0>}rsq;\t\t\t\n:b:{:trb:,{:pitb:,12}add,0,:noteoff:,0,:cutb:,10,100,1,40}o303;\n:b:{{:b:,100,2}hpz,2}dist;\n\n:verb:{{:a:,0.3,0.1}freeverb,0.02}mul;\t\t\t\n{{:t4:,:hh:}sum,0.3}mul"},{"drag":{"top":null,"left":null,"dragging":false},"resize":{"width":null,"height":null,"resizing":false},"responsive":{"valueW":0},"static":false,"resizable":true,"draggable":true,"min":{},"max":{},"x":7,"y":0,"w":3,"h":7,"id":"_az0k7631f","name":"hello world","type":"liveCodeParseOutput","lineNumbers":false,"hasFocus":false,"theme":"shadowfox","background":"#ebdeff","data":""},{"drag":{"top":null,"left":null,"dragging":false},"resize":{"resizing":false,"width":0,"height":0},"responsive":{"valueW":2},"static":false,"resizable":true,"draggable":true,"min":{},"max":{},"x":0,"y":3,"w":9,"h":5,"id":"_xre5b2pth","name":"hello world","type":"grammarEditor","lineNumbers":true,"hasFocus":false,"theme":"monokai","background":"#AAAAAA","data":"\n# Lexer [or tokenizer] definition with language lexemes [or tokens]\n@{%\n\n/*\nExamples:\n\nSaw wave:\n\n{100}saw\n\nPlay a sample:\n\n{{2}imp}\\909closed\n\nState variable filter:\n\n:speed:{{1}pha,100,500}uexp;\n{{100}saw,:speed:, 5, 0,1,0,0}svf\n\nSequencing with idx and lists:\n\n - grabbing a single fixed element\n:x:{{10}imp,0,<200,400,600,1000>}idx;\n{:x:}saw\n\n:x:{{10}imp,{4}pha,<200,400,600,1000>}idx;\n{:x:}saw\n\nLists with variable elements:\n:x:{{10}imp,{4}pha,<200,400,600,{{{0.1}sin}abs,100}mul>}idx;\n{:x:}saw\n\n:x:{{10}imp,{0.4}pha,<{{{0.15}sin}abs,300}mul,{{{0.1}sin}abs,100}mul>}idx;\n{:x:}sawn\n\n*/\n\n\nconst lexer = moo.compile({\n separator: /,/,\n paramEnd: /}/,\n paramBegin: /{/,\n listEnd: /\\>/,\n listBegin: /\\</,\n variable: /:[a-zA-Z0-9]+:/,\n sample: { match: /\\\\[a-zA-Z0-9]+/, lineBreaks: true, value: x => x.slice(1, x.length)},\n slice: { match: /\\|[a-zA-Z0-9]+/, lineBreaks: true, value: x => x.slice(1, x.length)},\n stretch: { match: /\\@[a-zA-Z0-9]+/, lineBreaks: true, value: x => x.slice(1, x.length)},\n clockTrig: /0t-?(?:[0-9]|[1-9][0-9]+)(?:\\.[0-9]+)?\\b/,\n\tnumber: /-?(?:[0-9]|[1-9][0-9]+)(?:\\.[0-9]+)?\\b/,\n semicolon: /;/,\n funcName: /[a-zA-Z][a-zA-Z0-9]*/,\n\tstring:\t\t\t\t\t{match: /'[a-zA-Z0-9]+'/, value: x=>x.slice(1,x.length-1)},\n comment: /\\/\\/[^\\n]*/,\n ws: { match: /\\s+/, lineBreaks: true},\n});\n\n%}\n\n# Pass your lexer object using the @lexer option\n@lexer lexer\n\n# Grammar definition in the Extended Backus Naur Form (EBNF)\nmain -> _ Statement _\n{% d => ( { '@lang' : d[1] } ) %}\n\nStatement ->\n Expression _ %semicolon _ Statement\n {% d => [ { '@spawn': d[0] } ].concat(d[4]) %}\n |\n Expression\n {% d => [ { '@sigOut': { '@spawn': d[0] }} ] %}\n\t|\n\t%comment _ Statement\n\t{% d => d[2] %}\n\n\nExpression ->\n ParameterList _ %funcName\n {% d => sema.synth( d[2].value, d[0]['@params'] ) %}\n |\n ParameterList _ %sample\n {% d => sema.synth( 'sampler', d[0]['@params'].concat( [ sema.str( d[2] ) ] ) ) %}\n |\n ParameterList _ %slice\n {% d => sema.synth( 'slice', d[0]['@params'].concat( [ sema.str( d[2] ) ] ) ) %}\n |\n ParameterList _ %stretch\n {% d => sema.synth( 'stretch', d[0]['@params'].concat( [ sema.str( d[2] ) ] ) ) %}\n |\n %variable _ Expression\n {% d => sema.setvar( d[0], d[2] ) %}\n\nParameterList ->\n %paramBegin Params %paramEnd\n {% d => ( { 'paramBegin': d[0], '@params': d[1], 'paramEnd': d[2] } ) %}\n\t\n\n\nParams ->\n ParamElement\n {% d => ( [ d[0] ] ) %}\n |\n ParamElement _ %separator _ Params\n {% d => [ d[0] ].concat(d[4]) %}\n\nParamElement ->\n %number\n {% d => ( { '@num': d[0] } ) %}\n\t|\n\t%string\n {% d => ( { '@string': d[0] } ) %}\n |\n Expression\n {% id %}\n |\n %variable\n {% d => sema.getvar( d[0] ) %}\n |\n %listBegin Params %listEnd\n {% d => ( { '@list': d[1] } )%}\n\t\n\n# Whitespace\n\n_ -> wschar:*\n{% function(d) {return null;} %}\n\n__ -> wschar:+\n{% function(d) {return null;} %}\n\nwschar -> %ws\n{% id %}"},{"drag":{"dragging":false,"top":0,"left":0},"resize":{"resizing":false,"width":0,"height":0},"responsive":{"valueW":8},"static":false,"resizable":true,"draggable":true,"min":{},"max":{},"x":7,"y":7,"w":11,"h":4,"id":"_j6gk87ylc","name":"hello world","type":"modelEditor","lineNumbers":true,"hasFocus":false,"theme":"monokai","background":"#f0f0f0","data":"sema.env.saveLocal('test')\n_____\nsema.env.saveToPB()\n________\nsema.env.loadLocal('test')\n\n______\n\n\n//route the test data into the model\nvar w = 0;\ninput = (value, channel) => { console.log(\">toModel: \"+[value, channel]);};\n__________\n\n//route the model predictions back to the live coding environment \noutput = (x) => { p = test(w); console.log(\">fromModel: \"+p); return p;}\n\n\n\n________\n\noutput(80, 0)\n\n_____\n\nsema.pbcopy([1,2,3])\n\n\n_____\n\nvar reader = new FileReader();\n//reader.onloadstart = fr.loadStart(f);\n//reader.onprogress = fr.progress(f);\n//reader.onload = fr.load(f);\n//reader.readAsDataURL(f);\n\n_____\n\nsema.peerinfo()\t\n"}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment