diff --git a/Builds/Kickblast/README.md b/Builds/Kickblast/README.md index 053d2e0..56b9532 100644 --- a/Builds/Kickblast/README.md +++ b/Builds/Kickblast/README.md @@ -1,21 +1,22 @@ PROTOTYPES -Hello! Thanks for your interest in Puremagnetik Prototypes. +Hello! Thanks for your interest in Prototypes. -These are small, experimental sketches that are built as alpha, proof-of-concept distributions. +These are small, experimental sketches that are built as proof-of-concept distributions. I do not provide installers or support for them but I will make an effort to reply to questions on IG or Github Issues. For the most part, they should function as expected as I've tested them on my own systems. -Nevertheless, I hope you enjoy them and can make something cool with these sketches. +I hope you enjoy them and can make something cool with these sketches. To install for OSX: Move the VST and/or Component files to their respective folders Macintosh HD/Library/Audio/Plug-Ins/Components +Macintosh HD/Library/Audio/Plug-Ins/VST to install for Windows: -I built an installer. Just run it and point it to your plugin directory +I built an installer. Simply run it and point it to your plugin directory Thanks and have fun! @@ -23,6 +24,6 @@ Micah http://instagram.com/micah.frank.studio -https://github.com/chronopolis5k +https://github.com/micah-frank-studio http://micahfrank.com diff --git a/Builds/Parallel/OSX_Parallel_Prototype.zip b/Builds/Parallel/OSX_Parallel_Prototype.zip new file mode 100644 index 0000000..8017600 Binary files /dev/null and b/Builds/Parallel/OSX_Parallel_Prototype.zip differ diff --git a/Builds/Parallel/README.md b/Builds/Parallel/README.md new file mode 100644 index 0000000..56b9532 --- /dev/null +++ b/Builds/Parallel/README.md @@ -0,0 +1,29 @@ +PROTOTYPES + +Hello! Thanks for your interest in Prototypes. + +These are small, experimental sketches that are built as proof-of-concept distributions. + +I do not provide installers or support for them but I will make an effort to reply to questions on IG or Github Issues. + +For the most part, they should function as expected as I've tested them on my own systems. + +I hope you enjoy them and can make something cool with these sketches. + +To install for OSX: +Move the VST and/or Component files to their respective folders +Macintosh HD/Library/Audio/Plug-Ins/Components +Macintosh HD/Library/Audio/Plug-Ins/VST + +to install for Windows: +I built an installer. Simply run it and point it to your plugin directory + +Thanks and have fun! + +Micah + +http://instagram.com/micah.frank.studio + +https://github.com/micah-frank-studio + +http://micahfrank.com diff --git a/Builds/Parallel/Win64_Parallel_Prototype.zip b/Builds/Parallel/Win64_Parallel_Prototype.zip new file mode 100644 index 0000000..54d86c4 Binary files /dev/null and b/Builds/Parallel/Win64_Parallel_Prototype.zip differ diff --git a/GrainstationC/Grainstation-C.csd b/GrainstationC/Grainstation-C.csd new file mode 100644 index 0000000..2d56030 --- /dev/null +++ b/GrainstationC/Grainstation-C.csd @@ -0,0 +1,391 @@ +/* + Grainstation-C + by Micah Frank 2020 + www.micahfrank.com + https://github.com/chronopolis5k +*/ + + +; Version 1.0.0 +form caption("Grainstation-C") size(778, 715), pluginid("8209") +#define KNOB1 outlinecolour(48,54,44,50), trackercolour(86,240,196), trackerthickness (0.2), style ("normal"), trackeroutsideradius(1), trackerinsideradius (0.01), colour(210, 215, 211, 255), textcolour(50,50,50), popuptext(0) +#define KNOB2 outlinecolour(48,54,44,50), trackercolour(108, 92, 232, 255), trackerthickness (0.2), style ("normal"), trackeroutsideradius(1), trackerinsideradius (0.01), colour(210, 215, 211, 255), textcolour(50,50,50), popuptext(0) + +image bounds(0, 0, 778, 715), file("grainstationc-bg.png") +signaldisplay bounds(30, 88, 120, 40), colour(86,240,196), backgroundcolour(42, 43, 43,0), displaytype("waveform"), signalvariable("adisplay1"), zoom(-1) +signaldisplay bounds(230, 88, 120, 40), colour(108, 92, 232), backgroundcolour(42, 43, 43,0), displaytype("waveform"), signalvariable("adisplay2"), zoom(-1) +signaldisplay bounds(430, 88, 120, 40), colour(7,132,227), backgroundcolour(42, 43, 43,0), displaytype("waveform"), signalvariable("adisplay3"), zoom(-1) +;signaldisplay bounds(630, 88, 120, 40), colour(255, 119, 119, 255), backgroundcolour(42, 43, 43,0), displaytype("waveform"), signalvariable("adisplay4"), zoom(-1) + +;CHANNEL 1 +filebutton bounds(38, 138, 100, 20), populate("*.wav", "."), text("SOURCE", "SOURCE"),identchannel("sourceIdent1"), file("samples/geyser1.wav"), channel("file1"),imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png"), imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png") fontcolour:0(48, 54, 44, 255) +rslider bounds(14, 172, 70, 70), channel("Pitch1"), text("PITCH"), range(-2, 2, 1, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) +rslider bounds(94, 174, 70, 70), channel("Stretch1"), text("STRETCH"), range(0.01, 2, 1, 1, 0.001) $KNOB1 +rslider bounds(14, 254, 70, 70), channel("Density1"), text("DENSITY"), range(2, 32, 20, 1, 0.001) $KNOB1 +rslider bounds(94, 254, 70, 70), channel("Size1"), text("SIZE"), range(0.1, 1, 0.5, 1, 0.001) $KNOB1 +combobox bounds(24, 344, 50, 20), channel("Type1"), items("LPF", "HPF"), colour(50,50,50,0),fontcolour(7,132,227) +rslider bounds(14, 372, 70, 70), channel("Filter1"), text("FREQ"), range(200, 9000, 4000, 0.5, 0.001) $KNOB1 trackercolour(7,132,227) +rslider bounds(94, 372, 70, 70), channel("Time1"), text("TIME"), range(0.001, 2, 0.25, 1, 0.001) $KNOB2 +rslider bounds(14, 452, 70, 70), channel("Feedbk1"), text("FEEDBK"), range(0.001, 0.99, 0.25, 1, 0.001) $KNOB2 +rslider bounds(94, 452, 70, 70), channel("Pshift1"), text("PSHIFT"), range(0.001, 1, 0.25, 1, 0.001) $KNOB2 +rslider bounds(94, 532, 70, 70), channel("Amount1"), text("AMOUNT"), range(0.001, 0.7, 0.25, 1, 0.001) $KNOB2 +rslider bounds(14, 620, 70, 70), channel("Reverb1"), text("REVERB"), range(0, 1, 0.25, 1, 0.001) $KNOB1 trackercolour(255, 119, 119, 255) trackerinsideradius(0.01) trackerthickness(0.2) +rslider bounds(94, 620, 70, 70), channel("Volume1"), text("VOLUME"), range(0, 0.3, 0.1, 1, 0.001) $KNOB1 colour(210, 215, 211, 255) outlinecolour(48, 54, 44, 50) popuptext("0") style("normal") textcolour(50, 50, 50, 255) trackercolour(50, 50, 50, 255) trackerinsideradius(0.01) trackerthickness(0.2) + +;CHANNEL 2 +filebutton bounds(238, 138, 100, 20), populate("*.wav", "."), text("SOURCE", "SOURCE"),identchannel("sourceIdent2"), file("samples/bowbounce.wav"), channel("file2"),imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png"), imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png") fontcolour:0(48, 54, 44, 255) +rslider bounds(214, 172, 70, 70), channel("Pitch2"), text("PITCH"), range(-2, 2, 1, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) +rslider bounds(294, 174, 70, 70), channel("Stretch2"), text("STRETCH"), range(0.01, 2, 1, 1, 0.001) $KNOB1 +rslider bounds(214, 254, 70, 70), channel("Density2"), text("DENSITY"), range(2, 32, 20, 1, 0.001) $KNOB1 +rslider bounds(294, 254, 70, 70), channel("Size2"), text("SIZE"), range(0.1, 1, 0.5, 1, 0.001) $KNOB1 +combobox bounds(224, 344, 50, 20), channel("Type2"), items("LPF", "HPF"), colour(50,50,50,0),fontcolour(7,132,227) +rslider bounds(214, 372, 70, 70), channel("Filter2"), text("FREQ"), range(200, 9000, 4000, 0.5, 0.001) $KNOB1 trackercolour(7,132,227) +rslider bounds(294, 372, 70, 70), channel("Time2"), text("TIME"), range(0.001, 2, 0.25, 1, 0.001) $KNOB2 +rslider bounds(214, 452, 70, 70), channel("Feedbk2"), text("FEEDBK"), range(0.001, 0.99, 0.25, 1, 0.001) $KNOB2 +rslider bounds(294, 452, 70, 70), channel("Pshift2"), text("PSHIFT"), range(0.001, 1, 0.25, 1, 0.001) $KNOB2 +rslider bounds(294, 532, 70, 70), channel("Amount2"), text("AMOUNT"), range(0.001, 0.7, 0.25, 1, 0.001) $KNOB2 +rslider bounds(214, 620, 70, 70), channel("Reverb2"), text("REVERB"), range(0, 1, 0.25, 1, 0.001) $KNOB1 trackercolour(255, 119, 119, 255) trackerinsideradius(0.01) trackerthickness(0.2) +rslider bounds(294, 620, 70, 70), channel("Volume2"), text("VOLUME"), range(0, 0.3, 0.1, 1, 0.001) $KNOB1 colour(210, 215, 211, 255) outlinecolour(48, 54, 44, 50) popuptext("0") style("normal") textcolour(50, 50, 50, 255) trackercolour(50, 50, 50, 255) trackerinsideradius(0.01) trackerthickness(0.2) +;keyboard bounds(8, 0, 381, 95) + +;CHANNEL 3 +filebutton bounds(438, 138, 100, 20), populate("*.wav", "."), text("SOURCE", "SOURCE"),identchannel("sourceIdent3"), file("samples/ice.wav"), channel("file3"),imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png"), imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png") fontcolour:0(48, 54, 44, 255) +rslider bounds(414, 172, 70, 70), channel("Pitch3"), text("PITCH"), range(-2, 2, 1, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) +rslider bounds(494, 174, 70, 70), channel("Stretch3"), text("STRETCH"), range(0.01, 2, 1, 1, 0.001) $KNOB1 +rslider bounds(414, 254, 70, 70), channel("Density3"), text("DENSITY"), range(2, 32, 20, 1, 0.001) $KNOB1 +rslider bounds(494, 254, 70, 70), channel("Size3"), text("SIZE"), range(0.1, 1, 0.5, 1, 0.001) $KNOB1 +combobox bounds(424, 344, 50, 20), channel("Type3"), items("LPF", "HPF"), colour(50,50,50,0),fontcolour(7,132,227) +rslider bounds(414, 372, 70, 70), channel("Filter3"), text("FREQ"), range(200, 9000, 4000, 0.5, 0.001) $KNOB1 trackercolour(7,132,227) +rslider bounds(494, 372, 70, 70), channel("Time3"), text("TIME"), range(0.001, 2, 0.25, 1, 0.001) $KNOB2 +rslider bounds(414, 452, 70, 70), channel("Feedbk3"), text("FEEDBK"), range(0.001, 0.99, 0.25, 1, 0.001) $KNOB2 +rslider bounds(494, 452, 70, 70), channel("Pshift3"), text("PSHIFT"), range(0.001, 1, 0.25, 1, 0.001) $KNOB2 +rslider bounds(494, 532, 70, 70), channel("Amount3"), text("AMOUNT"), range(0.001, 0.7, 0.25, 1, 0.001) $KNOB2 +rslider bounds(414, 620, 70, 70), channel("Reverb3"), text("REVERB"), range(0, 1, 0.25, 1, 0.001) $KNOB1 trackercolour(255, 119, 119, 255) trackerinsideradius(0.01) trackerthickness(0.2) +rslider bounds(494, 620, 70, 70), channel("Volume3"), text("VOLUME"), range(0, 0.3, 0.1, 1, 0.001) $KNOB1 colour(210, 215, 211, 255) outlinecolour(48, 54, 44, 50) popuptext("0") style("normal") textcolour(50, 50, 50, 255) trackercolour(50, 50, 50, 255) trackerinsideradius(0.01) trackerthickness(0.2) + +;CHANNEL 4 +filebutton bounds(638, 138, 100, 20), populate("*.wav", "."), text("SOURCE", "SOURCE"),identchannel("sourceIdent4"), file("samples/rhodezart.wav"), channel("file4"),imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png"), imgfile("On", "fileButton.png")imgfile("Off", "fileButton.png") fontcolour:0(48, 54, 44, 255) +rslider bounds(614, 172, 70, 70), channel("Pitch4"), text("PITCH"), range(-2, 2, 1, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) +rslider bounds(694, 174, 70, 70), channel("Stretch4"), text("STRETCH"), range(0.01, 2, 1, 1, 0.001) $KNOB1 +rslider bounds(614, 254, 70, 70), channel("Density4"), text("DENSITY"), range(2, 32, 20, 1, 0.001) $KNOB1 +rslider bounds(694, 254, 70, 70), channel("Size4"), text("SIZE"), range(0.1, 1, 0.5, 1, 0.001) $KNOB1 +combobox bounds(624, 344, 50, 20), channel("Type4"), items("LPF", "HPF"), colour(50,50,50,0),fontcolour(7,132,227) +rslider bounds(614, 372, 70, 70), channel("Filter4"), text("FREQ"), range(200, 9000, 4000, 0.5, 0.001) $KNOB1 trackercolour(7,132,227) +rslider bounds(694, 372, 70, 70), channel("Time4"), text("TIME"), range(0.001, 2, 0.25, 1, 0.001) $KNOB2 +rslider bounds(614, 452, 70, 70), channel("Feedbk4"), text("FEEDBK"), range(0.001, 0.99, 0.25, 1, 0.001) $KNOB2 +rslider bounds(694, 452, 70, 70), channel("Pshift4"), text("PSHIFT"), range(0.001, 1, 0.25, 1, 0.001) $KNOB2 +rslider bounds(694, 532, 70, 70), channel("Amount4"), text("AMOUNT"), range(0.001, 0.7, 0.25, 1, 0.001) $KNOB2 +rslider bounds(614, 620, 70, 70), channel("Reverb4"), text("REVERB"), range(0, 1, 0.25, 1, 0.001) $KNOB1 trackercolour(255, 119, 119, 255) trackerinsideradius(0.01) trackerthickness(0.2) +rslider bounds(694, 620, 70, 70), channel("Volume4"), text("VOLUME"), range(0, 0.3, 0.1, 1, 0.001) $KNOB1 colour(210, 215, 211, 255) outlinecolour(48, 54, 44, 50) popuptext("0") style("normal") textcolour(50, 50, 50, 255) trackercolour(50, 50, 50, 255) trackerinsideradius(0.01) trackerthickness(0.2) +keyboard bounds(10, 10, 100, 160), identchannel("widgetIdent") + + + + + +-n -d -+rtmidi=NULL -M0 -m0d --midi-key-oct=4 --midi-velocity-amp=5 --displays + + + +sr = 48000 +ksmps = 64 +nchnls = 2 +0dbfs = 1 + +/* + +Config options +See this video for a quick explanation +https://www.dropbox.com/s/im1vivrjv98isub/Grainstation-C_config.mp4?dl=0 + +*/ + +giwin ftgen 1, 0, 8192, 20, 2, 1 ;Hanning window + +opcode pitchdelay, aa, aakkk ;audio in / audio out, delay time, feedback, delay mix, pitchShift + ainL, ainR, kdelay, kfeedback, kfbpshift xin + + imaxdelay = 3; seconds + + alfoL lfo 0.05, 0.2 ; slightly mod the left delay time + abuf1 delayr imaxdelay + atapL deltap3 kdelay+alfoL + delayw ainL + (atapL * kfeedback) + fftinL pvsanal atapL, 1024, 256, 1024, 1 ; analyse it + ftpsL pvscale fftinL, kfbpshift, 1, 2 ; transpose it keeping formants + atpsL pvsynth ftpsL ; resynthesis + + + ;delay R + alfoR lfo 0.05, 0.1 ; slightly mod the right delay time + abuf2 delayr imaxdelay + atapR deltap3 kdelay+alfoR + delayw ainR + (atapR * kfeedback) + fftinR pvsanal atapR, 1024, 256, 1024, 1 + ftpsR pvscale fftinR, kfbpshift, 1, 2 + atpsR pvsynth ftpsR + + atapL = atapL + atapR*0.02 ;introduce a little xmodulation + atapR = atapR + atapL*0.07 + + kpitchMix = 0.5 ; pitch mix disabled, can add on later in opcode argument + ;mix between pitched and unpitched delays + kinvctrl = abs (kpitchMix -1) + amixL = atapL*kinvctrl + atpsL*kpitchMix + amixR = atapR*kinvctrl + atpsR*kpitchMix + + xout amixL, amixR +endop + +opcode showwaveform, a, a + asig xin + kdisprel linsegr 1, 1, 1, 0.3, 0 + adisplay limit asig, -0.8, 0.8 + adisplay = adisplay*kdisprel + xout adisplay +endop + +opcode pathshorten,0,SS + Schan, Sident xin + SFile chnget Schan + printf "%s\n", k(1), SFile + kpos strrindexk SFile, "/" ;look for the rightmost '/' + Snam strsubk SFile, kpos+1, -1 ;extract the substring + SMessage sprintfk "text(\"%s\") ", Snam + chnset SMessage, Sident +endop + +instr 1 + + klev1 chnget "Volume1" + kdens1 chnget "Density1" + kgrsize1 chnget "Size1" + kpitch1 chnget "Pitch1" + kstr1 chnget "Stretch1" + ifiltType1 chnget "Type1" + kfilt1 chnget "Filter1" + ktime1 chnget "Time1" + kfdbk1 chnget "Feebbk1" + kdelpshift1 chnget "Pshift1" + kdelsend1 chnget "Amount1" + kverbsend1 chnget "Reverb1" + + klev2 chnget "Volume2" + kdens2 chnget "Density2" + kgrsize2 chnget "Size2" + kpitch2 chnget "Pitch2" + kstr2 chnget "Stretch2" + ifiltType2 chnget "Type2" + kfilt2 chnget "Filter2" + ktime2 chnget "Time2" + kfdbk2 chnget "Feebbk2" + kdelpshift2 chnget "Pshift2" + kdelsend2 chnget "Amount2" + kverbsend2 chnget "Reverb2" + + klev3 chnget "Volume3" + kdens3 chnget "Density3" + kgrsize3 chnget "Size3" + kpitch3 chnget "Pitch3" + kstr3 chnget "Stretch3" + ifiltType3 chnget "Type3" + kfilt3 chnget "Filter3" + ktime3 chnget "Time3" + kfdbk3 chnget "Feebbk3" + kdelpshift3 chnget "Pshift3" + kdelsend3 chnget "Amount3" + kverbsend3 chnget "Reverb3" + + klev4 chnget "Volume4" + kdens4 chnget "Density4" + kgrsize4 chnget "Size4" + kpitch4 chnget "Pitch4" + kstr4 chnget "Stretch4" + ifiltType4 chnget "Type4" + kfilt4 chnget "Filter4" + ktime4 chnget "Time4" + kfdbk4 chnget "Feebbk4" + kdelpshift4 chnget "Pshift4" + kdelsend4 chnget "Amount4" + kverbsend4 chnget "Reverb4" + +;;Path to sound files +Sfile1 chnget "file1" +Sfile2 chnget "file2" +Sfile3 chnget "file3" +Sfile4 chnget "file4" + +; index file names to integers +strset 0, Sfile1 +strset 1, Sfile2 +strset 2, Sfile3 +strset 3, Sfile4 + +kpb init 0 +midipitchbend kpb +koct = p4+kpb ;add pitchbend values to octave-point-decimal value +kcps = cpsoct(koct) ;convert octave-point-decimal value into Hz +ibase = 60 ;chnget "RootNote" ; middle C +kspeed = kcps/cpsmidinn(ibase) +iamp=p5 +kenv=madsr(0.001, 0, 1, 1) +ichncount init 0 + giL[] init 4 ;one alloc per channel/ftable + giR[] init 4 + iFileArrLen = lenarray(giL) + icount init 0 + loadsounds: + if icount < iFileArrLen then + Sname strget icount + ichn filenchnls Sname ;get number of channels. if mono then load up chn 1 twice. + if ichn = 2 then + giL[icount] ftgen 0, 0, 0, 1, Sname, 0, 0, 1 + giR[icount] ftgen 0, 0, 0, 1, Sname, 0, 0, 2 + ;prints "is stereo \n" + else + giL[icount] ftgen 0, 0, 0, 1, Sname, 0, 0, 1 + giR[icount] ftgen 0, 0, 0, 1, Sname, 0, 0, 1 + endif + icount +=1 + goto loadsounds + endif + iolaps = 2 + ips = 1/iolaps + + a1L syncloop klev1*kenv, kdens1, kspeed*kpitch1, kgrsize1, ips*kstr1, 0, ftlen(giL[0])/sr, giL[0], 1, iolaps + a1R syncloop klev1*kenv, kdens1, kspeed*kpitch1, kgrsize1, ips*kstr1, 0, ftlen(giL[0])/sr, giL[0], 1, iolaps + + a2L syncloop klev2*kenv, kdens2, kspeed*kpitch2, kgrsize2, ips*kstr2, 0, ftlen(giL[1])/sr, giL[1], 1, iolaps + a2R syncloop klev2*kenv, kdens2, kspeed*kpitch2, kgrsize2, ips*kstr2, 0, ftlen(giL[1])/sr, giL[1], 1, iolaps + + a3L syncloop klev3*kenv, kdens3, kspeed*kpitch3, kgrsize3, ips*kstr3, 0, ftlen(giL[2])/sr, giL[2], 1, iolaps + a3R syncloop klev3*kenv, kdens3, kspeed*kpitch3, kgrsize3, ips*kstr3, 0, ftlen(giL[2])/sr, giL[2], 1, iolaps + + a4L syncloop klev4*kenv, kdens4, kspeed*kpitch4, kgrsize4, ips*kstr4, 0, ftlen(giL[3])/sr, giL[3], 1, iolaps + a4R syncloop klev4*kenv, kdens4, kspeed*kpitch4, kgrsize4, ips*kstr4, 0, ftlen(giL[3])/sr, giL[3], 1, iolaps + + + kq = 0 + alow1L, ahigh1L, aband1L svfilter a1L, kfilt1, 1 + alow1R, ahigh1R, aband1R svfilter a1R, kfilt1, 1 + + alow2L, ahigh2L, aband2L svfilter a2L, kfilt2, 1 + alow2R, ahigh2R, aband2R svfilter a2R, kfilt2, 1 + + alow3L, ahigh3L, aband3L svfilter a3L, kfilt3, 1 + alow3R, ahigh3R, aband3R svfilter a3R, kfilt3, 1 + + alow4L, ahigh4L, aband4L svfilter a4L, kfilt4, 1 + alow4R, ahigh4R, aband4R svfilter a4R, kfilt4, 1 + + ; put filters in array for controller selection and scale by klev value + aFilt1L[] init 2 + aFilt1R[] init 2 + aFilt2L[] init 2 + aFilt2R[] init 2 + aFilt3L[] init 2 + aFilt3R[] init 2 + aFilt4L[] init 2 + aFilt4R[] init 2 + aFilt1L[0] = alow1L + aFilt1L[1] = ahigh1L + aFilt1R[0] = alow1R + aFilt1R[1] = ahigh1R + aFilt2L[0] = alow2L + aFilt2L[1] = ahigh2L + aFilt2R[0] = alow2R + aFilt2R[1] = ahigh2R + aFilt3L[0] = alow3L + aFilt3L[1] = ahigh3L + aFilt3R[0] = alow3R + aFilt3R[1] = ahigh3R + aFilt4L[0] = alow4L + aFilt4L[1] = ahigh4L + aFilt4R[0] = alow4R + aFilt4R[1] = ahigh4R + + ;;send filter out to delay opcode, returns on "adel..." + adel1L, adel1R pitchdelay aFilt1L[ifiltType1-1]*kdelsend1, aFilt1R[ifiltType1-1]*kdelsend1, ktime1, kfdbk1, kdelpshift1 + adel2L, adel2R pitchdelay aFilt2L[ifiltType2-1]*kdelsend2, aFilt2R[ifiltType2-1]*kdelsend2, ktime2, kfdbk2, kdelpshift2 + adel3L, adel3R pitchdelay aFilt3L[ifiltType3-1]*kdelsend3, aFilt3R[ifiltType3-1]*kdelsend3, ktime3, kfdbk3, kdelpshift3 + adel4L, adel4R pitchdelay aFilt4L[ifiltType4-1]*kdelsend4, aFilt4R[ifiltType4-1]*kdelsend4, ktime4, kfdbk4, kdelpshift4 + ;;mix delay and dry (post filter) sigs + + asig1L ntrpol aFilt1L[ifiltType1-1], adel1L, kdelsend1 + asig1R ntrpol aFilt1R[ifiltType1-1], adel1R, kdelsend1 + + asig2L ntrpol aFilt2L[ifiltType2-1], adel2L, kdelsend2 + asig2R ntrpol aFilt2R[ifiltType2-1], adel2R, kdelsend2 + + asig3L ntrpol aFilt3L[ifiltType3-1], adel3L, kdelsend3 + asig3R ntrpol aFilt3R[ifiltType3-1], adel3R, kdelsend3 + + asig4L ntrpol aFilt4L[ifiltType4-1], adel4L, kdelsend4 + asig4R ntrpol aFilt4R[ifiltType4-1], adel4R, kdelsend4 + + chnmix asig1L*kverbsend1, "verbmixL" + chnmix asig1R*kverbsend1, "verbmixR" + chnmix asig2L*kverbsend2, "verbmixL" + chnmix asig2R*kverbsend2, "verbmixR" + chnmix asig3L*kverbsend3, "verbmixL" + chnmix asig3R*kverbsend3, "verbmixR" + chnmix asig4L*kverbsend4, "verbmixL" + chnmix asig4R*kverbsend4, "verbmixR" + + chnmix asig1L, "mixL" + chnmix asig1R, "mixR" + chnmix asig2L, "mixL" + chnmix asig2R, "mixR" + chnmix asig3L, "mixL" + chnmix asig3R, "mixR" + chnmix asig4L, "mixL" + chnmix asig4R, "mixR" + + adisplay1 showwaveform asig1L + display adisplay1, 0.1, 1 + + adisplay2 showwaveform asig2L + display adisplay2, 0.1, 1 + + adisplay3 showwaveform asig3L + display adisplay3, 0.1, 1 + + adisplay4 showwaveform asig4L + display adisplay4, 0.1, 1 + + +endin + +instr reverb, 98 +ainL chnget "verbmixL" +ainR chnget "verbmixR" +aRevL, aRevR freeverb ainL, ainR, 0.9, 0.5 +chnmix aRevL, "mixL" +chnmix aRevR, "mixR" + +endin + +instr mixer, 99 + +amixL chnget "mixL" +amixR chnget "mixR" +outs amixL, amixR +chnclear "verbmixL" +chnclear "verbmixR" +chnclear "mixL" +chnclear "mixR" + +pathshorten "file1", "sourceIdent1" +pathshorten "file2", "sourceIdent2" +pathshorten "file3", "sourceIdent3" +pathshorten "file4", "sourceIdent4" +endin + + + +i 98 0 500000 +i 99 0 500000 + +e + + \ No newline at end of file diff --git a/GrainstationC/fileButton.png b/GrainstationC/fileButton.png new file mode 100644 index 0000000..6f0ef06 Binary files /dev/null and b/GrainstationC/fileButton.png differ diff --git a/GrainstationC/grainstationc-bg.png b/GrainstationC/grainstationc-bg.png new file mode 100644 index 0000000..f64408e Binary files /dev/null and b/GrainstationC/grainstationc-bg.png differ diff --git a/GrainstationC/samples/bowbounce.wav b/GrainstationC/samples/bowbounce.wav new file mode 100644 index 0000000..b1ad849 Binary files /dev/null and b/GrainstationC/samples/bowbounce.wav differ diff --git a/GrainstationC/samples/geyser1.wav b/GrainstationC/samples/geyser1.wav new file mode 100644 index 0000000..1a1b58e Binary files /dev/null and b/GrainstationC/samples/geyser1.wav differ diff --git a/GrainstationC/samples/ice.wav b/GrainstationC/samples/ice.wav new file mode 100644 index 0000000..8a5d0b1 Binary files /dev/null and b/GrainstationC/samples/ice.wav differ diff --git a/GrainstationC/samples/rhodezart.wav b/GrainstationC/samples/rhodezart.wav new file mode 100644 index 0000000..0a7fc1e Binary files /dev/null and b/GrainstationC/samples/rhodezart.wav differ diff --git a/Parallel/Parallel.csd b/Parallel/Parallel.csd index 28e6744..2ca15b7 100644 --- a/Parallel/Parallel.csd +++ b/Parallel/Parallel.csd @@ -1,57 +1,39 @@ ;Parallel Prototype 1.0.0 -form caption("Parallel") size(410, 511), pluginid("8110") -#define KNOB1 outlinecolour(30,30,30,50) trackercolour(30,30,30,220), trackerthickness (0.2), style ("normal"), trackeroutsideradius(1), trackerinsideradius (0.01), colour(30, 30, 30, 255), textcolour(183,183,183), popuptext(0) +form caption("Parallel") size(300, 270), pluginid("8110") +#define KNOB1 outlinecolour(30,30,30,50) trackercolour(30,30,30,220), trackerthickness (0.2), style ("normal"), trackeroutsideradius(1), trackerinsideradius (0.01), colour(30, 30, 30, 255), textcolour(30,30,30,220), popuptext(0) -image bounds(0, 0, 410, 511), colour(50,50,50), file("parallel-bg.png") +image bounds(0, 0, 300, 270), colour(50,50,50), file("parallel-bg.png") -rslider bounds(10, 215, 80, 80),channel("Depth"), text("DEPTH"), range(0.001, 0.999, 0.55, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) -rslider bounds(110, 215, 80, 80),channel("Speed"), text("SPEED"), range(0.001, 0.999, 0.5, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) +rslider bounds(10, 115, 80, 80),channel("Depth"), text("DEPTH"), range(0.001, 0.999, 0.5, 1, 0.001) $KNOB1 ;, trackercolour(77,190,250, 250) + +combobox bounds(25, 200, 60, 20), channel("Wave"), text("TRI", "SQUARE", "SAW") colour(30,30,30,0), fontcolour (30,30,30,220) +rslider bounds(100, 115, 80, 80),channel("Split"), text("SPLIT"), range(0.0, 1, 0.05, 1, 0.001) $KNOB1 ;, trackercolour(244,236,9,200) +rslider bounds(190, 115, 80, 80),channel("Offset"), text("OFFSET"), range(0.0, 1, 0.05, 1, 0.001) $KNOB1 ;, trackercolour(244,236,9,200) -combobox bounds(222, 295, 60, 20), channel("Wave"), text("TRI", "SQUARE", "SAW") colour(72,72,72,0), fontcolour (212, 216, 216) -rslider bounds(40, 330, 80, 80),channel("Shift"), text("SHIFT"), range(0.0, 1, 0.05, 1, 0.001) $KNOB1 ;, trackercolour(244,236,9,200) -rslider bounds(140, 330, 80, 80),channel("Offset"), text("OFFSET"), range(0.0, 1, 0.05, 1, 0.001) $KNOB1 ;, trackercolour(244,236,9,200) -rslider bounds(240, 330, 80, 80),channel("Mix"), text("MIX"), range(0, 1, 0.8, 1, 0.001) $KNOB1 ;, trackercolour(247,63,6, 180) -rslider bounds(340, 350, 60, 60),channel("Output"), text("OUTPUT"), range(0, 2, 1, 1, 0.001) $KNOB1 ;, trackercolour(247,63,6, 180) --n -d -+rtmidi=NULL -M0 -m0d --displays +-n -d -+rtmidi=NULL -M0 -m0d ksmps = 64 nchnls = 2 0dbfs = 1 -;giRecBuf1L ftgen 0,0,131072,2,0 ; 3 seconds at 44.1 khz -;giRecBuf1R ftgen 0,0,131072,2,0 -;giwin ftgen 1, 0, 8192, 20, 2, 1 ;Hanning window - instr 1 -kdelay chnget "Depth" kwave chnget "Wave" -kdepth chnget "Speed" -ktone chnget "Tone" +kdepth chnget "Depth" koffset chnget "Offset" -kmix chnget "Mix" -kspeed scale kdelay, 5, 0.001 -kshift chnget "Shift" -kout chnget "Output" -kdepth scale kdepth, 5, 0.01 +kshift chnget "Split" koffset scale koffset, 2,0 -ktone scale ktone, 10000, 200 -kshift scale kshift, 1, 0 -aspeed interp kspeed +kshift scale kshift, 0.5, 0 -;itablelength = ftlen(giRecBuf1L) -;imaxlength = itablelength/sr ; get table length in seconds ainL inch 1 ; read audio from live input channel 1 ainR inch 2 ; read audio from live input channel 2 - ainL, ainR diskin "../../Repo/puremagnetik_plugins/testSounds/stereocheck.wav", 1, 0, 1 - if kwave == 1 then kspeedmodl lfo 1, kdepth, 1 kspeedmodr lfo 1, kdepth+kshift, 1 @@ -72,23 +54,21 @@ aspeedmodr interp kspeedmodrp if changed:k(koffset) == 1 then kDelayGain = 0 endif - + kDelayGain = kDelayGain<1 ? kDelayGain+.0001 : 1 ;delay method - aDelSpeedl = aspeed*abs(aspeedmodl) ;speed is modulated by LFO - aDelSpeedr = aspeed*abs(aspeedmodr) + aDelSpeedl = 5*abs(aspeedmodl) ;speed is modulated by LFO + aDelSpeedr = 5*abs(aspeedmodr) aDelayL vdelay ainL, aDelSpeedl+(koffset*1000), 1001 ;and then controls delay time aDelayR vdelay ainR, aDelSpeedr+(koffset*1000), 1001 ;add offset time to delay time (everything in ms) + - kDelayGain = kDelayGain<1 ? kDelayGain+.0001 : 1 ;add feedback - aDelMixL = (ainL*0.5)+(aDelayL*kmix*0.5) - aDelMixR = (ainR*0.5)+(aDelayR*kmix*0.5) - + aDelMixL = (ainL*0.5)+(aDelayL*kDelayGain) + aDelMixR = (ainR*0.5)+(aDelayR*kDelayGain) abalL balance aDelMixL, ainL abalR balance aDelMixR, ainR -outs abalL*kout, abalR*kout - +outs abalL, abalR endin diff --git a/Parallel/parallel-bg.png b/Parallel/parallel-bg.png new file mode 100644 index 0000000..82d6621 Binary files /dev/null and b/Parallel/parallel-bg.png differ