{"id":20754000,"url":"https://github.com/derekxkwan/pdkvabs","last_synced_at":"2026-03-08T18:35:40.909Z","repository":{"id":33613751,"uuid":"37265971","full_name":"derekxkwan/pdkvabs","owner":"derekxkwan","description":"pure data abstractions","archived":false,"fork":false,"pushed_at":"2020-08-03T10:13:34.000Z","size":512,"stargazers_count":34,"open_issues_count":0,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-18T04:14:05.830Z","etag":null,"topics":["granular","markov","pd-abstractions","pd-vanilla","pulsar","puredata"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derekxkwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-11T14:26:47.000Z","updated_at":"2024-03-25T18:40:43.000Z","dependencies_parsed_at":"2022-09-12T21:23:45.155Z","dependency_job_id":null,"html_url":"https://github.com/derekxkwan/pdkvabs","commit_stats":null,"previous_names":["mrufrufin/pdkvabs","derekxkwan/pdkvabs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekxkwan%2Fpdkvabs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekxkwan%2Fpdkvabs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekxkwan%2Fpdkvabs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekxkwan%2Fpdkvabs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derekxkwan","download_url":"https://codeload.github.com/derekxkwan/pdkvabs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243057822,"owners_count":20229260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["granular","markov","pd-abstractions","pd-vanilla","pulsar","puredata"],"created_at":"2024-11-17T09:15:50.092Z","updated_at":"2026-03-08T18:35:40.880Z","avatar_url":"https://github.com/derekxkwan.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# pdkvabs - released under gpl v3.0\nvanilla abstractions\n\n(before use, put subfolder contents besides the util folder into main pdkvabs folder)\n\n(also note that this is for personal use and VERY subject to change/renaming so I suggest this repo mainly for educational use)\n\n## GENERAL\n- dkattqpt - record attack locations in a soundfile\n- dkargs - parent patch argument getter\n- dkautowah~ - automatic wah based on envelope following\n- dkbangroute - route bangs with bangs\n- dkbitcrush~ - bit-resolution/sample-rate reducer\n- dkblkmn~ - generates blackman window according to input from 0 to 1.\n- dkchangebang~ - bang when detecting changes in a signal\n- dkchoprd~ - triggered chopped array reader (analogue to dksndchop)\n- dkcliktrak~ - click track/metronome\n- dkcoinflip - output 1 a given pct of the time else 0\n- dkdelbank~ - delay bank\n- dkdelbankm2s~ - delay bank but with panning\n- dkdellopbank~ - delay bank with lowpass filtering\n- dkdellopbankm2s~ - delay bank with lowpass filtering and panning\n- dkdistort~ - distortion waveshaper\n- dkdownsamp~ - audio-signal downsampler.\n- dkfbdel~ - simple delay with fb\n- dkfbvdel~ - simple delay with fb (signal delay time)\n- dkfft/fftbinwipe~ - fft bin wiper ported from SuperCollider's PV_BinWipe\n- dkfft/fftcomp~ - spectral compressor based on 5.Spectral-Compressor by Alexander Torres Porres.\n- dkfft/fftconvolve~ - fft convolver\n- dkfft/fftcross~ - spectral cross-synthesis based on 1.Cross-Synthesis by Alexander Torres Porres.\n- dkfft/fftgain~ - spectral filter with traceable gain. \n- dkfft/fftgate~ - spectral gate (requires zexy). \n- dkflipflop - like a tgl but without graphics\n- dkfor - for loop\n- dkfreqshift~ - frequency shifter via single sideband modulation\n- dkgainenv~ - traceable gain envelope\n- dkincwr~ - incremental tabwriter\n- dkint~ - \"typecast\" signals to integer\n- dkincwritepos~ - incremental tabwrite~ with sample position table\n- dkkarplus~ - karplus-strong synth\n- dkkeysend - send globally via prefixed key\n- dkkeytonum - maps keys to numbers sequentially by row\n- dklisttoclone - distribute list to clone instances\n- dkliverev~ - live reverser\n- dklooper~ - looper\n- dkloopwin~ - signal-driven loop windowing\n- dkmbang - multiple banger\n- dkmbang_r - multiple banger (but randomly gated)\n- dkmiditonote - midi notes to note names\n- dkmidirt - abstraction to handle midi real-time message\n- dknarray - batch array definer\n- dknobu~ - sample chopper abstraction\n- dknot - control-rate bitwise not\n- dknotetomidi - note names (case-insensitive) to midi notes\n- dknsndload - batch loading of sound files into arrays\n- dkoneShotM - a one-shot sample player, left inlet takes a bang to trigger playback, right inlet takes a path for file. \n- dkoneShotS - stereo version \n- dkpaulstretch~ - slightly modified/cleaned up martin brinkmann's (mmb) small_paul1 paulstretcher for use as an abstraction. Unlike small_paul1, it rounds window sizes to the nearest power of 2 and accept signals as position input.\n- dkpshift~ - rotating tape head pitchshifter\n- dkphasevoc~ - a phase vocoder abstraction lifted from Miller Puckette's I07.phase.vocoder from the help files. Like tabread4~, hot signal inlet indexes by sample. First arg is array name, second is window size.\n- dkphsrd~ - phasor sound reader abstraction\n- dkpolargraph~ - graph a real fft analysis in polar coords\n- dkpolyish1 - polyish abs with no note off\n- dkpulsewidth~ - pulse width modulation\n- dkroute2~ - one to two signal router\n- dkrptr - repeat things\n- dkselector - a row of 32 toggle boxes whose values are stored in an array (name passed by argument, requires cyclone) \n- dkseqgen1 - timed random sequence generator\n- dksisascl~ - SIne SAmple SCaLer\n- dksndchop~ - sound chopper\n- dksndchopgrn~ - granular sound chopper\n- dksndload-text - load from a [text]-based path/array manifest\n- dksndtrig~ - triggered sound player\n- dksndtrig2~ - triggered sound player with modulatable rate\n- dksndtriggrn~ - triggered granular sound player\n- dkspigot~ - control-rate spigot for audio signals\n- dkspigot2~ - audio-rate spigot for audio signals\n- dkstrippoly - a poly without noteoff messages (or zero velocity notes) \n- dkstutter~ - a delay-based stutter effect\n- dkswitch2~ - choose between 2 different signal inputs\n- dksymbolcheck - bangs for empty symbol, else passes symbol\n- dksymbollen - length of a symbol\n- dkswing - bang swinger\n- dksyncb - synchronized banger\n- dksyncf - synchronized floats\n- dktaptempo - deduce tempo from incoming bangs\n- dktimegate - limit messages to 1 per x time units\n- dktimer - simple wrapper around timer\n- dktport - a fancy counter with beats, subdivisions, and measures. \n- dktrigrd~ - triggered array reader\n- dkoutput~ - output abstraction\n- dkvanadsr~ - vanilla adsr envelope\n- dkvanadsrexp~ - vanilla exponential adsr envelope\n- dkvandrk - vanilla drunk random number generator \n- dkvanphs~ - vanilla 3-delay line phaser/chorus effect \n- dkvgcld~ - vanille grain cloud\n- dkvisclock - visual clock\n- dkvmetrox - vanilla metro divider\n- dkvmetrox_grp - grouper for dkvmetrox\n- dkvmetrox_rcv - receiver for dkvmetrox\n- dkvmetrox_grprcv - receiver for dkvmetrox_grp\n- dkvscaledeg - maps scale degrees to midi notes (borrowing from SC's Scale)\n- dkvuzi - vanilla uzi/multiple banger\n- dkxor - control-rate bitwise xor\n\n## COUNTER\n- dktimedctr- on bang, output floats counting up to x \n- dkvanctr - vanilla counter (can go both up and down)\n\n## DELAY-BASED\n- dkchorus~ - chorus\n- dkflanger~ - flanger\n- dkphaser~ - phaser\n\n## GATE\n- dklegate - let through floats lesser or equal to x\n- dkgegate - let through floats greater or equal to x\n- dkrgate - let through anything x% of the time\n- dknzgate - only let nonzero floats through\n\n## GRANULAR\n- dktrgrnstr~ - live granular stretcher (uses dksyncgrn~)\n- dkxgrn~ -  granular stretcher\n- dkloopgrn~ - granular synchronized looper based on dksyncgrn~\n\n## FFT\n- dkfftgate~ - spectral gating (above or below)\n- dkfftconvolve~ - spectral non-partitioned convolution\n- dkfftcross~ - spectral cross-synthesis\n- dkfftdelay~ - spectral delay\n- dkfftfilt~ - spectral filtering\n- dkhannnorm~ - normalization for hann windowing (and overlapping) in an fft transform\n- dkvanpaul~ - vanilla paulstretcher\n- dkvanpvoc~ - vanilla phase vocoder\n\n## FILTERS\n- dkdecay~ - exponential decay (port of SuperCollider's Decay UGen)\n- dkdecay2~ - exponential attack+decay (port of SuperCollider's Decay2 UGen)\n- dkringer~ - two-pole resonating filter (zeroes at +/- 1) with ring time arg\n- dkringerbank~ - a bank of resonating filters (dkringer~), handy for modal synthesis\n- dkringerpreset - presets for dkringerbank~\n- dkvancomp~ - vanilla compressor/limiter\n- dkvap1o~ - first-order allpass filter (control inlet for cutoff)\n- dkvap1os~ - first-order allpass filter (signal inlet for cutoff)\n- dkvap1os~ - second-order allpass filter (control inlets for cutoff and q)\n- dkvhp1o~ - first-order highpass filter (control inlet for cutoff)\n- dkvhp1os~ - first-order highpass filter (signal inlet for cutoff)\n- dkvlp1o~ - first-order lowpass filter (control inlet for cutoff)\n- dkvlp1os~ - first-order lowpass filter (signal inlet for cutoff)\n- dkvbp2o~ - second-order bandpass filter (control inlets for cutoff and q)\n- dkvbr2o~ - second-order bandreject filter (control inlets for cutoff and q)\n- dkvapcomb~ - allpass filter from two combs\n- dkvfbcomb~ - feedback comb filter\n\n## LINE\ndklineexp - exponential line\ndklineexp~ - exponential line~\ndkvlineexp~ - exponential vline~\n\n## MARKOV\n- dkvmarkov1o - vanilla first-order markov analysis/generator\n- dkvmarkov2o - vanilla second-order markov analysis/generator\n\n## MATH (AUDIO)\n- dkcmult~ - multiplication of two complex signals. \n- dkcnorm~ - normalization of a complex. \n- dkcdiv~ - division of two complex signals.\n- dkeq~ - equal to\n- dkge~ - greater than or equal to\n- dkgt~ - greater than\n- dkle~ - less than or equal to\n- dklt~ - less than\n- dkne~ - not equal to\n- dknum~ - signal to float\n- dkrandom~ - abstraction simulating the output of the Max/MSP rand~ object.\n- dkrange~ - range mapping (audio rate)\n- dksin~ - signal-rate sine (input range 0-1)\n- dkzerox~ - detect zero crossings\n- dkzerox_tr~ - send bangs out for zero crossings\n\n## MATH (CONTROL)\n- dk0bltodec - binary list to base 10\n- dkdecto0bl - base 10 to binary list\n- dk2dto1d - 2d (x y) to 1d coords (successive rows of x)\n- dk2pi - value of two times pi\n- dkaccum - running sum\n- dkbpmtoms - bpm to ms\n- dkdecrease - detect decreases \n- dkdrunk - a vanilla version of drunk\n- dkdrunk2 - drunk with floats\n- dkeqtemp - degree to equal temperament in Hz (EDO)\n- dkeqtemp_scl - specify custom scales for use with dkeqtemp (EDO scales)\n- dkexp_r - reciprocal exponential\n- dkfloor - floor float input\n- dkfround - round float\n- dkfdec - get decimal part of float\n- dkfdectol - pass float if within decimal tolerance of int\n- dkfreqtoms - frequency (Hz) to period in ms\n- dkhztorad - linear freq (Hz) to angular freq (rad/s)\n- dkincrease - detect increases\n- dkmstobpm - ms to beats per minute\n- dkmstosamp - ms to samples\n- dknearest - floor to the nearest grain\n- dknearest - round to the nearest grain\n- dknearpow2 - rounds input to a power of 2\n- dkrandi - random int within a given range\n- dkrange - range mapping (control rate)\n- dkrdiv - vanilla reverse division\n- dkround - rounds floats to nearest ints\n- dkpeakenv - peak envelope for float input stream\n- dkpi - value of pi\n- dkpow - vanilla reverse power\n- dkrrand - random number in a given range\n- dkrsub - vanilla reverse subtraction\n- dkrunavg - running average\n- dkrunmax - running maximum\n- dkrunmin - running minimum\n- dkrunrms - running rms\n- dksamptoms - samples to ms\n- dkselsort - selection sort on a list of floats\n- dkunit2ms - ms calculator\n- dkunique - flag input as unique (or not)\n- dkvavg - vanilla float averager\n- dkvrgauss - vanilla random number generator with gaussian distribution (i think) using the Marsaglia polar method\n- dkwrap - wrap with argument (like zexy's wrap)\n\n## MODULATION\n- dksfm~ - simple/signal-inlet (for mod idx) frequency modulation synthesis\n\n## MUX\n- dkvmux - dynamically patched version of input multiplexing\n- dkvmux2/3/4/5/6/7/8 - vanilla multiplexer (control)\n\n## OSC\n- dkcurvesaw~ - sawtooth oscllator with curvature\n- dkoscdetune2~ - osc~ + detuned osc~\n- dkoscdetune3~ - osc~ + 2 detuned osc~s\n- dktaboscdetune2~ - tabosc4~ + detuned tabosc4~\n- dktaboscdetune3~ - tabosc4~ + 2 detuned tabosc4~s\n- dkvanssimp~ - triggered single-sample impulse\n- dksaw~ - saw oscillator\n- dksq~ - pulse-wave oscillator\n- dktri~ - triangle oscillator\n\n## REVERB\n- dkschroeder1~ - a schroeder reverb (1-in,4-out)\n- dkschroeder2~ - satrev chowning schroeder reverb (1-in, 2-out)\n\n## PANNING\n- dkcomppan~ - -4.5 dB panner (compromise panner)\n- dkcospan~ - cosine-based equal-power panner\n- dklinpan~ - linear panner\n- dkstbal~ - stereo-to-stereo panning (aka balance) \n\n## PULSAR SYNTHESIS\n- dkpulsar~ - pulsar synthesis (unwindowed)\n- dkpulsar-hann~ - pulsar synthesis with hann window\n\n## STRUCTURE\n- pdkst-init - clear scalars and init iterating over given element\n- pdkst-nth - get nth scalar of a structure \n- pdkst-textdefine - emulate [text define] methods for text struct member\n\n## SYNC\n- dkanysync - sync anything\n- dkbangsync - bang syncer\n- dkfloatsync - sync floats\n- dksymsync - sync symbols\n- dkptrsync - sync pointers\n\n## TEXT\n-dktextlooper - looping sequencer built around [text sequence -g]\n- pdktext-getval - get value from associated key (treating text like a hash table)\n\n## WINDOWING\n- dkhamm~ - generates hamming window according to input 0 to 1. \n- dkhann~ - generates hann window according to input 0 to 1\n- dkhannmaker - constructs hann window. args are array name where window is stored, window size, and overlap.\n- dkhannnorm~ - normalizes an incoming signal according to hann window (usu. after an ifft~). args are window size and overlap.\n- dktukeymaker - tukey window constructor. ideal for grain envelopes. \n\n## MISC\n- dklogidy - abstraction to deal with default settings of logidy umi3\n- dkdrumtrig~ - detecting triggers from a contact-mic and mapping to usable parameters\n\n## NOT-VANILLA ABSTRACTIONS\n- dkamixer~ - abstraction over ggee/shell to set volume with amixer (Linux only)\n- dkls - grab contents of directory as list (requires ggee/shell)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekxkwan%2Fpdkvabs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderekxkwan%2Fpdkvabs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekxkwan%2Fpdkvabs/lists"}