Fathom Synth Development Thread

VST, AU, AAX, CLAP, etc. Plugin Virtual Instruments Discussion
Post Reply New Topic
RELATED
PRODUCTS
Fathom Synth

Post

Yes, modulations should always be directed at the first oscillator in the chain, and modulation of output parameters such as volume and pan on the last oscillator in the chain.

I can't remember what to do if there are two FM OSC in parallel going into one in series, I would have to experiment with that to see how to modulate it correctly.

One of these days when I get a chance I will make it so modulations of any FM parameter in any OSC get translated to the whole thing, like it should.

Actually I'm really glad to hear that the FM function is being used. I was never a huge fan of FM and when I put it in I was not sure how many people would be using it.

:party: Oh my goodness! Page 200! Should we break out some drinks to celebrate?

Post

@Fathomsynth

About the FM bits. Maybe expanding on FM would cause all sorts of (architectural or other) issues...especially feedback loops. Maybe leave that to more specialized (virtual) machines for now...

I'll do some experimenting with the added info in the previous posts.

Instead...

I'd rather love to see expansions in the Additive (Re)Synthesis/FFT/iFFT domain. Check out some of the history and potential of Additive Synthesi as described on Wikipedia.
https://en.wikipedia.org/wiki/Additive_synthesis

Since Fathomsynth appeared, I noticed it was FFT/iFFT based and started poundering about the possibilities offered by an FFT/iFFT based architecture in a time where it is finally technically feasible to better exploit the potential of Additive Synthesis...combined with more common synthesis techniques.

There's tons of "substractive" synths, a few handfulls of specialized FM/PM synths (mainly Yamaha's due to the only recently ended history of patent/licencing issues). But ther are really very few synths that open up the wonderful world of Additive Synthesis. That is already true for static editing of amplitude of partials, but even more so for dynamic control over partials. And even less that offer resynthesis. And even less that give control over the resynthesized spectra/sounds

Th start with Additive Synthesisi. There's really not much available on the market. In hardware there were/are few options. Historically the Fairlight RMI is well known, but was way out of reach for most mortals. As were the few others. Kawai tried to bring Additive Synthesis to the "consumer" market with their (and my) now ancient K5 (1987) and their second try, the K5000 (1996). A handfull others tried, but it never really took off. Partly due to technical limitations, partly due to the complexities of managing all these partials over the time, amplitude and frequency (and phase) domain. Just designing a practical human interface is already quite a challange.

In software there are more options. Software/Virtual machines also offers much better options for a practical human interface (e.g. GUI). But still there are relatively few specialized Additive synthesizers available.

Anyway...there's a lot potential in Additive Synthesis and it derived cousin ReSynthesis (FFT-->IFFT). And not much on offer especially combined with resynthesis and other (completely different) synthesis techniques/principles (subtractive/AM/FM etc).


Anyway...another idea...

Expanding on the "Spectrum" sampler idea I posted earlier...toward Spectrum based "Wave tables" (and ReSynthesis).

A basic "Spectrum" sampler (as suggested earlier) could:
- capture static "spectra" from various sources
- save spectra into a libary
- spectra could be used as source material for "Additive Spectrum" oscillators (where the partials could be manipulated)

It does not seem to be a great leap toward as Sampler that could periodically sample the Spectrum of a source (sample or other audio input/signal) and save it to a Spectrum based Wave table that could then be used to reproduce/approximate the original signal.

If some modulation of amplitude the individual "oscilators" / "samples" would be introduced, you'd get some control over the dynamic amplitude behaviour of the Wave Table over time.

You could also load arbitrary spectra/samples into wavetabe slots. Or remove them where not wanted.

This can all still be achived with "cross fade" through Wave Tables (using samples or Spectra/Harmonics as signal sources).

But...considering Aditive Synthesis is mainly about (relative) amplitudes of partials in a spectrum and their development/modulation over time...

If such a "recorded" set of Spectrums is played back, you could manipulate the relative (total) amplitude of each Spectrum/Sample.

