• svanya

    Doing something with the StampAlbum plugins and [initbang] is used throughout.

    Thanks, in advance.


    And big thanks goes out to @seed and @whale-av for getting me Very close to making my concept happen. Sorry, it's taken so long to thank y'll. -Peace and thanks, again. Hope y'll like what I've done with your insights.

    note: this same concept/patch also includes the diy2 effects. But in them there is no initbang.

    posted in technical issues read more
  • svanya

    On a different but very logical thread,...a different issue I need/want to find out.

    If I find this out, it will save me a LOT of effort, instead of having to go another route.

    Note: it can be via a created object. But if I have to create (in this case, an abstraction) on say loadbang, how do I do that? In other words, how do I create an abstraction (not a subpatch) on loadbang?

    Thanks, in advance.

    Peace, love, and music thru us all,

    posted in technical issues read more
  • svanya

    Working on a pd/WebPD online gui/IDE with hyper-cubic visualizer and it would be great if I could access this info within the confines of WebPD (spec. to help "move" the cubes thru space).

    Which as a footnote: currently I have approx. 100+ effects gathered together which one day I will ask more directly if folks can help me WebPd-erize them. (My vision is very clear (90%-ish) on how to get that done, just working on the prototype now.)

    Really there don't seem to be but about a dozen or more abs that need converting...

    But will leave that for another day.

    Thanks for any help offered re: the above.

    Peace thru us all,

    posted in technical issues read more
  • svanya

    Version 0.1.1



    Added initial support for ancestors
    Moved tmp files to a subdirectory (./tmp) of the external and not /tmp
    Embedded the files from ./res as variables and (global) links so no longer contingent on read-write privileges
    Added functionality to determine if a default browser is available and open it accordingly
    Rerouted output to the internal ./output directory for saving and to minimize privilege issues
    Updated the logging feature to write to:/tmp/pd2tmap-{filebasename}-log.txt
    Generally cleaned up the code

    Thanks, for bringing most of the above to my attention @LiamG. Much appreciated.

    Ciao for now.

    Please, offer suggestions and bugs you find at will. Thanks.

    posted in extra~ read more
  • svanya


    Hi, Liam.

    The grep errors I understand, because I have not yet mastered traversing the directory tree and they can safely be ignored.

    As to the privileges, my suggestion is (and this had not occured to me, because Puppy (linux) runs everything as root) is change the permissions on all the files in /res to read-write.

    I had thought "defaultbrowser" was standard linux issue, but is apparently also unique to puppy.

    On the good side: All the files are output and processed/assembled at /tmp/pd2thoughtmap. So you can just open the html file from there (for the time being). Each file is named according to the following format: {pdfilename}.html.

    As a footnote. If you copy those files back into the /res folder you can keep them and just open them from there, (I am using this feature and adding it as a "/saves" folder in the versions I am working on now.)

    Good luck. And please do keep my posted. As I really want to get this one off the ground.


    posted in extra~ read more
  • svanya



    I was just bumbling around in some old "Art Stuff" bookmarks and came upon tree.js.

    Saw one "webgl_camera_cinematic.html" example and knew I had to wrap it up in good ole' fashion WebPD.


    1-unzip 3dsynth.zip in your WebServer folder or where ever you are hosting from
    2-start your server and point it to the "3dsynth/index.html"
    3-Click "Start" at the top of the window
    4-Mouse over the various cubes, they will highlight and play a note (using one of the webpd example synth patches).

    Each cube will play a different note (random, tho order could be had if one were to structure the way tree.js outputs its cubes) .

    Have fun.

    Ciao for now.

    Happy PD-ing.

    p.s. Have been having trouble with sound on Firefox so not sure if it works there (or others), but it definitely works in Chrome.

    posted in libpd / webpd read more
  • svanya

    Just playing around with this currently, as I work out and confirm it is processes ancestors correctly, but am curious about feedback...

    would Gantt be even better than usecase (will inlude both in the next versions) but am just interested to see how people prefer "visualizing" pd...

    the example patch (note, still need to confirm it is outputting correctly):


    The Usecase version of the example (with the gantt following)



    For better "seeing"

    posted in extra~ read more
  • svanya



    The work on the tmapper had me wondering about this...

    If you plug the ggee/shell object onto a patch (parent);
    then send it the following msg:

    grep -e "obj" "{pathtoParentPatch}" | grep -e "vsl" | grep -v "msg" | cut -d " " -f3

    you can add vsl (vsliders to the patch);

    so that (repeatedly if you add a metro) after you save the patch the vsl's value is set to its x-coordinate on the screen.

    To add a second vsl for the y-coord you would only need to add a second message with 'cut -d " " -f4' instead of 'cut -d " " -f3'.

    It's pretty neat. I think.

    Use-For: Currently Unknown.


    To use: just open the patch (vanilla); write into the main-msg the absolutepath to the parent patch, save it, and move the sliders then save the patch. The slider values will adjust accordingly.

    posted in abstract~ read more
  • svanya

    This might help...:


    Try the way you already have, but before doing so, cp this .desktop file into your /usr/share/applications folder.

    You might have to restart XServer and/or reboot and/or rebuild menus to make this work.

    Then do the "OpenWith" steps again. This might help Ubuntu "see" the script.

    Not sure, but you might have to set (in that right-click menu) the "Properties" option to run "Allow executing file as program" and possibly further "Run in terminal".

    If that does not work, the following pages (hope) might help:


    or (possibly with some manipulation) this:


    note: this technique of writing file-types to right-click events is a Major technique to know, from right-click convert MOV2MP4, jpg2png, etc. etc. I use it often, if not every few actions :-) It can also be set up to process directories, for instance, extracting the .wavs from all files.


    posted in extra~ read more
  • svanya


    Hi, Liam.

    Until we get the right-click feature worked out you can use the comman line version using the following format:

    /root/pd-externals/pd2thoughtmap/pd2thoughtmap absolutepathtothefile


    (you must include all four options if you use this version (will fix this later with "getopts")):

    /root/pd-externals/pd2thoughtmap/pd2thoughtmap absolutepathtothefile {0|1|2|3} heightinpixels widthinpixels

    where {0|1|2|3} refers to if you want to show 0=abstractions+subpatches, 1=abs only, 2=subs only, 3=all pd object types. If any other variable is sent in this slot, it defaults to abs+subs. And without these options it defaults to 1200x1200 pixels.

    Let me know if that helps, o.k. Because I also would like you to be able to use this :-).

    Ciao for now,

    posted in extra~ read more
  • svanya


    Just thinking aloud, Liam, but on my system (Puppy Linux, "Tahr"+"Rox File Manager"), the right click event on a file or directory triggers a submenu. In which case , the option to which I am refering, is actually not called SendTo (Sorry, 'bout that) but "Customize Menu..." and also "Open With..."+"Customise".

    Let me know if that Does or Does Not help, and I will get back with you.

    Recent explorations, are leading me to believe I might have also resolved the "parent/ancestors/predecessors" issue. (Planning on looking into that soon. So will probably post an update later today. Probably along with an update to resolve the empty values plantuml error message. But am thinking that actually might be pointing to a genuine logic error in my patch.)

    Thanks, for getting back with me.

    Glad you like it. Me: am pretty thrilled with the idea. Since now I will be able to actually see what in the hell is going on in these/my patches.

    Am hoping to get to the unresolved issue(s), or at least explore it/them, re: abstractions nested in subpatches and subpatches nested within subpatches today.

    Is proving to be One-Helluva-a-Mind-F'! If you pardon my french.

    But am 110% thorougly enjoying the Hell out of the ride. :-)


    Look forward to seeing if you get it worked out. Because, for me, this qualifies as "Harold and Maude" does: the sooner you see this the better.

    Also, has engenderd a new found and even deeper and wider expanse of love for pd-users in general (mappers of 5-d realities into 4-d spaces) and in particular, Miller, who made this whole darn thing. :-))

    posted in extra~ read more
  • svanya


    The project I have been working on, for over a year now, began to be more complex than I was able to visualize.

    As such, I was required to build something which would allow me to "see" it in its entirety.

    NOT the audio stream, passing from one object to another, nor the variables, nor sends.

    But rather, I needed to see my objects, i.e. subpatches and abstractions themselves. And how they were embedded within one another. I needed to see the "programmatic-flow" from one sub-object to the next.

    Which is how this came about. Examples:
    simple example

    practical example.png


    Miller's bi-recursive/toroidal loop function, i.e. going "../" up and/or going down "/x/y/z.pd" the embedded object-tree has (thus far :-) eluded me. So the patch for now only recurses down the tree.


    By setting up a "Send-To" link to ".pd" filetypes (within Linux), one is able to right-click and send any ".pd" file to the pd2thoughtmap shell script and after a brief time (depending on the complexity of the patch). the "defaultbrowser" will open with a plantuml (http:///www.plantuml.com) usecase diagram showing the "object-flow" from one nested object to the next (clipping branches which have no embedded abstractions).

    My hope has been the benefit I have/can gain from this tool, will also benefit the pd community and folks in being able to better "see" what they have done. And how to better organize their patches to suit their vision, the need of the project, or just plain Efficiency.


    1-Download the pd2thoughtmap.zip file: pd2thoughtmapv0.1.zip
    2-Unzip the file into the /root/pd-externals directory;
    3-Right-click on a ".pd" file and go to ~"Configure Send-To" or the equivalent for your linux system;
    4-Symlink from the /root/pd-externals/pd2thoughtmap/pd2thoughtmap shell script to the Send-To folder for ".pd" files
    5-Right-click on a .pd file and "Send-To pd2thoughtmap";
    6-After a pause, your default browser will open with the thoughtmap in a tab. (If your browser is already open it will just open another tab).
    note: file processing is managed in the /tmp/pd2thoughtmap folder so unloaded at shutdown.

    May this tool expedite your auditory "vision" and :-) make it easier for you to comprehend.

    Peace, Love, and Music through us all,


    It recurses down (the directory-tree finding descendants) just fine but will not go up (find predecessors/ancestors).

    It will not recurse abstractions if the filenames have more than one period (i.e. the one in the ".pd" suffix).

    It Excludes native pd abstractions/classes, ex. [adc~], etc., if they are 1) on the res/objectlist.txt, 2) a ".pd_linux" file in the pure data paths, i.e. "/root/pd-externals/", "/usr/lib/pd/extra/", or "/usr/lib/puredata/". or 3) manually entered into the "res/exclude.txt" file (in the case where one abstraction is repeated many times and you want to ignore it).

    If using the command line, there are four total parameters available (to be used all together): $1=the absolute path to the file, $2={0|1|2,3} to indicate if you want "abs and subpatches", "abs only", "subpatches only", or all pd object types, ex. messages, floatatoms, etc; and $3=the height of the image in pixels, and $4=the width of the image in pixels.

    If you want me to debug something, please, attach the outputted .png and the /tmp/pd2plantuml/log.txt to your post.

    If you find it outputting things that should have been excluded, you can try to eliminate them by adding the object name to the exclude.txt file. This inconsistency is derived from my complete knowledge of the pd file structure. Perhaps I will address it in the future.

    I need to work on the original patch for a while, so will update this patch over time and get back with you when I can.

    Tally-Ho! And Joy!

    posted in extra~ read more
  • svanya


    This came up because of one of the aggravating things about using arduino (and I can only assume other scenarios where signals are being sent continuously) is that when you switch 2 toggles, say going from 1-on/2-off to 1-off/2-on you pass thru the intermediate 1-off/2-off state which Will in fact send a signal and register a result.

    It got me thinking about what the two toggles are doing: Changing states.

    So if you break it down, there are 8 state changes for two buttons (which is exemplified in "abs_8-way_toggle-eventmodel_sv") with each change being its own state, exs. 0>1=1, 1>0=2, etc.

    One nice thing about that, is if you do it that way you can "trap" the pesky multiple state scenarios by adding a timer, which is evidenced in the "abs_14-way_toggle-eventmodel" so that if the change is made fast enough (i.e. below the threshold) it sends only 1 signal for 0>1>3=8, 1>0>2=12, etc. While if done slowly, 0>1=1, 1>3=4.

    Why I like this, is that it means for any two toggles, there actually 14 states of being not just 4.

    Hope you can find a use for it.

    I REALLY enjoyed thinking about this. And it bore much technical fruit/ideas besides just this patch as outgrowths from making it.

    Peace and goodwill toward all,

    posted in abstract~ read more
  • svanya


    I see that the 1.poly.synth generates random notes to send to the synth.

    So I thought I would be able to find online a repo of text files, with only notes, written out as pitch/velocity/duration combinations.

    But at first glance, I have not been able to find such a thing.

    Is it available? Do-able in some other fashion (linux) by outputting midi files to a stream or some such?

    Thanks. Would like to be able specifically to have my program "read" Ode to Joy in this fashion and then while it plays I manipulate its sound by adjusting the parameters on my patch.

    Thanks. Hope that helps make it clearer.

    posted in technical issues read more
  • svanya

    Am thinking I could send either a text file of note value combinations to my app in order to "play" music.

    see there is a midiparse object but not clear how to send it a file, .mid or otherwise.

    An example patch of say opening a file and sending its contents to a synth, ex. 1.ploy.synth, or even just makenote would be great.

    Thanks, in advance.

    Peace, love and music flowing thru us all,

    posted in technical issues read more
  • svanya


    Gotta let this go, so I can do some other things tonight so will share what i currently have...

    What I did was (and its way easier I think than using Gem) was write a (bash) shell script which reads a (linux-only I'm afraid) right-clicked file, i.e. a *.pd file, which you then send-to the script and it outputs a (plant)uml diagram of the objects within the patch.

    Actually it outputs 3 flowcharts: native objects, subpatches, and abstractions.

    I (currently) am only able to identify "natives" as what i scraped together from the Help folder so it's really quite bare and does not include all the aliases. (If you wanna have a go at amending that it is at: (when unzipped) "/root/pd-externals/pd2plantuml/res/objectlist.txt".)

    On the other hand, it could be amended relatively easily to also include all externals and filter similiarly for them.

    So if you unzip the file below in your ~/pd-externals folder and then point a right-click event to: pd2plantuml.sh you should then able to output the mindmap which opens in your "defaultbrowser".

    Couple of caveats: plantuml has a lot of reserved characters and the current version does not account for all but one of them, "~", so it may balk on certain file(names) and complex files do take a moment or two to generate.

    Good will and love thru us all.

    Gotta jet.

    Feedback welcome as this was a pretty fun and relatively stressless endeavor.


    posted in technical issues read more
  • svanya

    I could REALLY use this.

    Doesn't seem like it would be to hard...then again, for me, very much so, as I I do not know GEM hardly at all.

    But my thinking is:

    to read all the subpatches and abstractions for a branch (either open via the usual open file method or already open). Then draw them with connecting lines as either either squares or circles with their name inside.

    Already done? (then pls send link or share patch)
    Worth pursuing?

    Only love,

    Sometimes am intellectually challenged attempting to visualize my own patch 😀

    posted in technical issues read more
  • svanya

    As I mentioned in a previous post: "idea: "riding the wave"delay length triggered by env~ size (link http://forum.pdpatchrepo.info/topic/10557/idea-riding-the-wave-delay-length-triggered-by-env-size)", I had been wondering about controlling a delay line via the env~.



    My idea had been to mimic the "power" of a wave (akin to what I have been suspecting we will do once we figure out how to harness the power of gravity waves): the larger the amplitude > the further the auditory "ripple" and the longer it lasts.

    The abstraction below, pushdelay~, is my incarnation of that idea.


    Much merriment thru you and yours.

    -help (from the -help comments):

    In this pushdelay~ abstraction the length of time on the delay line, as well as feedback, are driven by the amount of the env~, the larger the env~ the longer the delay time and more feedback there is.;
    In "inter" (interval) mode, the abstraction takes the current delay time and sets a metro to that time;
    opens a spigot and captures the maximum value for the env~ during that period then sets the next delay and metro times to that value.;
    In "cont" mode, it sets the delay and feedback times continuously based on the envelope value.;
    The relationship between the delay(x) and feedback(y) values can be set using the curve ctrl, either linear, convex (sinusoidal) or concave (also sinusoidal but inverted).;
    Turning the abs either off|on starts the inital metro.;
    If in "off" mode, the delay ctrl may be moved independently. However the feedback will still change the same way, mentioned above.


    p.s. the original delay~ abs is from the DIY2 collection.

    posted in abstract~ read more
  • svanya

    Was thinking about internal combustion engines and gravity waves and got to wondering about alternatives.

    Example (pd version-"riding the wave"):

    The length of a [delay~] line triggered by how far above a threshold the [env~] is.


    at a set time interval, normalize the difference between env~ and 100 then break it into integers (* x, +.0.5, int) and put a timer on it so when the env~ value changes the delay time changes accordingly.

    p.s. food for thought, will share what I find out later.


    hope all is well with you and yours. ciao for now

    posted in Off topic read more
  • svanya

    (David and Pierre: This is very close to what I had in mind when I asked about playing an incoming stream backwards. It does as you suggested David, work backwards from the jump off point, via a delay. However it then passes that delay to a sample looper and both feeds it back on itself and is able to be controlled by either playing the speed forward or backward (like you would rotate turntables, tapes, etc. Would love to hear what you guys think. Peace and thanks, for the input. -Scott

    p.s. visually I have the image of a leaf floating down a stream gyrating/rotating as it goes, but almost always going "downstream". Oh, also, maybe you guys and tell me if the "phase*" is even germane to the patch? Oh, and I think this abs is ideal for the 2-d expression pedal I have mentioned elsewhere. Will share what results once I try it out.)

    The delayfb effect is from DIY2 and the looper~ is from parts I can not remember the source of which.



    From the Help file:

    audioflow~ is an audio patch which does the follow.;
    It takes an incoming signal and sends it to a delay~.;
    It then sends the vd~ read signal to a looper as well as the delayed signal to the outlet.;
    When record is pressed on the looper a sample record begins recording the vd~ read line.;
    It also is then sent to out.;
    The direction either forward or back of the loop is controlled by the "vector". So negative speeds are played in reverse and positive speeds are played forward.;
    The pitch of the loop may also be controlled.;
    Not sure if this is even necessary but a further multiplier(-1 to 1) may be applied to the loop.;
    The info: positional bar is not a control and only shows the speed and direction of the loop.;
    Each channel, raw, delay, and loop, may be mixed using the gain controls.;
    And an overall gain control is at the bottom.;
    Notes: after you stop recording the loop begins to play automatically. And you can merely tap record again and play stops automatically and a new loop recording is begun.

    posted in abstract~ read more
Internal error.

Oops! Looks like something went wrong!