From c9f3d9497bf56cb061d764c5e668246c88b59f4a Mon Sep 17 00:00:00 2001 From: enrico viola Date: Tue, 12 Dec 2017 15:29:17 +0100 Subject: [PATCH] pages --- .README.md.swp | Bin 12288 -> 0 bytes index.html | 103 ++++++++++++++++++++ spectre.css | 207 +++++++++++++++++++++++++++++++++++++++++ src/.BitHammer.cpp.swp | Bin 12288 -> 0 bytes src/Perlin.cpp | 27 +++--- src/S_h_it.cpp | 2 +- 6 files changed, 324 insertions(+), 15 deletions(-) delete mode 100644 .README.md.swp create mode 100644 index.html create mode 100644 spectre.css delete mode 100644 src/.BitHammer.cpp.swp diff --git a/.README.md.swp b/.README.md.swp deleted file mode 100644 index 7f9535ffd5b495154a14d62560b7d53a1b3313ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeHN%Z?m16m<}LIVhrEQkZU;`fzj_s;WW>B&qWC6G}XS%9v-@5nQb8ppXJU)Kq;s%`_ z9%uL*X6&cWpMK-qiP8OH4`YhAR&YOX=Z{v$?V6f!IjnTftJ_Y#9u1Dp>AbCla(46@ z&o?)?b;5+hvoDRBs+~$@M=$esLr>a@W90nv=Qhp{>&a~mr-8&kV&KjUw60h^eUPo4 zJP}HLdFco}{@CR^uSuhcfy6*!ATf{_NDL$f5(9~W#K3=w0oUwd?;xW4x~QJ*zVYXO z`1If1Y5GbGBnA=#iGjpGVjwY)7)T5x1`-2_fy6*!;9tl9$A8sV9$@UqgK!@I|L_0) zzwroTzW_f2Ltqsc07rmt4l(vMun*V^ymyeXcY$vYU<~+eKV!cF3aEh!*aRL04g&{( z{lJZVj6DfF0W1UG?`7;e;49!u;0xf7hZ*}F_yqVE_z3tAxDNdI5Mw_8GoS^wfCk8c z4-n7$z%k$`una5#KF&kHK435K8Djqw*aM_bVjwZ_|6pKsbrsFvYSE&#^@l2VQmZ$Q zmCiMGeKazBdpMP@Y{%FKWpb??HZ2WvU61@mrZs-+CZ#&=Vk+8bWZ0-FE%j$hD~x5? zi``h3k+j6AAEl{K!f>a}8Iq24>zdYCa;2a(!d+!fR=_nR<{r8ltna)1jTHlGxZz`6apG!1<-8HbpAG4vLI!B2 zE61mTc#drFn2>8U<3{pvh1J`otVBrDrqbh>Q>4o}u3Ru(3v6r~vgPGv>T|zHA*5vQ zR&1S(sI~4SQh6y_Unosp0}XvV3%RWamRxJpB8ow{l$Tr~aIe5_(U2}%QM46;7K)mR z&m{!DjpCq6PoYpO!L~iphGY?JD1lo#O^x0bhS~;#pGo6dUQxyChR&=|q^9$A!OU6d zF7Ub*rYpq1Rfl7E7K}u47B(Y2i_@N<7(?wh914OA3T8 z`4Sz{B`_ovI)a}(<5er56eGw8H4z2`KsK;p2Nb;#lL5xKwW5ZE!f;PYM>N($i-lCY zs^+MBNC^$W6X~<@Oy3-MCQAfGrF==>TS{mH0nECTpbH4FiBQU5%8H1V>Xd93HCY@7CTD8 zs*hgdSG;`GMz#lJHO*VfxgrxZTNqu_Oqe-swKCs?I#&xB@91*`9-lj5eTt=?*vMiR z+k!(3R`Tv11JOjJF&+mVnb%8&g0OBtIdW@I4YA+*_Tgj9YI&`@lnrPKD&VzmW}L!E z5oReJRGB+I12YUvAlPvGQ@w;xnO1sDV=X!)C%e^p z?b?zzNG*;si*-n|4)^KTWg$)TFaztn(?}?08K1PSPwsZY%fYUP$xb)u%ms9-@q$a;=N=yXd?LL#KjvVkvUUb~%$pKe}q~J2t8fO3Sh1 z7)D`XC&garg6Abf>>Wc(2odcRc-_Vcpt2FUEYKDsb(W?YMy2Y?IFz?fPv>>!8{)2t ziTC$)CS5xbLwd#6jzy_Vd}lUjFQ@`eFI?%Jh+QcZC5I*|u5vFPZ+Ad%w_vK0n}X2W z0=MuHneQsJcO+ii<%%!f5F1`oX1a|+js8hA!CM{kN-ZJE+dF1!bhfUHeK|%)ku65$YS1|$JZG=iAubi#K$YB!sFG?#xgvZ d2Rm&|g(K7?bRhgI2wSF`8|uls75CXQ_9w3S9~}Sy diff --git a/index.html b/index.html new file mode 100644 index 0000000..6361d5a --- /dev/null +++ b/index.html @@ -0,0 +1,103 @@ + + + + + NauModular - VCV Rack plugin + + + + + + + +
+
+

