Fathom Development Thread (Fathom vs Other Synths)

VST, AU, AAX, etc. plug-in Virtual Instruments discussion
FathomSynth
KVRian
1376 posts since 25 Mar, 2017

Post Sat Mar 14, 2020 7:49 am

Yes, it’s possible. Gamers understand this. It is the fact that a Video card is really just a massive parallel processor. It is perfectly geared toward audio as well as video. You can run thousands of threads in parallel with very simple code. Which is exactly what you need to sum a thousand partials every sample to do frequency domain modulation in real time every sample.

You have some great ideas. Running FM on individual harmonics would be interesting, don’t think anyone has ever tried that.

Your idea of sweeping a shape through the spectrum is exactly what I was talking about above. It would be very easy to do with GPU processing. Also drawing the spectrum is a good idea.

Great article on additive synthesis.

Kwurqx
KVRian
587 posts since 15 Jun, 2017

Post Sat Mar 14, 2020 10:20 am

Using additive synthesis you could shape the spectrum, following any modulation source and/or shape (that itself could be modulated), anywhere in the spectrum, any "bandwidth", any amount. Generating or emulating all sorts of oscillator (spectral) properties/behavior.

Focussing more on manipulating spectra to act as (or emulate specific) "oscillators":

- You could use the additive engine to introduce very controllable instability at the harmonic level (both amplitude and phase), which could have its effect anywhere at any amount you want in the spectrum. Combine with stochastics to get that "analog" feel. Or apply it more predictably for creative effects.

- You could achieve very controllable "wavetable" functionality using additive synthesis. Obviously by introducing modulation of amplitude in the time domain (e.g. via envelope or LFO) as in "common" additive/spectral synthesis. But you could also have the spectrum be modulated/changed by any other (non-time domain) modulation source (e.g. key track). Especially when using/applying the before mentioned modulating shapes (instead of modulating individual harmonic amplitudes).

- A long time ago I already suggested to introduce wavetables consisting of spectra (instead of single waveshapes). But you could also modulate the modulation shapes/curves to define transition/change from one spectrum to another.

Just pondering...

Kwurqx
KVRian
587 posts since 15 Jun, 2017

Post Sat Mar 14, 2020 10:34 am

And about Phase Modulation.

That is not just interesting at audiorates. Just having control over phase within a single cycle and applying that to two or more oscilators will produces comb filter effects. Also enabling control over spectral changes in the summed signal.
Last edited by Kwurqx on Sat Mar 14, 2020 11:14 am, edited 1 time in total.

Kwurqx
KVRian
587 posts since 15 Jun, 2017

Post Sat Mar 14, 2020 10:40 am

And about Amplitude Modulation

Considering 2 spectrums (same or different):

Changing polarity of individual harmonics at audiorates will produce amplitude modulation at the harmonic level, wherever harmonics are present in both signals (at same or different levels).

FathomSynth
KVRian
1376 posts since 25 Mar, 2017

Post Sat Mar 14, 2020 10:41 am

Exactly. GPU processing opens up a universe of alias free additive synthesis.

Because all harmonics can be summed in the video card every sample.

That is why it is so high on my priority list and I plan on doing it immediately after the Intel AVX release.

Also, the new metamorphic oscillator will have audio rate phase modulation, that is already working.

Kwurqx
KVRian
587 posts since 15 Jun, 2017

Post Sat Mar 14, 2020 11:11 am

What if you have a spectrum and do logical operations on the harmonics amplitude "gates" (or polarity/phase).

You could do logical operations like AND, OR, XOR against modulator values (used as series of bits).

If you stick to the minimally needed amount of bits and always have MSB to the left, then lower number will need less bits and would only effect the corresponding lower harmonics (and switch them on or off according to the logical operation (e.g. XOR).

Of course you could also have more "bits" (e.g. as many as you have harmonics). You could also shift left or shift right.
Switching harmonics on or off according to the logical operation (e.g. AND).

Linear increasing of ordinal values (e.g. from zero up) will have increasing chances of numbers of binary 1. Also, increasing the values will have a specific "shifting" bit pattern (0, 1, 10, 11, 001, 010, 011, 100 etcetera). Reverse for declining numbers.

Off course you could also have a second spectrum and view those harmonics gate values (0/1) as the series of bits. And use those for logical operations against another spectrum.

Just pondering...

FathomSynth
KVRian
1376 posts since 25 Mar, 2017

Post Sat Mar 14, 2020 3:15 pm

If we go that far I would be more inclined to create a spectral scripting language which people could use to create their own oscillators.

We would need to form a complete list of spectral operations that users would need.

User avatar
] Peter:H [
KVRian
1124 posts since 22 Sep, 2016

Post Sun Mar 15, 2020 1:50 am

FathomSynth wrote:
Tue Mar 10, 2020 5:30 pm

Phase 3 Bezier Point XY Modulation

This will allow modulation of both the width and height of Bezier segments without modulating the shape. This will apply to both envelope and waveform segments. This is also relatively easy to implement since the shape of the curve does not need to be changed only the time value of the width and the amplitude of the height.

Phase 4 Bezier Point Free Modulation

In this technique all parameters of the Bezier curve can be modulated in real time including the shape of the curve. This is more complex since it runs up against real time constraints since the shape of the entire Bezier curve must be recalculated as it is modulated and this can not be done per sample.
Bezier Point Modulation ... you are killing it. I like to just follow this thread for it's nerdyness. I like it.

Talking about nerdyness, I ask ... can we have a modulatable math-formula Oscillator? Like along a given variable x (rang 0,1 representing one osc cycle) I can declare several variables which could be used in a expression like: "sin(b*x*2*pi)". The "variable" in this example would be "b" ... then I would modulate b :-) I know this particular example is pretty useless because b is here like the standard detuning.

