Fathom Synth Development Thread

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

Post

Fathom Pro has all the possible features.

CM has some features disabled such as the Variable Filters and Fractal Reverb.

Post

@FathomSynth: Maybe a special upgrade program for the CM and Mono users would help attract them to Pro. Maybe toss in a few extras, like some preset packs, etc.

Bottom line, create an attractive path from entry level, up to where you want them to be! :tu:

Make the free versions cool, but make the step up to Pro even cooler, and with loyalty credit given for time they have already invested in the product! Remember, they took a risk with their personal time by downloading and trying it out. Time is not free! :wink:
Windows 10 and too many plugins

Post

One thing I'll note is if it wasn't for me being a KVR user I wouldn't have known Fathom was currently on sale, I wonder how many CM users there are who would buy at sale price, but don't know it's on sale ?

Post

I've written a quick and dirty python script to convert Serum wavetables to Fathom format. I am just getting into wavetable synthesis and so have a few question:
1. Is such an endeavor worth doing (besides for my own gratification) and is there any interest in such a tool?
2. Serum wavetables can have any number of waveforms from less than 16 to a few hundred. I am wondering how to process the tables. Fathom is limited to 16 or less waveforms per wavetable. My current thought is to split Serum wavetables into multiple Fathom wavetables for those tables containing more than 16 waveforms. For those wavetables containing less than 16 waveforms, is it better to spread the waveform in the 16 Fathom slots, or keep them all in consecutive slots?
3. Fathom xml wavetables have a TableX attribute and a TableY attribute for the Member tag. It is obvious what TableY is. What is TableX used for?

Thanks.

Post

There is a huge interest in converting between Fathom and Serum wave tables.

As a matter of fact it's on my todo list for Fathom to be able to read Serum wave tables and save to Serum format. It just got pushed back after the higher priority CPU efficiency processing.

Rather than split the Serum wave tables, what probably makes the most sense is to extrapolate the tables. For example if a Serum wave table has 32 waveforms then you would load ever other waveform into Fathom's 16 slots, or if a Serum wave table had 128 waveforms you would load every 8th waveform into Fathom's 16 slots.

If a Serum table has a weird number which is not a multiple of 16 then you will have to get creative such as loading N MOD 16 and dropping the remainder.

I would have done this sooner except I still need to do some reading into the WAV chunk format. Serum saves its wave tables in a single WAV file with a chunk for each wave. Reading them into Fathom would be almost trivial if I know a bit more about the internals of the WAV format. Saving from Fathom to Serum would also be easy in that case as well.

So if you figure this out definitely let me know so I can port your python code into Fathom and it will do it with one button press.

TableX is the x dimension and TableY is the y dimension.

Fathom always has two wave tables of 16 waves each, one on the left side and one on the right side.

tableArrayWave[x][y]

Where x is 0 or 1, and y is 0 through 15.

0 = left, 1 = right.

For example tableArrayWave[0][1] is the second wave of the left side table.
and tableArrayWave[1][15] is the last wave of the right side table.

Remember Fathom uses C++ array indexes so the first wave will be y = 0 and the second will = 1, etc.

In the XML file TableX="1" if it was saved from the right side table, however once it becomes an XML file it can be loaded into either side, so essentially this parameter is ignored. Therefore if you are creating a Fathom wave table XML from some other source to be read by Fathom you could just always set TableX="0".

In Fathom X the number of waves in each wave table will be settable by the user up to 1024 waves for each table.

Post

attached a simple but fun drumloop, just standard fathom presets,
a kick, hi-hat and shaker, at a decent clip, maybe a little swing
snuck in...

and celebtrating yardwork done before a summer monsoon, a pair of
Fathom's summery synth sounds, using those drums at a slower tempo

Such a pleasure to have a modular synth that's so easy to use :hyper:

Cheers
You do not have the required permissions to view the files attached to this post.

Post

FathomSynth wrote: Wed Jun 26, 2019 2:11 am There is a huge interest in converting between Fathom and Serum wave tables.

As a matter of fact it's on my todo list for Fathom to be able to read Serum wave tables and save to Serum format. It just got pushed back after the higher priority CPU efficiency processing.

Rather than split the Serum wave tables, what probably makes the most sense is to extrapolate the tables. For example if a Serum wave table has 32 waveforms then you would load ever other waveform into Fathom's 16 slots, or if a Serum wave table had 128 waveforms you would load every 8th waveform into Fathom's 16 slots.

If a Serum table has a weird number which is not a multiple of 16 then you will have to get creative such as loading N MOD 16 and dropping the remainder.

I would have done this sooner except I still need to do some reading into the WAV chunk format. Serum saves its wave tables in a single WAV file with a chunk for each wave. Reading them into Fathom would be almost trivial if I know a bit more about the internals of the WAV format. Saving from Fathom to Serum would also be easy in that case as well.

