How can I create a multiinstrument using different lenghts?

I am trying to recreate a layering behaviour where each individual layer uses multiinstrument.
I am using 3 different layers at the moment: Bass, Texture and Melody

For intance, I have 6 different bass lines and all are 6 bars long, so there is no ussie there. I am using an event instrument and inside it, I have a multiinstrument with the desired loop behaviour.

The issue I have found is that I would like to use different lenghts for the other layers (Texture and Melody) but I cannot find a way to make it work.
I have tried using loops with the longest sample, but this leaves a lot of silence when one of the short samples are selected.
I want Fmod to know when a sample is done playing to retrigger the multiinstrument, searching for the next sample…so maybe a way to let Fmod know the lenght of the sample that it is being played so it can detect when to restart the loop region? IDK if it is clear.

Let say I have 3 samples fo My melody layer: One lasts 1 bar, one lasts 2 bars and the remaining one lasts 3 bars.
I want to be able to randomly play one of these 3 samples but I also want the software to know when the sample is done playing to go back and trigger another (or the same) sample. Is this possible to do somehow?

Edit. I want to achieve what is shown in the attached picture: a multi instrument that uses samples with different length and different loop points (represented with the red lines)

This is simply done by clicking the “loop” button in the multi instrument properties:

Correct me if I am wrong, but that method does not allow me to set a loop point (i’d like to be able to use the reverb tail of each sample).
With your proposed solution, I should cut each sample to be exactly “X” bars long, but cannot benefit from using those samples’ reverb tail…or is it a way to set a loop point for each sample inside a multiinstrument?

I have attached a picture to the main post to bettter illustrate what I want to achieve

True, you won’t be able to play a reverb tail. I also miss a feature to specify the end point of an multi instrument entry, while still playing its tail.
There’s indeed no way to achieve what you’re looking for using multi instruments, from what I know. I guess you’ll have to find another design.

Well, I’m not sure to understand what you want to achieve but from what I grasped, you could just set your multi to async mode, loop the playlist and then loop your multi instrument with a loop region (careful to set the playlist’s polyphony to 1 with no stealing if you don’t want a new audio file to be triggered when the timeline loops) :

Is that what you’re trying to do ?

Edit : Oh okay, it wouldn’t allow you to preserve the reverb tail either, unless you placed a reverb from fmod on your event. Not performance friendly but still works I guess…

Hmmm what about grouping all the samples by length, setting a random paramenter with a value for each sample group and then reading that random paramenter value at the end of each sample?

If I understand correctly, this is your situation:

  • You have a list of audio files that you want to play in random order.
  • These audio files are of arbitrarily-varying lengths, and have tails (also of varying lengths).
  • You want a new audio file to begin playing whenever the main section of an already-playing audio file ends and its tail begins.

Multi instruments are not the appropriate tool for this task. They are not designed to do what you are trying to do; rather, they are designed to select a single playlist entry to play at a time, and to play each such entry they select to completion before selecting another.

The tool that is designed to do what you’re trying to do is timeline logic. Here’s a way to make it work:

  1. Drag each of your assets onto the timeline and lay them out end to end.
  2. Set all your instruments to asynchronous mode, to ensure they play out to completion even when untriggered.
  3. Create a logic point at the start of the timeline that randomly determines which instrument will be jumped to and play.
  4. At the point in each instrument where the “main” part of the asset ends and the tail begins, add a transition marker that jumps the playback position back to the logic point at the start of the event.

These steps will result in the event randomly selecting an asset to play, playing each selected asset out to completion, and in selecting a new asset to play whenever the “main” section of an asset finishes playing but before its tail begins playing.

If you wish to have multiple assets playing in parallel, each with its own random selection logic as described above, you will have to nest each of them in its own nested event.

1 Like

Hmmm how would you set the randomness of the logic point? I have been messing with this idea and so far the only way I’ve found is:

  • to set a random stepped LFO to a custom parameter
  • to choose betweeen said parameter values and then read said paramenter’s value
  • to set the behaviour of the logic points

…it kinda works but I feel like it is far from being optimized

The most common method is to create a random logic point is to enable Probability for each transition marker, and set its Chance property to 1/N, where N is the number of markers below it in the stack +1.

For example, if there are four transition markers in the logic point, their probabilities from top to bottom would be 25%, 33%, 50%, and 100%.

This works because when multiple transition markers are located at the same timeline position, their trigger conditions are evaluated from top to bottom, meaning that each marker in the logic point will have an approximately equal chance of being triggered.