MobMuPlat Ready Effects Collection (i.e. 30 Vanilla-compliant MMP effects) w GUI
"The PD trees sometimes bear unexpected fruit."
The zip below includes 29+1(raw) standardized effects (esp.) for use with MobMuPlat.
They all work and have been standardized in the following manner:
- all are MMP-compliant (so include only objects which MMP supports)
- have 3 inlets and 1 outlet~
- the inlets are (from left to right): the incoming signal (i.e. inlet~), the parameters(3), and a switch~
- the effects have all been finessed to only include <= 3 parameters
- the parameters are sent to the second inlet via [0 $1(, [1 $1(, and [2 $1(
- the switch is a toggle so 0|1
and - each window is 186x116 pixels.
I have included an .mmp file to listen to and test them with either adc~ | randomnotes. It also includes a bypass toggle , three parameter knobs (which load the parameter name to each label once an effect is chosen), and a gain. Only the selected effect's switch is turned "on" so it is very low on the cpu.
The MMP file, in and of, itself may prove useful to someone as it packages in a single place a 30-effect "pedal-box".
That however is not why I am sharing it.
Since the effects are standardized and mmp-compliant, my hope/thinking is others may include them in their work no matter what it may be and thus build their patches, apps, etc., using the effects as building-blocks.
I have accredit the original effects designers by adding a suffix (in parenthesis) to each effect as follows (in alpha-order):
d=DIY2 Collection
g=Guitar Extended
s=Stamp Album Collection
v=scott vanya (me)
The included effects (basically the best I could find that lent themselves to 3 parameters) are as follows:
audioflow(v).pd
beatlooper(v).pd
bodyresonance(d).pd
chorus(s).pd
delay(3tap)(d).pd
delay(fb)(d).pd
delay(pitch)(v).pd
delay(push)(v).pd
delay(revtap)(g).pd
delay(spect)(d).pd
delay(stag)(v).pd
delay(tbr)(v).pd
delay(wavey)(v).pd
detuning(g).pd
distortion(d).pd
filter(s).pd
flanger(s).pd
hexxciter(g).pd
looper(fw-bw)(v).pd
octaver-harmonizer(p).pd
phaser(s).pd
pitchshifter(d).pd
reverb(pure)(d).pd
ringmod(g).pd
shaper(d).pd
stepvibrato(g).pd
streamStretch(v)-help.pd
streamStretch(v).pd
tremolo(d).pd
vcf(d).pd
vibrato(d).pd
vibrato(step)(g).pd
wah-auto(v).pd
wavedistort(d).pd
Note: there are too many effects to go into detail about what each parameter does. So I leave that for you to either figure out/discover on your own or post here your question and I will answer it as time/energy/etc allow.
Peace and Loving Music Through us all.
Sincerely,
Scott
MobMuPlat OSC-to-MIDI Remote Control, spec. for PD, Guitarix, and Rakarrack and other guitar effects apps
It's always funny to me how working on one PD project results in fruit that might also prove useful.
Currently, working on a broader project, but this part (at least) (I think) is ready for distribution.
Background: I Really hate leaving the side of my guitar (for example to click a mouse or tweak a setting) when I am playing. So designed this mmp app so that I can attach (with funtack, ex.) my handheld to my guitar and control my settings from there or perhaps even as I play. Like so:
[Aside: the broader project also includes (on the front-side of the app) controls driven by the handheld's tilt, as well as, the adc~ pitch, env~, and distance of the pitch from a "center". But that part has to wait (though the code is all inside the mmp_osc2midi_rc.pd patch just disconnected/does not use the cpu).]
SETUP (linux is what I know, so other OSes may work just can't/haven't tested them):
JACK
Pure Data
a2jmidid - JACK MIDI daemon for ALSA MIDI (in the Ubuntu at least repos)
guitarix a/o rakarrack, or other midi-driven effects apps (such as the included set of 30 pd effects(see below))
PIECES:
The mmp_osc2midi_rc.zip (extract(android)/install(ios) to MobMuPlat directory)
The osc2midi_bridge.zip (to be run on the "pd receiver") and includes the osc2midi_bridge.pd, help file, and a set of 30 mmp-ready-(mono) effects (in the ./effs directory) that can be used if PD is to be used as the receiver. (They are standardized to include 3 inlets: left=inlet~, center=[0 $1(, [1 $1(, [2 $1( messages sent to 3 parameters on the effect, and right=[switch~] and 1 outlet~ and a demo guitarix "bank" file called "MIDITEST.gx" (which includes 2 presets/programs and set midi values (0-8) to test. Just add the file to the guitarix config "banks" folder).
Instructions:
- Start Jack;
- In Pure Data, open the osc2midi_bridge-help.pd file; toggle "listen" on; and set MEDIA to "ALSA-MIDI" (the additional pieces are just examples of receiving the midi values);
- In Jack>ALSA: Connect Read:MIDI to Write:PD & Read:PD to Write:Midi;
- From the command line execute "a2j_control start" (no quotes);
- Start (ex.) guitarix;
- In Jack>Midi connect a2j:Pure Data(capture) to (ex) gx_head_amp:midi_in_1.
Note/Alert/etc. For a machine to receive OSC messages the recipient-computer's firewall must (I believe) be turned off.
GUI:
The GUI has 3 pages that look (basically) as follows (with the subsequent 2 pages having only the 3 knobs and 3 buttons).
The buttons trigger text entry boxes which allow you to enter numbers (0-127) representing:
PGM: the number sent to (midi) [pgm]
and
(the buttons beside the knobs) the midi value, i.e [ctrl] (0-127), each knob is to be sent to (all on channel=0). (The resulting number of which are all written to the label to the left.)
For example:
Results in:
You can now to do 1 of 2 things:
Set the mmp-knobs to whatever midi values you have set in guitarix
or
Set the guitarix midi values (mousewheel click on a control) to one of the mmp preset 0-8 midi values.
WOW!!!
That took a helluva a lot of writing (and reading) but I hope you can both see the value and make use of this bit of technology.
As I said before,
I look forward to being able to fine tune my sound ALL while my hands and I are BOTH still at my guitar and not bend over, move, etc. etc. etc. to get the sound I want.
Peace, Love, and Ever-Lasting Good Cheer.
If you made it this far , Thanks for Listening.
Sincerely and Optimistically,
Scott
p.s. ask whatever you want regarding setup, how to use, points-of-clarification, etc. I am more than happy to help.
"Out of Love comes Joy"
16 parameters for 1 voice, continued...
@H.H.-Alejandro
Ale1.zip
Same as before, but with some effects added, and some refinements.
Look inside [voice_genX X] >>> [pd curve_routing] for the curve assignments. They are assigned for the effects that I have completed and that are inside [pd effects].
You can change which curve applies to which effect parameters.
But because you have Y and Z coordinates I have had to fix what Y and Z are applied to. The first curve of an effect always has Y= the dry/wet mix for that effect.
I will look at "reverbCH" next if that is the one you want to use.... and if it needs more that 6 parameters including dry/wet then I will add them.
I am in Rome and Bucharest until the 12th November.... so it will be slow.
That is all....
David.
16 parameters for 1 voice, continued...
@H.H.-Alejandro I finally found the work I did months ago on the effects...... so here we go:
The messages I have coming from Iannix look like /curve "number" f f f "time" f f.
Which are Y and Z?..... Probably /curve "number" "Y" "Z" f "time" f f?
I can build exactly as you have drawn your curves, but what do "reverb" "chorus" etc. control?
Is it just the "amount" of the effect (volume) or for reverb the "decay time"?
**But for the long term I need to build a patch that you can easily make as you want without my help...... or you will always be waiting!
So I think changes will have to be made for the effect curves.... one curve for each effect.
The curves have 3 "floats" unused? The first unused float (before "time") seems always to be zero. The last two floats seem to change sometimes. Can they, or will they be used?
Timbre is missing...... is that what you now call volume?
If it is then I will add a curve for Y=pan Z=master voice volume
One curve for each effect would allow something like this at least.....
Reverb Y=reverb time Z=volume(dry>wet)
Delay Y=delay time Z=volume(dry>wet)
WahWah Y=speed or Q Z=depth
(( I put them this way around to match the note curve..... Y=Pitch Z=volume))
If these parameters can be fixed for each effect type curve (the curve number can change though) then you would be able to change for a newer better effect when you find one (without my help).... and better control the effects.
To add voices you will just have to add a [voice_gen] for each, with its unique number..... [voice_genX] and its argument for the "notes curve number". Then you can re-order any effect curves, swap effects in and out, change the timbre curves etc..... and save the [voice_gen].
David.
Sigmund~ Parameter_Setter: Use guitar notes to set patch parameters
Sigmund~Parameter_Setter: Using guitar notes to set patch parameters
sig-setter~-help.pd
sig-setter~.pd
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.
Instructions:
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 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,
Scott
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.
afterward:
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.
Dynamic Effect/Plugin Loader esp. For Rapsberry PI (DIY2 and Stamp Album effects/plugins)
Dynamic Effect Plugin Loader esp. For Rapsberry PI (DIY2 and Stamp Album effects/plugins)
DynamicEffectPluginLoaderForPI.zip
Background:
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.
Peace,
Scott
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.
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)
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.
Sincerely,
Scott
Can you run a [line~] on 2 [switch~]s so it transitions gradually?
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),
S
Andúril (MobMuPlat app): fwd/bwd looper + 14 effects + elven cloak (control parameters via env~ and pitch as you play)
Andúril (MobMuPlat app): fwd/bwd looper + 14 effects + elven cloak (control parameters via env~ and pitch as you play)
UPDATED VERSION (corrected MobMuPlat system crash problem):
anduril.zip
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.
DEMO VIDEO
SCREENSHOTS
Intention(s):
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
and
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
END CONTROLS
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.
End:
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.
So...
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.
Sincerely,
Scott
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!
Audio Ideas (AI) Collection (placeholder, currently only links)-effects, controllers, mmp, etc.
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.
Sincerely,
Scott
abstract~
pushdelay-envelope-env-driven-delay-line-with-both-delay-time-and-feedback-dependent
numpad-abstraction-for-entry-of-large-numbers-via-click-instead-of-sliders-includes-basic-calculator
abs_delay_fbw-feedbackwards-lifo-last-in-first-out-delay
abs_sequences_by_formula-sequences-by-formula-abstraction-ex-collatz
abs_effects_router-60-effects-in-one-abstraction-router-from-diy2-stamp-album-my-abs
visualcontrolsurface-vsl-values-set-by-their-location-on-the-screen-req-ggee-shell
abs_4-8-14_way_toggle-pair-2-toggles-resulting-in-4-8-or-14-states
audioflow-delay-to-forward-backward-looper-using-speed-control
5-band-equalizer-with-bezier-controller-eq5_mey_w_bezier_sv-pd-updated-to-8-band-below
forward-backward-looper-orig-abs-from-residuum-whale-av
abs_rgb2hex-rgb-0-255-colors-to-hexadecimal-values
pseudo-12-string-effect-6-string-guitar-to-sound-like-a-12-string
jack_midi2pd_2sys_connector_sv-jack-midi_out-to-pd-sys_playback-switcher
abs_4to16pads_bin_conv_sv-convert-4-midi-pads-from-a-binary-value-to-a-decimal-for-rerouting
abs_automatedslider_sv-automated-control-changer-pd-and-mobmuplat-editor-versions
idea-for-effects-stack-ing-technique-control-mother
micin-_abs-abstraction-convert-signal-to-notein-ex-using-a-midi-synth-as-a-guitar-pedal
curve_abs-tri-way-curve-switch-to-change-control-values-in-either-linearly-convex-or-concave-manner
a-preset-control-abstraction-for-saving-parameters-presets-to-text-files
4-tap-delay-with-pitch-shifter-per-delay-line-adaptation-of-diy2-patches
patch~
extra
the-15-owl-faust-patches-compiled-as-32bit-linux-externals-attached
libpd
mmponboardeditortemplate-mmp-for-creation-of-mobmuplat-files-directly-on-the-handheld-android-only
3d-synth-webpd-tree-js-webgl_camera_cinematic-html-example
Off topic