Cantabile Development Blog http://www.cantabilesoftware.com/blog Copyright © 2007-2009 Topten Software. All Rights Reserved. Follow the development of music software Cantabile Brad Robinson en-US jabBlog 1.1 New Song and Sub-Session Format Variables Brad Robinson Sat, 27 Feb 2010 5:47:39 GMT. I've just put up a new experimental build that has some new format string variables:

SubSessionSongFormatVariables.png

Mostly I think these are self explanatory, but just in case:

  • SubSessionName - the name of the currently loaded sub-session
  • SubSessionProgramNumber - the assigned program number for the currently loaded sub-session
  • SubSessionIndex - the zero based index of the position of the loaded sub-session in the sub-session list
  • SongName - the name of the loaded entry in the song list
  • SongIndex - the zero based index of the position of the loaded song in the song list
  • SongIndexXD - the zero based index of the position of the loaded song in the song list, eXcluding Disabled items.
  • SongProgramNumber - the assigned program number of the selected song in the song list.

In the case where there is no loaded song or sub-session:

  • The name will be an empty string
  • The index will be -1
  • The program number will be 0

The main purpose I see for these variable is with triggers launching external scripts. For example, a trigger that launches an external program whenever a sub-session is loaded, passing the name of the sub-session or song as a command line argument.

One more tip: if you prefix the command line of a execute script trigger with alert: the trigger will display the resolved string as a message box... which I think will be mainly useful for debugging triggers that launch scripts. eg: if a script doesn't seem to be running correctly and you want to see the command line it's being invoked with, just edit the trigger, insert the alert: prefix and invoke the trigger again to see the resolved command line.

This will be in the next official build, or available now in the experimental build (along with a few other miscellaneous fixes).

]]>
http://www.cantabilesoftware.com/blog/posts/195/new-song-and-subsession-format-variables http://www.cantabilesoftware.com/blog/posts/195/new-song-and-subsession-format-variables http://www.cantabilesoftware.com/blog/posts/195/new-song-and-subsession-format-variables
New commands to cleanup MRU menu Brad Robinson Sat, 13 Feb 2010 15:14:59 GMT. The next build of Cantabile (2051) has a some tweaks to help clean up the MRU file menu:

images/MruFileCommands.png

You get at these commands by right clicking in the file menu. The commands are self explanatory. Also, simply pressing the Delete key on an unpinned item will remove it from the list.

Works in the file menu of Cantabile's main window and the Set List window.

]]>
http://www.cantabilesoftware.com/blog/posts/194/new-commands-to-cleanup-mru-menu http://www.cantabilesoftware.com/blog/posts/194/new-commands-to-cleanup-mru-menu http://www.cantabilesoftware.com/blog/posts/194/new-commands-to-cleanup-mru-menu
2050 Stabilized Brad Robinson Mon, 8 Feb 2010 4:48:49 GMT. I've just put up a new experimental build with more bug fixes for the issues in 2050. I'm pretty sure this now addresses all the important problems and also introduces a couple of refinements:

  • The default audio driver is now the first driver after the Null Audio driver.
  • When selecting the Null Audio driver, a warning message is displayed to indicate that there will be no audio output.
  • A new Restore Defaults button in the audio driver settings to set the buffer size back to the driver preferred settings and the number of extra buffers to 1.

(the first two points are an attempt to reduce the number of support enquiries asking "why no sound").

I'm awaiting confirmation on a couple of bug fixes, after which 2051 should be available.

]]>
http://www.cantabilesoftware.com/blog/posts/193/2050-stabilized http://www.cantabilesoftware.com/blog/posts/193/2050-stabilized http://www.cantabilesoftware.com/blog/posts/193/2050-stabilized
Cantabile Lite Intro Video Brad Robinson Thu, 4 Feb 2010 4:49:18 GMT. Eric Krueger of blackgrand.com has posted an excellent introductory video tutorial on using Cantabile Lite.

Update: Eric has been kind enough to let me put these videos on the Cantabile website http://www.cantabilesoftware.com/videos . Thanks Eric.

]]>
http://www.cantabilesoftware.com/blog/posts/192/cantabile-lite-intro-video http://www.cantabilesoftware.com/blog/posts/192/cantabile-lite-intro-video http://www.cantabilesoftware.com/blog/posts/192/cantabile-lite-intro-video
New Audio Buffering in 2050 Brad Robinson Mon, 1 Feb 2010 14:30:28 GMT. Well it's been a long time since I've posted here, but I now have a number of other projects out of the way and am gearing up to do some more work on Cantabile.

Recently I released build 2050 which introduces a new audio buffering scheme into Cantabile's audio engine. Unfortunately, although the new buffering itself seems to work quite well, it required a considerable rework of some of the core parts of the audio engine and there's been a few bugs introduced as a result - most of which didn't get picked up in the experimental builds which had this functionality.

Anyway, I'm actively working on fixing these issues. If in the mean time you're having trouble, build 2049 is available from the down page - http://www.cantabilesoftware.com/download - you can just install it over the top and you're set to go.

Hopefully a new build should be available in the next day or two...

]]>
http://www.cantabilesoftware.com/blog/posts/191/new-audio-buffering-in-2050 http://www.cantabilesoftware.com/blog/posts/191/new-audio-buffering-in-2050 http://www.cantabilesoftware.com/blog/posts/191/new-audio-buffering-in-2050
Cantabile Lite Re-released Brad Robinson Wed, 19 Aug 2009 6:23:26 GMT. Cantabile Lite is back! The feature set has changed somewhat however.

