so i have an event that triggers manny times in rapid sucsession and i want to be able to dip the volume of this event after a few seconds of this., but i also want them to start of loud every time, is there a way i can do this?
i can do it with looping sounds with paramaters, is there a way to use paramaters like this on oneshot sounds ..(the problem is that the paramaters reset every time the event is triggerd,.)
- simon kamakazi asked 8 years ago
To be honest the most efficient way to do this, and the only way to do it at event level would be via code. You’d save yourself a lot of memory. The event is the highest level object in Designer so there isn’t the capability to sequence them from a master event – though we’d love to be able to do this, Firelight 😉
There’s two ways to do this in Designer; using spawn times or sound def sequencing. What works for you will depend on what you need it for. Spawn times are cheaper because they take less meta-data to describe in the .fev and at very high speeds can also be more reliable. Sound def sequencing chews up memory but lets you have more fun as you’re not limited to a single sound def.
For spawn times, you can set the sound def to respawn at a fixed or variable rate when trigered and place it on a layer. Your event parameter is a "Timer" with a velocity setting (I normally set velocity to 1 for this sort of thing and then use the parameter range to represent seconds) and controls a volume envelope which makes the event fade after a few seconds. When you play the event the spawn behaviour will cause the sound to retrigger whilst the parameter will cause it to get quieter. Since the parameter is non-looping it will stay at its terminal value whilst the event is playing and only reset when the event is restarted. When using spawn times you need to be aware that the event can stop itself if it finds that nothing is playing any more. There are a number of ways to work around it – a high respawn rate so there’s no silence, a seconds layer with a looping "don’t play" event to force the event to keep going, or using the "oneshot" event property and settging it to "No" – though if you do that it won’t free its event data until the code specifically tells it to so you’ll leak events if you’re not careful with it.
The more expensive but more flexible way is to use two parameters with velocity settings and use them to control many individual instances of the same sound definition or many separate sound definitions if that’s what you need. Set one of the parameter’s properties to looping and spread your sound defs out on a layer controlled by the looping parameter. When you play it the sounds will trigger as the parameter crosses them and since the parameter loops they will do so indefinatley. Set the second parameter to non-looping, add a volume envelope with the type of fade you require as in the example above. Now when you start the event, the instances will repeat but get quieter after the first few seconds. Since the second parameter is non-looping they will stay at that volume until you stop the event. You can change the rate simply by changing the settings of the control parameter but you will end up with a complex event that more expensive in memory. Also, I’ve found that if you try and do this sort of thing at very high speed the results aren’t always reliable, especially accross different platforms with different frame rates.
- JeffOfDeath answered 8 years ago
Please login first to submit.