If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
Interesting envelope
25 posts
• Page 2 of 3 • 1, 2, 3
Re: Interesting envelope
tulamide wrote:Did you even try it? If you follow it to where I wrote "This will get rid of sustaining", you will see that it works exactly that way! Decay of course goes to sustain level, then it immediately releases.
Interesting tulamide.
Before spending time on this I of course checked out your suggestion. After all, why repeat the effort?
But mine didn’t behave like Kevin had wanted. It just went Attack then Decay to zero. So then I worked on it and got to my solution.
This means I’d really like to see yours working and maybe spot what I did wrong, or where your instructions weren’t perfect (unlikely!).
Cheers
Spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: Interesting envelope
Spogg wrote:tulamide wrote:Did you even try it? If you follow it to where I wrote "This will get rid of sustaining", you will see that it works exactly that way! Decay of course goes to sustain level, then it immediately releases.
Interesting tulamide.
Before spending time on this I of course checked out your suggestion. After all, why repeat the effort?
But mine didn’t behave like Kevin had wanted. It just went Attack then Decay to zero. So then I worked on it and got to my solution.
This means I’d really like to see yours working and maybe spot what I did wrong, or where your instructions weren’t perfect (unlikely!).
Cheers
Spogg
That's even more interesting, because your changes do the exact same thing than mine. As you correctly noticed stage == 2 means sustain level is reached. The only difference is that you send out from the dsp editor and back in to the dsp editor, whereas my example does it right in the code.
But it's ok. Someone asked for help, I helped. It was appreciated, but not used. You offered a fully worked out fsm that can simply be put into the toolbox, without the need to do the changes on your own. This is of course preferred. And your fsm looks good, has a scope to present the outcome, etc. Everything needed to see the result rather than mathematically comprehend it, which is a good thing for a software that is about using without programming.
So it's fine, I was just disappointed that my example was pushed away so quickly.
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: Interesting envelope
Sorry for my insult, tula - it wasn't meant that way; I made an assumption based on ignorance and inexperience which is always a bad idea. You are absolutely right - I should have tried it before responding, and the last thing in the world I want is for anyone on this forum (especially you and Spogg) to feel taken advantage of or used. I shall be much more cautious in the future!
Thanks Spogg for all that - I was only hoping for what tulamide responded with - a "here's how ya do it". I hope you're right about being able to plug this solution into any code-based EG - I'd really like this envelope to be exponential; even though the manual diagrams show them to be linear, I suspect that this was just down to that being a simpler way to physically draw them for the printed manual. I believe virtually all pre-digital synths had expo egs.
Thanks again to both of you - you guys ROCK!
Thanks Spogg for all that - I was only hoping for what tulamide responded with - a "here's how ya do it". I hope you're right about being able to plug this solution into any code-based EG - I'd really like this envelope to be exponential; even though the manual diagrams show them to be linear, I suspect that this was just down to that being a simpler way to physically draw them for the printed manual. I believe virtually all pre-digital synths had expo egs.
Thanks again to both of you - you guys ROCK!
Website for the plugins : http://kbrownsynthplugins.weebly.com/
- k brown
- Posts: 1198
- Joined: Tue Aug 16, 2016 7:10 pm
- Location: San Francisco, CA USA
Re: Interesting envelope
I've got tulamide's idea fixed now and it only takes 2 lines to be added to the ADSR code.
I'll do an exponential one tomorrow and share, but I have to go and drink wine with my wife now
Tomorrow...
spogg
I'll do an exponential one tomorrow and share, but I have to go and drink wine with my wife now
Tomorrow...
spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: Interesting envelope
That would be great! What version of FS are you using? I'm on 3.0.6 and it won't open your schematic. I was fearful of the later versions based on forum posts that this version was the last stable one - is that no longer true?
I'm trying tula's code changes (first to Myco's old expo eg, then to the stock ADSR) but maybe I'm not doing it right - didn't seem to have any effect on the Myco expo (?), on the ADSR, the Sustain control doesn't change the Sustain level (stays at 1), and the Decay now acts as Hold time!
Here's what this is looking like - the synth itself isn't anything special (except maybe that all the oscs' waveforms can be mixed in any combination [like Memorymoog], while retaining a consistent output level); the attraction here is the 4-way assignable Joystick (four separate CVs: -X, +X, -Y and +Y. The hardware had the Y axis hardwired to pitch, to be used as a pitch bender; only the two X axis' were assignable. Here I've made all four axis' assignable) and the rather unique Mod Banks. Unlike Moog Voyager and Sub 37, which can only send a Mod Source thru a single Controller to a single Destination, each of the four Banks can have any combination of up to eight Controllers and send to any combination of up to four Destinations.
The plugin will look more like Voyetra Ones (the never-released monophonic version) than the Voyetra 8; no menu-diving, hidden 'pages'. Primarily emulates the 'Layer' mode of the V-8 - a stereo pair of poly voices.
Ultimately everything on left side will be duplicated on the right (once I get it all working!). GUI based on the Voyetra One.
I'm trying tula's code changes (first to Myco's old expo eg, then to the stock ADSR) but maybe I'm not doing it right - didn't seem to have any effect on the Myco expo (?), on the ADSR, the Sustain control doesn't change the Sustain level (stays at 1), and the Decay now acts as Hold time!
Here's what this is looking like - the synth itself isn't anything special (except maybe that all the oscs' waveforms can be mixed in any combination [like Memorymoog], while retaining a consistent output level); the attraction here is the 4-way assignable Joystick (four separate CVs: -X, +X, -Y and +Y. The hardware had the Y axis hardwired to pitch, to be used as a pitch bender; only the two X axis' were assignable. Here I've made all four axis' assignable) and the rather unique Mod Banks. Unlike Moog Voyager and Sub 37, which can only send a Mod Source thru a single Controller to a single Destination, each of the four Banks can have any combination of up to eight Controllers and send to any combination of up to four Destinations.
The plugin will look more like Voyetra Ones (the never-released monophonic version) than the Voyetra 8; no menu-diving, hidden 'pages'. Primarily emulates the 'Layer' mode of the V-8 - a stereo pair of poly voices.
Ultimately everything on left side will be duplicated on the right (once I get it all working!). GUI based on the Voyetra One.
Last edited by k brown on Thu May 16, 2019 5:12 am, edited 2 times in total.
Website for the plugins : http://kbrownsynthplugins.weebly.com/
- k brown
- Posts: 1198
- Joined: Tue Aug 16, 2016 7:10 pm
- Location: San Francisco, CA USA
Re: Interesting envelope
Spogg wrote:I've got tulamide's idea fixed now and it only takes 2 lines to be added to the ADSR code.
I'll do an exponential one tomorrow and share, but I have to go and drink wine with my wife now
Tomorrow...
spogg
So I messed up somewhere? Well, at least you could solve it then (I'm curious where I failed) and it still is just two lines as before!
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: Interesting envelope
Good morning!
@tulamide
Your approach was more elegant than mine and used less CPU. However, the actual code was, shall we say, somewhat less than adequate for its intended function.
This sets stage to zero when stage < 2, irrespective of the previous stage value calculation. The bool comparison (stage >=2.0) is false when stage == 1, so the previous value of stage is overwritten with zero.
This one works:
Here, mode is the streamin name that enables the AD(S)R function.
With this approach the previous value of stage is preserved, and only set to 4 when it’s at 2 (by adding 2).
@ Kevin
The attached schematic has the modified linear ADSR (using tulamide’s approach) and an exponentiation module where you can choose the steepness you want. I find Expo 1 the best for more natural volume contouring. This uses the cheapest method to get an approximated exponential response.
I’ve also included Martin’s exponential ADSR. I couldn’t modify the ASM version so I used the DSP code version to give the AD(S)R option. The code line I added differs from the one above because Martin’s stage system differs, so it’s a little more involved.
I don’t think the AD(S)R function I added to Martin’s is as useful, because it needs to decay exponentially to the set sustain level, before going into the release phase. Where Martin’s might be better is for very fast attacks, because the Attack phase is linear rather than exponential. That gives a more sudden increase in volume for more initial punch.
You say you can’t open my earlier schematic and I have no idea why. I use only 3.06 and it seems tulamide was ok with it (also 3.06). Maybe you could make a backup and re-install 3.06…
Hope this is helpful and good luck.
Cheers
Spogg
@tulamide
Your approach was more elegant than mine and used less CPU. However, the actual code was, shall we say, somewhat less than adequate for its intended function.
- Code: Select all
stage = (stage >= 2.0)&4;
This sets stage to zero when stage < 2, irrespective of the previous stage value calculation. The bool comparison (stage >=2.0) is false when stage == 1, so the previous value of stage is overwritten with zero.
This one works:
- Code: Select all
stage = stage +2 &(stage == 2)& (mode>0.5);
Here, mode is the streamin name that enables the AD(S)R function.
With this approach the previous value of stage is preserved, and only set to 4 when it’s at 2 (by adding 2).
@ Kevin
The attached schematic has the modified linear ADSR (using tulamide’s approach) and an exponentiation module where you can choose the steepness you want. I find Expo 1 the best for more natural volume contouring. This uses the cheapest method to get an approximated exponential response.
I’ve also included Martin’s exponential ADSR. I couldn’t modify the ASM version so I used the DSP code version to give the AD(S)R option. The code line I added differs from the one above because Martin’s stage system differs, so it’s a little more involved.
I don’t think the AD(S)R function I added to Martin’s is as useful, because it needs to decay exponentially to the set sustain level, before going into the release phase. Where Martin’s might be better is for very fast attacks, because the Attack phase is linear rather than exponential. That gives a more sudden increase in volume for more initial punch.
You say you can’t open my earlier schematic and I have no idea why. I use only 3.06 and it seems tulamide was ok with it (also 3.06). Maybe you could make a backup and re-install 3.06…
Hope this is helpful and good luck.
Cheers
Spogg
- Attachments
-
- AD(S)R with tulamide's idea and exponential options v1.04 .fsm
- (952.68 KiB) Downloaded 796 times
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: Interesting envelope
Spogg wrote:@tulamide
Your approach was more elegant than mine and used less CPU. However, the actual code was, shall we say, somewhat less than adequate for its intended function.
- Code: Select all
stage = (stage >= 2.0)&4;
This sets stage to zero when stage < 2, irrespective of the previous stage value calculation. The bool comparison (stage >=2.0) is false when stage == 1, so the previous value of stage is overwritten with zero.
This one works:
- Code: Select all
stage = stage +2 &(stage == 2)& (mode>0.5);
Here, mode is the streamin name that enables the AD(S)R function.
With this approach the previous value of stage is preserved, and only set to 4 when it’s at 2 (by adding 2).
You're so right! I didn't see it, yet it's so obvious, now that you pointed it out! Good job! ...And yes, less than adequate is a fitting description
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: Interesting envelope
It was actually a joint effort in the end tulamide.
As I said, your idea and approach was better than mine. I don’t think I would ever have thought of it.
I’ve often fallen into a similar trap of overwriting variables. DSP is very unforgiving and not like a “proper” programming language.
It would be so much easier if it was structured like Ruby, with if then else etc. Lots of lovely conditionals, subroutines or methods to call. What’s frustrating is that ASM can do much of this, and DSP is converted into ASM to run.
Anyways, we got there!
Cheers
Spogg
As I said, your idea and approach was better than mine. I don’t think I would ever have thought of it.
I’ve often fallen into a similar trap of overwriting variables. DSP is very unforgiving and not like a “proper” programming language.
It would be so much easier if it was structured like Ruby, with if then else etc. Lots of lovely conditionals, subroutines or methods to call. What’s frustrating is that ASM can do much of this, and DSP is converted into ASM to run.
Anyways, we got there!
Cheers
Spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: Interesting envelope
Doing a Voyetra 8 Kevin ? Thats one interesting synthesizer!
- Halon
- Posts: 321
- Joined: Sat Nov 28, 2015 4:42 pm
- Location: Norway
25 posts
• Page 2 of 3 • 1, 2, 3
Who is online
Users browsing this forum: No registered users and 15 guests