Continuing with Sub-Sessions 
Tuesday, July 29, 2008, 06:32 AM
Today I completed most of the user interface for sub-sessions, including primarily the sub-session list:



Sub-session name is on the left, it's program number on the right. As can be seen in the screen shot, I've also added ability to sort the sub-session list by either name or program number.

The list of sub-sessions is now saved with the session file, though they don't actually store anything except the name and program number.

That completes most of the UI for sub-sessions, tomorrow I'll start on actually making them do something.


add comment   |  permalink   |  related link   |   ( 2.6 / 10 )

Slashing the Feature Creep 
Monday, July 28, 2008, 06:35 AM
One thing this version of Cantabile has suffered from is a serious dose of feature creep. Mostly this was made worse by the much longer than expected time it took to write the new user-interface.

Anyway, in an attempt to combat this I've culled the rather lengthy list of ideas down to a more cohesive and reachable target.

This is what's left to do:

  • Sub-sessions (see previous post)
  • Enhance Quick Sessions to allow specifying a session and a sub-session for each entry.
  • Ability to send MIDI clock (receive is done, send is not)
  • MIDI Note Assignments - ability to assign MIDI notes similarly to how controllers can currently be assigned.
  • Ability to solo/mute and unload media players.
  • Anything else ever hinted to, thought about, promised or whatever is not going to make it. I've just got to draw the line.
Then there's the unfinished bits:

  • Disabling synchronisation of audio files to external clock (it's a problem bigger than I want to solve right now).
  • Possibly removing the offline renderer - it mostly works but doesn't really belong in Cantabile.
  • Re-writing the entire help (can't wait to do that - NOT)
  • Updating the purchase ordering pages/website, license key generation etc... and,
  • lots of testing...

add comment   |  permalink   |  related link   |   ( 5 / 1 )

Starting Sub-Sessions 
Monday, July 28, 2008, 06:16 AM
For the last week or so I've been busy on some other web development projects and haven't had much time on Cantabile, but today I'm getting back into it and started on support for sub-sessions.

I've mentioned sub-sessions in previous posts, but here's a more complete picture:

  • Sub-sessions are named states within a session.
  • Each state stores the bypass/mute/solo/loaded states of all plugins, racks and media files.
  • Each plugin can be configured to have it's entire bank, selected program or nothing saved in the sub-session. (eg: switching sub-sessions can reload the whole plugin, or completely skip it)
  • Each sub-session can have an optional program number associated with it that can be used to select it by program changes.
  • The current metronome settings are saved with each sub-session.
  • Possibly some other settings will be saved with the sub-session (that will depend on testing/feedback/usability).
Note that sub-sessions don't store different sets of plugins. If you add a plugin it gets added to all sub-sessions and similarly for removing a plugin. ie: sub-sessions just make adjustments to things in the session.

So I've just started coding this, but so far there a new "sub-session" drop down menu on the home tab. I'm not sure about that icon - I just threw it together, but sort of like it. Note too the return of the Quick Sessions.



The commands are fairly self explanatory:

  • New - prompts for the name and program number for a new sub-session and saves the current state to that sub-session.
  • Update - updates the last loaded sub-session with the current state
  • Revert - reloads the last loaded sub-session.
  • Auto Save Mode - automatically saves each sub-session when switching to another one.
  • Enable Program Changes - enable/disable loading sub-session by program change.
  • Show Sub-Session List - show the list of sub-session
The sub-session list, appears as a dock panel to the left of the main window and will contain a list of all sub-sessions and their program numbers.



Most of what I've described here isn't implemented but it is started...
add comment   |  permalink   |  related link   |   ( 4 / 1 )

Unloaded Plugins 
Thursday, July 17, 2008, 06:40 AM
Cantabile now has the ability to support "unloaded plugins".

When unloaded, a plugin behaves the same as being bypassed but is completely unloaded from memory - except for it's state which is kept.

Loading and unloading of plugins is done through the plugin slot's context menu:



When unloaded, its bypass button is checked and the slot becomes disabled and displays "unloaded":



Reloading a plugin restores the plugin to the same state as before it was unloaded. The state of unloaded plugins is also saved with the session so on re-opening a session with unloaded plugins they can be reloaded and returned to their original state.

A nice side effect of supporting unloaded plugins is that it makes Cantabile's handling of plugins that fail to load so much better. Now when Cantabile can't reload a plugin from a saved session (say the plugin is no longer installed), that plugin will automatically be treated as an unloaded plugin except it will display "Failed" instead of "Unloaded". If the session is then saved again, the state of the plugin is maintained even though the plugin is not available. Also, the user can re-install the plugin, right click and choose reload to fix it up without needing to reload the whole session.

The purpose of this functionality is primarily intended for when I add support for sub-sessions which will be named states within a session. The loaded/unloaded state of plugins will be included in that sub-session state making it possible to build complex arrangements of plugins that can be switched between quickly.
1 comment ( 60 views )   |  permalink   |  related link   |   ( 3.6 / 9 )

MIDI Clock Synchronisation 
Thursday, July 10, 2008, 04:03 PM
Finally, I’ve now got syncing to incoming MIDI clock working. There’s a new option in the Metronome’s tempo drop down named “Sync to Incoming MIDI Clock” which enables this.



There's also a new option to specify which MIDI input device MIDI clock should be read from.



add comment   |  permalink   |  related link   |   ( 4 / 11 )


Next