• svanya

    Sigmund~Parameter_Setter: Using guitar notes to set patch parameters



    Preface: I have been doing a lot of work recently setting up an electric guitar as an "arduino guitar" (with additional knobs, switches, etc.) to run my patches.

    Occurred to me a couple of days ago (while considering buying a second ard to make a guitar for a friend), I could harness sigmund~ to just capture pitch (as digital values) and envelope (as the analog values) without ever changing the inside of the guitar.

    The result is this patch.


    The [ON] toggle triggers a [switch~] and would be used during setup and (probably) not performance (without severely cramping one's playing style).

    The grid of hradios represent the fret board (in standard guitar tuning). Low on the bottom, high on the top.

    The first three (bottom hradios) strings (low-E,A,D) run from midi-pitch 40 thru 54. So if you play for example pitches 40-44, it changes the first string hradio between the values of 1 and 5. The A and D strings do the same but for their respective hradios. (The first 6 outlets (from left to right) represent the 6 strings).

    The three high strings also capture hradio values. But in the special case of being in "open", (using the [env~], in other words how loudly you play the note) they send analog values between the range of 0 and 1 (as shown in the val0, val1, and val2 sliders and are sent to the right three outlets). So if you play the note loud it sets the parameter/slider closer to 1, softer closer to 0.

    The "threshold" (sigmund~ minpower param) is used to filter for ambient noise and add sensitivity control and defaults to 66. So it can be set to capture the softer sounds and change the range of the analog values. (It's max is 100. Changing that value would need to be done internally within the patch).

    I am pretty sure if configured properly, this makes my arduino guitar idea mute.

    On the other hand, I love to play with knobs and switches :smile: so am Not going to abandon that tool for this patch.

    However, I think this patch might prove useful to others.

    If not to actually use, then at least for the sake of an idea-generator about how to use the fretboard (potentially instead) of arduino to set param values.

    Happy Pd-ing,

    p.s. This is setup to use standard guitar tuning but other tunings could easily be fashioned.

    You can see the effect in action by clicking on the messages (which represent (midi) pitches)) at the top right of the help file. Changing the "gain(log)" before clicking a message impacts the analog values.

    p.p.s. Sorry, it's so large, but my eye-sight is very poor and this scale just makes things a helluva a lot easier on me.


    If it bounces between values on you, try (in this order): a cleaner sound (un-effected), changing the threshold, or if necessary the parameters inside the sigmund~ object.

    posted in patch~ read more
  • svanya

    My project is coming along nicely.

    Added, aka drilled the hole for, a place to connect the pi's hdmi port (which is embedded in the belly of the guitar).

    So would love to hear/see what people suggest I use to manifest video as I play audio on it.

    For reference, it looks like this. (The whole post is in the works but is coming later).


    Thanks, in advance. Excited to try out this branch of PD as I almost never use GEM.

    Ciao for now.

    Happy PDing to us all.

    posted in technical issues read more
  • svanya

    1-knob tone_control~: which ramps an EQ3's hi and los in 2 different ways



    I figured out the math for this the other day, so thought to package it now and share it.

    It uses [knob] so of course any control sending in the right inlet 0-1 will do.

    What it does is with the knob less than 0.5 the lo and hi ramp up together to about 0.67 with the differential being made up in the total gain.

    Yet, above 0.5 it then changes them in opposite directions via x and [- 1][abs] so the ramp is in different directions yet also covers 0-1 for both hi and lo.

    Perhaps, one of you may find it useful.

    It's helping me out to consolidate my controls on my arduino guitar app by minizing how many sends I need to :-) send.

    To try it just turn the knobs and you'll see what I mean because the sliders will change accordingly {Note: the sliders are only for visuals and do not send anything. And the EQ3 is from the DIY2 library.}

    Ciao for now.

    Happy PD-ing.


    posted in abstract~ read more
  • svanya

    Thank you, both so much, @ingox and @Jona. This is exactly what I need.

    Thanks, again, both of you.

    "There's no 'Just waiting on a friend', quite like waiting on a PD friend."

    Saved me an enormous amount of aggravation.

    Thanks, again.

    posted in technical issues read more
  • svanya

    I'm not seeing this anywhere and it seems so straight forward?

    An external perhaps?

    Thanks, for your help in advance.


    p,s. context I want the names of my effects (which can be quite long) to fit in the space available on my canvas label (without changing the label font-size)...


    "wave-recorder(stampalbum)" and "(unchanged)" both to under 15 characters. So skip truncating unchanged but do truncate the recorder.

    (ideally, i would think it would not need list-drip...or does it?)

    posted in technical issues read more
  • svanya

    Dynamic Effect Plugin Loader esp. For Rapsberry PI (DIY2 and Stamp Album effects/plugins)




    In the last couple of days I finally built something I have needed and wanted for a while (which later on I will discuss in more detail under a separate thread): an Arduino electric guitar.

    In other words, I took the connections off the 5-way and knobs (internally connected to the pickups and line out) and rerouted the switch and knobs to an arduino. The reasoning being I can control Way more with pd and those knobs than what they were originally intended to do if I capture their output using Arduino.

    However, the patch I had built for it was clocking in at about 275-300% of the pi's cpu. And while I could have gone back and added switches (which I took out a while back, to replace with fade-mixers for when I change an effect) throughout, the thought of doing that was more daunting than (considering how elaborate the patch is) I wanted to undertake.

    Enter: Dynamic Patching.

    I found that with just 3 straight-chained effects the pi ran at only about 10%.

    So...here's what I built and am sharing now (before tying it into the arduino guitar, because I think others might want to go ahead and learn from it, extend it, expand upon it, use it, etc. etc.).

    The patch(es, there are two, one laid out for the DIY2 plugins and one laid out for the Stamp Album ones, will probably consolidate them later, but other things are demanding my attention) is pretty straight forward:

    (Dependency on the tof/menubutton, tof can be found via deken)

    Click on the menus at the top to select an effect for each of the 5 slots or select the "unchanged" effect to leave that slot open.

    Then click the BUILD bang or the CLEAR bang (to start over).

    The selected effects will load into the PALLETTE subpatch already connected to adc~ and dac~.

    That's really about all there is to it. Very straight-forward, clean, and very cpu light-weight. The racks of all 5 slots I tested ran at about 10-12% on my PI 3r2.

    Hope you can make use of it. And would love to hear feedback.

    For the future:

    Add a hid-stomp controller to load preset racks (which you can send in via the tof/menubotton) to load racks on the fly;

    Add a meta-level to send either hid, osc, or arduino commands to each of the loaded effects.

    Merry Music to us, one and all.


    p.s. Oh! The arduino guitar: though it has no connected pickups it gets its audio signal from an (about) 1" piezo mic fun-tacked to the knob-well inside the guitar. Sounds great. Just pure guitar. The tone, texture, etc. come after the fact via the pd-side.

    Ciao for now.

    Wanna say: the real genius lies not in what I cobbled together, but the strength of will and purpose it took for the two original developers to make abstractions so completely consistent and thoroughly aligned. My highest regards to you both. Thank you, both, so very much, for helping to make my "job" so easy.

    posted in patch~ read more
  • svanya




    Currently I am doing a lot of work (using Anduril+elvencloak+and 2 player+recorder abstractions, links to the musical pieces are at the bottom (too many to share here)) with "self-driven" remixes. (The plan is one day it will be me as I play driving those abs.)

    I play a piece; send it thru Anduril (with randomly selected effects (14) (generally speaking correctly gain-balanced) and randomly selected fade-in/out times); and then turn elvencloak on or off (in which case I then manually manipulate the parameters).

    Since the 14 effects have all been chosen because they have only 3+gain parameters (4 more are in the process of being added (body-resonance (diy2), filter (StampAlbum), noisegate (StampAlbum), & my beat-looper, they could theoritically all be controlled via one 3-d controller.

    I considered (pursued) using a handheld's gyroscope/acceleremeter to manipulate the effects, then thought of how I might use a joy/flight-stick to do it if I converted the 2 xy coordinates to polar (theta and ro). (So use two values (coordinates) to create 3 values.)


    The patch is a visualization tool to help me learn and hopefully master the use of a 3-d footpedal (by cutting off the stick and inserting a plane of wood, which I;ve talked about elsewhere on the forum).

    To use it/see what it is doing you need:

    GEM + a joystick;
    once you plug in your joystick select it from the hradio and click the green box to turn on HID;
    then click the Create button to open the gem window.

    As you move the joystick, the subsphere will move around the larger sphere and the three quasi-sliders (from left-to-right: x, y, and z) will move up and down to represent the 2d-to-3d conversion.

    To be honest, I still can't digest how it moves. But as is the case with many of my patches I made it to see how it might work.


    Hope you enjoy it. And as the values are all scaled to -4 to 4, it is ready to be used if you want to create a 3d footpedal for your self.

    The inv toggle flips the "polarity" of the functions, as I got them from Wikipedia (in the calculations subpatch) and it said the ones they had listed were Not the traditional physics ones. The physics ones are toggle=1 and toggle=0 are the Wikipedia ones (really just relating to which values get plotted to x or y).

    Links (in the order in which i posted them) to recent work (Anduril/elvencloak remixes)

    p.s. for further testing I am going to be doing remixes of a Hopi (Indian) song, whales, and Gyoto Monk chants. So you might (if you like them check up on the site).

    Hopefully, those will be done with me "driving" the app(s) using the footpedal so I can better learn how I might use it in a live/improv environment.

    Peace, love, and joyous (or not :-) music thru us all.


    posted in patch~ read more
  • svanya

    Thanks, @alexandros and @LiamG

    follow-up question:

    Is there a way to dynamically tell the [clone] object how many clones it should create? I.e. via an event, inlet, msg, bang, etc etc.

    thanks in advance.

    appreciate both yr solutions Very much.

    comprehend them both and they both (for my case) look very viable.

    Ciao for now.


    Thanks, again. Peace

    posted in technical issues read more
  • svanya

    How do you send a value to the Xth inlet on the Y clone?

    In other words:

    I have an abstraction that has 3 inlets;
    and created 5 clones of them (using [clone]);
    and I want to send a value to the third clone on it's second inlet.

    How do I do that?

    Thanks, for yr help and all you do for the world.

    Peace, love, and good cheer thru us all.


    posted in technical issues read more
  • svanya

    Simple Didgeridoo Player (using 21 Public Domain samples and transitions between two "notes")


    Zip file is located on google drive at:


    Didgeridoo Player using the samples from below;
    and incorporating A and B notes with transitions between each sample based on the TRANSTIME (100-3000ms, i.e. the line~) and limiting the lines to the MAXLEVEL

    Digderidoo Samples from;

    Download: http://crachrecords.org/samples/Didgeridoo.zip;
    21 unprocessed wav-samples between 4 and 25 seconds. .wav, mono, 44.1 khz / 24 bit. zipped, u2248 33mb;
    License: Public domain;
    poster: shranz hanz

    Not very complicated. But looked like it needed doing,

    Peace, good cheer, hope it helps make your visions come true.


    posted in patch~ read more
  • svanya

    2017 06 25 01:4:06 - The Way I REALly Want to Play with Her (For My Guitar's Sake (Improv) Remix-0): improv remix (using Anduril and a midi-keyboard as parameter controller)

    I think this turned out Really well! (A mix of an old guitar piece where this time instead of the guitar (send it as input~) I "played" the effects.

    I configured my "Samson Graphite M25" (USB, midi-keyboard) so the keys sent (0-1)/7 and the velocity sent the [line~] values to my xyz effects.

    So I divided the keyboard into 3 sets of 8 controls to send values to my effect parameters, i.e. as I "played" a key, the parameter value [line]d to the chosen value. The greater the velocity the shorter the line.

    Was a hell-offa lot of fun.

    I also added a key (the 25th) to turn on the elven-cloak (pitch/env~) automatic parameter changer, and my CC's to change the values on a twist.

    Hope you like it. Better to hear it than talk about it, right? :-)

    The original guitar piece (mine) is one of my favorites I have done and really lent itself to this techinque.

    Ciao for Now and Happy PDing.


    posted in output~ read more
  • svanya

    Thanks, for getting back with me @whale-av (in usual punctual fashion :-)).

    I thought that might be the case.

    However in my desparation I came up with a solution to the specific problem that actually works even better:

    My effects-router uses a hradio to choose the effect;
    each effect had a switch~;
    All of the effects outputs are sent to throw~s.

    What I wanted (and the pic below shows what I did) was a cross-fade effect. So as one effect goes out and the other one comes in they blend.

    By just dropping in (where my switches were) the abs_fadeswitch~ and adding two global sends, GlobalInitLevel and GlobalFade (up to 1000ms), I was able to get really nice smooth transitions as I made the changes without too much cpu loss.

    Thanks, again, for your timely input. :-) Glad I plowed ahead as well.

    Peace and love to and thru you (and the rest of us),


    posted in technical issues read more
  • svanya

    Would just test it and see, but don't have access to my machine right now.


    And Peace thru us all,

    posted in technical issues read more
  • svanya

    automated_parameter_changer: effect controller that changes over time via 3 [line]s (exs delayfb, flanger, and pitchshifter)



    I've found that some of the sounds I like most are when a sound is played and an effect parameter is changed, ex. elven_cloak and Anduril, while the note is being played (of which delay is my favorite).

    So this abstraction (which can be attached to any effect/param) does just that automatically over time.

    It works via 3 control points, a midpoint, a radius (how far out to extend from the midpoint) and a shift which moves the adjusted-midpoint within the diameter.

    It's accomplished via 3 [line] objects which take as their ramp values those three points and sends them from 1 to 2 to 3, 3 to 2 to 1 in loops are 1-2-3-2-1 etc in a cycle.

    The controls are pretty straighforward:

    metro: the maximum length of the lines;
    rad(ius):% of which ever is greater 1-mid or mid
    and shift {-1 to 1}.

    The graph shows the calculated result of those settings via spikes where the y=1 is the adjusted-mid and the two 0.5's are the two end-points.

    I have included the DIY2 effects st-delayfb, st-flanger, and st-pitchshifter to try it out with a simple synth. With the delay attached to one param, the flanger to 2 and the pitchshifter to 3 parameters. (The hradio changes which line is active.)

    I have used these techniques elsewhere and think they are pretty cool.

    So hope you may find a use for it.

    Peace, Good Cheer, and Happy PD-ing.


    posted in abstract~ read more
  • svanya

    Andúril with Pure Data Front-Ends (fwd/bwd looper + 14 effects + elven cloak)



    Came to me it didn't make much sense to only make the patch available to MobMuPlat users (for the original post and instructions on what all the controls do see: https://forum.pdpatchrepo.info/topic/10821/andúril-mobmuplat-app-fwd-bwd-looper-14-effects-elven-cloak-control-parameters-via-env-and-pitch-as-you-play/1 ) so built and have included them in the zip (with no changes to the original patch) two parallel guis: one with knobs ("Andúril-wknobs-help.pd") and (in case you don't have the knob external) one with sliders ("Andúril-wsliders-help.pd").

    note: the xy-slider does require iemguts and is from @LiamG 's wonderful xy-slider at: https://forum.pdpatchrepo.info/topic/8656/xy-slider-controls-two-variables-at-once

    The original mobmuplat patch is included in the patches as an abstraction.

    So the GUI's only reroute the control elements to and from the pd controls to the mmp ones. And you now no longer need MMP at all to run it from a computer.

    ...think that's about all I need to say here.

    Sorry for the cross-reference, but I hate repeating myself. So hope you don't mind following the link to read about what it does.

    Peace and merry music making thru us all.


    posted in patch~ read more
  • svanya

    Andúril (MobMuPlat app): fwd/bwd looper + 14 effects + elven cloak (control parameters via env~ and pitch as you play)


    This has been long in coming and I am very glad to finally release it (even tho my handheld hardware is not up to the job of running the elven cloak feature).

    First a demo video and some screenshots, , and then the instructions.





    The app is designed to give (specifically a guitarist) tho really any input (even prerecorded as is the case in the demo (from: "Laura DeNardis Performing Pachabels Canon" from https://archive.org/details/LauraDenardisPerformingPachabelsCanon, specifically the wave file at: https://archive.org/download/LauraDenardisPerformingPachabelsCanon/PachabelsCanon.wav, Attribution-Noncommercial-Share Alike 3.0) FULL Control over the "voice" of their output-sound.

    It includes:

    a 5-band EQ (on page 2 of the app) (upfront that is applied to all incoming sounds);

    a looper: with record, forward, backward, speed, and bypass controls (that runs via a throw along with the effects channel)

    14 effects each with 3 controllable parameters (via the xy-slider+centered knob) including: chorus, distortion, delay, reverb, flanger, tremolo, vibrato, vcf, pitchshifter, pitchdelay, 12string, stepvibrato, pushdelay (delayfb driven by magnitude of the env~), and stagdelay (2 out-of-sync delay lines which can be driven in and out of phase by the sum of their delwrite+vd's so what goes in first may come out last)

    elven_cloak: which drives the 3 parameter controls via the peak bands amplitude and proximity to a set pitch (midi note) and whose window can be broadened or shrunk and shifted within that window, i.e. the three effect parameters are changed automatically according to what and how you play


    a tester synth: that randomly sends midi pitches between 20-108, velocities between 20-127, and durations between 250-500ms.

    CONTROLS (from top-left to bottom-right):

    PAGE 1:

    Effect: effects menu where the you choose an effect;
    >>>,<<<: page navigation buttons;
    IN,OUT: gains (IN is the preamp on the EQ5, and OUT is applied to total output);
    REC,FWD,BWD,speed,normspd: the looper toggles and on speed, higher is faster and mid normal and normspd resets to mid;
    xy-slider+centered knob: the 3 parameter controls + their labels (the bottom is x, top y and above the knob for the third one), the name of the selected effect and its parameters load each time you choose from the Effects menu, bottom left is lowest, top-right highest;
    ByLp,ByEff: bypasses for the looper and effects "channel" (the outputs are summed);
    EC-on: elven cloak toggle (default=off);

    PAGE 2:

    the EQ5 controls;
    synthtest: off|on, default is off;

    PAGE 3: elven cloak controls

    reset: sets shift, metro, mid, and radius to 0, 500(ms),64,100% respectively (i.e. the entire midispectrum, 0-127) respectively;
    mini-xyz, test: if test is on, you see a miniature representation of the xyz controls on the first page, so you can calibrate the cloak to your desired values;
    shift: throws the center of the range to either the left or right(+/-1);
    metro: how frequently in milliseconds to take env~ readings;
    mid: the center in midipitch, i.e. 0-127, of the "watched" bands
    radius(%): the width of the total bands to watch as a percentage of whichever is lower 1-mid or mid


    Basic Logic:

    There are 4 modes according to the bypass state of the looper and effects.
    A throw catch and gain/sum/divide is applied accordingly.


    As I mentioned at the first, my handheld(s) are not good enough to let me use this but it runs great on my laptop.


    I would love to hear if this Does or Does Not work for others and even better any output others might make using it. I am enormously curious to hear what is "possible" with it.

    Presets have not (yet :-) been included as I see it, esp. with the cloak as a tool to be used for improv and less set work. Tho I think it will work nicely for that too if you just turn the cloak off.

    hmmm, hmmm,...

    I think that's about it.

    Let me know if you need any help, suggestions, ideas, explanations, etc. etc. etc. regarding the tool. I would be more than happy to share what I learned.

    Peace, Love, and Ever-Lasting Music.


    p.s. please let me know if I did not handle the "attribution" part of "Laura DeNardis Performing Pachabels Canon" License correctly and I will correct it immediately.

    Ciao, for now. Happy PD-ing!

    posted in patch~ read more
  • svanya


    I found this a while back (and on linux at least) it might help (perl script to fine tune real time audio configuration settings to improve performance):


    Linux configuration checker for systems to be used for real-time audio"

    Good luck!


    posted in patch~ read more
  • svanya

    The Harmonizer: Communal Synthesizer via Wifi-LAN and Mobmuplat

    The Harmonizer

    The Harmonizer is a single or multi-player mini-moog synthesizer played over a shared LAN.

    (credits: The original "minimoog" patch is used by permission from Jaime E. Oliver La Rosa at the the New York University, Music Department and NYU Waverly Labs (Spring 2014) and can be found at: http://nyu-waverlylabs.org/wp-content/uploads/2014/01/minimoog.zip)

    One or more players can play the instrument with each player contributing to one or more copies of the synthesizer (via the app installed on each handheld) depending on whether they opt to play "player 1" or "player 2".

    By default, all users are "player 1" so any changes to their app, ex. changing a parameter, playing a note, etc., goes to all other players playing "player 1".

    If a user is "player 2", then their notes, controls, mod-wheel etc. are all still routed to the network, i.e. to all "player 1"'s, but they hear no sound on their own machine.

    There are 2 pages in The Harmonizer. (See screenshots below.)


    PAGE 1:


    PAGE 2:


    The first page of the app contains all controls operating on a (more or less) "meta"-level for the player: in the following order (reading top-left to bottom-right):

    pl2: if selected (toggled) the user is choosing to play "player 2"
    mot(ion): triggers system motion controls of the osc1,2&3 levels (volume) based on the accelerometer inside the smartphone (i.e as you twist and turn the handheld in your hand the 3 oscs' volumes change)
    rate: how frequently should the handheld update its accelerometer data
    slimit: by how much should the app slow down sending the (continuous) accelerometer data over the network
    presets: from 1 to 5 preset "save-slots" to record and reload the Grid 1 and Grid 2 settings that are currently active
    S: save the current Grid1 and Grid2 selections to the current "save slot"
    L: load the currently selected preset into both Grids
    ">>": go the the next page (page 2 has the reverse, a "<<" button)
    Grid 1: the settings, in 4 banks of 3 parameters per-, which are labeled top-down equating to left-right
    Grid 2: the same as Grid 1, but with a different set of parameters

    The second page comprises:

    the 2-octave keyboard (lower notes on top),
    a 9-button octave grid (which can go either up or down 4 octaves),
    a quick-preset grid which loads one of the currently saved 5 presets
    the "<<" button mentioned above, and
    both a mod and pitch-bend wheel (as labeled).


    All players install Mobmuplat;

    Receive The Harmonizer (in the form of a .zip file either via download or thru email, etc.)

    When on your smartphone, click on the zip file, for example, as an attachment in an email.

    Both android and iphone will recognize (unless you have previously set a default behavior for .zip files) the zip file and ask if you would like to open it in Mobmuplat. Do so.

    When you open Mobmuplat, you will be presented with a list of names, if in android click the 3 dots in the top right of the window and on the settings window , click "Network" Or on an iphone click "Network" just below the name list;

    On the Network tab, click "LANDINI".

    Switch "LANDINI" from "off" to "on".

    (this will allow you to send your control data over your local area network with anyone else who is on that same LAN).

    From that window, click "Documents".

    You will be presented again, with the previous list of names.

    Scroll down to "TheHarmonizer" and click on it.

    The app will open to Page 1 as described and shown in the image above.

    Enjoy with Or without Friends, Loved, Ones, or just folks who want to know what you mean "is possible" with Pure Data :-))!

    Theories of Thought on the Matter

    My opinion is:

    While competition could begin over "who controls" the song, in not too great a deal of time, players will see first hand, that it is better (at least in this case) to work together than against one another.

    If any form of competition emerges in the game, for instance loading a preset when a another player was working on a tune or musical idea, the Overall playablilty and gratitude-level will wain.

    However, on the other hand, if players see the many, many ways one can constructively collaborate I think the rewards will be far more measurable than the costs, for instance, one player plays notes while the other player plays the controls.

    p.s. my thinking is:

    since you can play solo: it will be fun to create cool presets when alone then throw them into the mix once you start to play together. (Has sort of a card collecting fee :-)).


    This was just too easy Not to do.

    It conjoins many aspects of pure data together (I have been working on lately (afterward: i did this app a long time ago but for some reason and am only now thinking to share it) both logistical and procedural into a single whole.

    I think it does both quite well, as well as, offer the user an opportunity to consider or perhaps even wonder: What is 'possible'?"

    Always share. Life is just too damn short not to.

    Love only.

    posted in patch~ read more
  • svanya

    @weightless @ingox
    You guys lost me about 3 posts ago, but can't tell from what I saw in your shares the idea below (image). But it's one way to put $0 into messages: via pack. If you'll already got this, then please forgive my ignorance of y'all's concerns.

    Also, found out how to include commas (as you mentioned ingot via [list tosymbol]) and added it to my "-extended version" and include it here in case anyone wants the comma-included version, (I apologize for the oversight on my part).




    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!