You could use a simple ADSR or even simpler a Skew to fourther control the relative amplitude of each Spectrum "sample" (based on there order in the wavetable). You could make Spectrum "samples" that occur later in the Wave Table (tail/sustain/release) "die out" faster then those. Or link the amplitude of individual Wave Table "Samples" to modulators (like an ADSR or Skew).

You could also modulate the relative distance in time between "samples". When "recorded" the time distance betweeen samples would be a static: the sample rate. That implies modulation of the occurrence/transition moments of the indiviual spectrum offered by the "samples" over time.

But because you also have the spectrum of the samples avalilable, you could also modulate the relative amplitude of the indiviual partials inside the "sample". Just a Skew on relative amplitudes of partials could emulate a "filter".

Practical application of all this manipulating/modulating are that new timbral developments (sounds) can be created by just manipulating playtime (start/length) and spectrum of Wave Table "samples".

It would also be giving options on the dynamic behaviour of the Wave Table. E.g. behaviour linked to the "note" domain and the "time" and/or "amplitude" domain. E.g. by using Key scaling and/or Velocity ad/or Aftertouch as modulators to modulate time, amplitude of (partials in the) spectra.

Anyway...

You could have Wave Tables, based on sets of Spectra, where you could modulate spectra/partials in the time and/or the amplitude and/or the frequency domain.

And...

All this is all just hinting towards the potential of Additive (Re)Synthesis.....and all that incorperated in a matrix / modular synthesizer...

(fingers tired, stopping)

Post

FathomSynth wrote: Thu Nov 15, 2018 8:49 pm
:party: Oh my goodness! Page 200! Should we break out some drinks to celebrate?
May I suggest a couple pints of Reef Donkey! https://www.tbbc.beer/reefdonkey

In keeping with the aquatic theme, of course! :D
Windows 10 and too many plugins

Post

So on F(atho)M. Just checked some FM options.

Indeed...same Index (ratio), modulation Amount and Ratio Divide for all oscillators/operators in a chain. No matter in which oscillator you change this. It's synced to all. Also when modulated in any.

Divide Ratio in small amounts sound like detuned FM operators. Very usefull.

Operators can have their own oscillator shapes. Which will normally dramatically increase the amount of partials.

And Yes, all operators have the same Index (ratio), but I found that using Additive Spectrum oscillators as operators can be a workaround. There you can dial in your prefered/needed sine oscillator frequencies, using the corresponding partials. They are off course already neatly ordered/indexed as multiples of the root (which itself in Fathomsynth is synced across all operators in a chain).

So you can you can dial in your "operator" ratios and amplitudes. Even better: you can dial in multiple "operators" (partials) using just 1 Additive Spectrum oscillator. Both at modulator as carrier side.

Not only that. You can also change the phase per partial in the same expanded spectrum/partials editor.

Still confused about the chaining though. And the Amplitude source = Carrier/Modulator switch.

I'm gonna give the FM options a further test ride.

Post

zzz00m, hmmm looks good. Although it's hard to beat a simple Gin and Tonic.

Kwurqx, your comments about spectral synthesis are timely because right after I release 2.23 with the Fractal Reverb I will be adding spectral editing to all the oscillators.

So it is the perfect time to think about how spectrums will be modulated.

Yes, obviously the sampler will be able to FFT on anything sampled so sampled spectrums will be a no brainer. Another obvious addition is use of the wave table oscillator while defining each wave using spectrums in addition to wave draw and bezier.

But the thing I am struggling with currently is how to modulate the spectrums. Placing an ADSR on each partial is not practical. So I am considering defining zones of partials that can be modulated either in amplitude (up and down) or in frequency (side to side).

But I think the real benefits will be if the partial frequencies can be altered slightly from the tonal points, as this will create a slight amount of spectral noise.

That being said, I am really after something new here that we can use to generate some extra ethereal sounds, I'm just not sure yet how it can be done.

So comments on Spectral morphing of any kind are now welcome ...

Post

