Tutorial: Understanding Merges & Multistreams

Combining Streams:

In this tutorial, we're going to dive into combining streams. There are several ways to combine music streams, but we are going to focus on just two: merges vs. multistreams. The difference between the two is whether the combined streams overlap. A merge smushes streams together where there is an overlap. Multistreams combine streams in sequence with no overlap.

Combining Streams

Merges as a Sandwich:

A merge takes non-conflicting instruments from a second stream and layers it into the base stream. This means that the entire first stream is still present in the merged stream. It's as if the second stream is stacked underneath the base stream. So the length of the first stream becomes the length of the merged stream. The only thing that changes after the merge is the number of instruments. You can think of a merge as a sandwich where you can add layers in parallel. The two original streams get stacked on top of one another.


Multistreams as a Train:

Where merges work in parallel. multistreams work in sequence. It's like you take the second stream and attach it right behind the base stream. You can think of a multistream like a train where each car represents one of the streams. Streams follow one another and divide the loop up into discrete parts. A good example of a multistream is the stream named "Multi Vitamins". Listen to it to see how it sounds.


Comparing Multistreams and the Shuffle:

Celody has a shuffle feature that randomly plays streams one after another. How is this different than a multistream? Multistreams are all contained in one Celody file and can be forked and merged. The Shuffle feature stops one Celody file and then starts a second Celody file. So you can't perform a fork or merge on the Shuffle. While the Shuffle may appear to offer similar functionality to a multistream, technically it's different.


Comparing Celody Files:

You can spot a multistream by looking at the Celody file. Consider the multistream named "Multi Vitamins". If you look at this Celody file, you will see that half the instruments have a baseStart that ranges from 0 to 0.5, and the other half ranges from 0.5 to 1. It's as if we divided the loop into two equal parts, where the first stream plays during the first half and the second stream play during the second half. In contract, a merge will have single instruments that range over the entire loop from 0 to 1.

Loop Splitting