Abnormal behavior: Cycle does not allow sound to decay to 0?

Abnormal behavior: Cycle does not allow sound to decay to 0?

Postby mikejm » Fri Sep 26, 2014 1:49 am

Hi Daven,

I'm loving Cycle so far, but I've noticed an abnormality with regards to sound decay/sustain behavior. Cycle does not seem to allow sounds to decay to 0 dB if a key remains pressed. Instead, it sustains all sounds at a level >0 dB as long as a key is pressed regardless of volume envelope.

This is seen in your presets as well as patches I have tried to build. For example, JapanDrum makes a very convincing drum sound. But if you hold a key down, it will sustain a simple tone infinitely after the "drum" sound has long since finished. This seems to be true of all the presets, despite the fact that as far as I can tell, the envelopes seem to be suggesting the sound should decay to 0, and it makes no sense for this behavior on many patches (eg. harpsichord, piano, drums). Natural instruments like these all decay naturally to absolute silence once struck.

Ideally if we specify a volume envelope to go to zero while in the blue range of the envelope it should go completely silent eventually regardless of how long a midi key is pressed. I can get them to go pretty quiet, but never fully silent. eg. Tabla goes quite quiet but not fully silent.

If it is of any relevance I am testing currently just using the on screen keyboard in Cycle, not a physical separate MIDI keyboard.

Is this something that can be fixed?

Thanks.
mikejm
 
Posts: 11
Joined: Mon Sep 22, 2014 3:47 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby Daven » Fri Sep 26, 2014 2:13 am

Hi Mike, glad you're enjoying it.

Instead, it sustains all sounds at a level >0 dB as long as a key is pressed regardless of volume envelope.


It does? I know that no factory preset's volume envelope go to zero but I'm quite sure it's possible.

Since the release curve is arbitrary, it can't just decay from the last envelope level. The release curve must be scaled up or down to the envelope level when the note is released, to make the curve continuous (prevent a click). If that level is zero, the release curve cannot be scaled - it's division by zero, and so without scaling there will be a click on note release. For that reason none of the presets volume envelope decays all the way zero if there's a release curve.

If you want a sound to go all the way to zero, just end the midi note and the release section will do it, so at most I think this would be an aesthetic concern?
Daven
Site Admin
 
Posts: 195
Joined: Fri May 17, 2013 12:05 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby mikejm » Fri Sep 26, 2014 3:08 am

Daven wrote:Hi Mike, glad you're enjoying it.

Instead, it sustains all sounds at a level >0 dB as long as a key is pressed regardless of volume envelope.


It does? I know that no factory preset's volume envelope go to zero but I'm quite sure it's possible.

Since the release curve is arbitrary, it can't just decay from the last envelope level. The release curve must be scaled up or down to the envelope level when the note is released, to make the curve continuous (prevent a click). If that level is zero, the release curve cannot be scaled - it's division by zero, and so without scaling there will be a click on note release. For that reason none of the presets volume envelope decays all the way zero if there's a release curve.

If you want a sound to go all the way to zero, just end the midi note and the release section will do it, so at most I think this would be an aesthetic concern?


I see Daven. You are very right. It seems it is possible to make it decay to 0 when it stays in the blue and thus does not have a release curve. I just created a patch from scratch to see if this would work okay and it does.

This approach will work well for drums like snare and bass drum. For such drums, there is no need for a "release" portion or "sustain" portion since these drums never express any such behavior. In addition, having them sustain infinitely as long as a midi key is depressed would mean any midi track I feed them would need every single midi note exactly customized to the right length to reach the perfect length of sound to fully realize the sound of the drum but avoid triggering the abnormal sustain. This would be prohibitive. Particularly, if I want the time envelope to warp with velocity within Cycle (eg. harder snare hits produce longer decays) - it would be impossible to get the MIDI track exactly right without either cutting off notes or hitting that abnormal sustain.

If the snare/bass drum sound naturally decays to negative infinity, I can just feed it a midi track with random length MIDI notes and as long as they are longer than the decay of the sound as defined in Cycle, I can let Cycle automate their exact durations based on whatever other data (like velocity) I want applied. I think personally any drum patch should therefore be designed to decay infinitely without sustain. But that is no bother to me either way since I now know how to get it the way I want.

