main.js (159 lines of code) (raw):

// ============= Build and render patch ============= d3.select('#loader-wrapper').style('opacity', '0'); Rpd.allNodeTypes['util/knob'].inlets['max'].default = 1; var patch = Rpd.addPatch('jetbrains-art'); patch.render('svg', document.getElementById('patch-target'), { style: 'ableton-out', fullPage: true, linkForm: 'curve', inletAcceptsMultipleLinks: true }); var bangX = 40; var bangY = 140; var topMargin = window.innerHeight - 500; var leftMargin = window.innerWidth/2 - 700; var scaleAt = 1200; if (window.innerWidth < scaleAt) { d3.select('.rpd-patch').style('transform', 'scale(0.8, 0.8)'); d3.select('.rpd-patch .rpd-background').classed('hidden', true); leftMargin = window.innerWidth/2 - 500; } patch.addNode('jb/clear').move(leftMargin + 1061,topMargin + 112); patch.addNode('util/nodelist').move(leftMargin + 1210,topMargin + 171); var layersNode = patch.addNode('jb/layers').move(leftMargin + 1058,topMargin + 174); var commentRemoved = false; var commentNode = patch.addNode('util/comment').move(window.innerWidth/2 - 50, -60); commentNode.inlets['text'].receive('Press SPACE to toggle the UI'); var previewTarget = document.getElementById('rpd-jb-preview-target'); previewTarget.style.width = window.innerWidth + 'px'; previewTarget.style.height = window.innerHeight + 'px'; Kefir.fromEvents(document.body, 'keydown').filter(function(evt) { return evt.keyCode === 32; }).onValue(function(evt) { evt.preventDefault(); }); var overlayElm = document.getElementById('overlay'); overlayElm.style.width = window.innerWidth + 'px'; overlayElm.style.height = window.innerHeight + 'px'; var patchElm = document.getElementById('patch-target'); Kefir.fromEvents(document.body, 'keydown').filter(function(evt) { return evt.keyCode === 32; }).scan(function(prev, next) { return !prev; }, true).onValue(function(value) { overlayElm.className = value ? 'visible' : 'hidden'; patchElm.className = value ? 'visible' : 'hidden'; if (!value && !commentRemoved) { patch.removeNode(commentNode); commentRemoved = true; } }); var previewNode = patch.addNode('jb/preview').move(leftMargin + 1210, topMargin + 89); var saveNode = patch.addNode('jb/save').move(leftMargin + 1203, topMargin - 6); var bangNode = patch.addNode('util/bang', 'Bang!').move(bangX, bangY); var bang2Node = patch.addNode('util/bang', 'Bong!').move(bangX + 100, bangY); var paletteNode = patch.addNode('jb/palette').move(bangX, bangY - 100); var drawLogoNode = patch.addNode('jb/draw-logo').move(leftMargin + 944, topMargin + 376); var rorschachNode = patch.addNode('jb/rorschach').move(leftMargin + 252, topMargin + 330); var rorschachVerticalNode = patch.addNode('jb/rorschach-vertical').move(leftMargin + 253, topMargin + 395); var noiseNode = patch.addNode('jb/noise').move(leftMargin + 127, topMargin + 258); var backgroundNode = patch.addNode('jb/background').move(leftMargin + 130, topMargin + 40); var octaveNoiseNode = patch.addNode('util/dial', 'Octaves').move(leftMargin + 29, topMargin + 310); octaveNoiseNode.inlets['max'].receive(10); octaveNoiseNode.configure({ dial: 4/10 }); var contrast = patch.addNode('util/knob', 'Contrast').move(leftMargin + 385,topMargin + 395); var falloffNoiseNode = patch.addNode('util/knob', 'Falloff').move(leftMargin + 33, topMargin + 408); falloffNoiseNode.inlets['max'].receive(1); var noiseStep = patch.addNode('util/dial', 'Grain').move(leftMargin + 31, topMargin + 214); noiseStep.inlets['max'].receive(100); noiseStep.inlets['min'].receive(1); noiseStep.configure({ dial: (10 - 1) / (100 - 1) }); var collectorStep = patch.addNode('util/dial', 'Step').move(leftMargin + 260, topMargin + 100); collectorStep.inlets['max'].receive(40); collectorStep.inlets['min'].receive(7); collectorStep.configure({ dial: (16 - 7) / (40 - 7) }); var chaos = patch.addNode('util/dial', 'Chaos').move(leftMargin + 260, topMargin + 10); chaos.configure({ dial: 50/100 }); // var threeColorsNode = patch.addNode('jb/three-colors', '3 Colors').move(leftMargin + 1249, bangY - 100); var collectPointDataNode = patch.addNode('jb/collect-point-data').move(leftMargin + 370,topMargin + 125); var drawPixelsNode = patch.addNode('jb/draw-pixels').move(leftMargin + 483, topMargin + 295); var applyGradientNode = patch.addNode('jb/apply-gradient').move(leftMargin + 749, topMargin + 433); var voronoiNode = patch.addNode('jb/voronoi').move(leftMargin + 496, topMargin + 127); var edgesJointNode = patch.addNode('jb/edges-joints').move(leftMargin + 625, topMargin + 185); var curvedEdgesNode = patch.addNode('jb/curved-edges').move(leftMargin + 891, topMargin + 114); var backEdgesSquaresNode = patch.addNode('jb/back-edges-squares').move(leftMargin + 783, topMargin + 286); var shapesNode = patch.addNode('jb/shapes').move(leftMargin + 779, topMargin + 131); var vignetteNode = patch.addNode('jb/vignette').move(leftMargin + 571, topMargin + 365); backgroundNode.outlets['pixels'].connect(collectPointDataNode.inlets['pixels']); // rorschachVerticalNode.outlets['pixels'].connect(collectPointDataNode.inlets['pixels']); backgroundNode.outlets['pixels'].connect(drawPixelsNode.inlets['pixels']); paletteNode.outlets['palette'].connect(applyGradientNode.inlets['palette']); // paletteNode.outlets['palette'].connect(vignetteNode.inlets['palette']); paletteNode.outlets['product'].connect(drawLogoNode.inlets['product']); // paletteNode.outlets['palette'].connect(edgesJointNode.inlets['palette']); octaveNoiseNode.outlets['number'].connect(noiseNode.inlets['octave']); falloffNoiseNode.outlets['number'].connect(noiseNode.inlets['falloff']); noiseStep.outlets['number'].connect(noiseNode.inlets['grain']); collectorStep.outlets['number'].connect(collectPointDataNode.inlets['step']); chaos.outlets['number'].connect(collectPointDataNode.inlets['chaos']); contrast.outlets['number'].connect(drawPixelsNode.inlets['contrast']); voronoiNode.outlets['voronoi'].connect(edgesJointNode.inlets['voronoi']); rorschachNode.outlets['pixels'].connect(edgesJointNode.inlets['pixels']); voronoiNode.outlets['voronoi'].connect(curvedEdgesNode.inlets['voronoi']); voronoiNode.outlets['voronoi'].connect(shapesNode.inlets['voronoi']); //paletteNode.outlets['product'].connect(backgroundNode.inlets['product']); collectPointDataNode.outlets['points'].connect(voronoiNode.inlets['points']); collectPointDataNode.outlets['points'].connect(backEdgesSquaresNode.inlets['points']); rorschachNode.outlets['pixels'].connect(collectPointDataNode.inlets['pixels']); paletteNode.outlets['product'].connect(backgroundNode.inlets['product']); bangNode.outlets['bang'].connect(noiseNode.inlets['bang']); bang2Node.outlets['bang'].connect(backgroundNode.inlets['bang']); // noiseNode.outlets['pixels'].connect(rorschachNode.inlets['pixels']); // noiseNode.outlets['pixels'].connect(rorschachVerticalNode.inlets['pixels']); rorschachNode.outlets['pixels'].connect(drawPixelsNode.inlets['pixels']); // rorschachVerticalNode.outlets['pixels'].connect(drawPixelsNode.inlets['pixels']); drawPixelsNode.outlets['drawable'].connect(layersNode.inlets['layer-1']); applyGradientNode.outlets['drawable'].connect(layersNode.inlets['layer-2']); curvedEdgesNode.outlets['drawable'].connect(layersNode.inlets['layer-3']); shapesNode.outlets['drawable'].connect(layersNode.inlets['layer-4']); edgesJointNode.outlets['drawable'].connect(layersNode.inlets['layer-5']); backEdgesSquaresNode.outlets['drawable'].connect(layersNode.inlets['layer-6']); vignetteNode.outlets['drawable'].connect(layersNode.inlets['layer-7']); drawLogoNode.outlets['drawable'].connect(layersNode.inlets['layer-8']); layersNode.outlets['layers'].connect(previewNode.inlets['layers']); previewNode.outlets['image'].connect(saveNode.inlets['image']); //randomNode.inlets['min'].receive(12); //randomNode.inlets['max'].receive(40); // randomNode.outlets['random'].connect(configNode.inlets['step']); //setTimeout(function() { // metroNode.outlets['bang'].connect(randomNode.inlets['bang']); //}, 2000); if (window.innerWidth < scaleAt) { d3.select('.rpd-nodelist-list').style('transform', 'scale(0.8, 0.8) translate(-15px, -125px)'); } var dropAllowedClass = 'rpd-jb-drop-allowed'; function dropAllowedOn(elm) { return elm && elm.className && elm.className.indexOf && (elm.className.indexOf(dropAllowedClass) >= 0); } window.addEventListener("dragenter", function(e) { if (!dropAllowedOn(e.target)) { e.preventDefault(); e.dataTransfer.effectAllowed = "none"; e.dataTransfer.dropEffect = "none"; } }, false); window.addEventListener("dragover", function(e) { if (!dropAllowedOn(e.target)) { e.preventDefault(); e.dataTransfer.effectAllowed = "none"; e.dataTransfer.dropEffect = "none"; } }); window.addEventListener("drop", function(e) { if (!dropAllowedOn(e.target)) { e.preventDefault(); e.dataTransfer.effectAllowed = "none"; e.dataTransfer.dropEffect = "none"; } }); window.__sendFirstBang = function() { bangNode.outlets['bang'].send({}); }