Fathom Synth Official Development Thread

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

Post Tue Mar 17, 2020 7:17 am

Perfect sample of what I was looking for.
Can it specify manipulation of harmonics in the frequency domain?

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

Re: Fathom Synth Official Development Thread

Post Tue Mar 17, 2020 10:12 am

At the core of Bitwig is a Language called "Nitro" (see https://github.com/zezic/bitwig-device-hacks). Or probably Lua would be possible. But - please - don't get my nerd-outburst too serious. I think you have plenty of more relevant features on your list like the GPU thing ... maybe if enough dev capacity is left and your bored ... do scripting. I was only triggered by the Video about the synthesis methods someone posted and the immediate reply "yes, bezir point modulation is on my list"...

Kwurqx
KVRian
540 posts since 15 Jun, 2017

Re: Fathom Synth Official Development Thread

Post Tue Mar 17, 2020 12:48 pm

Reaper also offers realtime scripting. Though far more generic then (but including realtime audio).
-EEL2 (in-house developed, but open source)
-LUA
-Python

ReaScript
https://www.reaper.fm/sdk/reascript/reascript.php

And offers JSFX (audio oriented realtime script FX using EEL2)
https://www.reaper.fm/sdk/js/js.php

There is bucket loads of sample ReaScript. But as said, not limited to audio.

Kwurqx
KVRian
540 posts since 15 Jun, 2017

Re: Fathom Synth Official Development Thread

Post Tue Mar 17, 2020 12:52 pm

FathomSynth wrote:
Tue Mar 17, 2020 7:17 am
Perfect sample of what I was looking for.
Can it specify manipulation of harmonics in the frequency domain?
I'm afraid I haven't delved that deep into ChucK. But I would be highly surprised if it won't support most things you can dream up. It has been in development for nearly 20 years.

ChucK at Princeton
https://chuck.cs.princeton.edu/
https://chuck.cs.princeton.edu/release/ ... manual.pdf

Kwurqx
KVRian
540 posts since 15 Jun, 2017

Re: Fathom Synth Official Development Thread

Post Tue Mar 17, 2020 1:11 pm

Here's a bit on Spectral Analysis and Synthesis in ChucK (also from Princeton)
https://chuck.cs.princeton.edu/uana/
https://soundlab.cs.princeton.edu/publi ... mc2007.pdf
Here you will find a new programming model for performing audio analysis, spectral processing, and feature extraction in the ChucK programming language. Starting with version 1.2.1.0, ChucK unifies analysis and synthesis in the same high-level, strongly-timed, and concurrent environment, extending and fully integrating with the existing language framework. In particular, we witness the birth of the Unit Analyzer (or UAna, pronouned "U-Wanna", plural: UAnae), a new language operator, new constructs for dataflow, semantics for operations in analysis domains, and mechanisms for seamlessly combining analysis and synthesis tasks in a precise, sample-synchronous manner. From this portal, you will find our introductory ICMC paper, along with some handy resources to get you started with analysis in ChucK.

FathomSynth
KVRian
1352 posts since 25 Mar, 2017

Re: Fathom Synth Official Development Thread

Post Tue Mar 17, 2020 1:42 pm

Cool, Thanks everyone.

Kwurqx
KVRian
540 posts since 15 Jun, 2017

Re: Fathom Synth Official Development Thread

Post Thu Mar 19, 2020 12:15 am

More on Additive/Spectral synthesis.

Have you ever checked out the PADsynth algorithm? Developed and generously released to Public Domain by Paul Nasca of ZynAddSubFX and PaulStretch fame.

His brilliant idea was/is:
I consider one harmonic(overtone) as being composed of many frequencies. These sine components of one harmonic are spread over a certain band of frequencies. Higher harmonics has bigger bandwidth. In natural choirs/ensembles the bandwidth is proportional to the harmonic's frequency.

The harmonics becomes wider and wider, until at a certain frequency, where they may merge to a noise band (as in the full spectrum image from above). This is a normal thing and I recommend to not avoid this by limiting the bandwidth of the harmonics.
The basic steps are:

1. Make a very large array that represents the amplitude spectrum of the sound (default all values are zero)
2. Generates the distribution of each harmonic in frequency and add it to the array
3. Put random phases to each frequency of the spectrum
4. Do a single Inverse Fourier Transform of the whole spectrum.

There is no need of any overlapping windows, because there is only one single IFFT for the whole sample.
PADsynth algorithm
https://zynaddsubfx.sourceforge.io/doc/ ... Dsynth.htm

FathomSynth
KVRian
1352 posts since 25 Mar, 2017

Re: Fathom Synth Official Development Thread

Post Thu Mar 26, 2020 6:44 am

Thanks, I'll take a look at PADsynth. If I chose an existing format for oscillator scripting I want it to be something that people are already familiar with.

One of our users emailed me and asked me for an update on current progress.

So here are some screenshots of the upcoming metamorphic oscillator.
https://www.fathomsynth.com/news

Kalamata Kid
KVRAF
4450 posts since 27 Jul, 2001 from Tarpon Springs, Florida, USA

Re: Fathom Synth Official Development Thread

Post Wed Apr 15, 2020 6:33 pm

never mind

User avatar
Teawhyelleare
KVRist
111 posts since 15 Dec, 2016

Re: Fathom Synth Official Development Thread

Post Wed Apr 15, 2020 8:41 pm

Kalamata Kid wrote:
Wed Apr 15, 2020 6:33 pm
never mind
Well that was a let down.. got all excited about the notification, logged in, and saw this. You tease :p

While I'm here, would you all mind helping me out with wrapping my head around non-standard tunings in fathom? I understand how to load a .scl or .tun file, however I don't understand how to set a reference pitch. A lot of these scales do me no good if I can't adjust the base frequency.

I have tried my very best and I can't figure it out.. which caused me to get frustrated and stop using the synth this week. Am I missing something? Is there a reason to choose .scl implementation over .tun?
I finally purchased the full package a couple of weeks ago, and I am loving most everything else. Definitely excited about the forthcoming updates :)
Last edited by Teawhyelleare on Sat Apr 18, 2020 2:05 pm, edited 1 time in total.

