• svanya

    As you click it the color and value change.

    For example:
    I am using it to control rms, where rms= the b8's value/states

    posted in abstract~ read more
  • svanya

    wavebypartial.pd: Waveshaping intermediate waves between the four basic waveshapes



    So reading/selecting across are the partials for that waveshape, ex. sine's are all "0", etc.

    The bangs just after the waveshape-name select all the partials for that waveshape, ex. clicking sine's bang makes the wavetable a sine curve.

    The sliders have been included in case you want to manually shape the wave.

    note: best to change to Log Level 1 (errors) as it does throw a lot of the pd-rounding messages.

    I had been wondering about this for a while..."How do you get at the between-shapes?".

    May it serve of some use to you.


    p.s. really just killing time until I have to get back to my much more complicated current project.

    posted in abstract~ read more
  • svanya

    Sample output with "test" playing and me just "tweaking the knobs".


    posted in patch~ read more
  • svanya

    Even better...
    To do recursion is:

    [makefilename %s/**/*/*.wav]

    posted in technical issues read more
  • svanya

    I figured it out. You just make a requirement as to how deep the files are, ex. ./samples/maker/kit/*.wav.
    Then you do:
    Thank you, for your input.

    posted in technical issues read more
  • svanya

    Thanks for the tip about Posix

    Having trouble figuring this out though: Does POSIX support the following by default: grep, find, readlink?

    Thanks, in advance. Much appreciated.

    posted in technical issues read more
  • svanya


    gensyn~: generic, multi-modulator synthesizer abstraction

    REQUIRES: zexy

    what makes this synthesizer abstraction different is:

    In addition to the common access to adsr(filter and amp) and vcf~(cutoff and frequency)

    It also includes

    • 5 available modulation types for two wavetables
      • additive and frequency, phase, pulse, and amplitude modulation
    • 8 possible types for each wavetable
      • sine, square, triangle, saw, random, duty, pink noise, noise
        • the random is by a settable number of partials
        • the duty is a square wave with settable dutycycle
    • access to two unique parameters per modulation type

    Note: The -help file has a substantial number of examples. Especially, interesting are those changing modulation type, wavetype, parameters (per mod), partials, and dutycycle on a per-voice basis by both formula and over time.

    I hope you enjoy it, get some use out of it, or it just makes you smile or giggle.


    p.s. no picture necessary. And personally, I find this Very funny. -Peace.

    posted in abstract~ read more
  • svanya



    waves: sin, square, triangle, saw, random, duty-square, pink noise (a 128 partial random sinesum) and noise (a 2051 partial sinesum)

    the outlet sets a list for the random and duty sinesums (for saving).

    credit for the dutycycle funtion goes to: @seb-harmonik.ar

    posted in abstract~ read more
  • svanya

    Cool! Found it. (5.reference). I will see if that helps. And post back here.

    posted in technical issues read more
  • svanya


    After trying a lot of different things (in order to get the output to load a [text]), I discovered if I slow down the output it works fine.

    I hope this may help you, if you may ever need to do such a thing.


    FAILS: ls -1 ~/pd-externals/tof/*
    WORKS: find ~/pd-externals/tof -exec sleep 0.001 ; -print

    posted in technical issues read more
  • svanya

    I feel like I should say...

    I am applying this design concept to my current project. It's a step (drum) sequencer to which this concept applies nicely.

    When I share it, one large part of the readme will talk about what I learned in trying this out.

    posted in tutorials read more
  • svanya

    Just something funny about this, since this really only applies to grandchildren....

    I can't count how many times I have been at my parent's place over Christmas with my kids, my brother, and his, that I have heard my parents tell the children "Take a number!".


    Grandchildren (by nature?) seem to lose their identity.

    posted in tutorials read more
  • svanya

    Two benefits, to designing this way, I thought of:

    1. when debugging, how significantly it would cut down the count when doing a Find for your abstractions


    1. when analyzing your code for precedence, the "reader"/student would no longer need to drill down to the individual level, but could stop at the parent.

    posted in tutorials read more
  • svanya

    What I mean is like this:


    Which I think, for my sake at least, adds to greater transparency.

    posted in tutorials read more
  • svanya

    Thanks for the pointers.

    I am, however, way less excited about subpatches and way more about abstractions.

    That they can be created by(symbol) creation arguments within the parent patch. That, I never knew.

    So given, patchN.pd, bypass.pd, adsr.pd, and patchN-help.pd (or grandparent), and object [patchN bypass adsr] inside a -help, objects [bypass] and [adsr] may be generated by only adding the objects [$1] and [$2] inside patchN.pd.

    Subpatches aside, that alone for me is a huge game-changer.

    I can organize All my abstractions by name when I declare an object, ex. [patchN abs1 abs2 abs3] and then just write those abs as [$1] [$2] [$3].

    Which greatly improves the transparency for anyone wanting to digest my code.

    When they see my abstraction declaration, they will know right up front what abstractions I am going to use inside it.

    posted in tutorials read more
  • svanya

    Yes. My thinking was correct. But you said it much better:
    Subpatches can take creation arguments as they "take the $1 from the main patch where your subpatch is located".

    As to always able to learn...
    One of my core beliefs is "No matter what field or great your expertise that is always more to be learned.".

    Though I agree, while pd documentation is excellent in many ways, it also falls short in many others (ex. not writing the controls into the control properties, across the board).

    posted in tutorials read more
  • svanya

    I've been programming pd for over five years and never knew this was possible.

    Mark it up as "There is always something new to learn".



    • Subpatches CAN have creation arguments and it is the same one as its parent
    • if the creation argument is a symbol and is the name of a .pd in the parent's folder, then that creation argument by itself IS that abstraction
    • the symbol creation argument by itself will be represented with its gui
    • creation arguments with relative paths ARE represented

    The implication being...rather than throwing abstractions around in your patch (by name), just include them as creation arguments and use the creation argument instead of the abstraction name.

    "Write once..." and less(!) right?

    Peace through sharing,

    p.s. I am 100% certain there are a lot of people who already knew this. Then, again,...
    you never know when you're going to learn something. :-)

    posted in tutorials read more
  • svanya

    I have discovered it has some issues re midi.

    I am in the process of fixing them.

    posted in patch~ read more
  • svanya

    Glad you like it.
    Thanks, for letting me know.
    p.s. one of the main goals was to make it really easy to use, but still make lots of cool sounds.

    posted in patch~ read more
  • svanya

    JASS, Just Another Synth...Sort-of, codename: Gemini



    JASS is a clone-based, three wavetable, 16 voice polyphonic, Dual-channel synth.


    • The initial, two wavetables combined in 1 of 5 possible ways per channel and then adding those two channels. Example: additive+frequency modulation, phase+pulse-modulation, pulse-modulation+amplitude modulation, fm+fm, etc
    • The third wavetable is a ring modulator, embedded inside each mod type
    • 8 wave types, including a random with a settable number of partials and a square with a settable dutycycle
    • A vcf~ filter embedded inside each modulation type
    • The attack-decay-release, cutoff, and resonance ranges settable so they immediately and globally recalculate all relevant values
    • Four parameters /mod type: p1,p2, cutoff, and resonance
    • State-saving, at both the global level (wavetables, env, etc.), as well as, multiple "substates" of for-each-mod-type settings.
    • Distortion, reverb
    • Midiin, paying special attention to the use of 8-knob, usb, midi controllers (see below for details)
    • zexy-limiters, for each channel, after the distortion, and just before dac~


    Requires: zexy


    • O: Open preset. "default.txt" is loaded by...default
    • S: Save preset (all values incl. the multiple substates) (Note: I have Not included any presets, besides the default with 5 substates.)
    • SA: Save as
    • TEST: A sample player
    • symbol: The filename of the currently loaded preset
    • CL: Clear, sets all but a few values to 0
    • U: Undo CL
    • distortion,reverb,MASTER: operate on the total out, just before the limiter.
    • MIDI (Each selection corresponds to a pgmin, 123,124,125,126,127, respectively, see below for more information)
      • X: Default midi config, cc[1,7,8-64] available
      • M: Modulators;cc[10-17] routed to ch1&ch2: p1,p2,cutoff,q controls
      • E: Envelopes; cc[10-17] routed to filter- and amp-env controls
      • R: Ranges; cc[10-17] routed to adr-min/max,cut-off min/max, resonance min/max, distortion, and reverb
      • O: Other; cc[10-17] routed to rngmod controls, 3 wavetypes, and crossfade
      • symbol: you may enter 8 cc#'s here to replace the default [10-17] from above to suit your midi-controller's knob configuration; these settings are saved to file upon entry
    • vu: for total out to dac~


    • /wavetable
      • graph: of the chosen wavetype
      • part: partials, # of partials to use for the "rn" wavetype; the resulting, random sinesum is saved with the preset
      • duty: dutycycle for the "du" wavetype
      • type: sin | square | triangle | saw | random | duty | pink (pink-noise: a random sinesum with 128 partials, it is not saved with the preset) | noise (a random sinesum with 2051 partials, also not saved)
    • filter-env: (self-explanatory)
    • amp-env: (self-explanatory)
    • rngmod: self-explanatory, except "sign" is to the modulated signal just before going into the vcf~
    • adr-range: min,max[0-10000]; changing these values immediately recalculates all values for the filter- and amp-env's scaled to the new range
    • R: randomizes all for-all-mod-types values, but excludes wavetype "noise"; rem: you must S or SA the preset to save the results
    • U: Undoes R


    • mod-type-1: (In all cases, wavetable1 is the carrier and wavetable2 is the modulator); additive | frequency | phase | pulse | amplitude modulation
    • mod-type-2: Same as above; mod-type-2 May be the same type as mod-type-1
    • crossfade: Between ch1 and ch2
    • detune: Applied to the midi pitch going into ch2
    • for-each-clone-type controls:
      • p1,p2: (self-explanatory)
      • cutoff, resonance: (self-explanatory)
    • navigation: Cycles through the saved substates of for-each-mod-type settings (note: they are lines on the end of a [text])
    • CP: Copy the current settings, ie. add a line to the end of the [text] identical to the current substate
    • -: Delete the current substate
    • R: Randomize all (but only a few) substate settings
    • U: Undo R
    • cut-rng: min,max[0-20000] As adr-range above, this immediately recalculates all cutoff values
    • res-rng: min,max[0-100], same as previously but for q
    • pbend: cc,rng: the pitchwheel may be assigned to a control by setting this to a value >7 (see midi table below for possibilities); rng is in midi pitches (+/- the value you enter)
    • mod-cc: the mod-wheel may be assigned to a control [7..64] by setting this value


    name --- Description
    sysex not supported
    pgmin 123,124,125,126,127; They set midi mode
    notein 0-127
    bendin pbend-cc=7>pitchbend; otherwise to the cc# from below
    touch not supported
    polytouch not supported

    cc - basic (for all midi-configs)

    # name --- desciption
    1 mod-wheel (assignable)
    7 volume Master

    cc - "X" mode/pgmin=123

    cc --- parameter
    8 wavetype1
    9 partials 1
    10 duty 1
    11 wavetype2
    12 partials 2
    13 duty 2
    14 wavetype3
    15 partials 3
    16 duty 3
    17 filter-att
    18 filter-dec
    19 filter-sus
    20 filter-rel
    21 amp-att
    22 amp-dec
    23 amp-sus
    24 amp-rel
    25 rngmod-freq
    26 rngmod-sig
    27 rngmod-filt
    28 rngmod-amp
    29 distortion
    30 reverb
    31 master
    32 mod-type 1
    33 mod-type 2
    34 crossfade
    35 detune
    36 p1-1
    37 p2-1
    38 cutoff-1
    39 q-1
    40 p1-2
    41 p2-2
    42 cutoff-2
    43 q-2
    44 p1-3
    45 p2-3
    46 cutoff-3
    47 q-3
    48 p1-4
    49 p2-4
    50 cutoff-4
    51 q-4
    52 p1-5
    53 p2-5
    54 cutoff-5
    55 q-5
    56 pbend-cc
    57 pbend-rng
    58 mod-cc
    59 adr-rng-min
    60 adr-rng-max
    61 cut-rng-min
    62 cut-rng-max
    63 res-rng-min
    64 res-rng-max

    cc - Modes M, E, R, O

    Jass is designed so that single knobs may be used for multiple purposes without reentering the previous value when you turn the knob, esp. as it pertains to, 8-knob controllers.

    Thus, for instance, when in Mode M(pgm=124) your cc send the signals as listed below. When you switch modes, that knob will then change the values for That mode.

    In order to do this, you must turn the knob until it hits the previously stored value for that mode-knob.

    After hitting that previous value, it will begin to change the current value.

    cc - Modes M, E, R, O assignments

    Where [10..17] may be the midi cc #'s you enter in the MIDI symbol field (as mentioned above) aligned to your particular midi controller.

    cc# --- M/pgm=124 --- E/pgm=125 --- R/pgm=126 --- O/pgm=127
    10 ch1:p1 filter-env:att adr-rng-min rngmod:freq
    11 ch1:p2 filter-env:dec adr-rng-max rngmod:sig
    12 ch1:cutoff filter-env:sus cut-rng-min rngmod:filter
    13 ch1:q filter-env:re cut-rng-max rngmod:amp
    14 ch2:p1 amp-env:att res-rng-min wavetype1
    15 ch2:p2 amp-env:dec res-rng-max wavetype2
    16 ch2:cutoff amp-env:sus distortion wavetype3
    17 ch2:q amp-env:rel reverb crossfade

    In closing

    If you have anywhere close to as much fun (using, experimenting with, trying out, etc.) this patch, as I had making it, I will consider it a success.

    For while an arduous learning curve (the first synth I ever built), it has been an Enormous pleasure to listen to as I worked on it. Getting better and better sounding at each pass.

    Rather, than say to much, I will say this:

    Enjoy. May it bring a smile to your face.

    Peace through love of creating and sharing.


    posted in patch~ read more
Internal error.

Oops! Looks like something went wrong!