Trigger Behavior Issue


(Nathanael Weiss) #1

I want to trigger a sound module to play based on a parameter, but only if the cursor hits the very beginning of the module. In other words, I do not want the sound to start playing halfway through if the parameter changes. How to accomplish this?

I’ve created a video and an example document to illustrate this issue.

Here’s the video: https://youtu.be/v7YAMFDlYuo

And the example document: https://www.dropbox.com/s/hreou7p9wpxsrbq/TriggerTest.zip?dl=0


(Paulo Germano) #2

Hi Nathanael,

One solution to your problem maybe to add a single sound container and inside this container you drop the distorted kick sound.
You can make the container small enough just to trigger the audio event at the start of the beat and if the parameter changes after the first beat, the event won’t be under the cursor and won’t be triggered.

I changed your example to do this.
https://dl.dropboxusercontent.com/u/9391382/TriggerTestPG.zip
Take a look and let me know if that helped!


(Joseph Harvey) #3

For this to work, the sound module would need to continue playing when exited by the cursor, and in 1.08 it’s not possible to create a single sound module that continues playing when exited by the cursor on the timeline without using an AHDSR modulator. This solution could work if you used a multi sound module instead of a single sound module, but then you’d lose the timelocked behaviour (and the waveform graphic, which is useful when designing music events). That said, the core of this answer - making the length of the trigger region shorter than the quantization interval - is correct, and I’ve written an answer to that effect.


(Nathanael Weiss) #4

Thank you. This is an acceptable workaround and it solves both ends of the issue (a sound should never be played only halfway from the start or the middle). While this is an acceptable workaround, it is not ideal. As Joseph points out, you can no longer see the waveform and in general it makes for cumbersome musical projects, especially if you have tens or hundreds of sound modules to convert. It would be so much better if FMOD created a simple checkbox under the trigger conditions that made it so a sound module would only trigger if the conditions are met exactly when the cursor intersects with the very start of the module.


(Joseph Harvey) #5

There is a simple way to get the behaviour you’re looking for - and you actually came quite close to discovering it yourself.

Rather than setting the quantization of your kick sound module low, set it high. (Looking at your video, one or two bars should do it.) This ensures that the sound module can only starts playing when the cursor is over the exact start of a bar - and since the only bar start it overlaps is the one at 00:00:000 on your timeline, this trigger region will only play if the parameter is at the right value at that specific point.

Once a sound module is quantized to the beat or bar, it will only begin playing at the points it’s quantized to, even if all its parameter conditions are met. As a result, if you want it to only start playing at one specific point on the timeline, you should quantize it to that point and make sure it doesn’t overlap any other point it’s quantized to.


(Nathanael Weiss) #6

While this does work for sounds that fall at the start of the bar, it does not work for any sounds that don’t fall at the start of the bar. That’s why I included a few more shorter kicks later on in the bar, to illustrate that quantization does not solve the underlying problem, even when using higher quantization values. Thanks for answering though.


(Joseph Harvey) #7

Ah, I didn’t realise you needed a solution that also worked for sounds that don’t start at the start of a bar. That’s still entirely possible, but it’s a little more complicated to set up: First, you need to use non-timelocked sound modules that don’t cut off when exited by the cursor, which in 1.08 means you need to use non-looping multi sound modules. Then, you need to make sure that the length of the trigger region is short enough that it doesn’t cover more than one quantization point. This results in a sound module that can only starts playing at one particular point on the timeline.


(Joseph Harvey) #8

Incidentally, FMOD Studio version 1.09 will include some improvements to the way we handle waveform display and the behaviour of sound modules that are exited by the cursor, both of which will make this particular situation easier to deal with.


(Nathanael Weiss) #9

Thanks, Joseph. I can’t use multi-sounds though because I am procedurally selecting which sounds to play via a parameter. You can see from the video that the game has chosen notes E, G#, B and D#. There is no way for a multi-sound to select which sound plays via a parameter so I am using nested events (http://www.fmod.org/questions/question/select-a-sound-within-a-multisound-to-play-via-a-parameter/). The nested event has twelve different samples for each note and is selected via one of the note parameters. This is done for both long samples like pads and short samples like kicks and snares. I really hope 1.09 has a way to trigger a sound module (and allow it to fully play) only when the cursor crosses the very beginning of the module.


(Nathanael Weiss) #10

I can send you guys the project files I’m working on if that helps.


(Nathanael Weiss) #11

Also I should mention programmer sounds are something I’m going to try for selecting a note / sample at runtime. This seems like it would be much more efficient memory-wise than having 12 big samples loaded per track.


(Joseph Harvey) #12

@NathanielWeiss The method that uses multi sound modules will also work when using event sound modules. (I used multi sound modules in my comment because they were the closest thing to the single sound modules used in your question, but event sound modules have behaviour almost identical to multi sound modules for your purposes, and so work just as well.)