This issue becomes more complicated based on what you've said for plucked instruments like a piano or guitar (or even hand drums like tablas) since these instruments also have no sustain, but do certainly have decays and, if you stop a note before it dies completely, a brief natural release.
Last edited by mikejm on Fri Sep 26, 2014 3:52 am, edited 2 times in total.
mikejm
 
Posts: 11
Joined: Mon Sep 22, 2014 3:47 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby mikejm » Fri Sep 26, 2014 3:36 am

To elaborate more on for example, a piano, I believe the natural behavior is (approximately):

- Notes have a decay of ~28-30 seconds over which time the signal logarithmically drops to negative infinity.
- There is no sustain behavior at all, as a true piano can never maintain the same decibel level of a single note over time without it decaying.
- If a note is released before the natural decay has fully completed, a release curve is triggered, which for example takes the last remaining volume level and divides it by x every cycle until it goes to 0.0000...0001 dB and dies.
- x is defined by the shape/slope of the release curve, but will always be a positive integer.
- If a note is released after the natural decay has fully progressed, this release curve will simply be dividing 0/x = 0 and no effect will be had on the signal, ie. no pop/click.

I'm not a programmer, so I don't know how possible or difficult this would be to implement, but intuitively it makes sense to me and in my mind should be able to provide perfectly accurate plucked instrument envelope behavior.

Otherwise we will be stuck choosing between unnatural sustain behaviors and unnaturally abrupt cessations of sound for these kinds of instruments, neither of which is a very good compromise. Especially considering how incredibly well Cycle can emulate these other instruments' other characteristics.

Regarding the interface on this issue, I've got some ideas for how the envelope window GUI could be tweaked to allow the comprehensible display of a release curve even in the presence of an antecedent blue curve which decays to zero. I can photoshop something crude up over the weekend to show you what I'm thinking.

I hope there's a way to make this work. It really makes a huge difference to the potential realism of Cycle's emulations.
mikejm
 
Posts: 11
Joined: Mon Sep 22, 2014 3:47 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby Daven » Sat Sep 27, 2014 1:51 am

Interesting points.

Honestly I hadn't given it much thought, I guess what seems a minor concession to one person can be a sacrifice to another. ;)

I think there might be two ways to solve the problem:

1. Separate the release curve from the attack/sustain part of the envelope, so it won't have to be normalized from the sustain level. Pros - it makes editing the release easier because it's not visually squashed when the sustain is low, also means if you want to move the sustain vertex from side to side (say to shorten a looping length), you don't have to group select and move all the release points too. Cons are it kind of looks odd.

2. Have a knob that sets an amount to translate the sustain part down by, for example say it's -0.5, if the sustain point is at y=0.5, then effectively the envelope sustains at 0, but visually it's still at 0.5 and the release curve trailing from it would still be editable as it's not squashed flat. On the other hand it's another knob and I don't want more clutter.


There are a few envelope options I'd like to add sometime, and clutter is a big reason for not implementing them. But if there are enough options to warrant it, perhaps a gear icon that would bring up a popup menu could be the solution. Options like global vs retriggered, a timescale multiplier, a flag for playback-time static vs dynamic, etc.
Daven
Site Admin
 
Posts: 195
Joined: Fri May 17, 2013 12:05 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby mikejm » Thu Oct 02, 2014 1:38 am

Daven wrote:Interesting points.

Honestly I hadn't given it much thought, I guess what seems a minor concession to one person can be a sacrifice to another. ;)

I think there might be two ways to solve the problem:

1. Separate the release curve from the attack/sustain part of the envelope, so it won't have to be normalized from the sustain level. Pros - it makes editing the release easier because it's not visually squashed when the sustain is low, also means if you want to move the sustain vertex from side to side (say to shorten a looping length), you don't have to group select and move all the release points too. Cons are it kind of looks odd.


Hi Daven,

I'm glad you're open to ideas on this. That option #1 you describe is exactly what I had in mind. I can appreciate your desire for a clean aesthetic. You seem to have a good eye for it. Cycle is quite attractive in its layout and design. I can see why you would want to maintain that.

I have a thought in mind as to how this sort of thing could be implemented in a way that would be relatively elegant and actually I think make editing those releases easier for the reasons you suggest. But I'm still getting the hang of Cycle, so before I post any graphics of how I think this might work, I want to get a bit more comfortable with the program. In particular, with the envelopes, I want to get some more practice with the looping/sustain aspect so I can be sure of what I'm thinking.