FathomSynth
KVRian
1352 posts since 25 Mar, 2017

Re: Fathom Synth Official Development Thread

Post Fri Apr 17, 2020 7:33 am

Go to settings using the small gear icon in the upper left.
Under processor settings you will find the Microtune setting on the right side.
Microtune Enable, Global, Root Key.
There are two radio buttons and an oval edit box.
Set the edit box to the note which you want to serve as the root pitch.
A, A+, B, B+, C, C+, etc.

This is covered in the user guide chapter 19 Microtuning.

For instance if you using Math tuning which uses perfect ratios then it will sound right
in the root key which uses the perfect ratios and it will sound strange in the other keys.
If you want it to sound right when you play in the key of C Sharp then set the Microtune
edit box to C+. Also, remember you can click and drag tuning files directly into Fathom.

User avatar
Teawhyelleare
KVRist
111 posts since 15 Dec, 2016

Re: Fathom Synth Official Development Thread

Post Sat Apr 18, 2020 2:47 pm

FathomSynth wrote:
Fri Apr 17, 2020 7:33 am
Go to settings using the small gear icon in the upper left.
Under processor settings you will find the Microtune setting on the right side.
Microtune Enable, Global, Root Key.
There are two radio buttons and an oval edit box.
Set the edit box to the note which you want to serve as the root pitch.
A, A+, B, B+, C, C+, etc.

This is covered in the user guide chapter 19 Microtuning.

For instance if you using Math tuning which uses perfect ratios then it will sound right
in the root key which uses the perfect ratios and it will sound strange in the other keys.
If you want it to sound right when you play in the key of C Sharp then set the Microtune
edit box to C+. Also, remember you can click and drag tuning files directly into Fathom.
Thanks for the quick reply and for the manual recommendations. I really appreciate your time and efforts. It's a pleasure to speak with you!

