Installing Sound Design Toolkit (SDT)
@polyphuckin Are you using windows? The following (probably) if you are.
The frameworks stuff says it is the documentation. You need to just open index.html from the doc/html folder to read that. But there could be more to it. I don't know....
1st..
Pd paths and eccentricities.
I doesn't really matter where you put things, but Pd needs to find them.
In this case the (dot)dll's need to be loaded as libraries (or at least one of them does.... please let us know when you find out more..!!).
Unfortunately Pd expects the DLL to have the same name as the library folder (ONLY for libraries like Gem and Zexy that must be loaded at startup), or it will not find it. It will only look for STD.dll or STD.i386 or STD.darwin in the STD folder......
The author has named the folders so that you know which one you want, but that messes it up for the installation.
The folder STD_PD has STD.dll inside so needs to be renamed STD
The folder Win32 has libSTD.dll inside, so needs to be renamed libSTD
Then startup paths need to be set to those folders (it really doesn't matter where they are).
Then startup flags must be set to load the libraries........ -lib libSTD and -lib STD
Don't forget to restart Pd as it loads the libraries only as it starts..
And then, as if by magic, you can remove the declarations -lib in the startup preferences and it will work forever, even for other (32-bit) versions of vanilla.
Annoying.
Actually I think libSTD.dll probably is for other api's to use, and it belongs in the windows "sytem32" folder, but I am unsure. Maybe email the authors through the page you posted.
You do not need to copy SDT.dll outside its folder, as I did in the screenshot.
David.
Proof.........
The message below [r pd] needs to be clicked, and dsp needs to be on.
I have checked this file but no others.
If you want help files to be found then you might need to do more. Placing the library STD directly in the "extra" folder might solve that. I didn't.........
Play buffer from beginning with delread~
@Seán The audio is travelling through the delay line in real time.
You would need a delwrite delay longer than what you are recording to be sure to capture the whole first recording.
You need to feed the output of delread back into delwrite, so that it can be played again.
You would need a timer so as to set delread to the right length for the second read (so that it starts at the beginning).
You would need to use [switch~] to stop all audio in your patch as you end recording and so that you can start the delay line again when you press play......... otherwise the audio will drop down the delay line before you do so........... unless you program it to start again immediately.
You will need to do the fade after delread and not fade what you feedback into delwrite, or you will double down on the fade the second time around.
BUT.
Because the delay line read point for delread has to be longer than the recording, delread will in fact still be feeding back audio to delwrite after you have finished recording.
So you will have to let it finish.
But you can still read the correct output with a second delread.
Do that, and put it into a second delay line of the absolute correct length (now that you know it) and that will become your delay loop, with feedback as above.
All of that can be automated of course.
David.
Reverberation
Ok, so, I've cleaned up both the verbs abstractions. And fixed a bunch of errors I wasnt aware about. Took going through the guts of all to discover all my sloppyness.
jVerb1.2 changelog:
- Added one preset
- Fixed delay time calculation in the [delay~] abstraction
- Reduced sends and throws etc (see later discussion)
- Changed [vline~] to [line~]
- Fixed a bug with the control subpatch not sending correct gain messages for the APNs
- Changed se S control from binary to "analogue"
- Added pseudorandom seeding (using $0) for all delay modulation
Schroom1.2 changelog:
- Using the a lot of the same abstractions, a lot of the same changes apply. Basicially the APNs and below.
- added a missing abstraction which rendered the patch useless. The [xfade~] providing crossfade between natural verb and beefcake. I'm sure the smart ones of you made one up on the fly.
Now, about reducing sends/receives or throw/catches. The signal flow in jVerbs matrix go like this: https://imgur.com/a/cE3b0gi
If I substitute the receives and throws for direct lines I get "DSP loop detected" error messages. I suspect I can do away with that by putting the delreads at the junction outputs outside their abstractions, but I'm too tired to try now.
Oh, and I get this error message whenever I open the jverbdemo patch: "$2: argument number out of range". I've not been able to locate the error...
For those interested in the jVerb algortihm, I'll try to elaborate on the design. First of all you need to wrap your head around the idea of the Kelly-Lochbaum scattering junction. I think there's even an object in extended modelling it. My own version is highly modified, but I'll get to that later. Here's the primer on KL-junctions: https://ccrma.stanford.edu/~jos/pasp/Kelly_Lochbaum_Scattering_Junctions.html
As you can see from my flow diagram above, that is the primary building block in jVerb. The second one is Schroeder allpass nests, which also form the essential guts of Schroom.. Neat diagram + discussion can be found here: https://valhalladsp.com/2009/05/30/schroeder-reverbs-the-forgotten-algorithm/
The things not explained in my ms-paint flow chart are the stuff I added to jVerb in order to get rid of metallic ringing and out of control feedback. You can still tweak the patch to do both if that's your thing.
First of all, each allpass nest has a slowmo random modulator on the outer delay loop, with a low amplitude (300 ms, 11 samples).
Second all junctions are provided with a fixed delay plus a randomly modulated delay on each output.
This is all to avoid metallic ringing.
Third, there is a gain control on the inlet of each junction. This is pretty essential in preventing nasty build ups. If you play around with it you'll see that the junction gain is what saves your headphones (and ears).
Finally, there's a cross fade function between the two inlets of each junction. This pretty much destroys the original equation, but can produce some very interesting results.
The latter two are controllable.
You might wanna try adding some filters to the chain or constructing your very own matrix of junctions and nests.
If I spend more time on jVerb, it will be adding delay tuning like Schroom has and maybe optional individual controls for each junction... Dunno.
Post your own mods if you like
Trying to build a basic neural net with ann
Ok. Ive been experimenting for 2 weeks now. It's easy to train the net to recognize a shape from a stream of data. The net will look for "clues" en output something in regards of those clues.
In the following patch, I train a net to recognize a shape N N+1 N N+1 (ex: 1212, 2323, 3434 ... ).
If this shape is recognize, the net output 0 1, in the other case, 1 0.
The training is made with number from 0 to 7.
I train with random exemples of N N+1 N N+1, mixed with totally random string of number.
The training goes well, and after little time the net is perfectly capable of making the différence between the shape and a random string.
I extend with number from 8 to 40, and it apears that the net still can identify the shape, outside of the training field, until something like 29 30 29 30.
I decide to make things a little harder, and i generate N N+1 N R string (r being a random number).
This is still the good shape for him ! not realy for me. I keep going, and try with R N+1 N R.
And after considering the results, I come to the conclusion the net recognize the good shape for any string of three digits like: N N+ 1 R<N+1
Conclusion: training is a fine art !
Patch: AnnTrainer.pd
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
Directional Knob
Hello everyone,
I am trying to figure out how to create a directional knob, and I've found that it's harder than it sounds.
Basically, I have 79 tables. The idea is that as I turn the knob to the right, it turns samples on, as I turn to the left, it turns them off.
As I've continued to ideate about it, I've realized that each number has to be assigned to a number (I am randomizing which tables play). So when I turn the knob to the right and we hit 0, it randomizes and plays sample 55. When I turn to 1, it plays sample 28, 2 is 38, and so on. However, when I turn to the left from 2 to 1, 2 turns off, When I turn from 1 to 0, 1 turns off.
I've been thinking about this for a while now and have been creating a total mess of "moses" objects and "select" objects. I can't seem to figure this out. Any ideas about this would be incredibly helpful. Thanks everyone!
Trying to build a basic neural net with ann
Hi all, I’m wondering if anyone here might have experience using the ann library with Pd (or with neural networks in general)?
I’m experimenting to see if I can train a neural net to output common note sequences within a scale based on chordal input, to simulate basic improvisation patterns. My general training approach uses 2 inputs & 1 output (inputs are current chord & current melody note, output should be a new melody note within the scale). As a simple test, I’ve been training with major scales only (running up 2 octaves).
The tricky part seems to be encoding the musical data in a way that properly trains the network, as well as decoding/interpreting the output. The ann help documentation says input values should be normalized from -1 to 1, so midi note numbers aren’t a good choice for effective training.
I tried several different approaches to encoding:
-scaling note numbers to normalized range from -1 to 1
-converting melody note number to binary (tried both -1/1 and 0/1)
-one-hot encoding chord/melody note data (to form one large vector—12 values representing possible notes of chord, and 30 values for possible melody notes between midi # 58-87, with each position -1 if absent and 1 if present.
Using any of these methods, when I run the network I get output that doesn’t make much sense. The binary/vector output is a list of floats that range from -1 to 1, as expected, but the distribution is all over the place. Sometimes I get something that looks a bit more like a note vector, but not in a way that clearly relates to the sequence I was using during training. So, either my training/encoding methods are wrong, or I’m not interpreting the output correctly.
The documentation examples are very basic, and I couldn’t find much online as far as examples of complex musical training for ann. I also tried out ml-lib, but it seems pretty unstable on Mac (lots of crashing, and also far less documentation for the Pd version than for the Max version).
So, just wanted to see if anyone else has succeeded in doing something along these lines? Thanks in advance for any suggestions!
ArguScore
Here is an updated version
arguscore-update.zip
and a few Purr Data compatibility replacement objects: purr-data-compatible-replacements.zip
A creation argument only object driven system for instant music making;
Objects so far;
Required;
globaltimer - outputs a 10ms bang to drive all objects;
globalsync - resets all objects to zero or start;
audio~ - dac~ catcher~ for all throws~, output level, mute;
Sound Objects
By default sound objects start playing at the bpm of the first argument
basspump - args - bpm note distortion duration
wood - args - bpm note duration
tremsaw - args - bpm note vibrato distortion duration
tremsine - args - bpm note vibrato noise duration
noisy - args - bpm note vcfq duration
kauplus - args - bpm note string-resonation duration
Effect Objects
sqr - args - 16 required(0 or 1) bpm (starts playing by default)
overides sound objects autoplay
2 optional args for cursor offset and pitch if font different
has 16 outlets to send 0 or 1
echo-delay-bpm - args - bpm feedback(0 to 100) level(0 to 100)
echo-delay-ms - args - millisecs feedback(0 to 100) level(0 to 100)
pan-level - args - pan (-100 to 100) level (0 to 100)
autopan - args - width (0 to 100) frequency (* 0.01) level (0 to 100)
fade - args - millisecs to fade-in pecentage of level to drop to (0 to 100) millisecs to fade-out
filter - args - highpass (midi note to frequency) lowpass (midi note to frequency)
(0 to 135 equates to approx 8Hz to 19912Hz)
start-delay-secs - args - seconds (delays the autostart of the connected object)
start-delay-bpm - args - bpm (delays the autostart of the connected object)
stop-delay-secs - args - seconds (outputs a one at the end of the delay which can connect to a globalsync)
stop-delay-bpm - args - bpm (delays the autostart of the connected object)
isolator - sits between two sqr's and sends a signal to start/stop the receiving sqr
seqnotes - four pairs of note & velocity that receive sqr ones to fire a connected sound object
Notes
Can crash Pd when making lots of edits to arguments, particularly while playing, so save often
There is a [declare -path objects] hiding behind the audio~ object
Fixed missing note and velo message for tremsaw
Two more arguscore patches can be open at the same time providing only one patch contains the globaltimer and audio~ objects (see arguscore-2.pd and arguscore-2-b.pd)
new objects
kauplus, autopan, fade, filter, stop-delay-secs, stop-delay-bpm;
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
Load Libraries, plug-ins
@Balwyn I've follow your steps but still nothing this is what i got in the console:
'pd-gui' connecting to 'pd' on localhost 5400 ...
------------------ done with main ----------------------
Default font: DejaVu Sans Mono
tried ./Gem.m_i386 and failed
tried ./Gem.dll and failed
tried ./Gem/Gem.m_i386 and failed
tried ./Gem/Gem.dll and failed
tried ./Gem.pd and failed
tried ./Gem.pat and failed
tried ./Gem/Gem.pd and failed
tried C:/Users/Jose/pd-externals/Gem.m_i386 and failed
tried C:/Users/Jose/pd-externals/Gem.dll and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.m_i386 and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.dll and succeeded
C:\Users\Jose\pd-externals\Gem\Gem.dll: couldn't load
tried C:/Users/Jose/pd-externals/Gem.pd and failed
tried C:/Users/Jose/pd-externals/Gem.pat and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.pd and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.m_i386 and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.dll and succeeded
C:\Users\Jose\pd-externals\Gem\Gem.dll: couldn't load
tried C:/Users/Jose/pd-externals/Gem/Gem.pd and failed
tried C:/Users/Jose/pd-externals/Gem/Gem.pat and failed
tried C:/Users/Jose/pd-externals/Gem/Gem/Gem.pd and failed
Gem: can't load library
Loading plugin: C:/Program Files (x86)/Pd/tcl/pd_deken.tcl
The Pd window filtered 26 lines
The Pd window filtered 27 lines