FathomSynth wrote: Thu Nov 15, 2018 11:25 pm
So comments on Spectral morphing of any kind are now welcome ...
Take a look at the iZotope Iris 2 synth. Its a sample based synthesizer where the main feature is spectral filtering.

iZotope Iris 2: Spectral Filtering | 20-Minute Manual Video #7
https://youtu.be/mfF563khTGo

https://www.izotope.com/en/learn/produc ... nutes.html

I picked up this synth on a special deal last year, and it is rather special in how it can manipulate samples. It is excellent for creating unique, atmospheric soundscapes.
Windows 10 and too many plugins

Post

FathomSynth wrote: Thu Nov 15, 2018 11:25 pm But the thing I am struggling with currently is how to modulate the spectrums. Placing an ADSR on each partial is not practical. So I am considering defining zones of partials that can be modulated either in amplitude (up and down) or in frequency (side to side).
May I suggest two sources of inspiration?

1. Kawai K5000. It was the best hardware additive synth that ever existed, IMO. I still have a hardware K5000R. Take a look at the manual to see how they managed to edit and control the partials.

2. Camel Audio Alchemy. It was a great sampler/additive/resynthesis virtual instrument. Still very missed in the Windows world, since Apple bought Camel Audio and terminated its development for Windows (now it is integrated into Logic Pro).
Fernando (FMR)

Post

Is this supposed to be this way.


I have connected to basic waveform oscillatorm in series.

Set them to FM, bipolar, modulator

I am attempting to modulate the "fundamental" parameter on the first oscillator with an lfo.

The modulation is applied only if I click and hold the mouse on the fundamental knob and then change the value while contiuing to hold down the mouse
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

Post

I think Harmor's filters are a great example of how to modify a spectrum of partials in interesting ways with a low number of controls. Draw in a custom filter shape and then modulate the width and centre of the shape, with the resulting shape essentially being a continuous gain modifier over the spectrum. Then you add a second level of control (the resonance shape) with the same width/centre/depth parameters which effectively skews/warps the filter shape itself. With 2 or 3 envelopes modifying a few of these parameters you can get very interesting movement without having to set up tons of modulation sources.

Post

FathomSynth wrote: Thu Nov 15, 2018 11:25 pm
Kwurqx, your comments about spectral synthesis are timely because right after I release 2.23 with the Fractal Reverb I will be adding spectral editing to all the oscillators.

So it is the perfect time to think about how spectrums will be modulated.
Happy to be able to contribute in my own modest way...
FathomSynth wrote: Thu Nov 15, 2018 11:25 pm Yes, obviously the sampler will be able to FFT on anything sampled so sampled spectrums will be a no brainer. Another obvious addition is use of the wave table oscillator while defining each wave using spectrums in addition to wave draw and bezier.
Great!
FathomSynth wrote: Thu Nov 15, 2018 11:25 pm But the thing I am struggling with currently is how to modulate the spectrums. Placing an ADSR on each partial is not practical. So I am considering defining zones of partials that can be modulated either in amplitude (up and down) or in frequency (side to side).
About modulating the Spectrum, I gave some suggestions in my earlier posts. I also mentioned the Kawai K5/K5000. I only own (and worked a lot on) a K5. The K5 solution is pretty simple and practical in it's approach. Due to obvious technical restrictions of its time (1987)

Simply said: you can select a modulation source for each partial. E.g. on the K5 one of available 4 envelopes.

But first (and related)

About the partial editing/selecting (in the GUI):

- show the RANK number for each partial, it now is a guessing/listening game.
- MARK the octaves (ranks 2^n), e.g. in another background color
- add a selector (e.g. checkbox) with wich you can "select"/"activate" 1 or more partials for amplitude editing
- the add a skew curve and a positive/negative editor (e.g. a +/- knob). Considering the knob option: turning the knob would change the amplitude of all selected partials according to the skew angle (horizontal for all equal or according to any skew angle/shape).
- some utility functions like ALL, ODD, EVEN, REVERSE SELECTION and a range selection to accomodate easier manual selection

