Thorn: Dmitry Sches' new synth!
- KVRAF
- 2481 posts since 22 Sep, 2016
Thumbs up, Dimitri...great work!
- KVRAF
- 5564 posts since 13 Jan, 2005 from the bottom of my heart
The demo restriction is totally fair! Demo is very usable!thesampleguru wrote:Lame. demo restrictions make it unusable. WHEN WILL DEVELOPERS LEARN ETC, ETC..
What kind of restriction do you prefer? A light beep every 2nd day?
Whoever wants music instead of noise, joy instead of pleasure, soul instead of gold, creative work instead of business, passion instead of foolery, finds no home in this trivial world of ours.
- KVRAF
- 3204 posts since 17 Apr, 2010 from Slovenia
Awww, man, you ROCK!sches wrote:Hello guys, and here another 1.0.4 update goes. You could download it at the website or by these links:
For Windows: http://dmitrysches.com/files/download/Thorn_Win_104.zip
For Mac: http://dmitrysches.com/files/download/Thorn_Mac_104.zip
Here is the change log:
- Added MSEG/STEPPER OneShot mode
- Now Thorn remembers recent folder when importing WAV-files
- Fixed Windows 32 bit stability issues
- Adjusted polyphony stealing scheme, now Thorn tries to not steal sustained voices if possible
- Adjusted LFO syncing when Arp is on
- Added "Disable MIDI Output" option to solve MIDI recording issue in Sonar
- Fixed multiple minor GUI/processing issues
- Adjusted user manual
Just few comments on this update. I wanted to add CPU idle mode for it, but it turned out that it's a quite hard task. But I'll be exploring it further, because it would be cool to save more CPU for sure.
More updates to come... Again, thank you for feedback, reports and support!
Hey, I'm quite aware of some of the challenges regarding the idle situation, especially since you have the effects.
Looks to me like the Reverb is the biggest culprit, actually. I wonder, if you could be so bold to check for a denormal threshold, possibly giving it a last ramp to avoid the audiophiles from flipping out, though that would defeat the purpose, I imagine. Feels to me that it is a denormal thing, though, because the cpu stays up REALLY high for virtually nothing. That's a denormal classic.
A wonderful KVRler here called "aciddose" gave me a fantastic tip once to use this line in init:
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
That's meant to avoid the denormal and seems to do a mighty fine job.
THANK YOU, for sure! Downloading right away!
- KVRAF
- 3204 posts since 17 Apr, 2010 from Slovenia
Is it possible for you to have a look at the envelopes for modulation again, because of the attack problem!?
A drastic example goes like this:
- OSC 1: make a sine in the first cell and a sine one octave higher in the last. All in between are morphs.
- AMP ENV: attack=0% | decay = 0% | sustain = 100% | release = 0% (or whatever)
- Modulation: AMP ENV - ... - 100% OSC1 Pos
When you play this (regardless of declick, by the way), you'll get a blip from position 0 before it goes up to 100% position. But that shouldn't be! If attack is 0%, there literally shouldn't be one moment on position 0%. I know, you know this, and I must imagine that there are reasons, but this is currently for me likely the most uncomfortable frustration, since there's no healthy way around it.
Any chance you can take a look?
Other than that, everything runs beautifully. No complaints about the update for sure!
A drastic example goes like this:
- OSC 1: make a sine in the first cell and a sine one octave higher in the last. All in between are morphs.
- AMP ENV: attack=0% | decay = 0% | sustain = 100% | release = 0% (or whatever)
- Modulation: AMP ENV - ... - 100% OSC1 Pos
When you play this (regardless of declick, by the way), you'll get a blip from position 0 before it goes up to 100% position. But that shouldn't be! If attack is 0%, there literally shouldn't be one moment on position 0%. I know, you know this, and I must imagine that there are reasons, but this is currently for me likely the most uncomfortable frustration, since there's no healthy way around it.
Any chance you can take a look?
Other than that, everything runs beautifully. No complaints about the update for sure!
-
- KVRAF
- 9855 posts since 15 Sep, 2005 from East Coast of the USA
Here is a preset I made while getting used to Thorn's many controls
=)
https://soundcloud.com/examigan/thorn-preset-time
=)
https://soundcloud.com/examigan/thorn-preset-time
- KVRAF
- 2765 posts since 15 Feb, 2017 from a worn out vinyl groove
Very good point and it explains why I have had "unexpected" behaviour when using env.Taron wrote:Is it possible for you to have a look at the envelopes for modulation again, because of the attack problem!?
A drastic example goes like this:
- OSC 1: make a sine in the first cell and a sine one octave higher in the last. All in between are morphs.
- AMP ENV: attack=0% | decay = 0% | sustain = 100% | release = 0% (or whatever)
- Modulation: AMP ENV - ... - 100% OSC1 Pos
When you play this (regardless of declick, by the way), you'll get a blip from position 0 before it goes up to 100% position. But that shouldn't be! If attack is 0%, there literally shouldn't be one moment on position 0%. I know, you know this, and I must imagine that there are reasons, but this is currently for me likely the most uncomfortable frustration, since there's no healthy way around it.
Because I often use a lot of modulation, I have not spent time to de-construct exactly where the problem has arisen, though this does go some ways to explain.
My solution so far has been to use DAW auto/envs or re-work the patch.
- KVRian
- 929 posts since 8 Mar, 2008 from Crestview, Florida
^ Looks like a very fast envelope modulation of the "POS" knob. I asked Dmitry about this some time ago and he explained that (depending on your sample rate) there's about 10 milliseconds of "morphing delay" since FFT cannot be computed in real time. Sadly, this rules out "snappy" modulations of the Spectrum Table. It's a forgivable shortcoming, since it's a processing limitation, not so much a design flaw.Taron wrote:Is it possible for you to have a look at the envelopes for modulation again, because of the attack problem!?
A drastic example goes like this:
- OSC 1: make a sine in the first cell and a sine one octave higher in the last. All in between are morphs.
- AMP ENV: attack=0% | decay = 0% | sustain = 100% | release = 0% (or whatever)
- Modulation: AMP ENV - ... - 100% OSC1 Pos
When you play this (regardless of declick, by the way), you'll get a blip from position 0 before it goes up to 100% position. But that shouldn't be! If attack is 0%, there literally shouldn't be one moment on position 0%. I know, you know this, and I must imagine that there are reasons, but this is currently for me likely the most uncomfortable frustration, since there's no healthy way around it.
Any chance you can take a look?
Other than that, everything runs beautifully. No complaints about the update for sure!
Last edited by Sound Author on Sun Nov 12, 2017 12:39 am, edited 2 times in total.
- KVRian
- 929 posts since 8 Mar, 2008 from Crestview, Florida
delete
- KVRAF
- 3204 posts since 17 Apr, 2010 from Slovenia
Thanks for the info, first of all!Sound Author wrote: ^ Looks like a very fast envelope modulation of the "POS" knob. I asked Dmitry about this some time ago and he explained that there is about 10 milliseconds of "morphing delay" since FFT cannot be computed in real time. Sadly, this rules out "snappy" modulations of the Spectrum Table. It's a forgivable shortcoming, since it's a processing limitation, not so much a design flaw.
But it's not the problem! If you invert the process, setting the position to 100% and use an envelope with slow attack and set modulation to be -100%, then it starts from there, which is the same that should happen at an attack of 0% with modulation at 100%. So, this is not the problem. Even if there was a switch that would understand attack 0% means start at the given modulation amount rather than ramping there, it would do the trick. If an attack of 1% would then deal with the 10 millisecs, everything would be fine. Just that 0% attack should be 100% what ever the modulation amount is at the start!
- KVRian
- 929 posts since 8 Mar, 2008 from Crestview, Florida
Well, as you pointed out, the Spectrum Table is ramping from 0-100% instead of just starting at 100%, so my guess is that the morphing delay is causing that blip. But you make a valid point. If there was a way for envelopes to tell the Spectrum Table not to even bother with the attack stage when attack is set to 0%, then yeah, the Spectrum Table might smoothly morph from the decay stage, and if you did the same with the decay stage (when set to 0%) then the Spectrum Table would just line up with the sustain stage and wait for the release.Taron wrote:Thanks for the info, first of all!Sound Author wrote: ^ Looks like a very fast envelope modulation of the "POS" knob. I asked Dmitry about this some time ago and he explained that there is about 10 milliseconds of "morphing delay" since FFT cannot be computed in real time. Sadly, this rules out "snappy" modulations of the Spectrum Table. It's a forgivable shortcoming, since it's a processing limitation, not so much a design flaw.
But it's not the problem! If you invert the process, setting the position to 100% and use an envelope with slow attack and set modulation to be -100%, then it starts from there, which is the same that should happen at an attack of 0% with modulation at 100%. So, this is not the problem. Even if there was a switch that would understand attack 0% means start at the given modulation amount rather than ramping there, it would do the trick. If an attack of 1% would then deal with the 10 millisecs, everything would be fine. Just that 0% attack should be 100% what ever the modulation amount is at the start!
Of course, I'm no developer. It's all easier said than done.
- KVRAF
- 6208 posts since 25 Dec, 2004
about 375 factory patches so far i think
sketches... http://soundcloud.com/onesnzeros
some artists i support... https://bandcamp.com/spectraselecta
some artists i support... https://bandcamp.com/spectraselecta
- KVRAF
- 3204 posts since 17 Apr, 2010 from Slovenia
Absolutely. I am a developer and sometimes it's not the fix that's the problem, but the guaranteed change this will have on existing presets that have 0% Attack. Though, my guess is that it will not hurt. Rather that suddenly those presets sound like they were originally intended.Sound Author wrote:Well, as you pointed out, the Spectrum Table is ramping from 0-100% instead of just starting at 100%, so my guess is that the morphing delay is causing that blip. But you make a valid point. If there was a way for envelopes to tell the Spectrum Table not to even bother with the attack stage when attack is set to 0%, then yeah, the Spectrum Table might smoothly morph from the decay stage, and if you did the same with the decay stage (when set to 0%) then the Spectrum Table would just line up with the sustain stage and wait for the release.Taron wrote:Thanks for the info, first of all!Sound Author wrote: ^ Looks like a very fast envelope modulation of the "POS" knob. I asked Dmitry about this some time ago and he explained that there is about 10 milliseconds of "morphing delay" since FFT cannot be computed in real time. Sadly, this rules out "snappy" modulations of the Spectrum Table. It's a forgivable shortcoming, since it's a processing limitation, not so much a design flaw.
But it's not the problem! If you invert the process, setting the position to 100% and use an envelope with slow attack and set modulation to be -100%, then it starts from there, which is the same that should happen at an attack of 0% with modulation at 100%. So, this is not the problem. Even if there was a switch that would understand attack 0% means start at the given modulation amount rather than ramping there, it would do the trick. If an attack of 1% would then deal with the 10 millisecs, everything would be fine. Just that 0% attack should be 100% what ever the modulation amount is at the start!
Of course, I'm no developer. It's all easier said than done.
I'm assuming the problem is the universal nature of how something like spectrum tables responds to the modulation stage. I figure, it acts in such generic way to the modulation values that it does not (have to) know what the routine does that feeds the modulation, but only know the range of values it gets. It always initializes to the originally set value and then receives the incoming value and deals with it from there.
This, of course, is bold, I think. Probably nice and easy at first but I would put a tiny routine into the init part of each modulation that goes: compute me the first value with the given range (parameter value + (modulation value-parameter value)* modulator) and init with that! Though, I don't know the code, of course.
ALSO this would solve that exact same trouble with all other modulation sources, because it happens, of course, with everything, I believe... ENV, LFO, MSEG, etc...simply because of the order of the process. I'm not sure why it is that way, but apparently the chain of events currently has modulation in a spot that doesn't feature into the init of a sound's parameters. Once this was addressed, everything would act far more predictable or as expected. Would be fantastic!
- KVRAF
- 3228 posts since 10 Nov, 2013 from Germany
SOLVED. It just takes some time to overtake the new setting. Have to play 10-15 notes and then the new envelope timing is fully active.Chris-S wrote:AMP ENV KEY scaling:
concerning the manual this should shorten the envelope times for higher notes.
But I see no effect, when setting this to 100%.
Thanks for the 1.0.4. The graphical glitches in the Harmonic Filter display are gone.
- KVRAF
- 2765 posts since 15 Feb, 2017 from a worn out vinyl groove
I think this MIGHT be what I am expecting.. certainly sounds about right!Taron wrote:
compute me the first value with the given range (parameter value + (modulation value-parameter value)* modulator) and init with that! Though, I don't know the code, of course.![]()
ALSO this would solve that exact same trouble with all other modulation sources, because it happens, of course, with everything, I believe... ENV, LFO, MSEG, etc...simply because of the order of the process. I'm not sure why it is that way, but apparently the chain of events currently has modulation in a spot that doesn't feature into the init of a sound's parameters. Once this was addressed, everything would act far more predictable or as expected. Would be fantastic!
