Notes held with filter adsr amount
Hey guys,
I have a fairly large poly synth patch but with a problem which I have isolated and put into a patch :
When I alter the amount of signal that is passed to the filter adsr, it works but is not heard with notes held..differences are only heard when notes are released then pressed again.
I attempted to put a trigger bang float inside poly, which worked but introduced a new problem of the sound being distorted when the dial is turned.
I'm obviously missing something here, any ideas?
Many thanks.
Chris.
What You are trying to do is to scale trigger gain value.
Scaling like that works only if set before trigger takes place,
sending another value restarts the trigger.
Check legato mode if that is what You are after.
You'll find that in retrigger section of help file.
In legato mode ADSR will not ramp to 0 before retriggering,
but will just restart the envelope.
In that case the Dial will generate new attacks, which would jump to
set value according to attack time.
And - You don't need that {> 0.}
if You multiply the incomming velocity by any amount,
zero will remain zero.
By the way that dial "Amount to ADSR" is set to range -18000. 18000.
what do You do with that amount of gain ?
Hi there,
Firstly thank-you for your reply I really appreciate your time, I have tried legato mode as you suggested on the adsr but it doesn't seem to make any difference but I'm probably doing something wrong.
The dial is on that amount because these values allow for the sustain of the envelope, for example, to take the cut-off frequency up to it's maximum when the amount dial is fully turned..although there's probably a better way of doing it, as there will be with most of the patch no doubt.
It's my first device so I have a lot to learn but it would be great to get this one problem solved, here is the full poly subpatch :
and the main patch :
You'll see if you play it that the filter amount dial is heard when notes are released and pressed again, but not with notes held. Thank-you so much again for your time.
I'm sorry, but I can't play anything, the connections to poly are all lost.
That's because when one makes new from clipboard, the patch does not see the
subpatch.
But anyway adsr is just adsr and is not going to behave differently whatever You try to do.
If You update trigger value it is going to retrigger the whole envelope,
and there is no way to avoid it that I am aware of, legato mode just does not zero
the output before retriggering.
Output of adsr is nothing else but control signal, if You want to
scale it's output, then You could do it at the adsr output, rather than input.
That dial with -18000. 18000. :
negative values amplify and invert phase, so -100 is as loud as + 100,
just phase gets inverted. You need something else for that.
If You want to modify just the part of the running envelope,
like gain of sustain (which works only before release phase starts)
or release time then it would be ok.
But maybe You could try to control that EQ frequency
with some other control signal, like curve, line or whatever else.
or maybe using output of the first adsr, but scaled, inverted or I don't know what...
It all depends what sounds You are after.
Auto wah could be combo of sharp Q and low freq ramped
into lower freq and smoother Q with adjustable ramp time.
I hope that helps You a bit.
--------
I see You use a lot of cycle, saw,tri ,rect and switches to select waveforms,
would 1 cycle object with selectable waveforms be more effective ?
And also waveforms choice could be more interesting ?
There's the answer..scale it at the output, thank-you!! This has solved it, excellent.
Yes there's room for much improvement in the device, it's my first so early days for me at the moment. The negative amounts on the filter amount dial are just to give a wider range of results when altering the adsr amounts, I've narrowed it down to -10000 +10000 which works for now but yes I understand it's not entirely correct for the negative amounts in that it doesn't need to go back that far, so thanks for the advice on how to do it a better way..I shall take note of this.
Your suggestion of the cycle object for waveform choice I'm not sure I know what you mean? I know about using phasor as I have in the LFO's but that's about it.
Thanks again for your help so glad the dial works properly now.
If you did want to play around on it, or to see what I mean about the dial..it's here :
http://maxforlive.com/library/device/4666/altun-update
It does use an outrageous amount of CPU at the moment though, my next step is to learn how to improve this.
Have a look at help file of cycle~ object. It can use a buffer preloaded with
waveform in any form.
So You could load 4 buffers with sine, saw, square or any other waveform
and simply tell cycle to refer this or that buffer.
Let's calculate - You use 16 oscilators with cycle, saw ,tri and square, makes
16 x 16 voices = 256 osilators running all the time.
if You used cycle method then it would be 4 x 16 = 64,
And You would not need all that selectors for choosing waveform,
which would also add to lighter cpu load.
Of course all that routing would have to be rearanged,
but I am sure it would be worth it.
-------------------
I have tons of 512 sample waveforms If You wish to try,
here just 4 as replacement for the ones You use :
Wow the poly patch is much better, thanks!!
The question about why are those velocities being sent to the lfo phasor phase inlet, they are for the option to retrigger the phase for new notes (unless you were referring to the '>0' box, in which case I now know they are not necessary )
The cycle and buffer method obviously sounds much better and I am looking into this now and will use your waveforms..thanks a lot!
If I succeed maybe I'll try out some of your other waveforms too, I'm just looking now at how the user can specify which wave to use from the cycle / buffer combination.
As for all those gates, again I know there must be a better way of doing it and I aim to get this solved one day too.
It should be just simple message to the cycle object "set Sine" if buffer is named so.
You can leave selection menus as is, or maybe extend them
for additional waveforms.
If buffers would have exact names as in menu den simple prepend set
between menu and cycle would do.
And put buffers into main patcher, not into poly.
And random selection - didn't think about it, but there surely is a simple
solution...
512 sample buffers are really small, so if You prefer not to load files from hd,
one could embed sample values in coll objects and just dump to buffers on patch load.
I can send You exampl if You want.
I'll send You some waveforms to try, there are too many of em,
most of it sounds quit similar, but You can see yourself .
download link :
https://files.fm/u/9rhthqjq
And patch to fast preview samples :
Sorry but how do I ensure the .aiff files get saved inside the buffer? Every time I load them and come out of the patch they disappear I tried dropping them in, live.drop, read, replace, no luck...
My mistake, it's working perfect now exactly as you said, wonderful! Thank-you so much again for all your help I've learned a lot from this.
No problem,
I'll have a bit time later today - so I'll post You example
fot coll - buffer dump, and oscilator patch with random loading
of waveforms - actually one thing is maybe not going to work perfectlly
You use Note On to trigger random waveform selection.
It would be better to do it when ADSR finishes release phase,
so on next Note On waveform would be ready.
Here are new patches, both main and poly subpatch.
I had to reconnect stuff, to make it easier for me to understand it.
Have a look at ALL-BUFFERS in main patch and OSCILS in poly subpatch.
Maybe also 4 FM oscilators should be replaced by cycle-buffer combo,
because they get multiplied by each voice.
2 LFOs are not making a big difference, being just part of the main patch.
Now I am sure that also that big gates could be replaced by forwarding
or something else, but no need to hurry.
I hope it can serve You...
If I can make a suggestion:
You may want to try controlling your filter in terms of semitones rather than in Hz. The space from 10000 to 20000 Hz is half your range in Hz, but perceptually it’s just an octave wide.
if you do something like:
adsr~
*~ 136
+~ 0
clip~ 20 136
mtof~
The plus 0 is not necessary, but I use it as a reminder that I can add in other modulation sources and key following there.
The 136 value maps to ~21 kHz. It’s there to keep the filter frequency from aliasing. You may need to adjust that depending on which filters you’re using.
@sourceaudio, thankyou so much again for the guidance and the introduction to new methods..the buffer to coll works great and the CPU difference is now half what is was before I started this thread..excellent. Next I'll be looking at the forwarding method to reduce all those gates, maybe I'll post it when it happens and get a second opinion.
@petermcculloch, that's also a way of doing things I hadn't seen or considered before and I will experiment with this method also so I thank-you for your suggestion too...I'm guessing this would also help the problem of the 'amount to adsr' dial kind of stepping / jumping between the lower values when it is first turned from 0 to positive amounts, rather than smooth transitions or 'sweeping'. At the moment even with the shift key held it reaches too much too soon and I couldn't seem to make exponential scaling work properly with a dial that also has negative amounts so maybe your semitones approach deals with this nicely.
Yeah, it matches how a lot of analog synths work. I found the old Access Virus synth manuals and Sound on Sound Synth Secrets series to be helpful in working this stuff out.
I am glad it's going well for You with that project,
To go down a bit more with cpu I would also replace 4 FM oscilators with cycle- buffer combo.
This is all it needs, just connect middle outlet of FM Waveform Selector in Main patcher
to inlet 8 of poly.