About the modulation:
- you could add a modulation source for all selected partials
- you could add some indicator whether a partial is modulated or not (and by wich modulator(s) in the mod matrix)

In fact you could (as you can in the K5) use 1 harmonic series (1 "oscillator") to emulate multiple "oscillators". By having subsets of partials behave in different ways. One of the simplest being: fade out set 1 / fade in set 2.

Not possible on the K5 (and mentioned in an earlier post): skewing the amount of modulation over a set of partials. E.g. make lower react/modulate more then higher or vice versa. Could also be modulated by key scaling and/or velocity.

I'm not to familiar with the K5000 interface, but valuables lessons may be learned from that to. Managing many partials with a "small" human interface (knobs, buttons, sliders and a little screen) must have lead to some smart solutions.
FathomSynth wrote: Thu Nov 15, 2018 11:25 pm But I think the real benefits will be if the partial frequencies can be altered slightly from the tonal points, as this will create a slight amount of spectral noise.
- Modulating the partials amplitude is a safe start. Maybe by an oscillator global randomization amount/speed option)
- Modulating the partials phase is also a safe start. Maybe by an oscillator global randomization amount/speed option)

Amplitude and phase are commonly unstable in a real world environment where energy of each partial is seldom stable. Not on the "oscillator" side (e.g. an instrument) and not in the "listening space" side (e.g. a room full of people or objects). Amplitudes may vary due to many variables amongst which subtle phase changes. Resulting in relative amplitude changes and therefore spectrum/"colour" changed. Same happens in a Reverb (as you well know). Only at the oscillator level it's less complex and more controlled.

For effect purposes you could do the same for the relative partial frequencies, stepping away from the "harmonics" concept which dictates a rootfrequency*rank ranking.
FathomSynth wrote: Thu Nov 15, 2018 11:25 pm That being said, I am really after something new here that we can use to generate some extra ethereal sounds, I'm just not sure yet how it can be done.
Just additive synthesis can give you ethereal sounds. But don't forget you can use a Harmonic Spectrum oscillator in the matrix. e.g. in an AM and/or FM configuration, and get all sorts of other results and modulations. Add some filtered noise for breathyness or deep rumble. Or modulate with (filtered) noise (at audiorate), Etcetera...

FathomSynth wrote: Thu Nov 15, 2018 11:25 pm So comments on Spectral morphing of any kind are now welcome ...
I will ponder some more on the subject

Post

fmr wrote: Fri Nov 16, 2018 10:12 am
FathomSynth wrote: Thu Nov 15, 2018 11:25 pm But the thing I am struggling with currently is how to modulate the spectrums. Placing an ADSR on each partial is not practical. So I am considering defining zones of partials that can be modulated either in amplitude (up and down) or in frequency (side to side).
May I suggest two sources of inspiration?

1. Kawai K5000. It was the best hardware additive synth that ever existed, IMO. I still have a hardware K5000R. Take a look at the manual to see how they managed to edit and control the partials.