NauModular VCV plugin

+
This is my personal collection of modules for VCV Rack: feel free to use them and modify them as you wish. If you find them useful, feel free to get me a beer.
+ The plugin is open source, so you can find the source code here.
+ If you don't want to compile it yourself, here are the most recent builds.
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Perlin

Perlin is a Perlin noise generator.
+ The speed knob controls how much nervous the noise is. On its side you have a CV control input and a smaller knob to balance the final speed between the main knob's value and the CV input.
+ The amp knob controls noise amplitude. On its side threre's a CV control input and a balancing knob, just like for the speed control.
+ The lower 4 knobs are a frequency mixer: the module constantly calculates 4 noise octaves and each of these knobs controls how much of a specific octaves goes into the final mix. + +The 4 outputs positioned in a square shape are *single octave outputs*; they are in the same order as the frequency mixer knobs: the top left one outputs the slowest noise, the bottom right one outputs the fastest noise. + +The lowest, central output is the *mix output*, giving you a mix of the noise octaves based on your frequency mixer settings. + +

S&H(it)

S&H(it) is a sample and hold module. The time knob controls how often it samples the input signal; the divider knob scales the other knob's value, so yu can range from very quick lo-fi sampling to >1s periods. + +

BitHammer

BitHammer is a logic module performing bitwise operations on 2 inputs. The incoming values are rendered as bits, hammered, reassembled as virtual voltages and finally sent out to the 6 outputs.

Tension

Tension is a fixed voltage generator: you turn the knob, you change the voltage. Useful when playing with logic chains or if you need to power up a virtual lamp ;) . +

Function

