Fathom Synth Development Thread
-
- KVRAF
- Topic Starter
- 1579 posts since 25 Mar, 2017
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.
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.
-
- KVRian
- 629 posts since 15 Jun, 2017
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...
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...
-
- KVRian
- 629 posts since 15 Jun, 2017
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.
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 7:14 pm, edited 1 time in total.
-
- KVRian
- 629 posts since 15 Jun, 2017
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).
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).
-
- KVRAF
- Topic Starter
- 1579 posts since 25 Mar, 2017
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.
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.
-
- KVRian
- 629 posts since 15 Jun, 2017
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...
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...
-
- KVRAF
- Topic Starter
- 1579 posts since 25 Mar, 2017
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.
We would need to form a complete list of spectral operations that users would need.
- KVRAF
- 2095 posts since 22 Sep, 2016
Bezier Point Modulation ... you are killing it. I like to just follow this thread for it's nerdyness. I like it.FathomSynth wrote: ↑Wed Mar 11, 2020 1:30 am
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.
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
- KVRAF
- 2121 posts since 10 Apr, 2002 from Saint Germain en Laye, France
-
- KVRAF
- Topic Starter
- 1579 posts since 25 Mar, 2017
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.
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.
-
Scrubbing Monkeys Scrubbing Monkeys https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=397259
- KVRAF
- 1593 posts since 21 Apr, 2017 from Bahia, Brazil
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://sites.google.com/view/scrubbing-monkeys
https://scrubbingmonkeys.bandcamp.com/
https://sites.google.com/view/scrubbing-monkeys
-
- KVRAF
- Topic Starter
- 1579 posts since 25 Mar, 2017
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.
-
- KVRAF
- 2008 posts since 11 Aug, 2012 from omfr morf form romf frmo
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.pdfFathomSynth wrote: ↑Sat Mar 14, 2020 11: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.
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).
-
- Patchmeister
- 1774 posts since 3 Nov, 2010
HAHAHAHAHAHAFathomSynth wrote: ↑Tue Mar 17, 2020 1:44 am "hey, can your Fathom script reader load oscillator files in UOSL-INHO (Ubiquitous Oscillator Scripting Language I Never Heard Of) format.
CHOOSX Remakes on my Youtube Channel
-
- KVRian
- 629 posts since 15 Jun, 2017
Maybe something like ChucKFathomSynth wrote: ↑Tue Mar 17, 2020 1:44 am 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.
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.