what would this be?
SirSickSik Contributions
yes, that's in there too because it's "one of the ways of doing it", but.. what do these knobs do?
...I started selling some 'max for live' devices via gumroad 1.5 years ago and actually made about 1k$ without much advertising hassle...maybe thats an option (although not for axo stuff maybe)
Some advertising
https://gumroad.com/rbrt
NEW MODULE
ENV
"env2lfo"
Combination of a 3 mode envelope and an internally modulated LFO.
envelopes:
0=attack/release envelope.
1=attack/decay/sustain/release envelope
2=attack/hold high/release
waveforms:
0=sine
1=tri
2=saw
3=ramp
4=square
(all non-alliased)
combo-modes:
0=select envelope, AM controls maximum level
1=select LFO, AM controls maximum level
2=AM morphs between envelope and LFO with middle position being an amplitude modulation of envelope and LFO.
3=AM morphs between envelope and LFO
4=envelope, AM sums/subtracts amplitude modulated LFO
invAM inverts the envelope (high->low,low->high) before doing AM with the LFO.
invFM inverts the envelope (high->low,low->high) before doing FM with the LFO.
LFO has both linear as exponential FM as well as PM by the envelope.
I remember my old T.C. Electronics M-One had a chorus which had a "golden ratio" setting. Its not something that you come across so often. May I ask, out of curiousity, what your use for this object is? Interesting .......
haven't really done anything with it to be honest haha just had the idea to make it, so I have it ready when I need it for anything. Thinking about some sequencer or something
NEW MODULE
OSC
"2DdualOsc"
Variation on the 2DtableMorph oscillator, but with two internal phase-generators, sync, cross-FM and AM. There are mix controls for mixing between the 2 oscillators as well as mixing between "fixed" waveform and a morphing waveform, where you can continously morph from one table-waveform to another.
This oscillator provides some serious spectral madness.
Use guitarTable or waveformGenerator modules to provide it with a wavetable.
NEW MODULE
RAND
"qSmRnd"
Quantized smooth randomiser
Intended for use with the 1D/2D/3D wavetable oscillators (mix inputs)
-division input divides the total range into a stepsize (total/div).
-when a trigger is received, the generated random value selects between adding or subtracting the stepsize from the current value.
-this then goes through a filter (krate mostfilter) to smooth the signal.
-the rate of the filter can be set to the same rate as the trigger input, allowing a smooth continuous fade when the stepdirection stays the same for up-following triggers. Or set the rate a bit higher for a smooth, but stepped, signal.
I still can not get any patch containing syncKing to go live
edit: trashing content of the documents>axoloti>build folder did the trick
(solusion from this thread)
NEW MODULE
MATH
"curveQnt"
Quantized curvings, to be used with the morphing table oscillators (connect "div" inlet to their "div" outputs)
Quantizes the 0-64 range into equal parts and creates a curve between the quantification points.
This is controlled by the "div" input.
Curve is created by the exp and mod controls.
negative exp=exponential
positive exp=inverse exponential
negative mod= inverse s-curve
positive mod= s-curve.
mod is actually a modulation of the exp input by the signal itself, fading from exponential to inverse exponential (or the other way around) and added to the exp-control.
SO:
When you want an (inverse) exponential curve, only use the exp-control
When you want a S-curve, first dial in the mod-control and use the exp-control to offset the center of the s-curve.
The exp and mod controls are being updated only when the signal goes over to a new part of the quantification.
NEW MODULES
SHAPE
"crvShape"
almost the same module as the Ssquare module (DIST/) and the crvQnt (above) but a changed the level control with a DC-offset control and is used for phase-distortion.
"sinePeak"
adds a "sined peak" to the phase (incoming signal).
Peak is a triangle converted by an exponential curve (stackable for tighter peak) and then goes through a sine-shaper to round of the peak.
offset: controls the position of the peak
strength: controls the tightness of the peak (the higher, the thinner)
level: controls the hight of the peak.
"tableShape"
Interpolated wavetable shaper.
Turns a phase (phazor oscillator, positive non-bandlimited saw-wave) into a wave using a morphable wavetable.
"mix" morphs through the available waveforms in the wavetable
"start" is the "base" waveform, where it will start when "mix" is at minimum or maximum.
"step" is the stepsize for selecting from the waveforms while morphing with the "mix". Last step is always the same as the first step, so you could use a saw to morph through the waveforms continuously in one direction.
"harmonic" multiplies the incoming phase to generate higher harmonic waveforms based on root phase.
"quant" sets the amount of waveforms that the mix will morph through. At 64, it will morph back to the "base" waveform.
This module pairs very VERY well with the other shape modules for lots of tonal control!
NEW MODULE
ENV
"ADSRcrv2"
a bit different take on the curved ADSR.
Attack and decay time are taken together as the "attack" time and the slope controls the ratio between the two times. So the time to reach sustain level will always be the attack-time, whatever the slope.
Next to this a S-curve control is added which self-modulates the curve-parameters to create S-curves for all stages, which can still be offset with the individual curve-parameters.
This is one smooth slope-generator
let's morph anything with just a single control
In the line of the wavetable morph algorithm in my wavetable oscillators, this new module allows to simultanuously morph 8 control channels between a set of presets or random values saved into a table.
ps.. just noticed the notion of "wavetable" in the text below... well, I took the 1D-table oscillator as a start.. so.. woops.. too lazy and unwilling to change it.. XD
NEW MODULE
PATT
"qRndMorph"
Interpolated random shaper.
Turns a phase (phazor oscillator/LFO/positive knob) into an multi-channel animation using a morphable random table.
Usable for fast one-modulation/knob animation of 8 different channels.
"mix" morphs through the available waveforms in the wavetable
"start" is the "base" waveform, where it will start when "mix" is at minimum or maximum.
"step" is the stepsize for selecting from the random table while morphing with the "mix". Last step is always the same as the first step, so you could use a saw to morph through the random values continuously in one direction.
"quant" sets the amount of waveforms that the mix will morph through. At 64, it will morph back to the "base" waveform.
"rnd" only randomises the table positions that aren't currently read out (which is always 2 positions). So when you press "rnd", it won't suddenly jump to another random value.
"new" only randomises the table positions that are currently read out (which is always 2 positions). So when you press "new", the outputs suddenly jump to new random values, while leaving the unused positions the same.
The current "mostly" selected table position can also be altered manually.
"channel" selects which output you alter.
Whenever the CV-parameter changes, it updates the value of the current channel at the closest current table-position.
For easy stepping through all positions, set "mix" to zero and use the "next" button to step through the mix-positions. Note though, that this will follow the "quant" and "step" settings! But this does also allow to make several different "mixes" and using the start-selector as a preset-change.
Each output has it's own dedicated min/max settings, available as knobs, so these could be altered by midi if you'ld need to be able to do that.
one extra note... if used well, a row of these modules could tweak your whole synthesizer and allow you to morph from any preset to any other or to randomise the &( out of it.
for example, you could use it to animate the parameters of my curved adsr's. One single knob to change 8 parameters at the same time (presets or randomised). You could also send the same knob to the mix on the table-oscillator to make the waveform change together with the envelope.
Hey @SirSickSik
I think that most of the objects you do are really super great Thanks, mate
About your wavetable creator and all the objects that plays the created wavetables I'd like to add that I think it would be really great to make a smaller version or maybe a version that is flexible. I think using 1048576 samples is really a lot. WOuld be super great with a version where you could change the size or at least a smaller version. Then you can, in a patch, use sd-ram for other things beside a wavetable. IMO it just uses too much sd-ram for a wavetable.
What do you think?
try out the "waveformGenerator" and "guitarTable" (together in one patch) and my new wavetable oscillators (1D/2D/3D).
These modules allow you to set the waveform-size yourself together with the amount of waveforms you want. atm, I'm using it to create 64 waveforms of 8192-samples each, but of course, you could also make each waveform smaller, but I like the precision as I also use it in sub-frequencies together with the shapers.
The two generators can be used next to each other. The waveformGenerator has a table-allocator in it. You could just add the guitarTable next to it to alter any of it's waveforms manually.
Also, I could make a change to the bits, which is currently set to 16 bit and which would reduce the size to half the current size.
Next to this, the modules I uploaded yesterday fit really nice with the new wavetable oscillators, as you could now use 1 single control to morph through all "presets" of all the modules you're using.
automation DAW-style! (well, kinda..within the bounds of the axoloti..)
NEW MODULE
PATT
"autoDraw"
Automation "drawing" module. Could also be used to make custom waveforms (read out the table with an interpolated table-read module).
Please read the below well:
The first 3 knobs, "readout", "startPos" and "width" are used to set the start and end points of the slope you are creating.
-readout: sets the startpoint anywhere in the whole array (big position offset).
-startpoint: sets the startpoint inside the display (small position offset)
-width: this sets the length of the slope/value-change. This value can go outside of the display for longer slopes/changes!
The two next knobs are used to set the start and end level, followed by two toggle buttons that control their response. In "normal" response, after hitting the "do" button, the start-level knob will change to the value of the end-level knob, so there's always a perfect fit to the next stage.
-startLvl: sets the level from which the change starts (readout+start).
-endLvl: sets the level of the end position (start+readout+width).
-follow: when this switch is on, changing the readout/start/width controls will change the level-knobs to the level of the current read-positions. This is very useful to smooth out a recording or force the recorded changes to a certain beat-size.
-keep: when on, keeps the current levels the same after hitting the "do" button. This way you can easily repeat a certain sawwave-like slope.
The next 4 controls are for setting the curve of the change.
-curve: creates an exponential or inverse-exponential slope from start to end point.
-Scrv: applies a S-curve to the change. the "curve" control changes it's mid-point.
-stack: stack multiple exponential functions to create steeper (s-)curves.
-mode: when mode is on, the "curve" parameter value is inverted after each "do" (see next part). Sometimes you'll notice that this parameter "should" invert after every "do" to create nicer automations.
The last controls are "menu/setting" controls.
-do: when "do" goes high, it copies the slope that you've created into the internal table, resets the start-level and end-level controls depending on whether the "follow" or "keep" are used and resets the start-position to the last end-position. So there's no need to adjust the start/readout positions every time. Note, that the readout-inlet is not used for the edit-position! So even while "track" is on, you can still just go ahead editting the automation normally.
-rec: records the "level" inlet into the current readout position (readout position is also controlled by the readout-inlet!). This way you could add a manual knob-change into your automation. Then use the editor to "sync" the changes to a certain "beat-length". As long as the "width" is set to a power-of-two value, it will be in sync with a 4/4 beat (as long as the LFO connected to the readout is in-sync to host tempo).
-track: when track is on, the display will follow the readout-inlet. Though, you can still see your "editting". Note that when hitting "do", it will not use the readout-inlet to copy the curve into the table. The readout-inlet is only used for reading out the table, putting it into the display and sending it to the module's output.
-edit: when on, it shows the current "edit" slope/curve on the display, which would be applied if you'ld hit "do".
Of course, your automation can be saved&loaded.
Connect a string-object for the filename and hit "save" to save.. and "load" to ehm... what was it..?
Thank you for the input. I will take a look at them. I all ready experimentet with a lot of your objects, but it is hard to keep up with the pace you spit them out Thank you for that
lately I'm trying to focus to "wrap it all up" to a sweet synthesizer engine. I'm getting very close to that
especially the latest modules overcome some "difficulties" of having just a limited set of controls, but still wanting to be able to morph between lots of settings at the same time.
at the moment I hooked up a korg nanokontrol and it's working awesomely. I guess, if you hook up the analogue inputs, you might also get a bit more analogue "wiggle" in the mix-parameters (mix input of the table oscs and control morphers, which would be modulated by the background noise) giving it a bit more edge and a way better fine-tuning between presets then midi.