I must apologize; I should have been much more thorough in my initial post. I have been through most of the manual, and I have combed through this section several times. Unfortunately, this implementation still doesn't make much sense to me, and after another couple of hours (!!!) of trying every idea in my mind, I simply cannot get fathom to act predictably or work correctly. Most of the time, Fathom simply ignores my tuning files (and the examples that you have included, for that matter). When I get lucky and fathom (randomly?) decides to adjust it's outputs, the results are not consistent with the inputs. As far as microtuning is concerned, Fathom is acting as a chaotic black box for me.

What you are saying makes sense in the abstract, but I don't understand how to make it practically useful. When I choose a "root pitch" of "C", for example, which "C" is my base frequency? Fathom is trying to calculate "C" as a sort of starting point for applying the scales math? Why is the "Base Frequency" parameter in the tuning file (which I've not had to use in any other synths before) ignored? How is this beneficial over an implementation which is calculated based on a fixed pitch value, or a fixed midi note value?

An interesting example: the closest I have come is a .tun file which declares the base frequency as my actual lowest value for "A". Fathom then produces nearly the correct result when I tell it that my "root" is "C". If I then detune the oscillator by +.118(ish), played notes produce the correct results (+/- .3) for octaves 2-5, but get further away from the target in octaves 0 and 6-9. If I use the same tuning file, but modify the base frequency parameter to actual "C", it plays exactly the same as if no tuning file were present. All other "roots" produce non-sense.

I don't want to eat up all of your time with this, but the current implementation seems unnecessarily challenging and complicated to me in the best case, and as is my practical experience, totally broken in the worst case. I apologize if this is just a product of my ignorance, but literally every other synth that I own takes the very same scales and produces the expected results 100% of the time, simply by loading the file. I just want to move on, and use fathom in my projects, but this function is very important to me, and most of my work is built on non-standard tunings.

I really like the presets saving and global settings ideas, and I don't mind the extra steps/thinking if the results are achievable, I just can't get this to work at all, and I'm over spending time on it. I hope that this doesn't come of as harsh, I just want to know what I am missing so I can get back to playing with the rest of the fantastic and quirky features of this beast ;) What am I doing incorrectly/missing?

FathomSynth
KVRian
1352 posts since 25 Mar, 2017

Re: Fathom Synth Official Development Thread

Post Sat Apr 18, 2020 10:04 pm

I tested it a lot when I added microtuning and it worked perfectly.
I'll test it again to make sure.
Which version of Fathom are you using?
Are you using Scala.scl or AnaMark.tun tuning files?

You define the relative pitches in the file and then set the root key in Fathom then if you play in that key it will sound right. The reason that Fathom allows you to change the root note is so you can define the ratios in the tuning file and then change the root key based on the key of the song you are currently working on in the host. If you only used the root key defined in the tuning file then you would be limited to that key for every song unless you changed the tuning file.

Have you tried just using the example files that come with Fathom? They worked great when I last tested it. I will try it again to see if it is now broken.

Are you defining your own 12 tone scale with mathematical ratios or doing something much different like using a different number of tones?

Maybe send your tuning file to the support email so I can try it myself.

You can't just drop any tuning file into Fathom. That will create havok. Tuning files are very complex and Fathom only parses a subset of all the possible tokens and commands. It does not parse every possible token. The ones it can handle are covered in the user guide. If you start with the example files then you should be ok unless it is now broken, so I will try it again to see what the problem is.

User avatar
Teawhyelleare
KVRist
111 posts since 15 Dec, 2016

Re: Fathom Synth Official Development Thread

Post Sun Apr 19, 2020 12:17 am

FathomSynth wrote:
Sat Apr 18, 2020 10:04 pm
I tested it a lot when I added microtuning and it worked perfectly.
I'll test it again to make sure.
Which version of Fathom are you using?
Are you using Scala.scl or AnaMark.tun tuning files?

