Added a smooth spectrum setting.
Added a setting which enables the user to control whether presets files are loaded in the UI thread or the processor thread.
Fixed a bug in the preset browser which caused the loading of presets to fail if a row in the list is double clicked while the preview button is enabled.
Moved FFT calculations for the main spectrum graph from the processor thread to the UI thread.
Fixed the modulation amount dial so that the mouse wheel and mouse click step values are synchronized to the precision of the target dial.
Fixed the wave draw Gaussian filter frequency dial so the step values of the logarithmic frequency scale align with the graph lines.
Fixed a bug in the envelope class which caused the segment points to be corrupted after a segment is added by dragging the first envelope point.
Improved the way envelope segment points are initialized in the envelope view when the middle point of a segment is clicked and the segment type is changed.
Fixed a bug in the spectrum graph processing which caused audio stuttering in Reaper.
Improved efficiency of wave table 3D graphs to avoid audio stuttering in Reaper.
Changed the processor internal threading to eliminate audio stuttering in Reaper.
Fixed the wave table 3D graphs so they are not updated unless something has changed.
Added new Reverb Fractal effects unit with non-linear reflection algorithm.
Added new Reverb Echo unit which combines some of the Reverb Pro power with the simplicity of the Reverb Easy unit.
Added filter frequency controls to the Reverb Easy unit.
Made numerous improvements and bug fixes to the modulation timing system. These changes are explained in more detail below.
Improved modulation timing so that envelopes remain aligned to the beat if the host beats per minute is changed manually in real time. Also added a beat alignment check which is executed when the host transport cycles to the start of a loop.
Fixed a timing bug in the modulation processor. If an envelope modulation amount is modulated by another modulator and the second modulator has a period longer than the first modulator then the calculated buffer must have a length equal to the second modulator. Without this change the modulation would repeat before executing the full period of the second modulator.
Fixed another timing bug in the modulation processor. This is also a case in which the envelope modulation amount is modulated by another modulator. If the user clicks and drags the host beats per minute the entire modulation system must switch to real-time processing which means it grabs values from the raw envelope function rather than a pre-calculated buffer. The error was caused by the modulation processor attempting to use the buffer from the second modulator rather than the real-time functional value. This led to modulation timing errors when the host beats per minute was changed in real-time. This has now been corrected so that the real-time values from both modulators are used so that the timing remain correct if the host beats per minute is changed while playing.
Fixed the envelope vertical amplitude snapping so that points can be placed halfway between horizontal grid lines and one quarter of a grid line under the bottom line. This was done to handle the common situation where the user wants the vertical grid to set to a particular value for the entire graph without losing the ability to set the start of the envelope decay to a very low amplitude under the bottom horizontal grid line.
Fixed the ADSR envelope timing when the detune trigger is set to note instead of free. In trigger mode the start of notes are delayed until the oscillator cycle passes through zero amplitude in order to prevent clicking. In this case envelopes which are triggered by note should also be offset by the exact same amount, otherwise the sharpness at the very start of ADSR attacks can be lost. This seemingly obscure change has a dramatic impact on the sharpness of envelopes for stabs, piano presets and plucked sounds.
Fixed a clicking bug in the Reverb EZ unit caused by an error in the digital delay buffer wrapping.
Changed the default wave draw waveform to a slighter richer sounding sawtooth with a Bezier curve that is easier for the user to edit initially.
Added a full suite of Regression Tests. The tests consist of 25 Ableton projects, including over 250 tracks of Fathom playing an extensive combination of note sequences. These regression tests are now executed every release and improve the quality after feature development each release by drastically increasing test coverage. These tests cover all functional domains especially in the areas of modulation timing and double modulations.
Critical bug fix in the sample buffer processor. This fix should be updated for all users since it impacts the sound quality of both the Noise Distortion and AM/FM Audio.
Fixed microtuning so the loaded profile remains operational after a preset is loaded which has pitch modulations.
Fixed the modulator list so rows are updated blue (used) or red (not used) as soon as modulators are clicked on. The list is now stays accurate without having to leave and enter the list.
Implemented smooth preset loading for direct mouse clicks in the browser preview list.
Increased CPU efficiency of noise and distortion by 5% by removing table interpolation which is pointless for noise signals.
Fixed bug in the mixer unit and digital delay unit which caused the delay buffers to play samples from previous notes.
Fixed modulation timing bug in the Massberg filter. The modulation voice was not being updated for filters which are modulated per block causing the modulation amount to be wrong for notes with overlapping ADSR envelopes.
Fixed bug in the mixer unit which caused the delay to interrupt the ADSR release phase.
Fixed the mixer unit so that the connection dial is updated correctly when the last connection is disconnected and there are no outputs.
Fixed the wave table animation setting so it is remembered when the GUI is closed and opened, and when the GUI on other tracks is opened.
Added support for Microtuning.
Tuning profiles can be read from both file formats Scala.scl and AnaMark.tun. Tuning files are selected and loaded in the same way that presets are loaded.
Microtuning provides user defined scales with varying note frequencies as well as different notes per scale. Drag and drop of tuning files into the main view is also supported. Tuning profiles can be saved and loaded per preset or globally.
Redesigned the preset loading system. The preview mechanism has been changed so that there are no gaps in audio when the user is stepping through presets.
The preset file is now parsed in a host user interface worker thread which does not interfere with the processor audio. Then after the new preset is loaded into memory the processor switches immediately from the old audio engine to the new one between sample blocks so there is no break in the audio.
Made numerous improvements to modulation timing. Rewrote sections of code in the modulation processor to improve the timing accuracy when modulator periods are modulated by other modulators, as well as the Random Sample and Hold modulator when the timing envelope is employed.
Added new purchased preset bank “Solidtrax Bass”. This all bass preset bank includes 32 professionally designed presets by our sound design team in the Netherlands.
Changed the Reverb Easy and Reverb Pro effects so the Stereo Width control increases gradually.
Fixed memory leak in the Random Sample and Hold modulator caused by failure to delete the allocated step envelope.
Fixed the modulation timing so that it is correct if the host BPM is automated.
Fixed Bug 0178 Solidtrax ADSR clicking if period modulated with XY control.
Fixed Bug 0181 Host automation smoothing not working correctly.
Changed the Windows 32 Bit build so the GUI has access to all background images and dials.
Previously the Win 32 build was hard-coded to use the low RAM build which eliminates some of the background images and alternate dials. This is no longer necessary since starting with version 2.19 the GUI only loads images as needed which reduces RAM to an acceptable range for 32 Bit machines.
Memory manager has been rewritten to reduce RAM to less than 50% of the previous size.
GUI RAM reduced from 0.325 to 0.150 GB.
Maximum Oscillator RAM reduced from 1.000 to 0.750 GB.
Minimum Oscillator RAM reduced from 1.000 to 0.150 GB.
Total RAM GUI normal reduced from 0.400 to 0.175 GB.
Total RAM GUI resized reduced from 0.675 to 0.250 GB.
Total RAM with minimum oscillator tables reduced from 1.600 GB to 0.360 GB.
Changed the GUI so images are loaded just before windows are displayed rather than loading all images at start up. This reduces GUI memory on a new Fathom track from 0.325 to 0.150 GB.
Changed the memory manager so that when the buffer size setting is changed it recalculates the oscillator buffers and reduces the total memory. The total amount of oscillator table memory changes from 1.000 to 0.150 GB.
Fixed the envelope processor so that the smooth release of an interrupted envelope works correctly even if the release segment amplitude is zero. This covers the scenario where you want a note to decay to absolute zero if held past the decay phase but also the release to extend smoothly it the note is released before the end of the decay phase.
Changed the LFO Easy and ADSR Easy modulation slat dials so that moving the mouse over the dial shows the dial name and value, not the target parameter. The target parameter is still shown if one of the controls is pressed or if the mouse moves over the edge of the modulation slat.
Improved the ADSR Easy envelope so that the sustain segment keeps its shape even if the sustain level dial is moved. This allows the user to create a sustain segment with a different shape while keeping the ability to use the ADSR Easy dials using the new envelope shape.
Increased the precision of all time period dials between the values of 0.5 and 1.0. These are the dials which display fractions 1/X for small values. In the range 0.5 to 1.0, instead of two wheel steps with a step value of 0.25, the range now has 16 wheel steps (0.03125) and 64 click steps.
Fixed table reference bug in phaser effect which stopped the phase from oscillating if the mode was set to cycles and an oscillator is plugged into it.
Changed the order of the top right shortcut buttons so they are symmetrical with the left side buttons.
Eliminated time delay after dropping audio units into the signal flow view by letting the icon update and repaint before panels are created and oscillator buffers are calculated.
Changed the signal flow path algorithm so that the connection path goes straight between units if they are on the same row and there is no unit between them.
Fixed the polar morph filter expanded view so all graphics and points are positioned correctly when the GUI is resized.
Changed the color selector slider colors slightly so the color numbers are always visible.
Added a new processor setting “Modulate Period” which controls how timing is handled when the period of one modulator is modulated by another.
Changed the Random Sample and Hold modulator so the random segments are aligned to the song when the host transport is started.
Improved the timing of the Random Sample and Hold modulator when the speed dial is used so that the random segments are aligned to song beats provided that the speeds produced by the master envelope also align to beats.
Changed all modulators to calculate using sample precision when the period is modulated instead of calculating the period timing once per block.
Made the modulation processor smart enough to keep the correct LFO time if the period is modulated and the LFO is used to modulate multiple target parameters.
Changed all modulation period calculations to double floating point so modulation of the period is accurate at both high and low LFO rates.
Fixed the LFO period so that if it is modulated with a square wave or rectangular envelope the period remains aligned perfectly to the song position.
Changed the envelope sin segment so it can oscillate around a curved exponential path instead of only a straight line.
Added “LFO Easy” and “ADSR Easy” modulators.
The LFO Easy and ADSR Easy options are variations of the LFO and ADSR which display a row of control dials directly on the modulation slat. This feature was requested by a lot of users who wanted a direct modulation interface for simple LFO and ADSR modulations, one that is consistent with other soft synth interfaces employed when a full modulation graph is not needed.
These full modulator graph interface can still be accessed by expanding the modulation slat. Function curves, convex and concave, can be changed in the graph for the Easy ADSR modulation without disrupting the easy dials.
Segments can be added to the sustain phase of the Easy ADSR modulation without disrupting the ADSR decay time or sustain level controls.
Changed the modulation matrix so that when the easy control dials are clicked the interface jumps to the panel holding the target dial.
Changed the modulation matrix so that when the mouse moves over modulation slats the target dial is highlighted with mouse over graphics.
Fixed the envelope view so the mouse wheel raises and lowers the correct segment over which the mouse is positioned.
Improved the smoothness of mouse dragging in the envelope view while changing the view size and horizontal position.
Added two more color themes so the user can save and load a total of three color themes and change them quickly with buttons on the top menu bar.
Fixed user color picker so the color is changed after manual color value entry.
Fixed user color picker so the color changes as the mouse is dragged.
Changed the free mono build so the user can access two additional gui color themes containing the metal and industrial dials.
Added Mixer Unit.
The mixer provides precise control over volume and pan for any signal routed through it as well as control of each output connection between itself and other objects. The mixer also provides the ability to split the audio signal from the mixer directly to the track master output before the output connections. A digital delay is also provided on each channel so the signal can be delayed by any amount through different sections of the signal flow.
All controls on the Mixer unit can be modulated.
Fixed the Cubase crash when loading presets from the Cubase preset interface.
Added shell browser to the preset browser page which makes it possible to change the root between hard drives in Mac OSX and Windows.
Changed FM to use the balanced waveform without the DC component so that FM always retains tonality even for complex waveforms. This change makes FM usable for waveforms drawn by the user even if the area under the curve is not vertically symmetrical.
Add three new color pickers for the wave table 3D views, left graph, right graph and middle graph.
Improved efficiency of processor signal flow buffer handling to reduce distortion at high CPU load. Completely eliminated all memory allocation during normal sample buffer processing by using a new buffer swapping mechanism rather than allocating new buffers for each sample block.
Improved performance of gaussian filter during modulations to create perfectly smooth audio with multiple parameters modulated including the gaussian parameters and the oscillator partials.
Fixed the envelope glide on feature so it works in mono mode.
Changed the oscillator panel select buttons so the appropriate button stays highlighted to indicate which page is currently being displayed on the oscillator panel.
Add a toggle to the settings page to control whether or not 3D wave animation is used when the wave table oscillator 3D graphs are displayed. This will allocate more CPU time to the host interface thread if the host is displaying CPU intensive data such as frequency spectrums.
LFO graph now uses the colors selected under the oscillator graph category.
Increased the detail of the bottom 3D wave graph.
Improved the 3D wave graph so that the focus waveform is painted in the correct order in relation to the other waves in the 3D field of view so that the perspective is correct.
Fixed Bug 0177 Crash when loading presets.
Added the Newtonian Mechanical Filter.
The Newtonian is a true zero delay filter with an extremely fast modulation response and a frequency response that opens up completely at higher frequencies without being pinned down to the Nyquist frequency of 22K. This filter is an original algorithm and is not available in any other soft synth on the market. It employs the same differential equations governing the motion of air particles to create an alias free filter which emulates physical sound waves rather than the typical characteristics of a digital filter.
Added 3D graphs to the wave table oscillator.
Added a color picker to the settings menu. This can be used to set the color of both the graph line and graph fill for all graphs, including the main spectrum, notes, oscillators, filters, wave draw, envelopes, as well as the main view color gradient.
Added single setting for processor draft/quality mode.
Improved the audio processor so that CPU load is predicted before notes are played immediately after they arrive from the host so that the decision of which voices to play within the processor limit is made in advance without first attempting to play the note. This drastically increases clarity since it eliminates notes being played and immediately and then cutting off. This feature can be disabled with the new “Predict CPU Load” setting.
Improved the audio processor voice management logic so that if notes overload the processor it first chooses the oldest note to steal and then then the middle notes. Previously this logic only located the oldest note and then allocated notes in priority as they arrived from the host. The logic has been changed so that when notes for a chord arrive from the host it will allocates new notes in a chord so that the selection of new notes that can be played always include both the lowest and highest notes in the chord.
Fixed bug causing jagged edges in the wave draw function after being loaded from a preset file.
Added setting to enable or disable the mechanism for predicting the CPU load and allocating notes before they are played.
Added setting “Max CPU Per Track” which can be used to adjust the maximum CPU load value used to allocate notes for Reaper and other hosts which assign multiple Fathom tracks to the same processor core. If you are running two tracks per core setting Max CPU to 50, three tracks per core to 33 and four tracks per core to 25, etc.
Added resonance width and quality controls to the Wave Draw Gaussian Filter.
Eliminated all global data from the processor to make it impossible for any interaction problems to occur in Reaper or anytime possible effect that deleting one Fathom track would have on another track.
Completely redesigned all CPU load and note allocation logic to increase smoothness of audio processing on Reaper.
Added ability to save and load user colors and backgrounds to file.
Fixed Bug 0168 Reaper crashes in Windows 10 if hold GUI toggle is disabled.
Fixed Bug 0165 Saving wave from left side table saves wave from right side.
Fixed Bug 0171 Renaming WAV files fails to use the correct file extension.
Fixed Bug 0176 Wave table load all button should load files in the same order as they appear in the list.
New GUI for the Pro version only, with two new dial selections and multiple panel selections.
New Reverb Pro effects page with additional controls for Room Size, modulated Reverb Time and built-in multi-mode filters on all echo channels.
New Settings page with precise control over internal processor parameters. Minimal settings compared to high quality settings boost CPU by 40%.
Add phase option to wave draw panel which allows the entire waveform to be dragged horizontally to the left or right. This is useful to change the alignment and cycle starting point of imported waveforms.
Added two more glide modes, always up and always down. Always up starts from an octave below a non-adjacent note, and always down starts an octave above a non-adjacent note.
Fixed the Wave Table Load All button so it loads all wave positions in the same order as the files appear in the wave browser.
Changed the wave table load all function so that it starts loading wave files from the first one selected even if it is not the first in the folder.
Changed envelope view so segments can be added by dragging from the left edge toward the center like in the wave draw envelope view, and same for the keyboard tracking envelope.
Change processor for host automation so changes in value from the host are interpolated across the sample block thus eliminating clicks for fast changing parameter values from the host function.
Fixed modulation amount dial graphics so they correctly show value range and modulation range when the dial is modulated.
Fixed host automation for oscillator partials dial and distortion dials.
Fixed envelope push so it works for the last segment.
Fixed the note display so it does not miss fast notes.
Reduced memory footprint of wave table oscillator to less than a quarter of the previous size by sharing resources between wave draw windows.
Eliminated time delay after a new wave table oscillator is dropped into the signal flow view by sharing resources between wave draw windows.
Fixed the signal flow view so the audio mode of units does not change unless the unit icon is clicked for the second time. If the mouse leaves the signal flow view and comes back to click on a component it will not change the audio mode unless it is clicked again.
Change the default modulation type for added modulations so it is set intelligently based on what is being modulated. The default modulation type
is changed from multiply to add so in most cases the first icon displayed does not look like a delete button. If the target dial is bipolar such as pan, pitch bend or fine tune the default modulation type is bipolar. If the target dial is master volume or oscillator volume then the default modulation type is multiply.
Improved the audio processor so it can handle a master effect such as reverb being routed into a voice channel effect such as a filter. Per voice modulations triggered by note will now be played on each voice if the filter is modulated when it comes after reverb or digital delay in the signal flow.
Improved the precision of the wave draw gaussian filter and its ability to catch very fast edges in the envelope if the cutoff frequency is modulated.
Fixed host automation of Frequency Pulse oscillator Volume and Phase controls to eliminate clicking.
Fixed host automation of oscillator Detune Fine, Detune Amount parameters to eliminate clicking.
Fixed host automation of Wave Table Volume to eliminate clicking.
Fixed host automation of Global Pitch parameter to eliminate clicking.
Fixed host automation of all global panel parameters to update properly, including Master Volume and Pitch Bend.
Fixed the master volume dial so the audio level changes while it is moved.
Added new zero delay Gaussian filter to the wave draw oscillator.
Wave table browser now has a Load All button which loads all the wave files in a folder.
Changed the load preset arrow buttons so they load the GUI as well as the preset audio.
Distortion page added Phase Drift dial to create a slowly morphing phaser effect in the distortion sound. Removed the phase dial which had no effect on the distortion.
Distortion page added separate Thread count dials for each channel.
Distortion page changed the Thread count dial so the phase drift in each thread is slightly different creating a richer distortion sound. Factor for thread 2 is double the phase drift and thread 3 is 2/3 the phase drift.
Change the distortion Phase Pressure algorithm so it is applied even if the oscillator feeds into a Phaser effect creating two phaser layers.
Change the Envelope and ADSR processor so it is smart enough not to use the smooth ADSR feature if the envelope starts at maximum value, which is the case for stabs or percussive attacks. The smooth ADSR feature is still used for Pads and slow attacks where the envelope does not start at maximum amplitude.
Fixed envelope view so segments are not sent to the processor when the view is dragged preventing an audio stutter.
Fixed noise algorithm so frequency stays accurate if note pitch is modulated.
Fixed distortion algorithm so it sounds better with multiple threads.
Fixed noise so ADSR or envelope on noise volume works as expected if oscillator volume is zero.
Fixed Wave Draw Init button so it initializes the Bezier function. The button now cycles through the Bezier waveforms, flat, sin, sin negative, saw, saw negative.
Fixed main EQ filter so it processes sample blocks even if there are no notes playing. This fixes a problem in which phantom samples would appear when a new note is played due to the fact that the filter operation was non-consecutive. If none of the EQ filter components have a gain greater than or less than zero then the filter is disabled and requires no CPU time.
Fixed Bug 0100 Solidtrax Switching between ADSRs in mod matrix takes 1.5 seconds.
Fixed Bug 0162 Preset preview arrows fails to update GUI.
Fixed Bug 0134 RSH cycle period is off by one when applied to wave index.
Fixed Bug 0163 Random sample and hold cycle timing should initialize at note start.
Fixed Bug 0150 Notes stick on during Reaper track freeze.
Fixed Bug 0151 ADSR attack phase does not start where release phase ends.
Fixed Bug 0152 Allow four times magnification of envelope graph.
Fixed Bug 0153 Envelope graph jumps to start on second magnify drag.
Fixed Bug 0154 Crash if close gui while front panel EQ graph is fading out.
Fixed Bug 0155 Copy of additive spectrum oscillator should copy harmonics.
Fixed Bug 0156 Host automation of modulator dials ignored unless gui is open.
Fixed Bug 0157 Precision of mod amount dial increased to wheel 0.001 click 0.0001.
Fixed Bug 0158 Master pitch bend not automated by host after load program.
Fixed Bug 0159 Master pitch bend dial range can now be set for each track.
Fixed Bug 0160 Improvements to envelope attack algorithm for smooth pads.
Fixed Bug 0147 Imported waves are drawn outside margin in wave draw view.
Fixed Bug 0148 Wave draw view play partials has no effect on wave table.
Fixed Bug 0149 Missing glide legato adjacent notes on voices using an ADSR.
Fixed Bug 0098 Signal flow object mode cannot be changed in Mac Sierra.
Fixed Bug 0099 Detune save default not being loaded for new plugin track.
Fixed Bug 0100 LFO ADSR Release phase frequency not modulating
Fixed Bug 0103 Solidtrax Preset button stops working after select a modulation.
Fixed Bug 0126 Timing is off at note start if modulate LFO Period with Envelope.
Fixed Bug 0127 Highlight modulation slat when mouse is over target dial.
Fixed Bug 0129 Modulator list should show if each is used or not used.
Fixed Bug 0130 Noise volume does not follow note velocity.
Fixed Bug 0132 Mulab CPU goes up after last note if master EQ enabled.
Fixed Bug 0133 Reverb sounds different after preset loaded if decay set to zero.
Fixed Bug 0134 RSH cycle period is off by one when applied to wave index.
Fixed Bug 0135 Added channel pressure as modulator along side after touch.
Fixed Bug 0137 Noise volume is zero for oscillator copied with ADSR on noise.
Fixed Bug 0138 Envelope is not aligned to song if Period is host automated.
Fixed Bug 0139 Improved realism of Reverb at low values of Distance and Decay.
Fixed Bug 0140 Wave tables cannot be loaded in Mac Sierra.
Fixed Bug 0141 Added Visual Studio build ID to the GUI version string.
Fixed Bug 0142 Host slows down with CPU overload if BPM is automated in real time.
Fixed Bug 0143 Envelope segment type cannot be changed in Mac OSX.
Fixed Bug 0144 Browser preset path not being saved in Mac OSX.
Fixed Bug 0145 Pitch Octave dial automation is performed in semitone steps.
Fixed Bug 0146 Make wave table dials animate for modulation if playing live.
Added Solidtrax Sound Bank.
Fixed Bug 0082 Aliasing on high notes if waveform is modulated.
Fixed Bug 0083 Low notes missing when too close together.
Fixed Bug 0085 Pitch note ADSR dropping at end of note.
Fixed Bug 0086 Copy components sometimes disappear.
Fixed Bug 0087 Aliasing occurs while moving the partials dial.
Fixed Bug 0088 Wave table oscillator inconsistent volume if skip cycle enabled.
Fixed Bug 0090 Chorus cuts in and out after note volume ADSR.
Fixed Bug 0091 Allow single cycle wav import in mono version.
Fixed Bug 0092 No warning message if attempt to save wave in mono version.
Fixed Bug 0093 Crash if load wave table with less than 16 waves.
Fixed Bug 0094 Wave table index dial manual entry is off by one.
Fixed Bug 0095 Smooth ADSR decay not working for envelope Bezier segments.
Fixed Bug 0096 Massberg Filter cutoff not following ADSR at start of notes.
Fixed Bug 0097 Glide snapping to previous note if released before glide time.
Disabled build settings Vector SIMD and Multi-Core Processing in the primary release build for Windows 64 bit Polyphonic. This was done to eliminate plugin validation issues caused by these two build settings being enabled in 2.7.0.
Created "HS" High Speed alternate build with Vector SIMD and Multi-Core Processing build settings enabled for those people with Windows systems which can validate this version of the plugin.
There are no functional code changes between 2.7.0 and 2.7.1, and the build settings do not impact any of the Mono builds, the 32 bit builds or the Mac OSX builds, only the Windows 64 bit poly build.
The Multi-Core setting only impacts the plugin's ability to employ multiple cores in a single instance, it does not impact the ability of the host workstation to assign multiple plugin tracks to multiple cores.
CPU Performance changes for dial movement and graph editing.
Enabled parallel code generation on Pro builds. This enables a single instance of Fathom to use multiple cores. This will have a noticeable impact on polyphony and performance.
Enabled Enhanced Instruction Set SIMD on Pro builds. This will improve dial movement since many of the oscillator sample buffer calculation routines are vectorized. This will not impact play back performance since the sample block processing code has not yet been vectorized.
All large dials which are modulated per sample now have a built in smoothing function which is turned on when the dial is moved and disabled after the mouse is lifted.
Increased the CPU efficiency of code in many locations which handles dial movement. This also reduces dial popping by reducing the amount of time required to process each dial message especially during a mouse drag or mouse wheel.
Increased efficiency of all code which handles the wave table partials dial for both modulated and unmodulated wave table parameters.
Eliminated duplicate partial buffer calculations if the mouse leaves the dial and the same value would be used repeatedly for the calculations.
Extra mouse drag messages are discarded if the processor is being overloaded.
Added smooth volume management for preset save as well as preset load.
Tuned the CPU bar code to more efficiently handle small sample block sizes from FL Studio.
Eliminated graphical dial jitter on the wave draw partials dial and all FM dials for mouse wheel throw.
Fixed wave table oscillator so the partials are managed correctly in real time under the Nyquist limit regardless of note frequency changes.
Change the master Pitch Bend dial range from a half step to a whole step.
Change the master Pitch Bend dial so that if it is modulated then the modulated value replaces the hardware pitch wheel signal rather than being added to it. If the dial is not modulated than the position of the dial is added to the hardware pitch wheel signal. To disable the hardware pitch wheel modulate the dial with a zero modulation amount.
Added the analog saw voltage ripple to list of algorithms available in the frequency pulse oscillator.
Fixed Bug 0079 Reverb stops processing suddenly after three seconds.
Fixed Bug 0080 Massberg low pass filter high CPU.
Fixed Bug 0081 CPU bar and note graph not updated with FL Studio.
Increased the maximum partials on all oscillators from 128 to 400.
This extends the partial frequencies for note A0 at 44 hertz up to the Nyquist frequency of 22050, which is half the sample rate of 44100.
In terms of the audio this increases the maximum sharpness of all the oscillators to the same level as synthesizers like Sylenth, Diva, Omnisphere, and Avenger.
Partials are controlled in real time and never go above the Nyquist which maintains zero aliasing. The instantaneous voice detune frequency is used rather than the MIDI note frequency.
Improved the efficiency of partial buffer calculation after dial movement.
Reduced the total sample loading time for the basic waveforms and analog saw oscillators when they are added to the signal flow view.
Fixed Bug 0077 UI size is not saved in Reaper.
Fixed Bug 0078 ADSR points frozen if moved to same position.
Fixed Bug 0073 Browser preset load fails if preview currently playing.
Fixed Bug 0074 Envelope timing is off during preset preview.
Fixed Bug 0075 Browser preview not showing program name.
Fixed Bug 0076 Wave table buttons not highlighted for default waveforms.
Added new Zero Delay Filter to the variable filters category.
Added copy modulator buttons to the existing modulator list. Each row contains its own copy button and clicking on it creates a replica of the modulator which can then be edited separately.
Added master pitch dial to the front panel.
Permanently connected the external MIDI pitch bend signal to the internal pitch bend of all oscillators so it is not necessary to add a modulation to use the pitch bend wheel.
Fixed the Period dial on the LFO and Envelope panels so the modulation range is displayed.
Changed the noise algorithm to follow the oscillator pan dial when noise is in mono mode.
Increased resolution of all oscillator detune dials.
Fixed the program initialize button so all master panel parameters are reset, including master volume, voices, velocity, glide and all EQ faders.
Added new controls to the Chorus LCR effect. New parameters include Wet Mix, Stereo Width, Pan Stereo and Pan Center Channel. All new dials can be modulated.
Added built in Filter to the Chorus LCR effect. The filter provides four modes, Low Pass, High Pass, Band Pass and Parametric. All filter controls can be Modulated.
Changed the location of Fathom.xml containing the preset browser locations from the plugin folder to the system application folder on both Windows and Mac OSX. A subdirectory “FathomSynth” is automatically created to hold Fathom.xml. This was done to resolve the problem in which the preset locations are not saved because the data file not be written to a read-only location.
Changed the Wave Table default waveform to a better sounding saw tooth.
Changed the Wave Table Pulse Width dial so it can be modulated.
Fixed Bug 0069 Plugin crashes if the user edits the GUI during a preset preview. Changed the processor so that if the user attempts to edit the program before deciding to load the preview into the gui, the processor will automatically finish loading the previewed program.
Fixed Bug 0070 Modulator trigger changes to periodic if modulator period is modulated.
Fixed Bug 0071 Browser preset folder not saved in Mac OSX.
Added a new set of factory presets designed for night club and motor show venues.
Added Phase Modulation and Pulse Width Modulation to the Wave Table oscillator algorithms.
Added a confirmation message to all delete operations.
Changed the modulation matrix so modulations stay in the list if the connected modulator is deleted.
Changed the Visual Studio build runtime library from MT (Statically Linked) to MD (Dynamically Linked) to improve validation compatibility on all host workstations and versions of Windows. (The MT build option for the current release is also available for download on the web site).
Changed the modulation amount dial so the target dial modulation range is shown for a mouse click in addition to mouse drag and mouse wheel.
Fixed Bug 0065 Setting envelope trigger from Song to Note has no effect until envelope is edited.
Fixed Bug 0067 Plugin crashes when LFO Draw wave type toggle is moved.
Complete overhaul of all processor code hit by Mac OSX plugin validation.
Removed the saving of GUI plugin settings out of the audio processor completely so there is absolutely no chance they can interfere with host validation by going to disk during the validation process.
Moved creation of the Audio Engine back into the processor constructor so there is no chance of it being missing for any task the host could possibly perform on the plugin during validation.
Reviewed Xcode build parameters which could cause CuBase validation failure in Mac OSX leading to Cubase blacklist error.
Fixed Bug 0063 Plugin not loading host data block until after GUI is loaded.
Dial ranges now update in real time for modulation of mod amount.
Added program name edit box back to the top of the browser view, but also retained the wide folder path edit box to accommodate long folder paths.
Reduced parameter stuttering by moving host notification to when the GUI is closed rather than on every parameter dial movement.
Added previwing to existing modulator list. Clicking on modulators in the list now shows the envelope view and control panel for that modulator and temporarily previews the modulator on the parameter in the audio processor.
Added four new modulation range types, including “Multiply Floor”. Please see the manual section 5.5 “Modulation Ranges”.
Disabled voice stealing and all GUI updates during host rendering and exporting transport modes.
Dial modulation range numerical values are now displayed above the dial temporarily while the modulation range is being dragged or changed with the mouse wheel.
Improved the modulattion manager logic so that if a modulator is not used on any dial and it was never edited by the user then it is deleted from the existing modulator list.
Improved the sin segment envelope algorithm so that there is a perfectly smooth transition moving from the Bezier to exponential curve as a guide point is moved closer to the center line. This removes the former sudden jump in the transition.
Changed the internals of the modulation dial so that if the dial is dragged the modulation range limits follow the finest precision of the target dial, and if the modulation dial is wheeled the modulation range follows the target dial mouse wheel precision.
In the preset browser moved the root path edit box from its crowded position inside the folder list to a position in the top title bar with plenty of space to see the full folder path.
Tuned the two voice detune default so it sounds more like a Moog.
Fixed Mac editing fields so the text is visible when first clicked.
Fixed Bug 0046 GUI is not displayed in Tracktion Waveform host.
Fixed Bug 0047 Wave Table Bezier envelope is missing after loading preset.
Fixed Bug 0053 Oscillator pan dial not modulating if mod amount is modulated by midi controller.
Fixed Bug 0055 Random modulator crashes if pattern dial is out of range.
Fixed Bug 0057 Fathom presets not saved after closing Tracktion.
Fixed Bug 0058 LFO dials clicking if oscillator phase is modulated.
Fixed Bug 0059 Uneven spacing between sliders in spectrum oscillator.
Fixed Bug 0060 Modulator list scrolls out of view.
Fixed Bug 0061 Fathom is silent in FL Studio Patcher unless the GUI is opened.
Added new Random Sample and Hold modulator. Please see the manual.
Increased polyphony from 16 to 32 voices.
Added new voltage ring sin wave segments to wave draw editor and envelopes. Curve types now include line, exponential, Bezier, Bezier double and sin wave.
Added title bar buttons to quickly preview presets, both forward and backward.
Added init plugin button to the title bar.
ADSR and envelope modulator views now add an extra period to the view width to make dragging the release phase easier.
Mouse wheel scroll direction is changed for both the left and right windows so that the direction is consistent with web pages.
Changed key tracking on all filters from additive to logarithmic. This enables the filter to act on specific partials relative to the root partial regardless of the note frequency. Filter key tracking is tuned relative to a base of 100 Hz.
Changed Bezier curves for oscillator waveforms so that points dragged outside the visible area keep a virtual point at the boundary of the visible area. This enables them to be grabbed again without initializing the segment.
Increased single partial modulation resolution from 32 to 64 partials and remaining partials up to 128 increased resolution from 8 to 4 partials per table.
Front panel control pad modulators now load their initial values from file if the control pad knobs are saved off center.
Changed the default Wave Draw waveform from a sin to a nice sounding analog saw tooth.
Change graph line colors from orange to blue. This was done to be consistent with the color theme on the rest of the interface.
Fixed bug in which notes were sticking on if a bypassed oscillator is enabled.
Increased preset loading speed by not reloading the file after audio preview in the processor.
Change distortion algorithm to use nonlinear interpolation between frequency points for noticeably smoother noise and distortion sound.
Added nonlinear interpolation to wave tables. This reduces the high frequency noise floor from -148 to -160 dB and completely eliminates spectrum shadows. High frequency noise no longer even shows up on the Ableton spectrum analyzer set to its maximum sensitivity of -168 dB.
Mac OSX Full Polyphonic Release.
LFO Draw Modulator.
LFO Speed Modulation ADSR Controls.
New Professional Sound Bank.
Fixed BUG 0036 Pitch bend note frequency is wrong if notes are held down. The pitch bend now works properly and has the correct range on all pitch related dials regardless of which voices are playing and which notes are held down.
Fixed BUG 0037 Audio icon text is garbage on MAC OSX. Changed the font on the audio unit icons from Arial Narrow to Arial so the font is available on all systems.
Fixed BUG 0038 Audio Units plugin failing Mac Logic Pro validation.
Fixed BUG 0039 Dials cannot be selected for modulation in Mac High Sierra. The add mod button is now activated when a dial is moved even if the knob is not selected.
Changed name of plugin on Mac release from Synthesizer to Fathom.
Fixed wave table oscillator so default waveforms have the correct resolution after the GUI is resized.
GUI can now be resized.
Fixed Bug 0034 Note velocity failed to modulate mod amount.
Added 8 Channel Phasor Effect.
Fixed BUG 0028 Wave draw partials dial on oscillator and expanded views disagree.
Fixed BUG 0029 Modulated waveforms causes distorted FM.
Fixed BUG 0030 Polar filter has no audio until the gui is loaded.
Fixed BUG 0031 Wave draw toggle play waveform sin partials does not save to xml.
Fixed BUG 0032 Polar filter crashes for illegal point values.
Fixed the Polar Filter so it is stable at low frequencies and high resonance.
Fixed the Polar Filter so that the circles for the zeros and poles are distinguished form each other with different graphics.
To correct the polar filter on your system you will need to load and save your preset again after downloading the latest version. This is only necessary for a preset which uses the polar filter. To do this add the new Fathom plugin and load your preset. Make a small adjustment to the Polar Morph Filter so the processor load the correct points from the GUI. Then save the preset. Now when you load the preset again it will be correct and the polar filter will have audio.
Wave table oscillator can now use Bezier Waves.
Bezier oscillator curves can now be edited in the large expanded view.
Noise and distortion frequencies now follow the note glide.
Added Note Velocity and After Touch as Modulators.
Fixed BUG 0020 Wave table FM is flat after load preset
Fixed BUG 0021 Reaper High CPU by adding instructions for Reaper multi-core support.
Fixed BUG 0026 Noise should play during zero oscillator volume and key track mod.
Fixed BUG 0027 Smooth ADSR note tail fails if multiple modulations.
Fixed edit lag on partials dial and waveform editing.
Fixed the modulation the list so deleting the first one moves the list up to the top.
Fixed Bezier black dot dragging outside of middle point
Program load and preview turned off audio during load to reduce choppiness.
Program load and preview added midi note filter during load to reduce choppiness.
Program load and preview added one second transition volume ramp.
Changed preset save so that the Bezier envelope portion of a waveform is not saved to file unless the points were moved. This reduces the size of presets, especially the wave tables.
Improved the noise distortion algorithm so it is slightly more intense at very low frequencies and smoother at higher frequencies. Also increased the intensity near the end of the dial range but kept the same intensity at the middle of the dial range. Also increased the richness using frequency ratios if the number of threads is increased.
Fixed bug 0014 DC offset in audio output from wave draw oscillator.
Fixed bug 0015 Clicking in wave draw oscillator during subtract algorithm.
Fixed bug 0016 Clicking in wave draw oscillator during skip cycle.
Fixed bug 0017 Toggling detune disables glide.
Fixed bug 0018 Small dials fail to keep number visible if mouse over the dial name.
Fixed bug 0019 Fixed large dials so the mod range is updated while dragging.
Added Bezier Curves to the Wave Draw Oscillator.
Envelope and LFO Period dials can now be modulated by other modulators.
Ability to copy all audio objects using the new Copy category.
Fixed additive spectrum sliders so that dragging over the sliders only changes the ones in the section in which the drag was started.
Fixed additive spectrum sliders so that dragging over both the top and bottom moves the sliders to either to maximum or minimum position.
Fixed additive spectrum sliders so that a fast drag does not leave blank spaces, instead all the sliders are aligned perfectly in the vertical to the path formed by dragging the mouse.
Added Save Default button to Detune page. Hitting this button saves the edited detune voice profile for the oscillator as the default. The default voice profile is used to set all the voice detune parameters when a new oscillator is first added. The voice profile is saved in FathomVoiceMap.xml in the same folder as Fathom.dll. To return to the original default voce profile simply delete the file.
Fixed Bug 0001 Volume ADSR for wave draw oscillator clicking, reported by RPH. In this case the click occurred with the wave draw oscillator if the master volume is modulated with an ADSR and a note is held while another one is tapped quickly. This was caused by the ADSR changing volume suddenly in the middle of a waveform cycle for a new note using the same voice. The bug is now fixed by changing the note handling logic so that the waveform cycle of the previous note on the same voice is allowed to finish before starting the next note. Effectively this aligns perfectly the ADSR note edges to waveform cycles thus eliminating the click.
Fixed Bug 0002 Wave draw click reported by Diego. The situation is now handled when two notes arrive at the same time in mono mode.
Fixed Bug 0009 reported by Solidtrax. Employing noise causes audio to suddenly shut off at the start of a new note. The noise algorithm is now fixed so that managing the start and stop of noise at the voice cycle start and stop does not affect the rest of the voice logic.
Fixed Bug 0010 Clicking at the end of notes. Reported by Starflakeprj and RPH. Bug was introduced in version 1.0.10 and is fixed in 1.0.11.
Changed the wave table left side default waveforms to improve the sound of the saw tooth. This eliminates the buzzing and improves the overall sound. It also eliminates the spectrum ripples.
Added keyboard tracking to all filters.
Added Bezier curves to the modulator envelope.
Clicking on the middle point changes the exponential curve to a single cubic Bezier curve with two control points. Clicking on the middle point again creates a double cubic Bezier curve with three control points.
Added built in 13 band EQ and faders to the front panel.
Added a 12 band EQ to the filters.
Added overlay animation to center view including the master frequency spectrum and midi notes.
Added multiple display modes for showing the spectrum on either the center view or global panel.
Completely redesigned all algorithms in the Frequency Pulse oscillator to eliminate aliasing.
Previously the oscillator edges went in the same direction creating a spike which caused high aliasing. This required an internal filter. The edge transitions are now smooth eliminating the need for an internal filter.
Added two additional algorithms to the Frequency Pulse oscillator.
Added an acceleration dial to the Frequency Pulse oscillator.
Fixed a big which crashed the processor if two modulations target the same dial and the modulation amount of one of them is modulated
Fixed the small modulation amount dial to handle both selection and increment clicks.
Clicking directly on the center selects the dial for modulation. Clicking above or below the center increments the modulation amount by the smallest step which is 0.001.
Host parameter automation complete. Virtually all interface controls can now be automated from the host, including big dials, toggle controls, small dials, and even ones that cannot yet be modulated internally.
To host automate a parameter click on the name above the control so that the name area is highlighted. Up to 32 parameters can be automated. Parameters must be selected from inside Fathom first because all objects are modular and therefore all parameters are dynamic. You must first tell the host which parameters it can access.
Oscillator graphs, filter graph, dials and toggles are all updated in real time as the host moves the parameter.
Added true band pass filter to digital delay effect keeping and renaming the existing parametric filter.
Drag and drop is now implemented for audio wave files. External wave files are now loaded by the wavedraw and wave table oscillators if the file is dragged from Windows into the oscillator view graph or the expanded wavedraw view graph. This is true for both waveform xml files and single cycle wav audio files.
Lowered all Filter minimum cutoff frequencies from 100 to 10 Hertz.
Reduced GUI memory foot print from 1.1 GB to 275 MB.
Keyboard tracking center view now shows keyboard graphics in order to more easily correlate areas in the envelope to midi notes. Also middle C is marked on the graphics.
Added mouse wheel wave file browser preview. In the waveform browser, clicking on a row selects the row and loads the waveform, clicking on the row again unselects the row. If a row is not selected the mouse wheel scrolls the list regardless of which column it is over. If a row is selected the mouse wheel scrolls the list and selects the next or previous waveform immediately. The GUI and audio processor use a handshake for loading the waveforms so that throwing the mouse wheel will not overload the processor.
Added real-time wave table graph animation for midi only notes.
Mouse wheel in browser is now effective over all columns (except the last).
Added mouse over graphics back to dials and fixed the bug in which the dials were stuck in the mouse over state.
Wave table File button now defaults to the Waves folder for a new installation.
Wave table oscillator default saw tooth waveform is now in the correct orientation in relation to all other saw tooth waveforms in the instrument. This prevents waveform cancellation which occurs if multiple saw tooth waveforms go in opposite directions.
Fixed dial manual text edit so that it changes the sound and graphs in exactly the same way as if the dial is moved.
Fixed wave table file button defaulting to wrong folder.
Fixed bug in which browser comment column was being cleared incorrectly.
Fixed bug which caused filters to go silent.
Fixed bug which caused glide to be deactivated if fine tune is modulated.
Fixed bug which caused glide to be deactivated if number of detune voice changed.
Fixed the all distortion and noise algorithms so that they compensate in real-time for modulated note and octave pitch.
Changed noise page distortion algorithm from digital to analog.
This is an important bug fix release which you will need to eliminate the following two problems.
Fixed envelope timing bug which caused misalignment between the envelope and the song position. Timing code was redesigned so that the envelope is perfectly aligned to the host song position right down to the individual sample regardless of the length of the song or sequence.
Fixed octave pitch bug which caused the oscillator to go silent if the octave was moved from zero.
Single cycle wav audio format files can now be imported into the wave draw oscillator.
The modulation amount dial on each mod slat can now modulated.
Manual number entry is now provided on all Dials.
All three of the following windows now scroll vertically in response to the mouse wheel: Left side audio component list, right side modulation list, right side modulator list opened when selecting a modulator.
Pitch Note and Pitch Octave dials are now modulated continuously instead of by discrete steps. Although the values are continuous they are mapped exactly to the semitones of the western equal temperament scale.
Expanding a modulation which points to a global parameter now jumps to the global panel.
Envelopes which modulate the partials dial are now synchronized to the oscillator cycle. Sharp vertical edges of the envelope are timed exactly to the next zero amplitude point in the oscillator. This allows very sharp analog sounding envelopes by permitting the envelope smooth samples parameter to be dialed all the way to zero with absolutely zero clicking when the partials dial is modulated.
Fixed audio engine so that it recalculates modulation buffers if the host beats per minute is changed. Recalculation is done in real time but immediately after the host sample block is processed to eliminate chance of it effecting the audio performance.
Changed the multiply modulation mode so that a positive value of the modulation amount increases the range above the target dial’s current amount but still starts at the parameter minimum value. This is useful for modulating the modulation amount using the multiply mode, whenyou want the target dial’s modulation range to fluctuate from the minimum value to a modulated maximum value.
The programs and waves folders are now stored permanently. Both folders hold their previous state when the GUI is reopened and also when the host is restarted and a new Fathom plugin is added. The locations are stored in Fathom.xml.
Saved programs with no name are given a default name followed by an incremented number. Saved wave files are given a default name followed by an incremented number.
Changed the processing of the maximum partial frequency so that the oscillator partials are adjusted continuously as the dial is moved or modulated instead of only at the start of each note.
Made envelope smoothing logic smarter. If the last point from the note on is equal to the first point of the note off then the envelope will always continue smoothly if notes are released before the end of the envelope. However, if the two points are not equal or the last point of the note off envelope is not zero, then the literal values of the note off envelope are preserved. This is important if envelopes or sequencers are used to modulate pitch.
Fixed bug which occurs when a modulation is deleted and the dial is displayed as not modulated even if another modulation remains on the same dial.
Fixed bug which occurs when added envelope segments do not obey the glide mode.
Change wave table oscillator graph update from 16 to 32 times per second. Also changed the engine to update the graphs using the latest voice from new midi notes.
Improved graphics for modulated dials.
Wave Table Morphing Oscillator official release.
Added real-time oscillator visual graph updating for the wave table oscillator panel.
Added table filling feature to the wave table oscillator panel.
Changed oscillator distortion so that it no longer automatically enables detune when it is enabled.
Fixed bug in which the frequency pulse oscillator was silent until edited.
Fixed detune so that when the number of voices are changed the new voices continue playing the current note without interruption.
Fix bug which caused the LFO to cycle only once if trigger was set to note.
Wave table oscillator Alpha Test release.
Changed the internal name of the plugin to “Fathom” so it matches the file name and shows up in all host workstations as “Fathom”, instead of “Synthesizer”.
Fixed CPU note handling for FL Studio so that all notes in a chord play without cutting out.
Fixed global panel spectrum graph so it runs when notes are played live on the midi keyboard.
Fixed all oscillator Pan dials so that they can be modulated correctly.
Fixed the addition of new oscillators so that the buffers are precalculated before oscillator dials are adjusted. This increases the polyphony when new oscillators are added and when presets are loaded.
Fixed clicking at start of playing a host sequence which was caused by distortion filter delay registers not being cleared for non-adjacent notes.
Changed build so that library files are statically linked enabling the plugin to run in Windows 10.
Mono and glide modes remember a MIDI note hold and return to the first note when the second note is released. The algorithm is tough enough to handle multiple overlapping notes as well as any amount of tapping above or below the hold. This change was critical for real mono style performance.
LFO and envelope period dials now provide both whole and fractional numbers with fine precision.
Modulator envelope now remembers the previous step and glide segment edge profiles so that if you switch between the two modes you do not lose your point locations.
Signal flow view detects feedback loops and will not allow a connection that produces one. The new algorithm performs a deep search and is smart enough to detect a potential feedback loop in complex topologies.
Signal flow view will not allow connection into an oscillator except from another oscillator.
Fixed the bug in which the plugin volume dropped to zero if the master volume dial was moved while physically pressing a MIDI note.
Fixed the modulator envelope repeat pattern feature starting from the last point so that it works for glide as well as step segment edge modes.
Fixed the new oscillator connection so that it does not automatically go to FM if the carrier oscillator was already set to AM.
Both mono and pro releases now include both Windows 32 and 64 bit executables.
Additive Spectrum oscillator increased number of partials from 32 to 64.
Double clicking on modulators in the mod matrix list now selects the modulator without having to click on the check box at the top.
The main tool bar Expand button is blacked out on mouse over unless the button is active and the selected object can be expanded.
The Add Mod button is blacked out on mouse over unless the the button is active when a dial knob has been selected and a modulation can be added.
Hitting the Add Mod button without first selecting a dial will now show a message over the modulation matrix telling the user to first select a dial.
Program Browser remembers the last column sort when reopened.
Program Browser remembers the last column sort when changing folders.
Double clicking a row in the Program Browser now loads the program.
Double clicking a row in the Waveform Browser now loads the waveform.
Clicking audio unit icons in the signal flow view now changes their signal flow throughput mode.
Icons change color where green is bypass and red is block.
Clicking once selects the audio panel but does not change the mode.
Clicking a second time changes the throughput mode to bypass such that the input is transferred to directly the output bypassing the unit processor.
Clicking a third time changes the throughput to block such that the output is zero thus eliminating audio from that unit to its outputs.
Clicking a fourth time cycles the throughput mode back to normal processing.
For oscillators there are only two states instead of three, process and block.
Fixed the phase dial on the analog saw so that it can be modulated.
The Blank Program in the Browser now contains an ADSR on the Master Volume.
First production release.