Tiar / SmashedTransistors Contributions


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


#22

New oscillator: SevenSteps

See the help patch in Help -> Library -> Community -> tiar -> osc -> Steps -> SevenSteps

It is a seven step oscillator. Much like the Six Step oscillator, you can choose the amplitude of each step.

Note that the harmonics multiple of 7 have zero amplitude. Which is an interesting feature in some cases.


#23

oscillator: SelfPM

The community/tiar/osc/SelfPM object is a very low CPU bandlimited oscillator capable of generating filtered saw-ish and square-ish waveforms.

It has the classical pitch inlet and parameter.

The fbMod inlet is a positive input.
When the fbMod varies in the range [0 64], the effective fb varies in the range [fb0 fb1].

Negative fb produce squarish waveforms.
Positive fb produve sawish waveforms.

The patch tiar/synths/SelPM.axp is a simple mono synth (4% CPU) that includes an adsr amplitude envelope and an adsr fb control envelope.
Furthermore, fb0 is modulated by the aftertouch:

You can tweak the envelopes and fb0 and fb1 to get an idea of its sound range.


TX81Z algorithms
#24

Note:
I added a Table of Contents / summary at the beginning of this topic.


#25

New oscillator: 12StepsBLISync

Try the help patch in menu: Help -> Library -> Community -> tiar -> osc -> wf12 -> 12stepsBLISync

BLI anti-aliased and compatible with wf_12Steps, wf_12Harm and wf_12Bank as source of waveforms.

It sounds brighter than O2_12StepsSync and is easier to use as it does not need an O2_to_SR_59 object.


#26

New wf_12 objects: wf_12Chorus and wf_12Display

Try the help patch in menu: Help -> Library -> Community -> tiar -> osc -> wf12 -> wf_12Chorus

Note: wf_12 signals are not actual audio signals, they are packed steppy waveform signals to be used in tiar/osc/ 12Steps series of oscillators.

wf_12Display displays a 12 step waveform.

wf_12Chorus can be used for pseudo chorus effects. It does not process an audio signal, it modulates wf_12 waveform before they get used by a compatible oscillator.

Each of the 12 steps are - more or less deeply - modulated by its own LFO.
Those 12 LFOs have different oscillation rates.

  • rateA and rateB define the range of rate modulation used
  • depthA and depthB define the range of depth modulation.

#27

An hint of imperfection: SixStepsBLIV1 and SixStepsBLIV2

Try the help patch in Help -> Library -> Community -> tiar -> osc -> Steps -> SixStepsBLIV2

The SixSteps oscillators waveform is defined by six parameters, the six steps.
This allows to recreate some waveforms of early digital synths with the distinctive flavor of the very limited number of steps.

SixStepsBLIV1 and SixStepsBLIV2 add imperfection to these steps. They are not equal. Some are slightly longer or shorter than the others.

The resulting sound differs from the SixSteps oscillator especially when you play low notes. The sound can be more "brassy" and less "squarish".

The help patch has a toggle switch that helps to compare the ordinary SixSteps form the imperfect Variant.