Forgot about this one - forwarding LFO
Could someone please explain to me what a [$1 25] message does? I understand the number immediatley after the dollar chooses an element from a list, but what does the 25 after that do?
I see this being used everywhere and with different values used for the second number, I need to learn what's going on with this
$1 $2 etc changable arguments in a message forward received items.
$1 25 will output as received item combined with 25.
For example one can tell line to ramp to 1000 in 25 ms.
or {$1, $2 $2} - if You send {0 2000} message to it, then
line will see 0, 2000 2000 and so ramp from 0 to 2000 in 2000 ms.
A message can be a combination like :
{open $1, loop 1, 1 }
If You send audio file path to that message
and connect it to sfplay~, then sfplay~ will open the file, set loop to 1
and immediately start playing.
message with multiple $nn inside should receive a list containing
as many items as arguments.
Thank-you for the answer @sourceaudio, comprehensive.
@source audio, following on from your answer I have taken an example from the patch you were helping me with
Could you tell me what advantage [$1 20] has here over just using [sig~]?
If You would give it a thought _ the answer would be so obvious.
It is not that sound is different, but that control signal
gets abruptly changed when one sends a signal value and may
produce clicks or to harsh chages in loudness.
line~ will produce 20 ms ramp from -> to value, just like fade in or out.
Thankyou @sourceaudio, and thanks for your patience...I understand it now.
I have been using the coll and buffer method you showed me to make use of some of the waveforms you shared, I have noticed when notes go above C4 something very odd begins to happen to the sound.
I've narrowed it down to the simplest example using your technique
Any thoughts?
I have tried with different waveforms and with just a buffer without the coll re-write too but same result..
There is probably aliasing taking place at high frequencies.
Try saw~, instead of buffer/cycle combo, to see the difference.
Is there any way to avoid this aliasing when using the buffer/cycle combo?
Not that I know, it seems that low pass filtering and similar can't
totally fix the problem.
If You can, stick with original oscilators, there were also some
alternative oscils from various places etc, but I can't remember exactly.
Search antialiased oscilators etc might bring You some infos.