thanks for this, really nice!
Tiar / SmashedTransistors Contributions
I updated the Dark Strings Patch:
Library/community/tiar/strings/052-Synth-Strings-2-tiar.axp
- code optimisations (thanks to @johannes )
- corrected an issue with the envelope
- enhanced chorus
- After touch control (sort of brilliance control)
- The modulation wheel introduces octave doubling (as before).
A LFO with tri-phased sine outputs.
It is useful for smooth chorus effects.
A Very low frequency oscillator with tri-phased outputs.
The parameter adjusts the cycle up to 64 seconds.
Useful for controlling slow stereo phaser/filter/flanger effects.
Ooops, i forgot to post about these two objects:
tiar/dist/DPHardClip is a hardclipper
- first order Differentiated Polynomial anti aliasing.
- Input Gain from 0 to 2 (InGain = 32 => unity gain)
- Output Gain from 0 to 2 (OutGain = 32 => unity gain)
- no overshooting
tiar/dist/DPHardClip is a softclipper
- first order Differentiated Polynomial anti aliasing.
- Input Gain from 0 to 2 (InGain = 32 => unity gain)
- Output Gain from 0 to 2 (OutGain = 32 => unity gain)
- no overshooting
Both can be used in distortion effects.
As they do not overshoot, they can be used as output/safeguard saturators.
A 3% CPU anti aliased Sawtooth oscillator:
tiar/osc/DP2Saw uses second order differentiation of a second order pre-integrated sawtooth.
A 4% CPU anti aliased Pulse Width Modulated oscillator:
internally, tiar/osc/DP2PWM uses a pair of de-phased DP2Saw
Two new DP2 anti aliased oscillators: DP2SawPls and DP2Pulsaw.
Both mimic some waveforms found in old String Machines (Eminent organ and other Solinas).
DP2SawPls is a Saw Pulse.
It's spectrum is much similar to the spectrum of an ordinary sawtooth excepted that the first harmonics are stronger.
DP2Pulsaw is more "pulsy" and the first 5 harmonics are strong.
An example Bass patch that uses it:
Reso-Pulsy.axp (3.4 KB)
Here is a DP anti aliased "ring modulator" i.e. multiplier:
Compared to the usual math/* multiplier, it limits aliasing, so, it can be used when multiplying signals with lots of harmonics induces aliasing.
Here is an example patch:
HarpsyRing.axp (8.3 KB)
Oversampling / Dowsampling objects
library/community/tiar/guitar/031-Distortion-Guitar-tiar
is still in dev but i think that some objects can be of interest.
This patches uses some oversampling / downsampling objects i'm currently developping:
- SR_to_O2_6 is an interpolator (upsampler) its output is made of two inverleaved outlets (y1 y0). Those are x2 oversampled.
The modules O2DPSoftClip and O2_multimode_svf_m are Oversampled versions of the standards modules, they have x2 oversampled inlets and outlets pairs.
O2_to_SR_59 is a decimator (downsampler)
The interpolator and decimators are based on FIRs and are somewhat optimised (coefficients symmetry and zero coefficients).
Really interesting oscillators. Look forward to test them. Any chance that there will be a sine version of the anti aliased oscillators?
Also a phase reset inlet for all of them would be really great
Anyway, thanks for sharing
Hi @jaffasplaffa
The last post was about oversampling and downsampling of a saturation and filter. @jaffasplaffa I think you are referring to previous posts ?
There is no real need to anti alias sine waves.
The DPW anti aliasing method I use is quite efficient in some cases (oscillators and distortion) but it is not really compatible with phase reset/hard sync. (it can be added - with an xfade method to avoid aliasing - but it will cost CPU).
Blep algorithms are more efficient in the case of Hard sync (low aliasing and low cpu).
I think that many of the new factory oscillators from Mutable Instruments available in factory/osc/brds use this method.
New oscillator : SixSteps
The waveform of the SixSteps oscillator in community/tiar/osc/Steps is controlled by six parameters: the six steps levels.
It allows to generate waveforms reminiscent of old pseudo digital synths (such as the RMI and it's digit harmonics based on Walsh functions).
Note: as it is defined by 6 steps, harmonics multiple of 6 have a 0 level. This contributes to its specific sound. I'll add variants with 5 and 7 steps.
It is anti aliased with an algorithm that is based on both BLEPs and DPWs... i think it is quite original and efficient with this kind of waveforms.
(the steppy signal goes through a low pass filter, when a transient occurs the state variable of the filter is updated taking account of the subsample time of the transient - much like BLEPs -... at the end the signal is high passed with a differentiator - like DPWs...)
It has an accompanying help patch file you can play with.
The patch library/community/tiar/synths/EvolPad is more complex and uses 3 SixSteps oscillators on each of its 6 voices + LFO modulations of some levels to generate an evolving sound.
UPDATE:
Added SixStepsBLI
The object SixStepsBLI functions exactly the same way as SixSteps but sounds slightly brighter.
Technical details:
It uses another anti aliasing method: integration of band limited impulses.The trick here is the use of integers that allows exact summations in the output integrator. The bli table in tiar_bli_8_64.h consists in 64 8 point bli. Each of the 64 correspond to a 1/64 subsample offset. The sum of each offset BLI is exactly 512 so that adding and substracting BLIs will lead to the same result whatever the subsample offsets are.
UPDATE:
The community/tiar/osc/ SixSteps oscillator now uses a second order "bleppy DPW" anti-aliasing algorithm.
It is still CPU effective and the aliasing is even lower.
Now... i'll try to add a sort of hard sync..
SixStepsSync
is a modified version of the SixSteps oscillator.
It includes both master osc and slave osc.
Here is a classic example of sound it can generate: library/community/tiar/synths/ClassicSync.axp
It is still in dev but I think it is stable and glitchless.
UPDATE
SixStepsBLISync
Try the help patch in Help -> Library -> Community -> tiar -> osc -> Steps -> SixStepsBLISync
It is a different version (same usage) with a brighter sound.
It is anti aliased with the Band Limited Impulse method.
UPDATE Apr 5: improved AA at very high frequencies (sub sample management of quasi coincident slave and master resets).
New oscillator: O2_12StepsSync
See the help patch in menu: Help -> Library -> Community -> tiar -> osc -> wf12 -> O2_12stepsSync
This is an evolution of the preceding SixSteps oscillator:
- it have a built-in Master oscillator for sync sounds.
- 12 steps instead of 6 (use tiar/osc/wf_12Steps on waveform inlet)
- oversampling by 2 (interleaved oversampled output: use tiar/conv/O2_to_SR_59 on the output).
It sounds brighter than the SixSteps oscillator.
about tiar/osc/wf12/wf_12Steps
wf_12Steps is a companion object to O2_12StepsSync.
Even if its outlet is "audio" it is not really an audio outlet. The output is consist in the 12 packed values of the sliders.
I firstly created it because of layout issues with vertical sliders. I thought, let's have something that looks like the sel objects. The first version had 12 krate outlet that have to be connected to corresponding 12 k rate inlet on the O2_12stepsSync. It was not very practical. That's the first reason I use packed values in a "audio" signals.
Note that even if it does not generate an actual audio rate signal it can be used with some audio rate objects such as xfade and mix...
about O2_to_SR_59
The output of O2_12stepsSync consists in two interleaved audio rate outlets: y1 and y0 allowing to use a 96kHz sample rate.
O2_to_SR_59 uses a 59 tap decimation filter to come back to the standard 48 kHz
UPDATE:
tiar/osc/wf12/wf_12Harm
see menu: Help->Library->community->tiar->osc -> wf12 -> wf_12Harm
wf_12Harm is a companion object to O2_12StepsSync quite similar to wf_12Steps.
It generates a 12 step waveform defined by the amplitudes of 6 harmonics.
UPDATE:
tiar/osc/wf12/wf_12Bank
see menu: Help->Library->community->tiar->osc -> wf12->wf_12Bank
wf_12Bank is a companion object to O2_12StepsSync quite similar to wf_12Steps and wf_12Harm.
It generates a waveform selected by an integer inlet.
16 waveforms are available so far:
- 0 sin
- 1 saw
- 2 sqr
- 3 sqr33
- 4 sqr25
- 5 half sin
- 6 R string1
- 7 R string2
- 8 S string1
- 9 S string2
- 10 squizor
- 11 thirdy
- 12 jigsaw
- 13 res
- 14 4321
- 15 Randy
General Midi collaborative library
Was just trying out the oversampled saw oscillator. The only difference I notice is that it is an octave higher than the other oscillator and it is also a lot louder.
Should it be connected to other objects for the oversampling ot work proberly?
ahh thats why
Thanks
@lokki WHich one should I use? I dont seem to find any that match. Also on the picture @SmashedTransistors has posted he has not used any downsampling. ALso in the help files, no downsampling. BUT the pitch of for example the tiar/osc/DP2SawPls is, without any downsampling an octave higher.
But it doesnt sound good. A little bit more organic. the highs are much more pleasant, even just as i am testing it now, with no downsampling
ah sorry, if he does not use a downsampler in his help file, then i guess the downsampling is done internally.
Hi @jaffasplaffa and @lokki,
I plead guilty, some objects were an octave too high !!
I updated D2PWM, D2Pulsaw D2PSaw D2SawPls so that they are tuned at 329.6Hz.
These are not oversampled generators, they use 2nd order Differentiation ( "D2" stands for Diff 2).
I'm very sorry for the inconvenience !!