2. Camel Audio Alchemy. It was a great sampler/additive/resynthesis virtual instrument. Still very missed in the Windows world, since Apple bought Camel Audio and terminated its development for Windows (now it is integrated into Logic Pro).
And Alchemy was itself inspired by the Kawai (via the Camel CA5000 which was Alchemy's predecessor)

Post

:tu: Hez, very interesting.

:phones: zzz00m, Cool video. I've always thought iZotope looks like a great product. I generally try to stay away from directly copying features from another product, but it's worth taking a look at the state of the art.

:borg: Kwurqx, thanks for continued deep thoughts on the subject, I've marked this part of the thread to refer to when I do the design.

All the above comments are helping me to formulate a new paradigm of how spectrums can be modulated with the least amount of complexity and the best audio payoff.

The spectrum editor will basically be a picture in two dimensions with spectral amplitude being vertical and frequency being horizontal. Then windows of spectral partials can be selected. Then modulation of that spectral window will consist of several different two dimensional modulations which move the spectrum up and down in amplitude, side to side in frequency and squishing or expanding it in frequency as Hez points out. Also the edges can be set to hard or gradual.

There will also be frame by frame modulation of spectral windows just like the wave table except each index is a spectrum or spectral window instead of a wave draw.

Spectral windows will also be defined by using the wave draw feature, Bezier curves or direct editing of individual partials.

Lastly spectrums can be pulled from any sample like iZotope except I'm not planning on copying any of their selection tools since I plan on using a completely different method to morph the spectrum.

sm.jpg
SM, That's a bug. I just fixed it, so it will be fixed in 2.23, probably being released tomorrow, if testing today goes OK.
You do not have the required permissions to view the files attached to this post.

Post

FathomSynth wrote: Fri Nov 16, 2018 3:52 pm
:phones: zzz00m, Cool video. I've always thought iZotope looks like a great product. I generally try to stay away from directly copying features from another product, but it's worth taking a look at the state of the art.
Cool, my intent was only to share the spectral filtering concept, not a suggestion to directly copy any features. Borrowing an idea and expanding on it is how things generally evolve.
Lastly spectrums can be pulled from any sample like iZotope except I'm not planning on copying any of their selection tools since I plan on using a completely different method to morph the spectrum.
There is another spectral based product from a different company called SpectraLayers Pro 5 by Magix, that is an audio spectrum editor for sound design, editing, and restoration. I have not used this one, but it does look interesting! Being able to see frequency information visually, in addition to amplitude, appears to offer more precise edits.
https://www.magix.com/us/music/spectralayers/

So it does appear that more than one company already makes use of concepts for spectral editing. Looks like just another tool in the sound design toolbox to me! :tu:
Windows 10 and too many plugins

Post

@Fathomsynth

Where changing the spectral content changes the shape of the wave, changing the shape of the wave will change the spectral content. Changing the shape will therefore change the timbre.

Shaping can be done by another oscillators shape, like AM, FM, PM. Or by a clock, like Oscillator Sync or PWM of a Square.

But there is also all sorts of possible "distortion" of the waveshape (often with more non-lineair results). Both as "static" oscillator waveshapers, as more generally placed somewhere in the signalpath. Both symmetrical and asymmetrical. Some implemented as (over)drive emulations.

Some are simple some complex. Many are very usefull to add some grit or grunt. E.g. I love the ARP Odyssey like "distortion" that can be emulated by some waveshapers.

You mentioned that your current "distortion" implementation is quite resource hungry. I would like to have some "simple" pre/in/post filter waveshaping functions in the oscillators and/or filters. Or just as a multifunction waveshaper effect unit in the matrix.

Also, some more waveshaping options to be used as oscillator shaping functions. More bending, stretching, compressing options in the time and amplitude domain to get to the desired shape/timbre. Sync options/windows would also be welcome. And modulation options where possible.

E.g. check out some of the very usefull oscillator shaping functions of Vember Audio Surge, an ex-commercial, recently released as open source. E.g. the very usefull Formant option (that sounds like a "simple" "in-oscillator" osc sync implementation). Surge also offers very nice and usefull other oscillator shaping functions.

I love synths that can manipulate and modulate their oscilators shapes. It give you so many more timbral options. Either for emulations of existing synths/sounds or discovering new timbres and/or timbral modulations.

In short: waveshaping functions.

Short cross over to FM/PM...

Is Fathom using Phase Modulation? First of all, consider having the option to set all oscillator/operator frequencies to fixed frequencies (besides ratios). And down to 0 Hz. You can then use them as fixed or free frequency oscillators or modulators (also LFO).

In PM you can set the carrier frequency to 0 Hz, as to in effect provide waveshaping there to. The Yamaha DX 7 only goes to 1 Hz (- detune) but not zero. This results in shape/timbre modulation at carrier frequency speed. Not a static/stable shape/timbre. The Yamaha SY implementation does offer 0 Hz "waveshaping" with static results.

Post

I've been trying to get to grips with the FM (PM) implementation of Fathom recently.

What I figured out so far:

- As soon as you set an Oscillator (in a chain) to FM, only the parameters on the "AM FM" tab/page are functional (better to just "grey out" the non-functional tabs/pages in the oscillator GUI).
- All parameters on the AM FM tab are global (synced) for all oscillators in the FM chain
- Switches: Synthesis, Frequency Range, Amplitude Source
- Knobs/dials: Ratio Multiply, Ratio Divide, Amount

This implies you can not set or modulate amplitude and frequency/ratio per oscillator (operator). And that's is pretty much cripling the basic principles of FM programming.

So there are some limits here...

But, from a "glass half full" perspective...

You can still achieve quite a lot if you use Additive Spectrum oscillators as operators, combined with golbal Ratio Multiply, Ratio Divide, Amount. And the global Signal Flow Volume.

- you can dial in amplitude and phase of individual partials in the spectrum editor (Expand) to in effect introduce (sine) operators
- you can dial in the desired Ratio Multiply and Ratio Divide (and implicitly their ratio's), with non-integer ratio's giving a non-static timbre.
- modulate Amount (e.g. with an ADSR, itself being modulated by Velocity)

Maybe a practical example to try for yourself:

- drag an Additive Spectrum oscillator into the matrix
- On the AM FM tab: Synthesis = FM, Frequency Range = Bipolar, Amplitude Source = Modulator
- Create 2 more copies in the matix (drag from Copy)
- Put one one the right (this will be the carrier)
- Put the other to on the left (these are the modulators)
- Connect the output from both modulators tot the input of the carrier

That takes care of the static bits (for this basic experiment). You now have an "algorithm" consisting of a single carrier, modulated by 2 modulators.

- you will only hear the output of the carrier(s), the modulators are (normally) not connected to the output, but only modulate the carrier(s)
- you can now dial in amplitude and phase for one ore more partials per oscillator (operator) using the spectrum editor (in oscillator: Expand)
- you can now dial in Ratio Multiply, Ratio Divide, Amount

Some basic tips on starter values:

- at first stick to low numbers of partials in the Spectrum editor (1 to a handfull)
- remember there are octaves within the spectrum (ranks 2^n; 1, 2, 4, 8, 16 etc)
- at first stick to integer Ratio's on the AM FM tab (maybe some slight "detuning")
- at first stick to low Amounts on the AM FM tab (or very soon complete chaos/noise will result)

Now for the modulation. Normally you would have modulation/envelopes for the amplitude of each operator.
- amplitude (and modulation amount) for the modulator(s) to control timbre development over time
- amplitude of the carrier to control the overall volume development over time

But we don't have that here, since in FM-mode we only have the FM chain's global parameters available.

Basically, modulating the ratio's is unusual, it's the amplitude/amount
- Add a modulator (ADRS) to any oscillators Amount to modulate "timbre" (since it is global/synced across oscillators in the FM chain).
- Add a modulator (ADSR) to the main Volume to modulate overall volume (since individual oscillator Volume does not work in FM mode)

You can get loads of sounds from just this basic stuff. FM Bass patches being the easiest. From clean and metallic (using some higher frequency partis/ratios) to growling low (using multiple lower partials/ratios in the Carrier and some detune in the FM Ratios).

From this point forward you can add operators (modulators and or carriers) at any point in the chain (the carriers being at the output end of the chain/matrix/algorithm.
Or create a separate parallel chain.
Or incorporate the whole chain into antother signal flow.

About the oscillators spectrums. You can dial in you common synthesizer waveforms using the guidelines below

- SAW: all partials are in the spectrum, their amplitude 1/rank.
- SQR: same as SAW but only odd partials.
- TRI: same as SQR but amplitude 1/rank^2.
- Pulse: same as SAW, but with each 100/pulsewidth missing).

Emulate Low pass filtering (filtered SAW, SQR, TRI etc) by progressively reducing the amplitudes of the higher partials. In fact stick to a handfull of partials in most cases.

Post Reply

Return to “Instruments”