So if you figure this out definitely let me know so I can port your python code into Fathom and it will do it with one button press.
I have done a proof of concept and tested it on a 1700 Serum wavetable collection I found on Reddit. The script converted all the Serum wavetables in the collection, and every table I loaded into Fathom seemed to load fine and looked like I expected them to look. I just did a random sampling though; I didn't load all 1700. The Python script dumps all the waveforms found, but of course Fathom only loads the first 16.

I am not sure how much good the python code will be to you. You are welcome to it. Python does most of the heavy lifting. I really did not have to know much about WAV files; the Python library I used took care of that. I need to do some more research into Serum wavetables, but from what I can tell, all the wavetables I found in the collection had 2048 samples per waveform. All I needed to do was load the complete wavetable and then split the data into 2048 sample chunks, and output them as Fathom wavetable xml files.

I'll post the code when I have cleaned it up a bit and implemented your suggestions regarding extrapolation. The other thing I need to do is determine how cross platform this is. I did the Python script using Linux, but tested the resulting wavetables in Fathom on Windows. Not sure if the library I used for reading wav files exists in Windows and Mac.

Cheers,
Doug.

Post

I have an Ivy Bridge Xeon with regular old AVX (not AVX2). I bought Fathom Pro way back in the 2.0 intro sale (that was actually what made me sign up for KVR), but I haven't updated since then. Am I right in assuming that:

1) The current AVX improvements will not drastically increase performance on my system.
2) The roadmap for Fathom Pro includes some improvements for AVX (v1) systems in the future.
3) My current license would qualify me for those future updates.

Thanks!

Post

but from what I can tell, all the wavetables I found in the collection had 2048 samples per waveform.
Serum can use 512, 1024 or 2048 samples per waveform. I'm not sure how it "knows" the right length to use - but you can create a "FolderInfo.txt" file (in the wavetable folder) to force it to use a particular size.

It's in the Serum manual.
John Braner
http://johnbraner.bandcamp.com
http://www.soundclick.com/johnbraner
and all the major streaming/download sites.

Post

just an idea,if Fathom mono is affecting sales maybe replace it with free Fathom player.

Post

The first Intel release will be AVX2 then the next release will support AVX1.

After than, if time permits, there will be a release for AMD processors and eventually SIMD for ancient Intel CPU’s if there is an outcry for it.

Check back in the thread for AVX stats which are also posted at the top of the thread.

The advantage of AVX is in detune voices only. There is no difference for mono oscillators with no detune. AVX makes all detune voices parrallel with each of the 8 detune voices occupying an AVX register lane. All 8 detune voies are crunched in one pass with no loop.

I have confirmed the speed advantage is a 5X multiply when using all 8 detune voices. The basic advantage of AVX is that increasing the number of detune voices has no effect. So if you have an oscillator which is using 2 detune voices and you bump the detune voies to 3, 4 or 5, etc, there is no change in the CPU load since everything is parallel.

Currently that will be the only advantage, for three reasons.

1. That is all I will have time for to start.
2. Fathoms detune complexity was the major factor in CPU load so fixing that was the first priority.
3. Detune lends itself perfectly to AVX since it is a relatively small amount of code which was previously implemented using n = 8 loop which perfect matches the 8 AVX lanes.

In the future I will employ AVX in other areas. However, I think detune will be sufficient for now since that is what was pushing Fathom’s CPU over other synths doing the same thing, and most of the other areas had negligible impact, maybe one percent.

Yes, the roadmap includes AVX1, in fact that will be the very next release. The only trickyness with AVX1 is that it is missing some of the very handy instructions of AVX2 so I just have to replace those instructions and the speed difference will not be quite as good, but it will still be a drastic improvement.

Once you buy Fathom Pro you are automatically approved for all future updates to Fathom Pro.

Keep in mind my AVX is the real deal, I'm using the native Intel intrinsic instructions for 100% of the detune code, not just telling the Visual Studio C++ compiler to try to use it, which basically is useless since nothing passes. The detune code now uses %100 AVX instructions, this even includes the waveform table buffer fetches, all audio interpolation and all the note frequency handling. So it was a full conversion from C++ to basically assembly language.

The AVX2 and AVX1 releases will be the next two releases.

Post

How many waves are in a Serum wave table?

Post

...
바보

Post

Digivolt wrote: Tue Jun 25, 2019 9:06 pm I think a problem which is also equally a benefit is the complexity of the synth
Some more youtube videos with howto's would definitely help, even for more advanced users.
The addition of an easy ADSR / LFO etc. a while back should make Fathom easier to use.

@Everett, to aid in the sales:
- Computer music reviewed Fathom, what about mags like Future music?
- Most synths seem to have Djs / producers trying out the product, or have them say something about it. So far haven't seen any for Fathom.

- I still find your site a bit unclear, too many steps to get to buy imo. Four steps, then I see the actual payment page
Example: https://www.vengeance-sound.com/plugins.php
They put most info on the frontpage, with price and a buy icon. It takes 1 step to buy there.

Post

FathomSynth wrote: Wed Jun 26, 2019 11:17 am How many waves are in a Serum wave table?
viewtopic.php?t=517146

Post Reply

Return to “Instruments”