The more I play with Cycle though, the more I feel the program would benefit from some sort of solution for allowing release without sustain. For example, I think your Piano1 preset is amazing. On the lower notes, the tonality of it I think is superior to my (relatively inexpensive) Wurlitzer baby grand. It's got more bite to it which I enjoy. I love synthesis because it gives an infinitely low noise floor too.

I tweaked the envelope to give the patch a longer decay like a real piano and get rid of the sustain, because a real piano does not sustain. It sounds even better to me now, but when I release a key early, it cuts off with an unnatural abruptness that makes it instantly sound "electronic" rather than "acoustic" in character. It's really ruining an otherwise incredible effect.

I feel like if it just had that little touch of release to give it a natural feel it would be damn near perfect.

Thanks again for being willing to consider solutions. I will post back with my mock up suggestion when I have a bit more experience with Cycle and feel I can be confident about how it will or won't affect the whole envelope editing process.
mikejm
 
Posts: 11
Joined: Mon Sep 22, 2014 3:47 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby mikejm » Sun Oct 05, 2014 9:55 pm

Hi Daven,

I have been working within Cycle extensively, and I think I have worked out an effective way in the GUI to allow the release portion of the envelope to be decoupled from the sustain portion, while still maintaining an attractive, elegant, and intuitive design. I think that for people coming from traditional ADSR synth envelopes, this GUI might even more intuitive and easier to use. The design accomplishes this without adding any buttons or clutter, and while still maintaining the same functions the current GUI permits.

I strongly believe it would solve all the problems discussed above regarding emulating the natural acoustic behaviours of plucked/acoustic instruments, improve the flexibility of patch designs, and make envelope editing in Cycle faster and easier.

I've put a fair bit of thought and effort into this idea. I hope you'll give it serious consideration. :)

Interface Buttons:

Currently, the sustain and release portions of the curve are activated through the use of the "toggle vertex as loop" and "toggle vertex as sustain". While these can be used effectively, they are very different in nature from how most sustain and release functions are activated/deactivated within typical synthesizers, making them a bit confusing at first. In addition, currently, it is impossible to simply toggle on and off the entire sustain/loop collection of vertexes in a patch, without either deleting them altogether or letting them "rejoin" the blue curve, which would usually not be desirable.

In the redesign, the interface is made simpler and more intuitive by replacing the "toggle vertex as loop" and "toggle vertex as sustain" buttons with an "S" for sustain and "R" for release. These buttons would function to show/activate and hide/deactivate the sustain (previously called "loop") and release segments of the envelope.

Image

The Sustain Curve:

In this design, when the sustain option is toggled on, the last vertex of the blue curve becomes the start of the sustain section. When sustain is toggled on for a patch with no sustain data already stored, a second sustain vertex is also be created and appears slightly to the right of this. These vertexes, like the flanking two vertexes in a loop segment currently, would be linked in the vertical axis, so that moving one up/down moves them both up/down in tandem. These vertexes were given a slightly different visual design to signify their special function for the sustain section.

Image

To add complexity to the sustain portion, the rightmost sustain vertex would be dragged outwards to the right like any vertex, and then intervening vertexes could be added and moved around like usual.

Image

Because the sustain portion would now be togglable as a whole, if you want to demo a sound with or without sustain, you could simply click the "S" button and have the whole orange sustain portion disappear and reappear. Cycle should save the information from the vertexes in the sustain portion even when sustain is off, so that toggling "S" on and off brings you right back to where you left off. This would make testing sustain curve implementations in a patch faster and easier than before.

The Release Curve:

In this design, the release portion has been visually decoupled from the blue "Attack-Decay" portion of the curve and the orange "Sustain" portion. When the release curve is toggled on, a intervening buffer of space (fixed-width) is maintained between the first node of the release curve and the last node of the preceding blue/orange curve to represent this.

Image

Image

The first vertex of the release curve is anchored to the vertical half way point of the screen. This position of this vertex would be uneditable in any capacity, since it would serve solely as a landmark to represent the last envelope position that was active when the release curve got triggered (ie. when a key was released). This vertex has therefore also been given a special visual design to signify its unique function.