You define the relative pitches in the file and then set the root key in Fathom then if you play in that key it will sound right. The reason that Fathom allows you to change the root note is so you can define the ratios in the tuning file and then change the root key based on the key of the song you are currently working on in the host. If you only used the root key defined in the tuning file then you would be limited to that key for every song unless you changed the tuning file.

Have you tried just using the example files that come with Fathom? They worked great when I last tested it. I will try it again to see if it is now broken.

Are you defining your own 12 tone scale with mathematical ratios or doing something much different like using a different number of tones?

Maybe send your tuning file to the support email so I can try it myself.

You can't just drop any tuning file into Fathom. That will create havok. Tuning files are very complex and Fathom only parses a subset of all the possible tokens and commands. It does not parse every possible token. The ones it can handle are covered in the user guide. If you start with the example files then you should be ok unless it is now broken, so I will try it again to see what the problem is.
That's why I wanted to post and ask, because it is sounding like this struggle is unique to me somehow. I am using version 2.33.0.1 x64 pro. Both .scl and .tun files create unexpected results.

I don't understand how this is true. I am not talking about pre-defining a "root key", but rather a base frequency or literal MIDI key. This can be defined in the tuning file, as shown in your example in the user guide, however my understanding is that the guide also states that this value is superseded by the "root key" selection in fathom.. which seems consistent(ish) with my experience.

Point is, all of my other synths have been providing consistent and expected results for many years without the need for even defining a base frequency in the tuning file, and without declaring any sort of "root key" (u-he, UVI, serum, madrona labs, etc). Just load the tuning file, lock the parameter, and go. Occasionally I have found a synth that requires a reference tone or key, but that is all.

I have only experimented with standard 12-tone scales in fathom so far. I have tried both ratios and frequency values, matching the two examples laid out in the user guide. I have even made scale files identical to the examples, the only difference being the precise pitch values.

I would be happy to send some example files, and I am able to record my screen/process if it is helpful. I am not trying to do anything crazy or complex here, and I am adhering to all of the guidelines in the manual to the best of my knowledge. The tuning files I am using in this case are extremely simple. When it works, the example files do modify the output pitch, however the only deviation from standard tuning is the maths scale, and in my case, it sounds pretty/really good with any given "root key" setting, despite very minor differences (+/- .5) as I move up the "root key" scaling, which seems like the opposite of what should happen in your implementation.

FathomSynth
KVRian
1352 posts since 25 Mar, 2017

Re: Fathom Synth Official Development Thread

Post Sun Apr 19, 2020 8:39 am

You're right, it's broken, I just tried it myself.
I will fix this Monday and try to get a release out as soon as possible.
After loading a tuning file the notes go dead and won't play.

I'm not sure what other synths are doing with the bass frequency setting in tuning files, but the concept of a root key is very important in tuning, especially for math temperament. If you create a tuning file which specifies ratios for twelve tones and the root key is C then when you play in the key of C it will sound great. The distance between C and G will be a perfect fifth which is a ratio of 3/2. However when you play in the key of A it will sound horrible because the distance between A and E will not be a perfect fifth. However if you change the root key to A then all the perfect ratios will be assigned to the keys starting with A and it will sound right when you play in the key of A.

When I was testing it was working properly just as I would expect when I loaded the tuning file and changed the root key. The problem was that unrelated to the tuning file the notes when silent. Something about loading the tuning file broke it.

I realize some people use tuning files to simply assign absolute frequencies to all the notes but this would not enable you to change the root key so in my opinion it would be useless. The important thing is the ability to create new ratios and use those ratios starting with different bass notes which serve as the root key, and to be able to change the root key depending on the song you want to do, without having to change your entire tuning file, which would take ages.

At least that is how I understand it.

If other synths do not offer this option then they would seem to be in my opinion missing a critical feature. However, I don't use tuning myself, so maybe there is something basic about it that I am not understanding.

That being said, it appears now to be broken, so I will have to fix it and get you a new release.

Return to “Instruments”