Fathom Synth Development Thread
- KVRAF
- 9562 posts since 6 Jan, 2017 from Outer Space
I just played the sound and bend it. Which dial do you talk about? The pitch dial? I see, that range changes.
Ok, then I can modulate it with the pitch bend.
That does work, but my original idea was to directly set the pitch bend range, as that is still fixed to 2 semitones...
That would be easier, as it would just modify an existing modulation...
Ok, then I can modulate it with the pitch bend.
That does work, but my original idea was to directly set the pitch bend range, as that is still fixed to 2 semitones...
That would be easier, as it would just modify an existing modulation...
- KVRAF
- 9562 posts since 6 Jan, 2017 from Outer Space
Playing further around reveals, that that pitch knob is pointing to 0, but seem to be connected to the range. I set a modulation, it would now play my two octave range, and when I set the modulation amount back to 0, I have no pitch bend.
What I would expect if that pitch knob is meant to be the pitch bend range, that it would not change the pitch when moved to whatever value as long as the pitch wheel is in the middle position. Instead just changes the bend range.
Now it is some kind of hybrid between pitch bend range and master tune...
Now its a bit inconsistent. As soon I add a modulation, the original bend range of 2 semitone disappears, and I set it with my modulation...
The orignal pitch bend is anyway a kind of hidden default modulation which is not listed in the Modulation Matrix, like velocity for example as well...
What I would expect if that pitch knob is meant to be the pitch bend range, that it would not change the pitch when moved to whatever value as long as the pitch wheel is in the middle position. Instead just changes the bend range.
Now it is some kind of hybrid between pitch bend range and master tune...
Now its a bit inconsistent. As soon I add a modulation, the original bend range of 2 semitone disappears, and I set it with my modulation...
The orignal pitch bend is anyway a kind of hidden default modulation which is not listed in the Modulation Matrix, like velocity for example as well...
-
- KVRAF
- Topic Starter
- 1584 posts since 25 Mar, 2017
So here is how the master pitch dial works.
If you just move the dial it changes the pitch of all oscillators according to the dial.
The +/- range of the dial depends on the current set pitchrange=X.
If you modulate the pitch dial internally with a bipolar modulator
the modulation range is added to the current position of the dial.
If you host automate the master pitch dial the host automation replaces the dial position,
and the dial position changes in real time to match the host value.
The host automation value is not added to the dial position.
The host range 0.0 to 1.0 is translated to the pitch dial -/+ range, where host 0.5 = dial middle zero.
The host pitch bend signal is also hard-wired internally to the master pitch dial,
and the host signal -8192, 0, +8192 is mapped to the pitch range setting with 0 = 0.
If the pitch dial is not modulated the host pitch bend signal is added to the dial position.
If you modulate the pitch dial the modulation replaces and turns off both the host automation
and host pitch wheel signals. The modulation is not added to either.
Initially I had it so that the modulation of the pitch dial and host automation signal and host pitch wheel
signals were added so everything at once would impact the pitch (this is easy to do),
but there was a strong out cry from users that this was too confusing, so I turned it off.
If you want to do everything at once and have it all added together I can make this a setting.
If you just move the dial it changes the pitch of all oscillators according to the dial.
The +/- range of the dial depends on the current set pitchrange=X.
If you modulate the pitch dial internally with a bipolar modulator
the modulation range is added to the current position of the dial.
If you host automate the master pitch dial the host automation replaces the dial position,
and the dial position changes in real time to match the host value.
The host automation value is not added to the dial position.
The host range 0.0 to 1.0 is translated to the pitch dial -/+ range, where host 0.5 = dial middle zero.
The host pitch bend signal is also hard-wired internally to the master pitch dial,
and the host signal -8192, 0, +8192 is mapped to the pitch range setting with 0 = 0.
If the pitch dial is not modulated the host pitch bend signal is added to the dial position.
If you modulate the pitch dial the modulation replaces and turns off both the host automation
and host pitch wheel signals. The modulation is not added to either.
Initially I had it so that the modulation of the pitch dial and host automation signal and host pitch wheel
signals were added so everything at once would impact the pitch (this is easy to do),
but there was a strong out cry from users that this was too confusing, so I turned it off.
If you want to do everything at once and have it all added together I can make this a setting.
- KVRAF
- 9562 posts since 6 Jan, 2017 from Outer Space
I can live with the way it is set now.
What would be nice though, is a global pitch bend range, which is not saved to the presets. That would make it easier to browse presets and platy them without the need to tweak them to my instrument and playing style. In the u-he synths that is solved by locking the pitch bend range parameter for example.
Still, MPE is more important to me than any other feature...
http://www.rogerlinndesign.com/implementing-mpe.html
What would be nice though, is a global pitch bend range, which is not saved to the presets. That would make it easier to browse presets and platy them without the need to tweak them to my instrument and playing style. In the u-he synths that is solved by locking the pitch bend range parameter for example.
Still, MPE is more important to me than any other feature...
http://www.rogerlinndesign.com/implementing-mpe.html
-
- KVRian
- 698 posts since 17 Sep, 2014
+1Tj Shredder wrote:I can live with the way it is set now.
What would be nice though, is a global pitch bend range, which is not saved to the presets. That would make it easier to browse presets and platy them without the need to tweak them to my instrument and playing style. In the u-he synths that is solved by locking the pitch bend range parameter for example.
Still, MPE is more important to me than any other feature...
http://www.rogerlinndesign.com/implementing-mpe.html
-
- KVRist
- 149 posts since 16 Jul, 2014
I was recently trying to follow a tutorial to create a “Shepard Tone” riser and in the process came across what might be a voicing bug?
I can supply a project and preset if necessary but it is easy to reproduce the problematic envelope behaviour as follows:
New project with default polyphony and “set smoothadsr=0” so envelopes retriggers from start (although this doesn’t seem to have any effect in this particular case).
Create a basic waveform oscillator with a sin wave and add a long decay envelope to the osc volume (at least 5+ seconds so the effect is obvious).
Press a note (C2 will do) and let it decay .. ok so far
Once fully decayed/back to silence press the C2 again and while it is decaying now press a note an octave above (C3) .. again ok no problem and can hear the C2 decay and the C3 play above it (and also see both notes in the fathom scope).
Now for the bug/issue .. Starting over from silence press the C2 but now press the C2 a second time before the first one decays .. instead of the first C2 voice decaying and a new C2 voice playing independently, the first C2 is abruptly cut off.
Perhaps this is intended behaviour or a deliberate voice stealing algorithm but it put an end to my Shepard tone experiment which involves multiple voices of the same note decaying with independent pitch modulation (polyphonic LFOs in Fathom can do the job here).
Let me know if you would like more info or a test project which has the pitch modulation and therefore might make the issue clearer.
Thanks,
provoc
I can supply a project and preset if necessary but it is easy to reproduce the problematic envelope behaviour as follows:
New project with default polyphony and “set smoothadsr=0” so envelopes retriggers from start (although this doesn’t seem to have any effect in this particular case).
Create a basic waveform oscillator with a sin wave and add a long decay envelope to the osc volume (at least 5+ seconds so the effect is obvious).
Press a note (C2 will do) and let it decay .. ok so far
Once fully decayed/back to silence press the C2 again and while it is decaying now press a note an octave above (C3) .. again ok no problem and can hear the C2 decay and the C3 play above it (and also see both notes in the fathom scope).
Now for the bug/issue .. Starting over from silence press the C2 but now press the C2 a second time before the first one decays .. instead of the first C2 voice decaying and a new C2 voice playing independently, the first C2 is abruptly cut off.
Perhaps this is intended behaviour or a deliberate voice stealing algorithm but it put an end to my Shepard tone experiment which involves multiple voices of the same note decaying with independent pitch modulation (polyphonic LFOs in Fathom can do the job here).
Let me know if you would like more info or a test project which has the pitch modulation and therefore might make the issue clearer.
Thanks,
provoc
-
- KVRAF
- Topic Starter
- 1584 posts since 25 Mar, 2017
Yes, that is the point of set smoothadsr.
If you want the ADSR attack amplitude of note 2 to smoothly start where the ADSR release amplitude of note 1 left off, if the release phase of ADSR note 1 was interrupted, then you want set smoothadsr=1.
If you want the ADSR to start from the first envelope point regardless of whether or not it interrupts a previous note, then you want set smoothadsr=0.
I think for what you are trying to do you want set smoothadsr=1.
See the user guide 15.1.1 smoothadsr.
If you want the ADSR attack amplitude of note 2 to smoothly start where the ADSR release amplitude of note 1 left off, if the release phase of ADSR note 1 was interrupted, then you want set smoothadsr=1.
If you want the ADSR to start from the first envelope point regardless of whether or not it interrupts a previous note, then you want set smoothadsr=0.
I think for what you are trying to do you want set smoothadsr=1.
See the user guide 15.1.1 smoothadsr.
-
- KVRist
- 149 posts since 16 Jul, 2014
Thanks for taking a look however in this case smoothadsr does not help because the issue is not where in the envelope the repeated note of the same pitch triggers, but rather the fact that either way the old voice is cut which is problematic if that voice has polyphonic modulation on it either from an envelope or polyphonic (note trigger) LFO .. in my case I am modulating pitch so it is very easy to hear (and see in the scope) that the old voices are cut.FathomSynth wrote:Yes, that is the point of set smoothadsr.
If you want the ADSR attack amplitude of note 2 to smoothly start where the ADSR release amplitude of note 1 left off, if the release phase of ADSR note 1 was interrupted, then you want set smoothadsr=1.
If you want the ADSR to start from the first envelope point regardless of whether or not it interrupts a previous note, then you want set smoothadsr=0.
I think for what you are trying to do you want set smoothadsr=1.
See the user guide 15.1.1 smoothadsr.
I have made a video (with audio) below which shows the issue in comparison to the free Tyrell N6 synth which plays the multiple voices as I would expect from a poly synth (I checked a number of others as well but since this one is freely available it seemed like a good choice). In comparison Fathom is exhibiting the behaviour I would expect from a mono synth or mono mode.
http://www.users.on.net/~provoc/Fathom% ... %20Cut.mp4
(NOTE: playing the above link in chrome treats it as audio only so you might need to download and view in VLC or similar although opening link in a new tab seems to work here!)
I have also uploaded a Reaper project plus the fathom patch in case it helps:
http://www.users.on.net/~provoc/Fathom% ... %20Cut.zip
EDIT: Accidentally uploaded wrong project so if you downloaded within 5 mins or so of this post please re-download
-
- KVRAF
- Topic Starter
- 1584 posts since 25 Mar, 2017
Are you really trying to create a real Shepard Tone?
If so stacking voices on the same note will not help because it will just get louder and louder.
You need one long note with multiple oscillators.
Each oscillator needs a separate saw shaped ADSR on the pitch octave,
and a separate triangle shaped ADSR on its volume.
Each oscillator pitch needs to snap back to its minimum exactly when its own volume is zero and halfway through its rising pitch when its volume is maximum.
Finally each ADSR needs to be out of phase by 360/N degrees where N is the number of oscillators.
Like this:
You could also do it with one oscillator and multiple tracks where each note is spaced by the envelope period / N.
If so stacking voices on the same note will not help because it will just get louder and louder.
You need one long note with multiple oscillators.
Each oscillator needs a separate saw shaped ADSR on the pitch octave,
and a separate triangle shaped ADSR on its volume.
Each oscillator pitch needs to snap back to its minimum exactly when its own volume is zero and halfway through its rising pitch when its volume is maximum.
Finally each ADSR needs to be out of phase by 360/N degrees where N is the number of oscillators.
Like this:
You could also do it with one oscillator and multiple tracks where each note is spaced by the envelope period / N.
You do not have the required permissions to view the files attached to this post.
-
- KVRist
- 149 posts since 16 Jul, 2014
My video was not trying to reproduce a Shepard tone but just a minimalist test case to show the problematic voicing behaviour i.e. Fathom does not exhibit “traditional” polyphonic voice behaviour on repeated notes.FathomSynth wrote:Are you really trying to create a real Shepard Tone?
Are you saying this is by design? Because I cannot see what the benefit of cutting voices like this would be (other than CPU) and it is different to other poly synths I have used (Tyrell N6 is just one example I chose for comparison in my video because it is free). In fact if it was not for the voice cutting I suspect that the smoothadsr functionality would be unnecessary.
P.S In case you are interested, here is the link to the Native Instruments video that shows how to create a Shepard tone with a single oscillator (done on Form but I was able to reproduce it easily enough using the same technique on a number of other synths). Fathom was the only one which didn’t work due to the voicing behaviour I have reported.
The technique is essentially the same as you describe but the trick is that the input notes are half the length of a 2 octave pitch modulation and the previous voice decay gives the volume modulation to get the desired effect using multiple voices of a single osc.
https://blog.native-instruments.com/wat ... tent=owned
-
- KVRAF
- Topic Starter
- 1584 posts since 25 Mar, 2017
Normally I'll do anything to help someone with a feature request.
In this case however I'm simply not willing to stack voices on the same note without limit because it poses an extreme safety hazard especially if a synth is used in a large venue.
I would be willing to add a setting which would enable it to stack up to three voices on the same note.
Do you need this just for the shepard tone or in general.
If in general, is there a problem with the smooth mode I should know about? The pads on Fathom with attack and release phase overlapping should be perfectly smooth on the same note unless there is a bug.
Here are all the synths I have in my plugin folder and which ones stack voices on the same note:
Alchemy No
Avenger No
Sylenth No
Omnisphere Yes but limited
Spire Yes but limited
Synthmaster Yes but limited
Zebra Yes but limited
None of them stack voices unlimited.
If you were to set the release time to 8 seconds and set polyphony on Tyrell to 32 voices and you hit 32 notes in rapid succession it would quickly become so loud that you would literally not be able to keep your ear phones on, or it would blow your speakers. Volumes amplify differently for 32 different notes than 32 of the same note, and the later is much more dangerous.
You may think it is stacking voices, but it's probably only doing up to 3.
Incidentally on the synths which stack the voices it sounds horrible my opinion.
And it also makes it impossible to control the detune sound on slow pads which might hit the same note in chords.
Just my opinion.
But like I said, if this is important I can make it a setting.
In this case however I'm simply not willing to stack voices on the same note without limit because it poses an extreme safety hazard especially if a synth is used in a large venue.
I would be willing to add a setting which would enable it to stack up to three voices on the same note.
Do you need this just for the shepard tone or in general.
If in general, is there a problem with the smooth mode I should know about? The pads on Fathom with attack and release phase overlapping should be perfectly smooth on the same note unless there is a bug.
Here are all the synths I have in my plugin folder and which ones stack voices on the same note:
Alchemy No
Avenger No
Sylenth No
Omnisphere Yes but limited
Spire Yes but limited
Synthmaster Yes but limited
Zebra Yes but limited
None of them stack voices unlimited.
If you were to set the release time to 8 seconds and set polyphony on Tyrell to 32 voices and you hit 32 notes in rapid succession it would quickly become so loud that you would literally not be able to keep your ear phones on, or it would blow your speakers. Volumes amplify differently for 32 different notes than 32 of the same note, and the later is much more dangerous.
You may think it is stacking voices, but it's probably only doing up to 3.
Incidentally on the synths which stack the voices it sounds horrible my opinion.
And it also makes it impossible to control the detune sound on slow pads which might hit the same note in chords.
Just my opinion.
But like I said, if this is important I can make it a setting.
- KVRAF
- 9562 posts since 6 Jan, 2017 from Outer Space
There is no difference in level if you hit the,same note or different ones. 32 voices = +15 dB as long they are not phase aligned. If you hit them rapidly they are not phase aligned... I do that all the time, there is no danger...FathomSynth wrote:If you were to set the release time to 8 seconds and set polyphony on Tyrell to 32 voices and you hit 32 notes in rapid succession it would quickly become so loud that you would literally not be able to keep your ear phones on, or it would blow your speakers. Volumes amplify differently for 32 different notes than 32 of the same note, and the later is much more dangerous.
With my LinnStrument I can hit the same note while holding the other. Any instrument which does not play multiple notes of the same pitch has a serious flaw for me. There is no need to limit the number of same notes. For me the minimum would be 10, because I have ten fingers...; - )
-
- KVRAF
- Topic Starter
- 1584 posts since 25 Mar, 2017
OK, I'll make it a setting.
- KVRAF
- 9562 posts since 6 Jan, 2017 from Outer Space
If you combine it with MPE it could be one setting...; - )
-
- KVRist
- 149 posts since 16 Jul, 2014
ThanksFathomSynth wrote:OK, I'll make it a setting.
And fair point about the potential hearing damage I had not considered that aspect although I do always have a limiter on the master buss just to be safe!
But as TJ points out you would probably have to work pretty hard to create a dangerous overload just by stacking repeated notes.
But to answer your question about my reason for the request, the Shepard experiment just made me notice it but more importantly it seemed like an unnecessary limitation that I had not seen before at least not in a comprehensive synth like Fathom. That said I take your point that even where synths stack voices they may be limiting it below max polyphony to 3 notes or so since I have not tested this explicitly except on Tyrell which I just checked and it will go all the way up to its max of 8 voices.
So I think your proposed solution of a "maxStackVoices" variable that is set to 1 by default but configured as high as the user wants/needs would be a good compromise