The intention here is to make a really simple scratch pad type host. The host to go to when you just want to quickly test a plugin, or as a flexible tool for preset and bank management.

As such all recording and playback capabilities have been removed, but a whole set of new capabilities revolving around plugin, preset and bank management have been added:

  • Unlimited racks and plugins.
  • Preset morph and randomization tools - inspiration for sound designers
  • Program organiser - easy management of plugin banks
  • Custom controllers (sliders and buttons) on the on-screen keyboard
  • Partial send support - ability to peel of part of a rack's output and send to up to two other racks (Cantabile Solo inherits this too)
  • User tools - ability to launch external programs
  • Fast session switching - where plugins are re-used between sessions
  • Incremental save - for saving presets/banks and sessions with an automatically increasing counter in the filename
  • A/B preset toggling
  • Ability to set the default state for new sessions
  • Ability to show plugin editors as topmost windows
  • Ability to re-open plugin editors when reloading a session
  • Ability to restore a plugin to the state as loaded from session or factory default state
  • Ability to undo all edits to a plugin since opening the plugin editor

Cantabile Lite is available now - http://www.cantabilesoftware.com/lite

Enjoy!

]]>
http://www.cantabilesoftware.com/blog/posts/190/cantabile-lite-rereleased http://www.cantabilesoftware.com/blog/posts/190/cantabile-lite-rereleased http://www.cantabilesoftware.com/blog/posts/190/cantabile-lite-rereleased
MIDI-In Port Recorder Brad Robinson Mon, 3 Aug 2009 2:38:31 GMT. Recently I've been trying to resolve an issue with MIDI clock synchronisation that I've not been able to reproduce myself. The user has a somewhat complex setup and although I've tried a number of things to reproduce it I've just not been able to. So I've added a new diagnostic option called "MIDI In Port Recorder". When enabled, Cantabile will generate a recording file for each enabled MIDI-In port.

My initial thought was to write these out as standard MIDI files, however some real-time MIDI events can't be represented in standard MIDI files. Eg: MIDI Clock events. Also I wanted to be able to capture the input from multiple MIDI-in ports and replay them all correctly synced and the time encoding formats in standard MIDI files is not really up to this (although I guess I could put the recording of all ports in the one file).

Anyway, I've invented a new file format (.port) which is a very simple raw copy of exactly what's coming into Cantabile.

Of course these port recording files are useless without a way to play them back so I've also knocked together a very simple command line tool - PortPlay. Typically I'll use this to replay the recordings back into Cantabile using a virtual MIDI cable.

So now whenever someone reports a compatibility issue with another app or external device, I can simply ask them to turn on the port recorder, send me the generate files and I should be able to easily reproduce the problem. Well that's the plan, I'm yet to see how well this works in practice...

]]>
http://www.cantabilesoftware.com/blog/posts/189/midiin-port-recorder http://www.cantabilesoftware.com/blog/posts/189/midiin-port-recorder http://www.cantabilesoftware.com/blog/posts/189/midiin-port-recorder
New Look Website Brad Robinson Mon, 3 Aug 2009 2:36:45 GMT. As you've probably noticed, I've changed the whole look of the website. I'm sure you'll agree the new look is much cleaner and easier to read. Hopefully I've not introduced any issues - if you notice anything wrong or have any other feedback, please let me know.

]]>
http://www.cantabilesoftware.com/blog/posts/188/new-look-website http://www.cantabilesoftware.com/blog/posts/188/new-look-website http://www.cantabilesoftware.com/blog/posts/188/new-look-website
Controller Assignment Ranges Brad Robinson Mon, 20 Jul 2009 16:40:33 GMT. Yet another tweak suggested over at the forum - the ability to restrict the range of a VST parameter when controlled via MIDI Controller Assignments.

images/MidiControllerRanges.png

Although I would have liked to have made these settings available for all assignments, currently it's only enabled for VST parameter assignments. This is because many of the other assignments have non-linear transformations that would be lost if I was to expose this on everything.

Another possibly useful side effect of this is you can assign a button controller to a VST parameter and set the min and max range to the same value. This allows a button to set a parameter to a specific value.

Available now in the experimental build.

]]>
http://www.cantabilesoftware.com/blog/posts/187/controller-assignment-ranges http://www.cantabilesoftware.com/blog/posts/187/controller-assignment-ranges http://www.cantabilesoftware.com/blog/posts/187/controller-assignment-ranges
Isolated Plugins Brad Robinson Tue, 14 Jul 2009 1:32:29 GMT. One of the advantages of using jBridge to host mismatched plugins between x64 and x86 is the isolation that it provides. That is, when an x86 plugin is running in the x64 version of Cantabile and it crashes, it won't bring down the entire Cantabile process. The plugin's external hosting process will die, but you can recover by simply unloading and reloading the plugin.

Previously Cantabile wasn't able to use jBridge to load a plugin for the same platform. Ie: x86 Cantabile could bridge to x64 plugins and vice versa, but you could use jBridge to load an x86 plugin in the x86 version of Cantabile.

To get the recoverability benefits of this external hosting of plugins, Cantabile now supports running plugins a special Isolated mode. If you've got jBridge installed, simply right click on the plugin and choose "Run Isolated":

images/RunIsolated.png

If you don't have jBridge installed, selecting this option will silently fail and not do anything - I'll probably clean that up later.

This is still very experimental and as such it's not yet in the official build but available from the new Experimental Downloads page.

]]>
http://www.cantabilesoftware.com/blog/posts/186/isolated-plugins http://www.cantabilesoftware.com/blog/posts/186/isolated-plugins http://www.cantabilesoftware.com/blog/posts/186/isolated-plugins