• 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
  • svanya

    @whale-av Thank you, for letting me know. I appreciate it.

    Updated it a bit below and will have to look up "magic glass", not familiar with it.


    This mini versions has;

    a smaller name so easier to write in: mvu;
    numbers [0..10,+] indicating level(:+ for over rms=1) and;
    is much smaller (25x25 px but still colorized), so looks more like an actual pointer.


    posted in abstract~ read more
  • svanya


    I was very curious if this could be done. And honestly, believe colorized connectors (showing env~) should be a feature, and, if not that then, a plugin cursor that lights up according to env, or possibly even value. (But, alas, alack, making plugins is not (yet) in my mission statement).

    So, for now, this points in that direction.

    Enjoy. May it serve you well.

    Peace through Pure Data.

    A movable, autoconnnecting vu meter;
    esp. for debugging code;
    requires: iemguts, cyclone, that dsp be on, and that the [namecanvas watchmvu] object be added to the patch that you want to investigate.;
    Once setup and the abs is added, switch to Edit Mode, and left click and drag the vu meter over any audio objects and let it rest over the top-left-most corner of the object..;
    The meter will autoconnect to that object's first outlet~. If you move it away (>25px) it will disconnect.;

    I.e. allowing you to track and investigate the audio flow~ within your patch.

    posted in abstract~ read more
  • svanya

    How to connect multiple outlets to multiple inlets, etc.

    (I saw someone do this on a video so looked it up.

    The info was originally posted on the newsgroup at:
    [link Intelligent Patching](link https://lists.puredata.info/pipermail/pd-list/2018-06/122789.html) by IOhannes m zmoelnig .)

    These do work. Just sort of tricky to get the steps right.


    Intelligent Patching

    new connection features:

    • select any two objects, and press <Ctrl>+<k> (or <Cmd>+<k> if you insist), to connect them (trivially, so just the first inlet)

    • to connect a (signal) outlet to multiple arbitrary inlets, you can now press <Shift> while hovering the yet-unconnected cord over an inlet

    • to add more connections between two already connected object, select the connection and pressl <Ctrl>+<d> to extend the connections to the right ("duplicate")

    • to fully connect two objects, select both objects before connecting them.

    • to connect multiple objects to a single inlet, select all the source objects (but not the sink object) before connecting them.

    • (the other way round works as well, but will give you fan-outs!!!)

    • to connect multiple objects to a multi-inlet object, select all the source objects and the sink object before connecting the leftmost source to the leftmost inlet.

    • to connect a multi-outlet object to multiple objects, select all the source object and all the sink objects before connecting the leftmost outlet to the leftmost sink.

    :end quote

    May the info/techniques help to expedite yr work flow.

    Peace through sharing.

    posted in tutorials read more
  • svanya

    Thank you.
    Very clean.


    posted in abstract~ read more
  • svanya

    Had a difficult morning and wanted to do something useful with those feelings.



    Note: It will throw errors if the inlet is not sent a float.

    May you find it useful.

    Peace through helping.

    posted in abstract~ read more
  • svanya

    Thank you for the help. Got it working. Much appreciated.
    Thanks, again.
    Stay safe
    p.s. the patch/generator you included is Really cool..

    posted in technical issues read more
  • svanya

    I would really appreciate it if I could get those...if even possible.

    Fourier/sinesum is way beyond my current capacity to comprehend/make on my own.


    Peace through sharing.

    posted in technical issues read more
  • svanya

    abs-fetch-slider: using a value (slider) multiple ways based on creation argument


    reuse a value by only changing the value;
    once the value matches the previously set value;
    for that index/creation argumet.;
    Getting a (hardware) knob to serve multiple functions;
    by only having it change its value once the previous value for that index is hit.;
    (See the help file for details, using two ctlin to set multiple values)
    I have found it very frustrating that when using hardware you can't use one knob for multiple purposes because the knob is literally always in the last state you left it.;
    one creation argument: the identifying index;
    two inlets: left: the incoming value and right the index;
    one outlet the value for that index

    When you change the index, just change the knob until the audio, image, value, etc., i.e. result starts changing.

    It will ONLY change once the previously set value for that index is hit..

    So it "saves state".

    Stay Safe.


    posted in abstract~ read more

Internal error.

Oops! Looks like something went wrong!