• svanya

    Stemming from a different project, I've made a MobMuPlat (MMP) NUMPAD "template" so that numbers may be entered directy (and more Precisely) into MMP instead of selected from siders, knobs, or other controls (which :-) apparently pd can do by just clicking a number field, typing in the number, and pressing ENTER (Thanks, again, @LiamG)



    Integers and Decimals from 1e-8 to 999999;
    m+,m-,rcl: for storing (m+), removing stored number (m-) and recalling numbers (rcl)
    cl:clear (but no backspace)


    To test: in the MMP editor open the "mmp_numpad_template.mmp" file and experiment. (note: it will not start entering decimals until after you click "." and Then the next number). It is associated to the "abs_mmp_numpad_test.pd" which has the template embedded as an abstraction in it. It also has a slider on the second page, to test routing the ENTERed number to different "locations".

    To implement:

    First embed "abs_mmp_numpad_template.pd" as an abstraction in your MMP's .pd file. It has one outlet: the current value after the NUMPAD's ENTer is clicked and will receive all control signals coming from the NUMPAD.

    Next, with a text-editor, open the "numpad-codeblock.jsn" file (or copy it from the code block below);

    VERY IMPORTANT!!!: make a backup copy of your own mmp file before doing this.

    In the text-editor, open "as-text" your .mmp file (or to experiment, the "pasteJSNtest.mmp" file which I have provided);

    Past the numpad_template.jsn codeblock (from the file or the codeblock below), in between the mmp 'gui' brackets, as shown here:


    Once you have pasted it in, save your file, and open it in the MMP Editor.

    The control and associated labels will be on the first page. You can move them, resize, etc. as you wish. And no matter where you put it (given its precise field names the entered value will get sent to the "abs_mmp_numpad_template" abstraction.

    Sounds like a lot of work. But once you get the hang of it. I think it's well worth the effort: you will be able to have exact control over Any mmp value.


    {"mode":1,"highlightColor":[1.0,0.0,0.0,1.0],"borderThickness":3,"address":"/numgrid/0","color":[1.0,1.0,1.0,1.0],"dim":[4,4],"class":"MMPGrid","cellPadding":2,"frame":[10.0,115.0,300.0,360.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"cl","textFont":"","class":"MMPLabel","frame":[175.0,405.0,50.0,45.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":".","textFont":"","class":"MMPLabel","frame":[35.0,400.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"ent","textFont":"","class":"MMPLabel","frame":[235.0,405.0,75.0,45.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"m-","textFont":"","class":"MMPLabel","frame":[245.0,225.0,60.0,45.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"m+","textFont":"","class":"MMPLabel","frame":[235.0,315.0,75.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"1","textFont":"","class":"MMPLabel","frame":[30.0,315.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"2","textFont":"","class":"MMPLabel","frame":[105.0,315.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"3","textFont":"","class":"MMPLabel","frame":[180.0,315.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"4","textFont":"","class":"MMPLabel","frame":[30.0,230.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"5","textFont":"","class":"MMPLabel","frame":[110.0,230.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"6","textFont":"","class":"MMPLabel","frame":[185.0,230.0,40.0,45.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"7","textFont":"","class":"MMPLabel","frame":[30.0,145.0,40.0,40.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"9","textFont":"","class":"MMPLabel","frame":[185.0,140.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myPanel","color":[0.6,0.6,0.6,1.0],"passTouches":false,"class":"MMPPanel","frame":[10.0,55.0,300.0,60.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/numlabel/0","textSize":42,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":":256 ","textFont":"","class":"MMPLabel","frame":[15.0,60.0,290.0,55.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"0","textFont":"","class":"MMPLabel","frame":[105.0,405.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"8","textFont":"","class":"MMPLabel","frame":[105.0,140.0,40.0,50.0]},{"highlightColor":[1.0,0.0,0.0,1.0],"address":"/myLabel","textSize":36,"color":[1.0,1.0,1.0,1.0],"androidFont":"Roboto-Regular","textFontFamily":"Default","text":"rc","textFont":"","class":"MMPLabel","frame":[250.0,135.0,50.0,50.0]}

    Hope this may be of use to you.

    Enjoy. And as a side comment: MMP is by far the fastest development environment I have ever worked in and is excellent as a ProtoTyper (tho admittedly my experience is limited). It works GREAT as an OSC-Controller, too. Daniel has done us all a great service by building it. Additionally kudos, to the PdDroidParty and libPD developers upon whose backbone it is built.

    Many Happy Returns,

    posted in libpd / webpd read more
  • svanya



    Maybe this will prove useful to someone.

    Viewing Numbers, esp. the rationals, as singularities has never appealed to me.
    Have always felt they are way more like toroids than singularities hence the abs.

    Sort of like "fuzzy" comparisons, i.e. is a point,X, with center,x, and radius, Ri, anywhere or completely within the range of point,Y, with center, y, and radius Rj.

    Ciao. Peace and Music thru us all,

    posted in abstract~ read more
  • svanya


    By adding a tonic (set via the tonic number field);
    the patch is then able to pick up a third-Z parameter;
    by comparing the current (estimated) pitch to the tonic;
    and taking the displacement as the third parameter either above or below the tonic.;
    The mid-z slider adds its value (0-1) to the Diff% so a range resulting closer to what you want is achieved;
    Again the r-z slider controls the [line] ramp from 10-1000ms.;
    the knob control has been added to show the changes;
    in the parameters (x, y, and the value of the knob as z).;
    Also, scaling the bands again comes in;
    very useful to scale the sensitivity and;
    breadth of the adjusted values

    also I changed the name of the patch to "control_as_you_go"


    posted in abstract~ read more
  • svanya


    I added [line]'s to control the flow of numbers internally (on the two right outlets, the left two are still raw).

    I figured as much, the patch is very well suited to MIDI (because it sends so much clearer and distinctive (i.e, close to a pitch) signals than a mic and it has a very delineated on/off).

    So in this zip the "elven_cloak~-help_v2-notein+reverb+delayfb" includes a reverb on the left [dac~] channel and a delayfb on the right [dac~] (with both receiving the pitch(x) and env(y) values) to their brightness/roomsize + delay/feedback respectively)..

    It has a very simple synth as the backbone (as a subpatch) but very distinctly shows the variance in the sound quality as you move up and down the keyboard and play softer or harder.

    For greater control, adjust the start(p) value to be a little below the minimum pitch you will play then the width (Width*16) to cover the range of pitches you will play up to your maximum pitch value.


    Ciao for now.


    posted in abstract~ read more
  • svanya

    I wondered what this would sound like if i sent a piece of music thru it.

    You'll recognize the piece.

    As it played i fiddled with some of the settings, i.e. starting pitch, width, and metro, to shift it around on the delay and or feedback scales.

    Tho perhaps a bit grotesque, very obviously, Wild.



    posted in abstract~ read more
  • svanya


    This was just too funny to pass up!

    note: I trimmed back on the example (because the one I had envisioned is not completed yet, or at least in good enough state to share) and am only including the DIY2 "mono_delayfb.pd" as am example. But really you can apply it where ever you have two available parameter slots and want your hi and lo pitches and amplitudes to control high and low values.

    Essentially this is a re-purposing of an older abs I shared called 16-BandVU Meter.

    However, in looking at it closer, I realized I could map the value of the max env~ to its band location on the meter, i.e. its band, to an x-coordinate and its amplitude, i.e. env~ to a y-value. So which ever "pitch" is highest dictates the x, and the value of that env~ dictates the y.

    The result, for example, is if you play low and soft the two values/params are both low, and if you play hi and loud both parameter values are high.

    My thinking is, which is why I chose delayfb (because those two parameters both have such dramatic effect) and called it "elven_cloak", one can map their playing onto their effects or vice-versa.

    It has one inlet which takes a signal and passes out two outlets which are percent adjusted x,y values, i.e, between 0 and 1.

    note: you Must include the "band_env~_sv.pd" abstraction in the same folder as the cloak.

    Tally-Ho! And best wishes thru all of us.


    The parameters on the controller are:

    activate: turns the meter on
    all (reset all): ie. 16 bands of 8 pitches per
    start(p): the starting pitch, i.e. 0-127, to monitor
    width(p): the width in pitch of the band spread across 16 slots
    in|out_of_bnds: a message telling you if the combination of start and width are in bounds in other words all between 0 and 127.
    metro: how frequently (100ms*x) you want to calculate the xy-values.

    posted in abstract~ read more
  • svanya

    Audio Ideas (AI) Collection (placeholder) currently only links

    per @LiamG 's kind suggestion I have begun the process of consolidating my abs and patches, etc. into a single location/zip file or for possible upload to github.

    Just to get the ball/me rolling and scope the work I got the links for my shares into a single location to later be consolidated into the single AI Collection.

    For now at least, please, bare with me (and the links below) as ideas I am more passionate about currently are demanding my attention. (Which :-) funnily enough will probably also be included in the set, where ever they are shared.)

    Thanks, for your patience and all you do for the Pure Data Family.

































    Off topic


    posted in patch~ read more
  • svanya


    That's one of my fav things about pd: always proving the maximum, "The more you know, the more you realize how much more you have to learn".

    Didn't know that but VERY glad to learn it and that you would be so generous in your time to educate me. Thanks, @LiamG for yet again teaching me something new.

    As a footnote:

    The patch was actually designed most specifically to work out the logic so that it might be done on MobMuPlat. Which as far as I know (see "another opportunity for 'DOH!' for reference :-)) does not allow for direct entry of values.

    Which I implemented there (within less than an hour) and for which it works splendidly (just send the paths to the pd receives).

    So :-)...

    Glad I learned how to do it in pd; can see why no one thought it interesting; and glad to get it mapped out into Mobmuplat.

    (Using it to empower someone to enter broader ranges of seeds for the Collatz equation for translation into audio which sliders, knobs, etc. do not do very well).

    Thanks, again, for the lesson Liam.

    So very glad we are all on this same wonderful team together.

    And by ALL means please do keep the lessons coming.

    More than anything else: I am one eager puppy to learn all things pd.

    Ciao for now.

    Peace, Love, and Music thru us all,

    posted in abstract~ read more
  • svanya



    Really I just wanted a control which I could enter numbers.

    As the way things go, things sort got outta hand. Built an entire numpad controller with /,*,+, and -, plus BACKSPACE and CLEAR(del) to emulate a standard numpad.

    Reason being (besides needing it for another project), it has always sort of irked me that I could not just type in numbers. I have seen only maybe one or two controls which allowed direct entry of numbers but they weren't exactly what I had in mind.

    The abs has no inlets (they may be added in the future) and the NUMLOCK does not (yet ;-) do anything.

    It has three outlets which send (and it can be used just for this very well) two outlets which operate on an x-y basis.

    Enter a number for X then click enter, and it sends it to the left most outlet and immediately switches to y. (The currently selected variable is highlighted in red).

    Enter another number and click enter again, and it sends that number to the middle outlet.

    Then click a function and it is performed immediately f(x,y) and sent to the right most outlet.

    I suppose if you wanted just to use it for entering x's and y's it would work really well for that too.

    As to how its done, the digits are stored in an array and concatenated and passed back and forth between a few global variable, i.e. values. I have tried to keep the patch pretty clean tho the logic is a Bit convoluted. :-)

    May you find a use for it.

    Would love feedback on how to apply a NUMLOCK concept to it as well as the inlets (tho I don't think there really is too much use for that. More important would be taking out the globals and making it a true abs

    Ciao for now.

    Happy PD-ing and keep sharing your love of music,

    afterthought: since it's using [v]'s and they are global as well as a named array it's really not an abstraction. But it's been my feeling not to post on the patch section unless my work is of a much broader nature. Thanks. Ciao for now. -s

    posted in abstract~ read more
  • svanya

    abs_delay_fbw "LIFO(Last-In-First-Out) Delay



    This is an idea I have been thinking about for a while and only in the last day or two figured out how to make at least an approximation of what my brain is "telling me".

    The idea is really pretty simple, but enormously expandable. And I honestly: I think it's best suited to [clone]. But I don't know enough about that/care to learn enough about that, to implement it that way. So this is just a grunt&chunk version:

    10 delwrites each set at incrementally longer lengths, starting at 1000 and incrementing by 100's up to 2000, i.e. 1000, 1100, 1200, etc.

    Then and here is were the cool part is

    10 vds but scaled in reverse in-out order. So the shortest delwrite has the longest vd.

    The effect is the last most thing you play is the first most thing you hear. (note: if this poses a problem while your performing, using your live signal to monitor will take care of that).

    It's then scaled by an (admittedly arbitrarily named) "shift" factor which scales the vd line transitions more or less as it is changed. (For viewing purposes, strictly informational and to better guide your settings, the delays times are written to 10 number boxes at the bottom.)

    10 feedback controls have also been included because (I think they are way more important than gains which could also have been included, but just seemed to muddy the water too much) so whether you want the "first" or "last" sound to hold or not is available to you.

    There are sweet spots, and given how the calculation is done in some cases individual lines will drop out entirely (which actually I think is pretty cool and a nice bit of serendipity). You'll recognize them because there delay times are <0, tho the actual processing of them has been circumvented with [moses 0]'s.

    Enjoy. Hope you find it interesting.

    (Next week some time, I intend to give it a run for its money, but with my kids now/this weekend, so :-) studio time is out.)

    Peace, Love, and Music thru us all,

    p.s. this one I will definitely include in the archive/zip/github, but getting it down was more spiritual paramount that that collection.

    note: I am aware it has a lot in common and may even be do-able with a spectral delay :---)
    Ciao for now.

    posted in abstract~ read more

Internal error.

Oops! Looks like something went wrong!