Function is a function generator; it outputs the 3 conic section functions you learned in high school: ellipse, parabola and hyperbola. Input voltage acts as the x variable, while the knob is a constant parameter. +
+
+
+ +
+ ***
+ I work on this stuff in my free time and mainly for myself, so the features in modules reflect what I personally thought it would be fun, some parts might be a bit rough around the edges and new releases are going to be random. Anyway, if you like the plugin, feel free to contribute with code if you're a coder, or with a beer sized donation if you're a user feeling super duper gentle :) +
+ + + + + + + + +
+ +
+ +
+ +
+ +
+ diff --git a/spectre.css b/spectre.css new file mode 100644 index 0000000..9104744 --- /dev/null +++ b/spectre.css @@ -0,0 +1,207 @@ +* {margin: 0; padding: 0;} + +body { + text-align: center; +} + +#ascii{ + font-family: monospace; + font-size: 10px; + line-height: 70%; +} + +#tentacleSprite{ + display: none; +} + +#wrapper{ + margin-left:auto; + margin-right:auto; + height:auto; + width:auto; +} + +#container{ + overflow: hidden; + display: inline-block; +} + +#propaganda{ + display: inline-block; +} + +#propaganda h1{ + font-family: monospace; + font-weight: normal; + font-size: 30px; +} + +#propaganda h2{ + font-family: monospace; + font-weight: normal; + font-size: 20px; +} + +#contacts{ + width: 450px; + height: auto; + font-family: monospace; + font-size: 14px; +} + +#bio{ + width: 500px; + height: auto; + font-family: monospace; + font-size: 14px; + text-align: left; +} + +#artworks{ + width: 500px; + height: auto; + font-family: monospace; + font-size: 14px; +} + +#exhibitions{ + display: none; + width: 500px; + height: auto; + font-family: monospace; + font-size: 14px; +} + +.asciiCode{ + display:block; + letter-spacing: 0px; + line-height:70%; + font-size: 5px; + font-weight:bold; + white-space:pre; + font-family: monospace; + color: black; +} + +a:link { + color: black; + text-decoration: none; +} + +a:visited { + color: gray; + text-decoration: none; +} + +a:hover { + color: red; + text-decoration: none; +} + +a:active { + color: red; + text-decoration: none; +} + +.asciiTable{ + font-family: monospace; + font-size: 14px; + margin: 1em; + display: inline-block; + position: relative; +} + +.asciiTable table{ + border-collapse: collapse; +} + +.asciiTable td{ + border: 1px dashed #000; + padding: .5em; + position: relative; +} + +.asciiTable td:before{ + position: absolute; + width: 15px; + height: 15px; + content: "+"; + top: -9px; + left: -8px; +} + +.asciiTable tr td:last-child:after, .asciiTable tr:last-child td:after { + position: absolute; + width: 15px; + height: 15px; + content: "+"; + bottom: -9px; + right: -8px; +} + +.asciiTable tr td:last-child:after, .asciiTable tr:last-child td:after { + position: absolute; + width: 15px; + height: 15px; + content: "+"; + bottom: -9px; + right: -8px; +} +.asciiTable:before { + position: absolute; + width: 15px; + height: 15px; + content: "+"; + top: -8px; + right: -7px; +} + +.asciiTable:after { + position: absolute; + width: 15px; + height: 15px; + content: "+"; + bottom: -8px; + left: -7px; +} + +.menuTable td{ + width: 100px; +} + +.awTable table{ + width: 500px; +} + +.awTable tr{ + width: 500px; +} + +.awTitle td{ + width: 500px; +} + +.awSection td{ + width: 80px; +} + +.awField td{ + width: 420px; + text-align: left; +} + +.exRow table{ + width: 500px; +} + +.exYear td{ + width: 50px; +} + +.exPlace td{ + width: 100px; +} + +.exEvent td{ + width: 350px; +} diff --git a/src/.BitHammer.cpp.swp b/src/.BitHammer.cpp.swp deleted file mode 100644 index 909149d9503552b3519f40abef75349778767969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>7%Q6vro&QUbI^a6(9Ea8YCz#~*RiMot>lZc1Vrf5>stmI%^~cayAY?^^qj zR!!1gkP1RY9QY98LM0?_l>i|)azcnhC9YiH()7RqxN@NUcV@rrtbvddFf0Ay-8XOF zy#4Q+=R}$1%tEP5$5I)B<8eZ+e)jxJ&t=mODg%UQl5HxIGw|n!u4T-eCQE9nr8lKk zU*~H)V0ub#+HFO%%yeC9UMfqbr5NnAcsAW>*{iB%rYn+N)@8dT8EMmKri-dIBemO# zk!p52eJ2nDLII&bv;wxZGCX#WWjwMfVeb{hY;f(AGRlHe(@AN+EN zknh3Q;B#;rd;s16uY&791r1OH;~)Nb9wOu&FbTGy|6AZq;Jk|x zY%?GM#32+A3j7}w*di2%B+FIX>eyDiX(*DV@QaDsi@8j;T+KrQe@&x-ir?%D=gO}>EekEn9SC!P2;anz}J3g8SRpsBfA6f1GrtV2I zyPuNZ!X9&r3}RLCOgoaMw6LfK*~##vsaQqqV_Y?KTa)8+3)A_0OPA!hWMZVo_A|!$ zw#Fol8HyR&%xJE!##mlnEH7tzl6t3@2r+BUr1U6db7E9eE>q7OcUSlZOVzs%PEMCN zezaaVeRgTOUYc4uSDI?fBxzunIpZv7_jY8;=*y~QLJCzYq}b`?B+iTM z+!usBbFbr2JUcPr`{K2Dah*qI&O;~ZwH>kiQ8vgY_KH7|pA;Uy*K2d9 zm-F1cZbLn8Y+@%-Rt8KAv_f;y?P;!#d}2qZ9yhmD`EKjFDu=%wvE{hKN)k0$^!65q ziZ-60dFrl)%6xgLR;U-sb4lu)v!?2v^RHOb2GP7!r z8gSlllpXIP%3O`KLTk4QLdiha9T6a+>&Ud?0#O|;+)!nOyZcHxE1tcfEj~bTsG3Ec zw;EVh&;~8a-V8U|nyPCwNMwV>@B$4wQ5=D}j?AoRcAL&R{h%b9+#OT;p051NmEG+~=mT)K@FR4&4_B|aLix(n` o#ip%EhSX-Bre)YoD=2cmfH&}0sj4+wwye-tu&+L~*6GB^AEc0sXaE2J diff --git a/src/Perlin.cpp b/src/Perlin.cpp index cfae18c..6e33961 100644 --- a/src/Perlin.cpp +++ b/src/Perlin.cpp @@ -1,5 +1,5 @@ #include "NauModular.hpp" -//#define DEBUG_PERLIN +#define DEBUG_PERLIN #ifdef DEBUG_PERLIN #include #include @@ -45,7 +45,7 @@ struct Perlin : Module{ void step() override; - float grad(int hash, float x); +float grad(int hash, float x); float getNoise(float x); void mixOctaves(float * nn); @@ -133,7 +133,7 @@ float Perlin::getNoise(float x){ n0 = t0*t0*grad(perm[i0 & 0xff], x0); t1 *= t1; n1 = t1*t1*grad(perm[i1 & 0xff], x1); - return 0.25 * (n0+n1); + return (0.25 * (n0+n1)); } void Perlin::mixOctaves(float * nn){ @@ -154,21 +154,17 @@ float Perlin::getMixed(float & _val0, float & _val1, float & _mix){ } void Perlin::step(){ - float deltaTime = 1.0 / engineGetSampleRate(); + float deltaTime = 1.0/engineGetSampleRate(); curTime += deltaTime; - if(!isfinite(curTime)) curTime = 0.0; - - - float noiseSpd = params[SPEED_PARAM].value; - if(hasWire(SPEED_INPUT)){ - float spdIn = inputs[SPEED_INPUT].value/12.0; - noiseSpd = getMixed(spdIn, noiseSpd, params[SPEED_PCT_PARAM].value); - } + + float noiseSpd = params[SPEED_INPUT].value; + float spdIn = inputs[SPEED_INPUT].value/5.0; + noiseSpd = getMixed(spdIn, noiseSpd, params[SPEED_PCT_PARAM].value); float noiseAmp = params[MULT_PARAM].value; float ampIn = inputs[MULT_INPUT].value; - noiseAmp = getMixed(ampIn, noiseAmp, params[MULT_PCT_PARAM].value); - + noiseAmp = getMixed(ampIn, noiseAmp, params[MULT_PCT_PARAM].value); + float octMult = 1.0; for(int i=0;i