Meldaproduktion has a nice Expression-Evaluator which can be used in OSCs, LFOS and that like...
And speaking of nerds ... from times to times I get nerdy myself: Check out my post where I figure out what I can do with the expression avaluator: viewtopic.php?f=138&t=538145

User avatar
carrieres
KVRAF
1712 posts since 10 Apr, 2002 from Poissy, France

Post Sun Mar 15, 2020 1:55 am

Hive2 and Dune3 can use math formula to create wavetable
Image

FathomSynth
KVRian
1376 posts since 25 Mar, 2017

Post Mon Mar 16, 2020 7:26 am

Some sort of a scripting language would be needed.
And it could be used for both the spectrum harmonics and oscillator functions.
I already have a polynomial oscillator working but not yet one for generalized math.
The best strategy would be to choose a scripting language which already exists
but I would need help and input choosing one.
The user could write their formulas into files and Fathom could read them.
The language would also provide a way to designate dials assigned to formula variables.

User avatar
Scrubbing Monkeys
KVRian
869 posts since 21 Apr, 2017 from Bahia, Brazil

Post Mon Mar 16, 2020 8:07 am

There used to be a freeware synth that was strictly that. You input a fomula for your osc shape. Funtion ....maybe I cant remember the name. I probably have the dll on a BU disk somewhere.
We jumped the fence because it was a fence not be cause the grass was greener.
https://scrubbingmonkeys.bandcamp.com/
https://www.scrubbingmonkeys.com/

FathomSynth
KVRian
1376 posts since 25 Mar, 2017

Post Mon Mar 16, 2020 5:44 pm

Yes, the reason I ask is because I would probably create my own scripting language but as soon as I do that someone is going to ask "hey, can your Fathom script reader load oscillator files in UOSL-INHO (Ubiquitous Oscillator Scripting Language I Never Heard Of) format. So it might save some time to find out before hand.

yellowmix
KVRAF
1665 posts since 11 Aug, 2012 from omfr morf form romf frmo

Post Mon Mar 16, 2020 11:04 pm

FathomSynth wrote:
Sat Mar 14, 2020 3:15 pm
If we go that far I would be more inclined to create a spectral scripting language which people could use to create their own oscillators.

We would need to form a complete list of spectral operations that users would need.
Very exciting! You should look at the u-He Hive wavetable scripting guide, particularly section 5 which lets you create wavetables via spectrum magnitude: https://u-he.com/downloads/manuals/plug ... tables.pdf

It provides mathematical operators, logical operators, trigonometric operators, floating point, DSP operators, and more, so it's relatively open-ended. A script can load WAV wavetables or other scripts into memory and operate on them, which can be iterative.

You are very smart and creative so I'd love to see what unique stuff you'd bring. Razor is one of my favorite spectral synths, errorsmith pushed the envelope ahead and there hasn't been that much advance since then (in terms of algorithms).

CHOOS
KVRian
552 posts since 3 Nov, 2010

Post Tue Mar 17, 2020 2:02 am

FathomSynth wrote:
Mon Mar 16, 2020 5:44 pm
"hey, can your Fathom script reader load oscillator files in UOSL-INHO (Ubiquitous Oscillator Scripting Language I Never Heard Of) format.
HAHAHAHAHAHA

Kwurqx
KVRian
587 posts since 15 Jun, 2017

Post Tue Mar 17, 2020 6:12 am

FathomSynth wrote:
Mon Mar 16, 2020 5:44 pm
Yes, the reason I ask is because I would probably create my own scripting language but as soon as I do that someone is going to ask "hey, can your Fathom script reader load oscillator files in UOSL-INHO (Ubiquitous Oscillator Scripting Language I Never Heard Of) format. So it might save some time to find out before hand.
Maybe something like ChucK
https://en.wikipedia.org/wiki/ChucK
ChucK is a concurrent, strongly timed audio programming language for real-time synthesis, composition, and performance, which runs on Linux, Mac OS X, Microsoft Windows, and iOS. It is designed to favor readability and flexibility for the programmer over other considerations such as raw performance. It natively supports deterministic concurrency and multiple, simultaneous, dynamic control rates. Another key feature is the ability to live code; adding, removing, and modifying code on the fly, while the program is running, without stopping or restarting. It has a highly precise timing/concurrency model, allowing for arbitrarily fine granularity. It offers composers and researchers a powerful and flexible programming tool for building and experimenting with complex audio synthesis programs, and real-time interactive control.

Return to “Instruments”