Again with this design, it becomes a simple matter to toggle on/off the release portion altogether, so testing release curve changes becomes faster and easier than before. Because the release curve always starts now at the vertical midline of the screen, seeing the whole shape of the release curve becomes easier than previously, when it might be squashed to the bottom of the screen as a tiny tail to a prior curve.

With the decoupling of the release curve this design would allow, we could now create exponential decay curves for both the blue "attack-decay" portion of the envelope and the release portion, without any sustain behaviour, simulating natural acoustic plucked/drummed instrument behaviour more perfectly.

Image

Image

Lengths of Curve Segments:

Currently, changing the length of one curve segment (blue, orange, red) by moving its last vertex will change the length of the neighboring segment as well. The only way to avoid this is to select all vertexes to the right of a colored curve and move them manually as a unit. This is cumbersome, as in most situations, one would only want to edit one part of the curve at a time. ie. develop a longer attack/decay blue curve without affecting a perhaps already perfectly designed orange sustain segment.

Envelope editing would therefore be faster and more natural if the lengths of each differently colored curve segment could change independently by default. Length of each colored segment could be best controlled by its last vertex. Shifting these last vertexes of each segment would then shift everything to the right of them (in the other colored curves) as an unchanged unit.

Image
Image
Image

I hope you can see the many potential benefits of these proposed envelope design changes, Daven. :) I have put thought and effort into this because I believe Cycle is a great product with a lot of promise. With this issue corrected, it would be much more powerful and capable for the purpose of acoustic sound modelling.

Let me know your thoughts. If there are any design problems I did not think of that this approach might cause, I'd be happy to help brainstorm solutions.

If for any reason the demonstration pictures are not showing up, the full gallery of them is here:
http://postimg.org/gallery/2sk2xlb78/54cf35d7/
http://postimg.org/gallery/395xjlhtq/87a47509/

Thanks,
Mike
mikejm
 
Posts: 11
Joined: Mon Sep 22, 2014 3:47 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby Daven » Mon Oct 13, 2014 2:20 pm

Indeed, thanks a lot for the effort...lots of well-considered ideas here. You can expect an update to envelopes next patch.
Daven
Site Admin
 
Posts: 195
Joined: Fri May 17, 2013 12:05 am

Re: Abnormal behavior: Cycle does not allow sound to decay t

Postby zenwarlord » Sat Nov 28, 2015 6:40 pm

I had a comment although I am a newbie with respect to this. I am maybe agreeing with the OP, at least if this is what Omnisphere does. Perhaps there could be amplitude envelope presets.

Distinct from reverberation which is usually accomplished by playing the final wave through a reverb module or plugin , there are cases of extended resonance where "retriggering" ie blowing/plucking/striking is occuring in an additive way that affects already resonating sound, such as a digereedoo or large wind instrument. Even a guitar periodically placed against a wooden wall stud will resonate in complex ways for a period. Since this "secondary retriggering" is really pretty common and natural, like in the case of a hihat, it should be possible to allow the effect. This is why its nice in Cycle and Omnisphere to bypass the ADSR in favor of editable points, and I am not a programmer at Specrosonics so I don't know the differences between Cycle and Omnisphere on this one, but they've got a decent standard to watch.

This is why when i go into the envelope section in Omnisphere, i switch it out of ASDR mode, and can focus on more than those points, and can use the amplitude envelope for artistic expression, where the points are useful in terms of being or affecting graphical controls, more than representations of distinct zones.

The simple way that Sample Cell dealt with cymbal and hi-hat retriggering comes to mind here; the program triggered the loop again, but at a controllable distance inward from the initial transient. Effective, but really I am just throwing a lot of ideas around. Might something like this be one day possible in Cycle? Who knows.

I do notice a very slight click when I release a MIDI key on many sounds; I have not encountered this in most other synths, and my experience with romplers is limited. I think it has bearing on the above OP comments.

Are the other wave players, (which would include Cycle as well as samplers) that do something different and avoid the click, since it is not wanted or expected. I wonder if the click is the result of implenenting something the OP suggested, or the mere fact of not having each envelope automatically go smoothly fully to zero after key release ( prior to any other playback tasks - but the click is noticeable when stopping note pressing altogether.)

Anyway, just some ill-informed opinions on my part I guess.
zenwarlord
 
Posts: 9
Joined: Fri Nov 27, 2015 8:48 am


Return to Cycle

Who is online

Users browsing this forum: No registered users and 3 guests

cron