I think that this patch fits the subject better than me making a new post to display my accidental discovery here, as there is really nothing advanced about it, but I am still sorta thrilled with the happy accident this turned into.
This is what I love about Audulus - one minute you’re messing about, just picking pieces that seem like they could make some good vibes together, and suddenly you don’t know how you ended up with a super dope rhythmic subtractive synth.
My question is this though - how can I take what I have created and expand or add items to it to make it more of a complete sound? I like where I have gotten so far, but I am sorta stumped now about where to go next without ruining the vibe I have created completely by mistake while focusing on too many things at once lol. Any thoughts? Subtractive Rhythms.audulus (27.4 KB)
After a little testing, it looks like the Pulse patch can benefit from inserting a Change Detector on the input if the pulse will be short AND triggered by something like a trigger press. Otherwise if the button press exceeds the duration of the pulse, the pulse stays on.
I am stumped. I have a dual-VCO subpatch (built on top of the library’s Basic VCO) that has a fine-tuning knob and coarse tuning knob for each VCO. I want to have a reset button (a trigger) that with one trigger press the knobs will be set back to their default values.
Is this possible?
No not really. We don’t have presets yet but that would essentially be something you could do with presets.
Maybe this should be in the feature request megathread. Separate from the whole presets issue (which hopefully will be implemented), it seems like it would be very valuable to be able to programmatically send a value to a knob/control.
I mean you could do this now but it would involve something using a change detector and sample and hold switching between the default and whatever the knobs are set to. Seems like it would add a lot of CPU when you could just enter the value of 0.5 on fine tune (octave control is stepped so doesn’t need to be exact). Perhaps in the future we’d add a notched knob?
…so when you hit a detent your VR glove will deliver a small shock!
A couple of separate issues:
1 – You say that you could to this now: how? I am probably overlooking something, but I don’t see a way to send a value to a knob that will set its ‘position’ without short-circuiting the ability to manually turn the knob? I can achieve the functionality of resetting the value that a knob sends to easily enough (i.e. I can put together logic so that I can send the ‘reset’ information to the VCO so that it retunes – but the tuning knob won’t reflect that change).
2 – The underlying issue here, I guess, is less about this particular use-case than the general issue that it would be highly desirable for Audulus (4 since it seems that 3 doesn’t allow it) to allow a value to be sent to a knob. What would probably make the most sense is for knobs to be ‘voltage controllable’ – i.e. have an input that does nothing but set the knob value. This is something that is frequently desirable and so it seems like a low-CPU way of accomplishing it would be desirable.
You wouldn’t be able to reset the knob, but you’d instead switch between the knob and another value using a set-reset latch. When you reset, it would go to the default value, held by a value node, and when you turn the knob, it would sense the knob turning with a change detector and switch to looking at the knob until it’s reset again. The problem with this would be that the difference between the default and the knob position currently could cause a sudden jump in value, which might be undesireable in some circumstances.
This might be an interesting way of taking care of presets without needing to do a whole lot of extra coding!
I’ve been hacking away at my Buchaudulus project and realized that I wanted a convenient way to easily generate semi-random numbers for self-modifying patches.
I realized tonight that splines might be the way to go. Using a spline to remap a true random value. It makes it easy to whip up custom remappings. Does this seem reasonable? Or am I missing some obvious easy way to do it with math and simple nodes?
If you do it that way, the advantage is being able to pick out portions that are more likely, like at 1/3 you could have a peak, and at 2/3s another peak. The way I did it in the Sample & Hold module here with the distribution control seems more like what you’re doing with the spline here. You can adjust the proability of more lower or more higher values. Just look inside and you can see how it’s done.
Sample Hold.audulus (11.9 KB)
Thanks Mark. Is there a post somewhere that walks through the signal flow/math/logic?
I am pretty green and have been having trouble figuring out how the example module works—particularly in terms of weighting the probability.
As I work on my library of little utilities/patches which might be of interest to others but might also be reinventing better wheels, where should I post? Is it ok to post a thread in Building even if the patches are super simple or perhaps not actually great ways to do things?
The sorts of things are pretty elementary but might be of use to other newbs.
Examples are things like:
- what I skill a “skip gate”: that outputs one trigger for every X triggers that come in. There are two flavors. One just takes a gate and sends out a gate. The other takes a gate and signal and sends out a gate and the most recent signal value when the output is triggered.
- spline-weighted random value generator - the patch I posted above that uses a spline to remap randomly generated values so that you can give preference to the values generated and easily customize them
- pre-built signal routers - like railroad switches. probably not useful for old-hands but I need these so often that I found it nice to have some pre-built.
Is it ok to start topics in Building for things this simple?
It’s pretty simple - what it does is bend the distribution curve. So instead of a straight line from 0 to 1, it bends the curve up or down. If it bends it up, more numbers come out closer to 1, and if it bends it down, more numbers come out closer to 0. If it’s straight, numbers between 0 and 1 have an equal chance of being picked.
It’s basically doing this:
The 1-x for the shape knob just reverses the way the shape knob responds. The pow(x,y) is like x^y, so
x^(2^3) is one extreme and
x^(2^-3) is the other extreme.
x^(2^0) (when the knob is in the middle) is like
x^1 which is to say what passes through is unaffected.
Yes of course! That’s what it’s there for
Thanks, Mark. It helped me understand it to run a phasor output (divided by 2pi) through that section of the module to visualize how it works.
I’ll create a topic in build in the coming week or so to carry on discussion and sharing of my uber-simple (but hopefully useful, too) probability elements.
Couple of questions in anticipation of that:
- is there a downside to the spline method I used? It is super useful for the sort of situation I needed it for (to cluster output around a particular value while occasionally producing values in a couple of other ranges). It also seems like it might be computationally efficient since it is essentially just using a lookup table to map the random values.
- what would be a simple non-spline method to cluster output values around a particular value? Let’s say, you wanted to predominantly generate random numbers clustered around 0.2 (while occasionally generating numbers outside that range)?
The only downside is that if you want it to do what the knob does, it’s an inefficient way of doing it from a workflow perspective. The good thing is it’s more flexible and you can put peaks wherever you want.
Good question - probably something more for our math whizzes like @stschoen, but probably some kind of function that creates an inverted parabola shape.
After thinking about your question and doing some research, I came up with an implementation of the Box-Muller algorithm which will generate a standard distribution (bell curve) using a given mean and standard deviation.
The patch looks like this:
Not the simplest circuit, but it was the best I could find. (Hooray for Google
). I posted the completed module here: Normal Distribution (Bell Curve)
Thanks, Steve. Elegant solution.
As part of my ‘Buchaudulus’ project, I am developing some simple modules to map notes (via their CV) to randomized positions in space.
I am using APan (a clamped CV controlling the knob) for pan. I noticed that I am getting a lot of little transient clicks when the APan module is in use. Putting a slew in front of APan helps.
I am wondering if anyone else has run into a similar issue.
Is it possible to send more then two audio channels out of Audulus (on iOS)?