Tiar / SmashedTransistors Contributions


#2

thanks for this, really nice!


#3

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).

#4

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.


#5

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.


#6

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


#7

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)


#8

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)


#9

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).


#10

@SmashedTransistors

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 :wink:

Anyway, thanks for sharing :wink:


#11

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.


#12

@SmashedTransistors

Thanks for the input :slight_smile: Ill take a look at some of the MI objects :slight_smile:


#13

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.

:microscope: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.


#14

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..


#15

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).


#16

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
#17

Hey @SmashedTransistors

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?


#18

you have to down sample it with another object from tiar's set..


#19

ahh thats why :slight_smile:

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


#20

ah sorry, if he does not use a downsampler in his help file, then i guess the downsampling is done internally.


#21

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 !!