Kraken a low-cpu, compact, highly versatile guitar effects stompbox
Kraken a low-cpu, compact, highly versatile guitar effects stompbox
Intent:
Make a guitar effects rack that would
- do a lot (includes 8000 pedal combinations)
- cost very little cpu; and
- eliminate the need to "connect" effects abstractions
(Master-Kraken-help.pd is the main patch.)
The Stack (in this order):
eq3
pre (gain)
3 effect/pedal slots (with clean-dirty "bypass" toggle for the whole set)
with each slot containing
a (tof) menu to select from 21 effects (0 being raw)
3 parameters (mknobs)
a dry-wet slider
a bypass toggle (for that line which crossfades in and out (set by the crossfade control, in ms)
and
an infinite sustain toggle (for that line)
reverb (with brightness and roomsize control and off|on toggle)
compressor (with threshold, limit, ratio, attack, release (zexy~))
master out level.
Kraken also includes:
a simple recorder (record and play (loop) toggles and recording the entire result)
a popup (standard tuning) guitar tuner
an [ adc~ | sample ] (a|s) switch (to test the sound or even post-process a track/file using openpanel)
and
a presets control which loads or saves the current settings (for the entire rack and includes a date+time prefix as well as an entered name for each preset).
Additional Info:
OpenSoundControl (OSC) has been exposed for a future/additional post ("Kraken-OSC") which I have almost finished in Mobmuplat (only, for now, PdParty and others to be added later) and can be accessed via the send and receive to network abstractions inside the patch.
**
EFFECTS LIST:
00-raw
01-chorus
02-compressor
03-delay(3-tap)
04-delay(fb)
05-delay(spectr)
06-distortion
07-filter
08-flanger
09-fuzz
10-looper(fw-bw) (>0.5 on, <0.5 off to record, play forward, or play backward)
11-octave_harmonizer
12-overdrive
13-phaser
14-pitchshifter
15-reverb
16-step-vibrato
17-tremolo
18-vcf
19-vibrato
20-wah-wah
Dependencies:
(which I believe are all available in Deken)
zexy
cyclone
moonlib
iemlib
ggee
plus zexy~ "load on startup"
Credits/Thanks/Acknowledgements:
As I think with most pure data patches Kraken is built on the back of lots of other people's hardwork and diligent effort. In particular, it owes its effects to predominantly the DYI2 library (by Hardoff), the Stamp Album library (by Balwyn), those on the Guitar Extended website (by Pierre), and less so to a few others. And to all of them, I am deeply thankful.
Tally-Ho! Happy playing.
I am very thankful to finally "Release the Kraken!". I hope it may bring you many hours of pleasure, entertainment, and possibly education.
p.s. if you see some of your work inside this, DO please let me know and I will credit you more specifically.
Thanks again. Feel free to ask any questions you may like regarding using the tool, the abstractions, etc., and I will respond to them as soon as I am able. -Peace
FFTease cuts off audio
@weightless I have never tried. I studied Fortran (punch cards and a mainframe) at university in 1976. I think things have probably changed a little since then.
The readme says......
"The contents of "fftease32-externals" were compiled on Mac OSX 10.9.3
and should work on Intel-based Mac computers. For other Unix-based
computers, just type 'make' to build executables appropriate for your
computer. Then type 'perl collect.pl' to collect all the externals to
the "fftease32-externals" folder. Finally, move "fftease32-externals"
and "fftease32-help" to a Pd-accessible location."
So 'perl collect.pl' might complete the operation.
My browser turns 'collect.pl' into a hyperlink for some reason. Probably best not to click on it...
David.
Stomp-board my current project
This is a project I started just before Xmas. It was a really just an exercise to see how my nknob.pd abstraction would work in the real world, then morphed into a styling execise.
Stomp-board is a collection of guitar effects vaguely resembling stomp boxes. They can be arranged
and wired in any order and can be repeated as often as required. Each effect is given a unique name
when placing and this name is used to automatically save preset parameters against.
Effects are placed as objects in the normal Pd manner with one argument (eg [digi-delay Delay-1]) and connected with audio wires that should be in line with the round markers (there are fake inlets and outlet to the right as spacers)
As a graphics exercise its a failure because the nknob.pd is very heavy in the template area.
Its almost impossible to delete the effects objects as they grow in number (they will eventually delete though) and it is therefore essential to use the Quit button to end a session. There is a barely started help file.
stomp-board.pd is the demo (see pic), stomp-base.pd is the minimum start point.
I have collected the whole thing including the required externals in a folder Pd-effects-stand-alone
I think out of the box its windows only and in fact I have a folder for Pd 0.48 portable (empty) and a batch file stomp.bat that points to it (you will need to download Millers pd-vanilla portable version to use that)
Points of interest
In stomp-board.pd The looper can automatically record one cycle of drums from four-drums then stop the drums and play the loop and if the guitar is ready then record that on the next cycle
there is a wireless way to send messages to most controls via the unique name + control name
nknob has a range of 0-100
Any questions, please ask.
I have bash on my 1970's Ibanez strat-copy using this program just about every day
Cheers Balwyn
The following effects and control objects are available
active-switch.pd,
audio-catch.pd
audio-in.pd
audio-out.pd
audio-receive.pd
audio-send.pd
audio-throw.pd
audiobar.pd
chorus.pd
compressor.pd
controlbar.pd
data-send.pd
delay-only.pd
digi-delay.pd
distortion.pd
drum.pd
four-drums.pd
fuzzbox.pd
graphic-eq.pd
grater-v2.pd
lfo.pd
looper.pd
nknob.pd
noisegate.pd
panning.pd
para-eq.pd
phaser.pd
pitchshift.pd
pot.pd
presetter.pd
rec-player.pd
reverb.pd
rnd.pd
scope.pd
stomp-base.pd
stomp-board.pd
stomp.bat
tremolo.pd
tuner.pd
vcf-phaser.pd
volramp.pd
wavescope.pd
MobMuPlat Effects Collection as a Handheld App (adding Noisegate, EQ3, Compressor (pre) and Reverb (post))
This is a repackaging of the MobMuPlat Effects Collection I previously posted.
The change is:
This is built as an actual effects, ex. guitar, etc., app that has a complete stack/effects chain with one (of 29) effects.
The audio path is as follows:
adc|rnd > noisegate > eq3+pre > compressor > 1_of_the_MMP_effects > and reverb.
Both a demonstration of the concept as well as a full-fledged Mobmuplat app.
It consists of two pages:
the first being the controls for the new added effects and
the second being the original mmp_effects_collection demonstration controls.
"May it serve it you well."
Ciao for now.
-S
note: the new effects, i.e. ng, eq3, and comp, are all MMP-compliant and are now included in the mmp_effs directory and the reverb is achieved by pointing to the reverb that was in the original mmp_effs folder.
All of the original effects are also in the mmp_effs directory.
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
16 parameters for 1 voice, continued...
@H.H.-Alejandro Yes, in [voice_gen1 3]........ open it...... at top left you will see [pd effects] and [pd curve-routing]
All the effects that I have managed to make work are in [pd effects] and I have linked them all in a chain with reverb last.
If you open [pd curve-routing] you will see a horizontal "radio button" for every Y+Z curve. The object to the left of each radio button shows which curve it is following (changed by the radio button) and the current values of Y and Z for the curve.
Above the radio button it says what Y and Z are controlling.
If you open [pd effects] then you can see the faders moving as well, for each effect.
I hope that makes sense......?
David.
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.
Problem loading libraries (iemguts)
Eighteen-year-old Shen Qiang says he soon thereafter began winning Canadian contests, and came in Canada in 2004. He will be a proud representative of the Canadian Olympic team this summer. While he didn't immigrate explicitly to further his table tennis career (he came with his family, who live in Toronto), he's happy with Table Tennis Canada's sports app, and is looking forward to the autumn opening of this new 24-hour training centre in Ottawa, so that he can work harder on his sport. Produced in northeast China, Shen first picked up a paddle at nine. He quit college to proceed to Harbin, a town 300 kilometers away, to train full-time and represent the province of Heilongjiang and had left home. The contest in China was extremely intense, '' he states. https://ok.ru/group/53953306755154/ The athletes trained five days a week, six hours a day; they were paid to train fulltime and compete, he says. "In China, it is very competitive because in the event you do not make results then you will be removed from the team, and if you don't have table tennis without a school, there is no future for you."
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.