Yesterday I finished most of the functionality for session states. Combined with the new routing capabilities of the audio engine it’s feels like Cantabile 3 is really starting to come together.

When I originally designed the sub-session support in Cantabile 2 I completely under-estimated how they would end up being used. I expected there’d typically be a couple of entries in the MIDI routing table and just enabling or disabling the appropriate ones for each sub-session would be enough. In reality, I’ve seen session files with hundreds of MIDI routes and usually just a handful enabled at any one time.

In re-designing session-states (the new name for sub-sessions) for version 3, this is something I wanted to address. Much of the audio engine re-design has been with this functionality in mind. The big difference between v2 and v3 in this regard is that just about every attribute of MIDI and Audio routes can be controlled by session-states. Compare the old sub-session behavior options menu for MIDI routes:

to the equivalent options in version 3:

Here’s the same session as above on a different session state. Note the on-screen keyboard MIDI route is targeting a different plugin and it’s transpose setting has changed:

Session state control over plugins has also been improved with the ability to control plugin automation parameters from a sub-session. Note the session-state behaviors Decay, Release, Hardness etc… these are VST parameters of the mda Piano plugin. This should be useful for slow loading sampler plugins like Kontakt where you want to load one set of samples but control other settings via parameters.

The metronome can also be controlled by sub-sessions and it’s behavior options are shown whenever it has focus:

Finally there are some new File menu commands:

and some navigation commands in the Control menu:

And, that’s about it for session states. Next up is the Set List…