<!--{{{-->
<div class="toolbar" macro="toolbar +finishEditing -cancelEditing"></div>
<div class="title" macro="view title"></div>
<div class="editor" macro="edit title"></div>
<div class="editor" macro="edit text"></div>
<div class="editor" macro="edit tags">Tags: </div>
<div class="editor" macro="edit parenttitle">Parent:</div>
<div class="editorFooter"><span macro="message views.editor.tagHint"></span><span macro="tagChooser"></span></div>
<!--}}}-->
<<importTiddlers>>
<!--{{{-->
<div id='navigationArea'>
	<div id='navigationCollapser' macro='collapseArea navigationPanel'></div>
	<div id='navigationPanel' refresh='content' force='true' tiddler='NavigationPanel'></div>
</div>
<div id='sidebar'>
	<div id='sidebarCollapser' macro='collapseArea sidebarContent true "Side Bar" "»«"'></div>
	<div id='sidebarContent'>
		<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
	</div>
</div>
<div id='displayArea'>
	<div id='navAndSearch'>
		<div id='navToolbar'>
			<span id='navButtons' macro='navigate'></span>
			<div id='breadcrumbsBox'></div>
		</div>
		<span id='search' macro='search'></span>
	</div>
	<div id='pageWrapper'>
		<div id='messageArea'></div>
		<div id='tiddlerDisplay'></div>
	</div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar'><span macro='toolbar startEditing deleteArticle > references <'></span></div>
<div class='title' macro='view title'></div>
<div class='articleContentContainer' macro='view text wikified'></div>
<!--}}}-->
!Unofficial Cantabile Wiki

{{notice{For Cantabile (Performer) ver. ''3.0 (Build 3653)'' Last edit: ''2020-06-26''}}}

!!Disclaimer

*This wiki is maintained by a private Cantabile user and in no way related to Topten Software
*There is no commercial background
*By no means, this is a replacement, criticism or competitor to the original documentation
*It does not cover the complete set of Cantabile's features and it might be out of date
*It's meant as an addendum to the original documentation. Purpose:
**Linking different information sources (official guides, blog, forum) by keyword
**Adding some conceptual (best) practice documentations

!!Audience

*Newbies who want to explore Cantabile
*Casual Cantabile users (like me), who regularily forget how to get things done (because of digital dementia) and therefore need a quick look up guide
*People with experience in using DAWs and/or hardware workstations, wondering why Cantabile is different in many ways
*Elderly people (like me) who bought music gear in the 80s/90s that came with "Reference" documentations as thick as phone books, containig diagrams etc. No video tutorials at that time, kids!

!!In A Hurry?

These might be apropriate entry points for first reading:

*If you're totally new to Cantabile: [[Anatomy of the Main Window|Main Window]], [[First Steps After Installing|- First Steps After Installing -]], [[Splits & Layers]]
*If you've got some experience with DAWs: [[Not a DAW!]]
*If you just want to look up a term: [[Thesaurus|- Thesaurus -]]

!!Download For Offline Viewing

*[[CantabileWiki.zip|http://vodi.de/CantabileWiki.zip]]

!!Participating

Your suggestions are always welcome. Read here [[how to participate|- Participating -]].

!!Useful Weblinks

|Official|Community|h
|📖 [[Guide|https://www.cantabilesoftware.com/guides/]]<br>📺 [[Videos|https://www.cantabilesoftware.com/videos]]<br>📣 [[Blog|https://blog.cantabilesoftware.com/]]<br>📄 [[Release Notes|https://www.cantabilesoftware.com/support/releasenotes3500]]<br>📅 [["Trello" Development Board|https://trello.com/b/KAQlQbuz/cantabile]]<br>📖 [[Tuning for Reliable Glitch Free Performance|https://www.cantabilesoftware.com/glitchfree/]]|💬 [[Forum|https://community.cantabilesoftware.com/]]<br>📷 [[Show me your Rig!|https://community.cantabilesoftware.com/t/show-me-your-cantabile-rig/633/13]]<br>🖿 [[Shared Files|https://community.cantabilesoftware.com/c/shared-files]]|

!!Credits

*This wiki software is called [[VodiWiki|http://vodi.de/VodiWiki/]] and it's based on [[TiddlyWiki|https://tiddlywiki.com/]] 2.8.1 by Jeremy Ruston with extensions by Eric Shulman, UdoBorkowski, Pascal Collin, Simon Huggins.
!Prerequisites

The following sections assume that you already configured MIDI and audio ports, the VST directory location, and you already got a VST instrument to play.
If this is not the case, it is recommended that you read this official guide:

  ↗ [[Getting Started|https://www.cantabilesoftware.com/guides/gettingStarted]]

Also, it's helpful to know the names of the basic UI elements shown in [[Anatomy of The Main Window|Main Window]]

!Making Use Of The Onscreen Keyboard

Out of the box, the [[Onscreen Keyboard]] won't do anything. Normally, it behaves like a regular external keyboard, which means you can do the routing individually for each song. If you want to do so, you can skip this section. If you want to create a global routing, read on. The following steps will make the onscreen keyboard...

...send to all MIDI ports
...recieve and indicate played notes from all external MIDI controllers

!!Step 1: Making The Onscreen Keyboard Send On All Input-Ports

*Go to Menu "Tools" > "Options..." > "MIDI Ports"
*Select the in-ports of your controllers 
**Click "Edit" and check "Onscreen Keyboard" (under "Assignments")

|[img[Files/OnscreenKeyboardToSynthKeyboard.png]]|[img[Files/OnscreenKeyboardToPianoKeyboard.png]]||
!!!!!Onscreen keyboard included in two input ports. The checked assignments will be merged within a port.

!!Step 2: Making The Onscreen Keyboard Recieve From All External Controllers

*Go to Menu "View" > "Background Rack"
*Click "Add Route"
**Choose the input port of your controller as source, "Onscreen Keyboard" as destination
**Repeat this step for each of your controllers

|[img[Files/OnscreenKeyboardFromAllInputPorts.png]]|

!Setting Up Your Controller

!!Setting Up A Global Velocity Curve

*Go to Menu "Tools" > "Options..." > "MIDI Ports"
*Select the in-port of your controller

|[img[Files/MidiPorts.png]]|

*"Edit"

|[img[Files/MidiPortEditor.png]]|

*"MIDI Filters..."

|[img[Files/MidiFilterVelocityCurve.png]]|
!!!!!This example shows a velocity curve for a controller that sends a maximum velocity of 100 - transformed to a maximum of 127.

!!Assigning A Volume Knob To Cantabile Main Volume

*Menu: "View" > "Background Rack" (The [[Rack Panel]] appears at the lower half of the [[Main Panel|Main Window##Main Panel]])
*Click on "Bindings" (in the Background Rack bar)
*Click "Add Binding" (below the "General" group label)
*Choose "learn" and turn the knob on your controller

|[img[Files/BackgroundRackLearnSource.png]]|

*Right click the newly created source entry and chose "Routing Mode" > "Suppress"
**This is to avoid unwanted phenomenas when turning the knob, caused by passing through the MIDI CC7 to VST plugins

|[img[Files/RoutingModeSuppress.png]]|

*Click on "(missing target)" and choose "Master Levels" > "Port 'Main Speakers' Output Gain"

|[img[Files/BackgroundRackMasterVolumeBinding.png]]|

*To verify your success, make visible the [[Monitor Panel]] (by clicking on "Monitor" in the [[Side Panel|Main Window##Side Panel]]) and turn the knob. You should now see the "Main Speakers" level indicator moving:

|[img[Files/MainSpeakersLevel.png]]|

*To adjust the response curve, click into the "Value" cell of your newly created binding:

|[img[Files/BackgroundRackMasterVolumeCurve.png]]|
!!!!!Example value mapping for a volume knob binding

!!Assigning Panic & Transport Buttons

*Do the same steps as above to create a mapping like this

|Controller|Target|h
| Panic |Engine: Restart Engine|
| ⏹ |Media Player by Index #1: Stop|
| ⏵ |Media Player by Index #1: Play|
| ⏯ |Media Player by Index #1: Play/Pause|
| ⏪︎︎ |Media Player by Index #1: Rewind|
| ⏩︎︎ |Media Player by Index #1: Fast Forward|
| ⏮ |Media Player by Index #1: Previous Marker|
| ⏭ |Media Player by Index #1: Next Marker|

*Panic: You could also map to "Engine: All Notes Off" which is less intrusive, but won't fix audio driver problems.
*⏮ ⏭ could also be mapped to "Set List: Load Song" to switch songs using these buttons
*If you wonder why the targets are Media Player #1 (instead of "Transport"), read Concepts: [[Transport]]

!What To Do Next? Make Your (Fundamental) Decisions!

The instructions above are only suggestions to explain some basic principles. Of course you might want a totally different mapping (or none, because you'll never going to use media players...).
There is an unbelievable variety of concepts and preferences concerning how people want to work with music instruments/software, and how people organize their stuff. Cantabile offers a lot of features and components to enable putting most of them into practice. As in real life, some concepts exclude each other or just make no sense when used in combination. So you should make some crucial decisions, before setting up a huge library of songs, racks and set lists.

What Kind Of Decisions?

*''Scopes'' - e.g. "What's the function of my foot switch(es)? Will it (them) be the same for all songs or individual?"
*''Reusability'' - "Do I want to create individual VST setups/sounds for each song, or do I want to reuse virtual racks?"
*''Operation'' - "How do I prefer to switch between songs/sounds? Incrementally? Randomly? Via controller? Via touch screen?"
*''Organization'' - "Shoud I create independent directories per song, keeping all resources like samples, tracks, etc. together, or should I keep resources centralized?"

If you need some inspiration then you could read [[Example (Real Life) by Vodi]].

!What To Read Next

You might want to continue reading about [[Splits & Layers]] or [[Sound Switching]].
!Communication Channels

If you want to discuss concepts, best practices, etc. you can use this thread in the official forum:

https://community.cantabilesoftware.com/t/cantabile-unofficial-wiki/5678/

{{notice{This thread is only meant to discuss what should be documented here. To discuss things concerning the cantabile software use the complete forum.}}}

If you want to report small things like errors, typos, weak grammar, etc. you can directly e-mail to:

cantabilewiki@vodi.de

!Tooling

!!Text

* Editing is not possible when viewing the wiki directly from vodi.de. [[Download|http://vodi.de/CantabileWiki.zip]] the wiki and open the local file in your browser - then an "Edit" button appears in the right upper corner and a "New Article" button at the lower end of the structure tree. Make your changes/additions and send the raw wiki-text to cantabilewiki@vodi.de.

* Double click any word in the text before editing - so the editor's cursor will appear at this position.

* If you want to learn more about how to use this wiki software go here: http://vodi.de/VodiWiki/

!!Images

* Images have to exist as files in the "Files" sub directory and must be referenced like this:<br>{{{[img[Files/Foo.png]]}}}

* The diagrams are in SVG format - you can use the [[free online SVG-Editor drawio|https://app.diagrams.net/]] for editing. Drawio can also be [[downloaded|https://www.diagrams.net/]] for offilne use.
|Term|Kind|Description|h
|Audio Port|Entity|Virtual connection point which maps channels of objects to named virtual ports.<br>→ [[Audio Port]] ↗Official: [[Audio Ports|https://www.cantabilesoftware.com/guides/configuringAudioPorts]], [[Getting Started|https://www.cantabilesoftware.com/guides/gettingStarted]], [[Ports & Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]|
|Audio Port Editor|UI|???<br>→ [[Audio Port Editor]]|
|Audio Route|Configuration|???<br>↗Official: [[Ports & Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]|
|Background Rack|Service|???<br>→ [[Racks: Background Rack|Racks##Background Rack]]|
|Binding|Service|???<br>→ [[Bindings]] ↗Official: [[Bindings|https://www.cantabilesoftware.com/guides/bindings]]|
|Bindings Panel|UI|???<br>→ [[Bindings Panel]] ↗Official: [[Bindings|https://www.cantabilesoftware.com/guides/bindings]]|
|Controller Bar|UI|???<br>→ [[Controller Bar]] ↗ Official: [[Controller Bar|https://www.cantabilesoftware.com/guides/controllerBar]]|
|Command Line Options|Entity|→ [[Command Line Options]]|
|Configuration|Entity|→ [[Multiple Configurations]]|
|General Options|Configuration|Lets the user specify preferences for UI behaviour (e.g. default [[##Routing View Mode]]) and [[##Metronome]].|
|Loopback Ports|???|???<br>↗ Official: [[Loopback Ports|https://www.cantabilesoftware.com/guides/loopbackPorts]]|
|Main Tab Panel|UI|Tabbed panel, hosting: [[##Set List Grid]], [[##Set List Panel]], [[##Notes Panel]],[[##Routing Panel]], [[##Bindings Panel]]|
|Main Toolbar|UI|The topmost bar of the [[Main Window|##Main Window]].<br>→ [[Main Toolbar]] ↗ Official: [[Main Windows Controls|https://www.cantabilesoftware.com/guides/mainWindowControls]]|
|Main Window|UI|The complete application window containing menu bar, [[##Ticker Bar]], [[##Side Panel]], [[##Main Tab Panel]], [[##Timeline]], [[##Onscreen Keyboard]].<br>→ [[Main Window]]|
|Master Transport|Setting|Determines the provider for tempo and song position. Can be metronome, a media player or MIDI clock.|
|Master Transport Selector|UI|???|
|Media File Properties Editor|UI|???|
|Media Player|Service|Media player(s) are built-in plugins that can play MIDI and audio files. The UI representations are [[##Media Player Slot]], [[##Play List Editor]], [[##Media File Properties Editor]] and [[##Timeline Panel]]<br>→ [[Media Players]] ↗ Official: [[Media Players|https://www.cantabilesoftware.com/guides/mediaPlayers]]|
|Media Player Slot|UI|???<br>→ [[Media Player Slot]] ↗ Official: [[Main Window|https://www.cantabilesoftware.com/guides/mainWindowControls]]|
|Metronome|Configuration|Important: The Metronome is without effect when the [[Master Transport|##Master Transport]] isn't set to "Metronome"!<br>↗ Official: [[Metronome|https://www.cantabilesoftware.com/guides/metronome]]|
|Metronome Toolbar|UI|Sets the [[Tempo|##Tempo]]. Can be shown/hidden by clicking the metronome symbol of the [[Toolbar|##Toolbar]]<br>→ [[Metronome Toolbar]]|
|MIDI Filter & Transformer|Service|→ [[MIDI Filters & Transformers]] ↗ Official: [[MIDI Filters|https://www.cantabilesoftware.com/guides/midiFilters]]|
|MIDI Monitor|UI|Diagnostics tool to analyze MIDI activity.<br>→ [[MIDI Monitor]] ↗ Official: [[MIDI Monitoring|https://www.cantabilesoftware.com/guides/midiMonitoring]]|
|MIDI Port|Configuration|A "Midi Port" in Cantabile is a virtual, internal connection point which can be mapped to many physical Midi devices.<br>↗Official: [[Getting Started|https://www.cantabilesoftware.com/guides/gettingStarted]], [[Ports & Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]|
|MIDI Route|Service|???<br>→ [[MIDI Route]]|
|MIDI Route Definition|Entity|Connects two MIDI ports (e.g. an input port with a plugin) and contains MIDI Filter Definitions.<br>→ [[MIDI Route Definition]] ↗ Official: [[Ports & Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]|
|MIDI Route Bar|UI|???<br>→ [[MIDI Route Bar]]|
|MIDI Route Editor|UI|???<br>→ [[MIDI Route Editor]]|
|Monitor Panel|UI|Condensed Diagnostics tool to analyze audio & MIDI activity and load information. For deeper inspection use [[##MIDI Monitor]] or [[##Profiler]]<br>→ [[Monitor Panel]]|
|Notes|Entity|???<br>[[Notes]] ↗ Official: [[Notes|https://www.cantabilesoftware.com/guides/showNotes]]|
|Notes Panel|UI|???<br>→ [[Notes Panel]] ↗ Official: [[Notes|https://www.cantabilesoftware.com/guides/showNotes]]|
|Onscreen Keyboard|UI|→ [[Onscreen Keyboard]] ↗ Official: [[Onscreen Keyboard|https://www.cantabilesoftware.com/guides/onscreenKeyboard]], [[Working with Cantabile’s Onscreen Keyboard|https://blog.cantabilesoftware.com/working-with-cantabile-s-onscreen-keyboard-a15110e60cff/]]|
|Play List Editor|UI|Part of the [[##Media Player]] windows.<br>|
|Plugin|???|???<br>↗ Official: [[Working With Plugins|https://www.cantabilesoftware.com/guides/workingWithPlugins]], [[Managing Plugins|https://www.cantabilesoftware.com/guides/managingPlugins]]|
|Plugin Selector|UI|???<br>→ [[Plugin Selector]] ↗ Official: [[Managing Plugins|https://www.cantabilesoftware.com/guides/managingPlugins]], [[Working With Plugins|https://www.cantabilesoftware.com/guides/workingWithPlugins]]|
|Plugin Slot|UI|UI-Element which is the container and control panel for a VST plugin.<br>→ [[Plugin Slot]] ↗ Official: [[Main Window|https://www.cantabilesoftware.com/guides/mainWindowControls]]|
|Port|Umbrella Term|Either a [[##Midi Port]] or an [[##Audio Port]]|
|Profiler|UI|Diagnostics tool to analyze the plugins' individual loads.<br>→ [[Profiler]] ↗ Official: [[Profiler|https://www.cantabilesoftware.com/guides/profiler]]|
|Quick Controller|Service|???<br>↗ Official: [[Quick Controller|https://www.cantabilesoftware.com/guides/quickController]]|
|Rack|Service|???<br>→ [[Racks]] ↗ Official: [[Racks|https://www.cantabilesoftware.com/guides/racks]]|
|Rack Panel|UI|???<br>→ [[Rack Panel]]|
|Record Panel|UI|???|
|Route|Umbrella Term|Either a [[##Midi Route]] or an [[##Audio Route]]|
|Route Bar|UI|Representation of a [[##Route]] (when [[##Routing View]] is set to 'Table'). Either located at the input ports region of the [[##Routing Panel]] or as a sub control of each [[##Plugin Slot]].|
|Routing Mode|Configuration|A kind of MIDI filter (very much at the front of the internal MIDI chain) which defines what to do with events that have been bound to s.th. See [[##Bindings]].|
|Routing Panel|UI|The middle tab of the [[##Main Panel]]. This is the main control center of Cantabile. Here you manage your [[Songs'|##Song]] Plugins, their MIDI/audio routing and levels.<br>→ [[Routing Panel]] ↗ Official: [[Ports & Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]|
|Routing Diagram Mode|Configuration|The [[##Routing Panel]] is displayed as a diagram (counterpart to [[##Table View Mode]]).|
|Set List|Entity|Groups some songs. UIs are [[##Set List Panel]], [[##Set List Grid]] and [[##Ticker Bar]].<br>→ [[Set List]] ↗ Official: [[Set Lists|https://www.cantabilesoftware.com/guides/setLists]]|
|Set List Panel|UI|A panel showing the [[##Set List]] as a vertical flat list.<br>→ [[Set List Panel]] ↗ Official: [[Set Lists|https://www.cantabilesoftware.com/guides/setLists]]|
|Set List Grid|UI|A panel showing the [[##Set List]] as tiles. Can be shown via the ⊞ button located at the upper left corner of the [[##Main Tab Panel]].<br>→ [[Set List Grid]] ↗ Official: [[Set List Grid|https://blog.cantabilesoftware.com/set-list-grid-and-set-list-improvements-34264ffc5b02/]]|
|Settings Folder|Concept|Directory where much of your customization data is saved.<br>→ [[Customization|Customization##Settings Folder]]|
|Side Panel|UI|Tabbed panel, hosting: [[##Record Panel]], [[##Set List Panel]], [[##States Panel]],[[##Monitor Panel]]|
|Song|Entity|???|
|Song State|Entity|See [[##State]]|
|State|Entity|???<br>→ [[State]] ↗ Official: [[States|https://www.cantabilesoftware.com/guides/states]]|
|State Behaviour|Configuration|Decides which subset of properties are modified when changing states.<br>↗ Official:[[State Behaviors|https://www.cantabilesoftware.com/guides/states#state-behaviors]]|
|State Behaviour Panel|UI|Shows the [[##State Behaviour]] of the currently selected slot.<br>→ [[State Behaviour Panel]]|
|States Panel|UI|Shows all states of the song as a list.<br>→ [[States Panel]]|
|Status Panel|UI|Located at the top middle area in the [[##Main Toolbar]]. Shows a [[##Load Indicator]], transport position, time signature, tempo, beat indicators and icons for updates, new blog posts, etc.<br>→ Main Toolbar: [[Status Panel|Main Toolbar##Status Panel]] ↗ Official: [[Main Window Controls|https://www.cantabilesoftware.com/guides/mainWindowControls]]|
|Sys-ex|Umbrella Term|"System Exclusive" is a communication protocol to enable MIDI devices to store/restore settings that go beyond simple control change messages. Cantabile has a built in [[##SysEx Data Editor]].<br>→ [[Hardware Synths]] ↗ Official: [[Sys-ex Expressions|https://www.cantabilesoftware.com/guides/sysexExpressions]], [[SysEx Macros|https://www.cantabilesoftware.com/guides/sysexMacros]]|
|Sys-ex Data Editor|UI|???<br>→ [[Sys-ex Data Editor]]|
|Table View Mode|Configuration|The [[##Routing Panel]] is displayed as a table (counterpart to [[##Routing Diagram Mode]]).|
|Tap Tempo Button|UI|Sets the  [[Tempo|##Tempo]] and Resists in the [[Toolbar|##Toolbar]], [[Metronome Panel|##Metronome Panel]]automated via [[##Tempo Track]] or made audible via [[##Metronome]]|
|Tempo|Configuration|Shown in the Status Panel which is located in the middle of the [[Toolbar|##Toolbar]]. The tempo source depends on the Master Transport setting. Can be set via [[Tap Tempo Button|##Tap Tempo Button]] of the [[Toolbar|##Toolbar]], via [[Metronome Panel|##Metronome Panel]]. Can be automated via a MIDI file in a [[##Media Player]] (see → [[Backing Tracks]])|
|Ticker Bar|UI|A panel showing the [[##Set List]] and the [[Song's|##Song]] [[States|##State]] as a horizontal bar.<br>→ [[Ticker Bar]] ↗ Official: [[Ticker Bar|https://www.cantabilesoftware.com/guides/tickerBar]]|
|Timeline Panel|UI|Visualizes the contents of one audio or MIDI file, that has to be registered and selected in a [[##Media Player]].<br>→ [[Timeline Panel]] ↗ Official: [[Timeline Panel|https://www.cantabilesoftware.com/guides/timeline]]|
|Transport|Concept|Transport defines the tempo, current playhead position and signature changes of a song.<br>→ [[Transport]]|
|Transport Triggers|Umbrella Term|Denotes some internal time based events which can be used as [[binding|##Binding]] source.<br>↗Official: [[Transport Triggers|https://community.cantabilesoftware.com/t/sneak-peak-transport-triggers/3157]]|
|Triggers|Configuration|???|
Audio Ports can (must) be defined by you to map channels of VSTs or sound cards to named virtual ports. Cantabile will only use these named ports to do audio routing (not the original channels).
In most situations audio ports will be created automatically (when adding a plugin) and stay in background - so you might get in touch with it rarely.

!Habitat & Scope

Ports can live in two kinds of places:

1. Globally (per Cantabile Installation & Audio Driver). These Ports define the mapping between your computer's audio driver's channels and named virtual audio ports that can be used for routing within cantabile. The UI for these ports can be found at Tools > Options.

2. Per Plugin. These Ports define the mapping between the plugin's audio channels (as implemented by the plugin vendor) and named virtual audio ports that can be used for routing within cantabile. The UI for these ports can be found in the context menu of a [[Plugin Slot]].

!UI Representation and Entry Points

Representation: [[Audio Port Editor]]
Entry Points: Menu Tools > Options > Audio Ports, context menu of a [[Route Bar]]

!See Also

*Thesaurus: [[Audio Port|- Thesaurus -##Audio Port]]
*Concepts: [[Audio Routing]]
!How To Show

{{TODO{Audio Port Editor}}}

[img[Toolbar|Files/AudioPortEditor.png]]

!See Also

*Thesaurus: [[Audio Port Editor|- Thesaurus -##Audio Port Editor]]
!Audio Signal Flow (Example)

[img[Label|Files/AudioSignalFlow.svg]]

!Basic Concepts

*Routing is consequently done with "[[Audio Ports|Audio Port Configuration]]" (which map drivers' and VST's channels to named virtual ports)
*Global ports can be defined via Tools > Options...
**Global ports mapping is saved per machine (not per song)
**Give your ports role names! (Not technical names). So you can load your very same songs on different machines/audio interfaces with no need to remap everything.
*Plugin's Ports can be defined via "Audio Ports..." context menu
**Normally this shouldn't be necessary as Cantabile automatically creates ready-to-use ports when adding a plugin.
*A "Route" is a dedicated object which is represented as a "Route Bar" (when in Table View Mode) or as a virtual wire (when in Wiring View Mode)

!Mixing

*There's no vertical mixing console in cantabile
*Mixing can be done at the [[Routing Panel]], using the horizontal faders located in each [[Plugin Slot]]
**You can either adjust the output levels of plugins or the output levels of routes
***When you want to see the attached route bars of a plugin you have to expand the (eventually collapsed) Plugin Slot

!Web Links

💬 Forum: [[WASAPI Shared Mode Available|https://community.cantabilesoftware.com/t/wasapi-shared-mode-available/383]]
💬 Forum: [[WASAPI Improvements|https://blog.cantabilesoftware.com/wasapi-improvements-e897abee462b/]]
"Automation" can be understood in various ways:

{{notice{The following categories exist only in this wiki - in Cantabile it's all done with event based bindings. Not even the term "automation" is ever used in Cantabile.}}}

|Category|Meaning|h
|Startup automation|Things to happen after opening a song. Useful for initializing external MIDI devices.|
|Interaction based automation|You do something (e.g. you turn a knob) - Cantabile does one or more subsequent actions.|
|Time based automation|Things to happen depending on current transport position. Similar to what "automation" is supposed to do in a DAW.|

!Startup Automation

{{TODO{Startup Automation}}}

!Interaction Based Automation

{{TODO{Interaction Based Automation}}}

!Time Based Automation

{{TODO{Time Based Automation}}}

!!Using Transport Triggers

!!Utilizing MIDI files

!See Also

!Web Links

💬 Forum: [[Transport Triggers|https://community.cantabilesoftware.com/t/sneak-peak-transport-triggers/3157]]
💬 Forum: [[Transport triggers - My new favorite thing|https://community.cantabilesoftware.com/t/transport-triggers-my-new-favorite-thing/3172]]
!How To Set Up The Track

*Add a Media Player:
**In the [[Routing Panel]], section "Output Ports", click "Add Object" and choose "Media Player"
***(This will add a [[Media Player Slot]] (named "Media Player 1") and automatically create an [[Audio Route]] to the [[Default Audio Port]])
*Rename the player (to e.g. "Backing Track"):
**Right click the name and choose "Rename..."
*Add your media file
**Double click the name, this will open the [[Play List Editor]]
**Add the file and click "Ok"
***(The file name will now be shown in the "Preset/Destination" column)
*Set the sync mode
**Right click the name and choose "Sync Mode" > "Master" (otherwise [[Transport]] won't work)
***(The [[Main Toolbar]] will show the player's name (e.g. "Backing Track") as active master transport source.)

The [[Timeline Panel]] will now show your audio file and enable navigating through the track.

!Synchronizing The Metronome

By default, the tempo of a media file is set to 120.

*Open the Media File Properties Editor
**Double click the name (this will open the [[Play List Editor]])
**Click on "Edit..." (this will open the [[Media File Properties Editor]])
**Set the tempo

!!Synchronizing The 1 Mark

*You'll have to chop off the audio file where the one starts (or add silence if you want to have a count-in).
*This cannot be done directly in cantabile
**If your media file is wav, you can use any DAW or audio editor to achieve this
**If your media file is MP3, you can use [[mp3DirectCut|http://mpesch3.de1.cc/]] to edit your mp3 without re-encoding
***To add 1 bar of silence at the beginning of a song, select any range that is 1 bar long, copy & paste it at the beginning. Mark the range and set it's gain to 0.

!Click Source

|Strategy|Effort|Flexibility|h
|Metronome|Quickly done. The audio track has to be synced precisely to the cantabile transport.|Sound can be changed quickly (either globally or per song*).|
|MIDI track|Has to be pre-produced in an external DAW. VST instrument needed to generates the actual click sound.|Can (must) be done individually per song|
|Audio track|Has to be pre-produced in an external DAW.|Sound cannot be changed on the fly.|

*) To enable per-song metronome settings, right click the [[Metronome Toolbar]] and choose "Let Each Song Control Metronome Sound Settings"

!Tempo And/Or Signature Changes

* You'll have to pre-produce a MIDI file containing tempo and signature changes (using an external DAW).

{{notice{Tempo and signature changes are only reflected in the timeline axis of the master MIDI file (musical mode) - not the slave audio files.}}}

{{TODO{Tempo And/Or Signature Changes}}}

!Backing Track As Automation Source

See Concepts: [[Automation]]

!Web Links

📖 Guide: [[Media Players|https://www.cantabilesoftware.com/guides/mediaPlayers]]

💬 Forum: [[Using Cantabile and Backing tracks from DAW|https://community.cantabilesoftware.com/t/using-cantabile-and-backing-tracks-from-daw/3475]]
💬 Forum: [[Time Signatures & Virtual MIDI Input for Media Playback|https://community.cantabilesoftware.com/t/time-signatures-virtual-midi-input-for-media-playback/1505]]
💬 Forum: [[Media player - Sync master and slave|https://community.cantabilesoftware.com/t/media-player-sync-master-and-slave/2743]]
💬 Forum: [[New Feature- Flags in Media Player|https://community.cantabilesoftware.com/t/new-feature-flags-in-media-player/4754]]
💬 Forum: [[REQUEST(s): Labelled Markers in Media Player & Media Delayed Play|https://community.cantabilesoftware.com/t/request-s-labelled-markers-in-media-player-media-delayed-play/1512]]
💬 Forum: [[Labelled Markers (or flags) in Media Player|https://community.cantabilesoftware.com/t/labelled-markers-or-flags-in-media-player/2760]]
💬 Forum: [[Timeline / time-stretching|https://community.cantabilesoftware.com/t/timeline-time-stretching/1031]]

*sengpielaudio.com [[Calculator BPM Tempo Time|http://www.sengpielaudio.com/calculator-bpmtempotime.htm]]
What is called "Bindings" in cantabile, is a mapping matrix for trigger events and target actions. One could compare it to the modulation matrix of a synthesizer or to event based macro programming.

!Global Bindings

*Can be used to map your controller's knobs and buttons to general actions, like transport, panic, sound switching, etc.
*The have to be defined in the [[Background Rack]]
**They can/must be defined per machine, since this is the scope of the [[Background Rack]]

!Per Song Bindings

*Can be used to map your controller's knobs and buttons to song specific actions, like expression
*They can also be used to automate your hardware synths' settings, like current sound, transpose setting, etc.

!See Also

*Thesaurus: [[Bindings|- Thesaurus -##Bindings]]

!Web Links

📖 Guide: [[Bindings|https://www.cantabilesoftware.com/guides/bindings]]

!How To Show

!See Also

*Thesaurus: [[Bindings Panel|- Thesaurus -##Bindings Panel]]

!Web Links

📖 Guide: [[Bindings|https://www.cantabilesoftware.com/guides/bindings]]
*Concepts are descriptions of how Cantabile is working behind the scenes or how one can get thins done with Cantabile
*Some concepts come out of the box and reflect Cantabile's philosophy - some concepts are just "best practice" suggestions.
*When you buy a hardware synthesizer workstation or an arranger keyboard, you buy much of the vendor's concepts. Compared to that, Cantabile is much more flexible and lets you make more decisions on your own.
*Concerning the MIDI and audio routing, one could say it's "semi modular". You cannot freely wire up everything, but you have hooks in well chosen positions of the signal flow where you can do filtering/transformations, etc.
|Parameter|Description|h
|fileName|Name of the file to open. Can be a .cantabileSong, .cantabile, .cantabileSetList or .cantabilelicense file|
|/config:configname|The name of the configuration to use. See [[Configurations, Multiple]]|
|/state:stateName|When loading a song also specified on the command line, load it with this state|
|/dontstartengine|Don't automatically start the audio engine. Cantabile will not process audio/MIDI until the engine is manually started (via the power button top right of main window, or Tools Menu -> Run Audio Engine).|
|/minimized|Run with the main window minimized|
|/maximized|Run with the main window maximized|
|/regserver|Create shell association for Cantabile files|
|/unregserver|Remove shell associations for Cantabile files|

!See Also

*Thesaurus: [[Command Line Options|- Thesaurus -##Command Line Options]]

!Web Links

📖 Guide: [[Command Line Options|https://www.cantabilesoftware.com/guides/commandLineOptions]]
When you want to use the same installation of Cantabile (one computer) in different technical environments (audio interfaces, MIDI controllers), then you can create different named sets of global settings which reflect the environments.

!How To Create A Named Configuration

*There's no way of doing this within Cantabile
*You need to start Cantabile with the /config [[Command Line Option|Command Line Options]]:
**E.g. {{{"C:\Program Files (x86)\Topten Software\Cantabile 3.0\Cantabile.exe" /config:"SomeName"}}}
**This will implicitely create a new configuration set 
***This is stored in "C:\Users\YourName\AppData\Local\Topten Software" as directory "Cantabile 3.0 (SomeName)"

!Creating A Windows Explorer Shortcut

In order to create/start your named configuration it is highly recommended that you create an extra shortcut:

(Windows 10:) Right click your existing Cantabile shortcut from the start menu and choose to open the original location:

|[img[Files/WindowsExplorerShortcut1.png]]|

Just select, copy and paste the desired shortcut - this will create a copy which you can now rename:

|[img[Files/WindowsExplorerShortcut2.png]]|

Right click the new link and choose to edit the properties. Add at the end of the target field: {{{ /config:"SomeName"}}}:

|[img[Files/WindowsExplorerShortcut3.png]]|

Right click the link again and choose "Add to start menu". Now you should have two icons in your start menu like this:

|[img[Files/WindowsExplorerShortcut4.png]]|

!See Also

*Concepts: [[Installations, Synchronizing]] (counter concept for using multiple installations for same set of songs)
*Reference: [[Command Line Options]]

!Web Links

📖 Guide [[Multiple Configurations|https://www.cantabilesoftware.com/guides/multiConfig]]
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Controller Bar|-|-|View > Controller Bar|

|[img[Files/ControllerBar.png]]|

The virtual buttons are part of the Onscreen Keyboard - so their events are routed through the Onscreen Keyboard's MIDI output port.
To make the virtual buttons actually do something, you'll have to create a binding or a routing to any target of your choice.

!Customizing

The controller bar can be customized as described in the official guide. The settings are global and immedietely saved into [[settings.json|Customization]].

!See Also

*Thesaurus: [[Controller Bar|- Thesaurus -##Controller Bar]]

!Web Links

📖 Guide: [[Controller Bar|https://www.cantabilesoftware.com/guides/controllerBar]]
📣 Blog: [[Controller Bar Layouts|https://blog.cantabilesoftware.com/controller-bar-layouts/]]
💬 Forum: [[Controller bar to send MIDI CC|https://community.cantabilesoftware.com/t/controller-bar-to-send-midi-cc/3943]]
💬 Forum: [[Visual indication of leslie slow/fast|https://community.cantabilesoftware.com/t/visual-indication-of-leslie-slow-fast/4300/7]]
!Saving Locations

|📁 C:\Users\YourName\Documents\Cantabile|This is the default, but songs and set lists can easily be saved anywhere.|
| 📄 *.cantabileSong||
| 📄 *.cantabileSetList||

|📁 C:\Users\YourName\AppData\Local\Topten Software\Cantabile 3.0|(Quickly opens from menu: "Tools" > "Open Settings Folder")|
| 📄 Background Rack.cantabileRack|The [[Background Rack|Racks##Background Rack]] (saved when closing Cantabile)|
| 📄 plugins.user.json|All user entered information about plugins (favourite plugins, hidden plugins and plugin tags). ↗ Official: [[Managing Plugins|https://www.cantabilesoftware.com/guides/managingPlugins]]|
| 📄 settings.json|[[Controller Bar]] layouts.|

|📁 C:\Users\YourName\AppData\Local\Topten Software\Cantabile 3.0 (ConfigurationName)|Created when using [[Multiple Configurations|Configurations, Multiple]]|
| 📄 ...|

!What you can customize (alphabetical order)

|Colors in general|Toggle between light/dark theme via Options > General > User Interface|
|Colors of [[Plugin Slots|Plugin Slot]]|Choose from a fixed palette via context menu.|
|Controller Bar|Right click on empty space.|
|Keyboard Commands|Via Options or [[Bindings]]|
|Main Windows' panel visibility|Some of the panels' visibility can be toggled from the view menu. Others have to be hidden using [Shift]-[Esc].|
|Main Windows' panel sizes|Just move the mouse between borders.|
|Metronome Sounds|Options > General > Metronome|
|Middle C numbering|Options > General > Formatting|
|Onscreen Keyboard's Octave|Click on the octave number below the keyboard.|
|Routing View Mode|Table vs. Diagram. Preference can be set in Options > General > User Interface.|
|States' default behaviour|Via context menu of states behaviour panel.|

!Web Links

📖 Guide [[Custom Themes|https://www.cantabilesoftware.com/guides/themes]]
!Why?

When you want to use your set of songs either in different installations of cantabile (more than one computer) or in different environments (audio interfaces, MIDI controllers) you should try to avoid creating dependencies to technical aspects as much as possible. 
Also, it's an advantage when a song is "portable" - which means you could copy it from one computer to another without missing samples/sounds/tracks, etc.

!How?

!!Use Role Names

Since Cantabile forces you to configure [[Audio Ports|Audio Port]] and [[MIDI Ports|MIDI Port]] (instead of directly referencing audio/midi drivers), the first step is already taken. These abstraction layers decouple your songs from direct hardware references.
To get the most value from it, you should additionally choose your port names as abstract as possible - e.g. role names (like "FOH", "Cue" instead of technical names like "CH1", "MAIN", "SUB").

!!Build Self Contained Songs

{{TODO{Build Self Contained Songs}}}
*An entity is a set of properties (a configuration set) related to a specific problem domain.
*All entities together are reflecting the work you have done within Cantabile
*Most entities are saved within a song
*Mostly there exist exactly 1 UI (user interface) to edit/work with an entity, but sometimes more (e.g. the set list can be seen in different UIs)
*Some entities configure the behaviour of a [[service|​SERVICES]] (like the play list controls a media player)
This is a real life example from me, the author of this wiki. It might be helpful for you, if you have similar requirements:

|My Requirements & Guidelines|c
|Thinking song centric |- I never reuse sounds/racks accross different songs<br>- Switching sounds only within a song<br>- Non-requirement: Seamless playing during song-switches|
|Keeping the roles of knobs and faders constant|- The hold pedal is the hold pedal. Period.|
|99% Virtual|- (Nearly) no external audio sources, No MIDI notes going out of Cantabile|
|Using Backing Tracks|- Never MIDI files, always audio files|
|Being flexible concerning hardware ("portable")|- No dependencies to the host computer, it's audio drivers<br>- No (strong) dependencies to specific controllers|

If that's not your cup of tea, here are some other examples:

 📖 Another enthusiast's guide: [[Derek Cook's Cantabile Guide|http://www.xfactory-librarians.co.uk/Downloads/CantabileGuide.pdf]]
 💬 Official forum: [[Show me your Cantabile Rig!|https://community.cantabilesoftware.com/t/show-me-your-cantabile-rig/633/13]]

!MIDI and Audio Ports

*The names of the input ports are abstract. They reflect the role of a device - not the vendor or model type.
*The one and only output port is used to automate a specific device and therefore named by the model type.

|MIDI Ports|c
|MIDI Name|Role|h
|in: Synth Keyboard|Upper manual. 61 keys main controller keyboard. Also used for songs with simple piano parts.|
|in: Piano Keyboard|Lower manual. 88 keys weighted keyboard. Optional. Only used for songs with sophisticated piano parts. Some gigs can be played without it.|
|in: Mobile Keyboard|Bluetooth mini keyboard. Optional. Rarely used. Mostly for triggering one-shot samples, additional (dispensable) percussion. Operated not by myself, but e.g. a singer.|
|out: P-80 Control|If the lower keyboard is a Yamaha P-80, this port is used for switching it's internal sounds and automating Local On/Off, transpose.<br>If it's a different keyboard, this port is routed to nowhere, avoiding unwanted phenomenas. |

|Audio Ports|c
|Audio Name|Role|h
|in: Mic|Only used for vocoder (not for regular singing)|
|out: FOH|Main output "front of house", always audible.|
|out: Metronome|Used as click source when using backing tracks. Routed to in-ear.|
|out: Original|Dedicated audio port for the original song audio file (included for practicing purpose). It's never routed to FOH.|

!Background Rack

I use the background rack only to map global controller events (from Onscreen Keyboard's Controller Bar and Roland A-800 Pro) to global targets/actions.

!!Routing

*Only Onscreen-Keyboard (to show incoming MIDI notes)
*No plugins here

|[img[Files/OnscreenKeyboardFromAllInputPorts.png]]|

!!Bindings

*The transport bindings are [[explained below|##Transport Concept Explained]]
*The "Hold Pedal" bindings concerning CC 64 enable using [[only one hold pedal for all devices|Hold Pedal: One For All]]

|[img[Files/VodiExampleBackgroundRack.png]]|

!Organization Of Songs And Set Lists

|[img[Files/VodiExampleSongsAndSetLists.png]]|

*All songs and set lists exist in a single directory which can easily be synchronized between computers
*Each song has it's own folder, containing all tracks and one-shot samples
*Each set list represents a band and is a subset of the songs. It's re-sorted before a gig to reflect the planned order

!Organization Of Sounds

*I do not use the import/export program/bank features of cantabile.
**Most VST plugins I use have built in library management. I reorganized their structures to be similar to the Korg and Roland synthesizer workstations.
**I [[synchronize|Installations, Synchronizing]] the VST's sound banks (including sample libraries) between 2 computers (studio/stage machine)
*I do not use racks. Each song is individually built up. 
**When I remember a good sounding combo of VST Instruments + FX, I just copy and paste the whole plugin slots from one song to another.
**I have one special song called "Copy and Paste Source" containing my favorite FX plugins with practical settings

!Template Song

{{TODO{documentation partially obsolete, new features available}}}

*In order to have an unified look & feel for all songs, there's one song called "Template"
*When building up a new song, I use Windows Explorer to copy & paste & rename the template.

|[img[Files/VodiExampleTemplateSongNotes.png]]|
!!!!!Notes tab of the template song

|[img[Files/VodiExampleTemplateSongRouting.png]]|• The template is kept as minimalistic as possible<br>• The original track is always included for practicing<br>• Missing stuff will be copied and pasted from other songs|
!!!!!Routing tab of the template song

|[img[Files/VodiExampleTemplateSongBindings.png]]|• Bindings are used to automate external MIDI gear's states|
!!!!!Binding tab of the template song

!Usage Of Colors

|[img[Files/VodiExampleColorsInspiration.png][https://archive.org/details/Pitfall_Activision_1982]]|
!!!!!Somehow this reminds me of the Cantabile color palette

*Colors are a valuable dimension to visually structure things, so one should decide wisely what to use them for
*When you use too many colors it'll be counterproductive - also when you don't give them fixed semantics.
*I decided the colors to reflect the roles of items
**Grey - Routing
**Cyan: FX
**Orange: Instruments, upper
**Brown: Instruments, lower
**Green - Backing Tracks & Tempo Tracks
**Blue - Original song (for practicing)

Combined with a fixed order of plugin types a typical song would look like this:

|[img[Files/VodiExampleColors.png]]|
!!!!!This selection of colors was inspired by the example above

!Transport Concept Explained

*I have the reference song (=original when covering) always included in a cantabile song (always Media Player #1)
*I set markers to reflect the song structure and use 

|Hardware Button Mapping (Roland A-800)|c
|Button/Key|MIDI CC|Target|h
| ⏹ |Clock Stop|Media Player by Index #1: Stop|
| ⏵ |Clock Start|Media Player by Index #1: Play from Start|
| ⏯ |Clock Continue|Transport: Play/Pause|
| ⏪︎︎ |106|Real-time Rewind (Speed 1)|
| ⏩︎︎ |107|Real-time Fast-Forward (Speed 1)|
| ⏮ |108|Media Player by Index #1: Previous Marker|
| ⏭ |109|Media Player by Index #1: Next Marker|

|PC Keyboard Mapping|c
|>|>| Layout | Mapping|Remarks|h
| Q<br>⏮ | W<br>🔎︎︎+ | E<br>⏭ | "Zoom to play position" [W]<br>"Show all" [S]<br>"Realtime-Rewind"* [A]<br>"Real-time Fast-Forward"* [D]|*) Done via Bindings, because no hot keys exist for these commands.|
| A<br>⏪︎︎ | S<br>🔎︎︎- | D<br>⏩︎︎ |~|~|


!Web Links

📖 Guide: [[Functions|https://www.cantabilesoftware.com/guides/functions]]
!Automating Local On Off State

*Let's say you use a MIDI Keyboard with internal sounds as controller and you sometimes want to use them in songs - sometimes not. 
*In this case you'll want to automate the local off state of the keyboard.
*This can be done  with the bindings of a song

Create a binding as shown below:

|[img[Files/LocalOff.png]]|
!!!!!Use Value 0 to turn internal sounds off, 127 to turn it on

You can of course use the same technique to automate bank and program changes.

!Automating Via SysEx

*Some Keyboards can not be fully automated using regular MIDI CC Messages
*They send/recieve SysEx data to store/restore their current state

!!Fetching SysEx Data From an External MIDI Device

*This cannot be done directly in Cantabile
*You'll need an external tool - the following example shows the usage of ↗"[[MIDI-OX|http://www.midiox.com/]]"

| [img[Files/EngineOff.png]] |Cantabile:<br>Make sure the MIDI driver is accessible for external applications by temporarily switching off the Cantabile Engine|

|[img[Files/MidiOxDevices.png]]|MIDI-OX:<br>Go to "Options" > "MIDI Devices..."<br>Select the desired input - a port map object will appear.|
|[img[Files/MidiOxRecieving.png]]|"View" > "SysEx..."<br>"SysEx" > "Receive Manual Dump..."|
|[img[Files/MidiOxRecieved.png]]|After sending SysEx from your keyboard<br>(read the manual of your Keyboard to learn how to do so),<br>click "Done".|
|[img[Files/MidiOxRecievedDisplay.png]]|This is what you should see now.<br>Click "Display Window" > "Save As..."<br>and save the file as ".syx".|

|[img[Files/SysExBinding.png]]|Back in Cantabile: Create a binding like this. Click on "No Data".|
|[img[Files/SysExDataEditor.png]]|Click on "Import..." to import the .syx file you created before.|

!!Reusing SysEx Settings Accross Songs

*You can just select, copy & paste the whole binding slot (including it's SysEx-Data) from song to song
**Right click the ☰ icon at the left edge of the slot
*You could create a special song (e.g. called "Copy and Paste Source") to centralize your favorite SysEx configurations
**Use the "Notes" cell to describe the roles/content of the slots

|[img[Files/SysExCopyAndPasteSource.png]]|
!!!!!Example of a SysEx "copy and paste source" song
!One Pedal For Two Keyboards

If you have two keyboards (e.g. stage piano for lower manual, synth keyboard for upper), but only want to use one globally effective hold pedal, this is for you.

*First you need to enable showing "Loopback Ports"
**Menu "Tools" > "Options..." > "Miscellaneous..."
**Check "Show Loopback Ports"

*Open the Background Rack
**Add a binding from your lower keyboard's input port (e.g. "Piano Keyboard") controller 64 to the upper's keyboard loopback input port (e.g. "Loopback - Synth Keyboard") controller 64
**Do this vice versa (from upper to lower)

|[img[Files/HoldPedalOneForAll.png]]|
!!!!!Bindings to distribute CC 64 to any input port

From now on it doesn't matter to which of the keyboards you connect the pedal - it will always send CC 64 on both input ports.

!Piano+Strings: Decay Instead Of Hold

When playing piano string layers together with the hold pedal, the strings might quickly clutter up everything, as they hold infinitely.
When you compare hardware stage pianos, you will find that some vendors (e.g. Yamaha) will modify the decay time of the strings to match the piano's decay, instead of holding them.

You can achieve this in Cantabile when you have a plugin that lets you modify the decay time by a modulation matrix.

*In Cantabile:
**Use a MIDI filter on the String route, add a "Controller Map"
**Reassing CC 64 to anything else, e.g. CC 4 (to get rid of the hold event)

*In your plugin:
**Map CC 4 to add some decay time

|[img[Files/HoldPedalDecayMatrix.png]]|
!!!!!Example: Use modulation matrix to add decay time via CC 4 (SynthMaster)
| ''"PC Keyboard" Binding'' |
| ▾ overrides ▾ |
| ''Onscreen Keyboard'' |
| ▾ overrides ▾ |
| ''Hot Keys'' |
Let's say you have two sets of Computer + Controller + Audio Interface (e.g. one in the rehearsal room and one in your home studio). You want to play the same songs on each set. Then you need to keep the songs and settings of each installation synchronized.

!Prerequisites

Unless you have a 1:1 cloned environment (same MIDI and audio hardware and drivers) it it suggested that you make your songs independent of these aspects.
See [[Dependencies, Reducing]].

!Choose A Strategy

!!Manual Sync

*Use Microsoft Windows' network sharing to make the relevant folders visible to each other machine
*Usa a Software like "WinMerge" or "Beyond Compare" to compare folders against each other and synchronize their contents

!!Shared Folders
!!!!!Can be kind of dangerous

*Use cloud based shared folders (e.g. DropBox) for Songs, Set Lists, Plugins, Sound Libraries.
*Optional: Edit the config.json file in the Cantabile install location to point to a shared location for settings
**Only applicable when you have exactly the same MIDI and audio hardware and drivers on both machines.

{{notice{Do not use two Cantabile instances simultaneously on the same shared folders!}}}

!What to Synchronize

!!Do

|Songs & Set Lists|Just keep all files in sync.|
|Sample Libraries|When you use SFZ-Players or Kontakt, etc.|
|VST Plugins|No need to synchronize 100%. You might want to have a smaller subset of your plugins on your "live machine" while having the complete collection on your "studio machine". Make sure you're using the same versions on both machines.|
|Sounds|The files used by your plugins to store their sound banks.|
|{{{Background Rack.cantabileRack}}}|Assumes that you only do stuff in the background rack that is functioning with all machines/controllers.|
|Global MIDI filters|If necessary (e.g. reusing the same velocity curve on both computers). As they live inside port configurations, you'll have to do this manually. You can utilize the export/import functions.|

!!Don't

|{{{settings.json}}}|Although you certainly want to have most settings (like keyboard shortcuts, etc.) synchronized, you shouldn't synchronize the whole file, because there are path and driver names that normally are different on different machines.|
|{{{plugins.json}}}|Unless you have a 100% mirror of all your plugins on both machines (same structure, no subset), you shouldn't sync this file.|

!Centralizing Scattered Plugin Data (Presets & Settings)

Unfortunately there's no standard where software stores your settings and data. Well known locations are...
...your documents folder
...the (hidden) %appdata% folder
...the (hidden) %localappdata% folder
...the VST folder (where the DLL is located)

All of these contain a mixture of your valuable data and crap coming from everywhere (ironically "Your Documents" will contain > 50% of ''not'' your documents). So when you want to synchronize (or backup) your data, you will need to do cherry picking.
In order to avoid this, we need to force the software to write the data where ''we'' want (and not the developer).
In some cases, you can configure the plugin to store presets in a custom location. Sometimes you will need undocumented knowledge (e.g. edit a deeply buried config file) to do so. But some plugins just won't let you do. In this case, the Windows OS is our final line of defense (to be exact: File system junctions).

Let's say we want to have a centralized folder for all presets (of all plugins): ''"D:\Sounds"''

The following example will show how to make "Dexed" use ''"D:\Sounds\Dexed"'' for preset storage.
(Dexed can use both, %appdata% or the VST folder for storage - we assume the latter)

# Move the "Dexed" folder from the VST folder to "D:\Sounds"
# Run "CMD.exe"
# CD to where the Dexed.dll is (VST folder)
#Type {{{MKLINK /J Dexed D:\Sounds\Dexed}}}

You will now see a "Dexed" folder with a small link symbol in file explorer. This is a wormhole to the actual storage location (D:\...).

!See Also

*Concepts: [[Configurations, Multiple]] (counter concept for using one installation across multiple environments)

!Web Links

*↗ Official Blog: [[Moving Your Cantabile Setup to a New Machine|https://blog.cantabilesoftware.com/moving-your-cantabile-setup-to-a-new-machine-daad378e5327]]
*↗ Official Forum: [[Syncing cantabile between computers|https://community.cantabilesoftware.com/t/syncing-cantabile-between-computers/910]]
*↗ Official Forum: [[Settings.json change suggestion|https://community.cantabilesoftware.com/t/settings-json-change-suggestion/4446]]
If you want to use momentary controller (e.g. joystick or hold pedal) to toggle your favorite leslie FX between slow/fast, but the FX plugin only supports continuous CC (like Modulation), this problem can be solved utilizing a latch MIDI filter.

!!Momentary Modulation to Latching Modulation

Put this either into the MIDI filters of your Leslie VST plugin slot or into the input port routing slot.

|[img[Label|Files/LeslieLatchCc1.png]]|

!!After Touch

If you additionally want to use after touch to toggle slow/fast, add the following ''above'' the latch filter:

|[img[Label|Files/LeslieLatchAt.png]]|

You can tweak the range to define the pressure threshold. The lower you choose the second value, the less you have to apply pressure to trigger the toggle.

!Web Links

💬 Forum: [[C3 Utility Racks - Dave Dore's post|https://community.cantabilesoftware.com/t/c3-utility-racks/1934/22]] (using pitch instead of modulation)
*MIDI filters & transformers suppress or manipulate incoming events the criteria of which can be defined.
*They can be added at fixed insertion points in the MIDI signal flow.
**The insertion points have different scopes, some of them are global, some per song, some per plugin
*They can be chained (within an insertion point)

!Stateless And Stateful Filters

???

!See Also

*Thesaurus: [[MIDI Filter & Transformer|- Thesaurus -##MIDI Filter & Transformer]]

!Web Links

📖 Guide: [[MIDI Filters|https://www.cantabilesoftware.com/guides/midiFilters]]
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > MIDI Monitor|Routing Panel: Right click the name of a slot.<br>Monitor Panel: Right click the name of a MIDI Port.|"View - MIDI Monitor"|-|

[img[Toolbar|Files/MidiMonitor.png]]

!See Also

*Thesaurus: [[MIDI Monitor|- Thesaurus -##MIDI Monitor]]

!Web Links

📖 Guide: [[MIDI Monitoring|https://www.cantabilesoftware.com/guides/midiMonitoring]]
!See Also

*Thesaurus: [[MIDI Route|- Thesaurus -##MIDI Route]]
!How To Show

*Expand the "Input Ports" area in the [[Routing Panel]] by clicking the ▶ icon on the left to see the route bars of all input ports
*Expand any [[Plugin Slot]] to see it's route bars.

!See Also

*Thesaurus: [[MIDI Route Bar|- Thesaurus -##MIDI Route Bar]]
*Entities: [[MIDI Route]]
*UI: [[MIDI Route Editor]]
|👀 How to Show|c
|In a [[MIDI Route Bar]], click right beside the filter symbol 🝖 (label "Omni" or "CH 1").<br>Or: Right click the name and choose "MIDI Route Settings..."|

|[img[Files/MidiRouteEditor.png]]|

!See Also

*Thesaurus: [[MIDI Route Editor|- Thesaurus -##MIDI Route Editor]]
*UI: [[MIDI Route Bar]]
*Concepts: [[Splits & Layers]]
{{TODO{MIDI Routing}}}
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Toolbar|-|View - Toggle Toolbar|View > Toolbar|

[img[Toolbar|Files/Toolbar.png]]

|◆ Elements|c
|◆ Element|👀 Show(s)...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|Record Button|...the recording state.|Left: Start and stop the recorder.<br>Right: Configure Auto Record. See Recording. (Cantabile Solo and Performer only)||
|Master Transport Controls|...the transport state.|Play, Pause, Stop||
|[[Master Transport Selector|- Thesaurus -##Master Transport Selector]]|...the currently active master transport source.|Change the source.||
|Status Panel|...the current global transport position<br>load indicator, time signature, [[tempo|- Thesaurus -##Tempo]], beat indicators.|||
|Tap Tempo Button|...a flash in time with tempo|Left: Set the tempo by tapping.<br>Right: Configure)||
|Metronome Button|-|Toggle the visibility of the metronome toolbar||
|Live Mode Button|...live mode|Switch to Live Mode||
|Global Output Gain*|||
|Panic Button||Send note off and controller reset events to all plugins and MIDI output ports.||
|Audio engine Power Button|glowing green indicates the engine is running.|Toggle audio engine state.||

 *) Note: Global Output Gain is saved globally, not per song.

!See Also

*Thesaurus: [[Main Toolbar|- Thesaurus -##Main Toolbar]]

!Web Links

📖 Guide: [[Main Windows Controls|https://www.cantabilesoftware.com/guides/mainWindowControls]]
[img[Label|Files/MainWindow.svg]]
!!!!!Anatomy of the main window

!Areas

|Panel/Sub Panels|Related Chapter(s)|How To Show|How To Hide|h
|Main Toolbar|→ [[Main Toolbar]]|Menu "View" > "Toolbar"|Menu "View" > "Toolbar" (toggle)|
|Metronome Bar|→ [[Metronome Bar]]|Click on the metronome symbol.|Click on the metronome symbol (toggle)|
|Ticker Bar|→ [[Ticker Bar]]|Menu "View" > "Ticker Bar"|Click into, press [Shift]-[Esc]|
|Side Panel||||
| Recording&nbsp;Panel|→ [[Recording Panel]]|||
| Set List Panel|→ [[Set List Panel]]|||
| States Panel|→ [[States Panel]]|Menu "View" > "Side Panel" > "States"||
| Monitor Panel|→ [[Monitor Panel]]|||
|Main Panel||||
| Song Panel||Always visible unless overlapped by a maximized Rack Panel.||
|  Notes Panel|→ [[Notes]], → [[Notes Panel]]|||
|  Routing Panel|→ [[Routing Panel]]|||
|  Bindings&nbsp;Panel|→ [[Bindings Panel]]|||
| Rack Panel|→ [[Rack Panel]]|Double click a rack slot or click "View" > "Background Rack"||
|  Routing Panel|→ [[Routing Panel]]|||
|  Bindings&nbsp;Panel|→ [[Bindings Panel]]|||
|Set List Grid|→ [[Set List Grid]]|Click the ⊞ button on the upper left.|Click the ⊞ button (toggle)|
|Timeline|→ [[Timeline Panel]]|Menu "View" > "Timeline"|Click into, press [Shift]-[Esc]|
|Onscreen&nbsp;Keyboard|→ [[Onscreen Keyboard]]|Menu "View" > "Onscreen Keyboard"|Click into, press [Shift]-[Esc]|
|Controller Bar|→ [[Controller Bar]]|Menu "View" > "Controller Bar"|Menu "View" > "Controller Bar" (toggle)|

!See Also

*Thesaurus: [[Main Window|- Thesaurus -##Main Window]]

!Web Links

📖 Guide: [[Main Windows Controls|https://www.cantabilesoftware.com/guides/mainWindowControls]]
{{TODO{Media File Properties Editor, add screenshots}}}

!See Also

*Thesaurus: [[Media File Properties Editor|- Thesaurus -##Media File Properties Editor]]
*Services: [[Media Players]]
{{TODO{Media Player Slot, add screenshots}}}

!See Also

*Thesaurus: [[Media Player Slot|- Thesaurus -##Media Player Slot]]
A media player is a built-in Cantabile component that can play back one or many Audio and MIDI files. It can be added to your routing table like a VST plugin. The UI of a media player has no own view for media content. Instead, media content is shown in a seperate panel called [[Timeline Panel]]

!Habitat & Scope

Media players are defined per song. The UI entry point is the routing panel. Each media player will reside in a separate [[Media Player Slot]].

!Properties

|Name|Type|Description|h
|Audio Port|Entity|A named [[Audio Port]] configuration which routes media player's internal audio channels to a named virtual port.|
|Color|Enum|The color of the media player as shown in the Routing Table.|
|Name|String|The name of the media player as shown in the Routing Table. The default name after adding a media player is "Media Player 1".|
|Midi Ports|???|???|
|Play List|Entity|???|
|State Behaviour - Sync Mode|Boolean|???|
|State Behaviour - Solo|Boolean|???|
|State Behaviour - Solo Control|Boolean|???|
|State Behaviour - Selected File|Boolean|???|
|State Behaviour - Selected Play Range|Boolean|???|
|State Behaviour - Gain Level|Boolean|???|
|State Behaviour - Playback Speed|Boolean|???|
|State Behaviour - Pan and Fade|Boolean|???|
|State Behaviour - User Notes|Boolean|???|
|State Behaviour - Color|Boolean|???|
|Sync Mode|Enum|None, Master, Slave (Realtime), Slave (Musical)|

!Use Cases


!Events 
(Events can be used as [[binding|- Thesaurus -##Binding]] sources)

|Event|Occurance|h
|Color||
|Fade||
|Gain||
|Is Paused||
|Is Playing||
|Is Stopped||
|Name||
|Notes||
|Pan||
|Select File Indexed||
|Select File Name||
|Select File Scaled||
|Solo||
|Solo Control||
|Speed||
|State||

!See Also

*Entities: [[Play List]]

!Web Links

💬 Forum: [["New Media Player Bindings"|https://community.cantabilesoftware.com/t/new-media-player-bindings/4384]]
!Web Links

💬 Forum: [[Metronome count-in|https://community.cantabilesoftware.com/t/metronome-count-in/116]]
💬 Forum: [[Metronome as cue for countoff?|https://community.cantabilesoftware.com/t/metronome-as-cue-for-countoff/2154]]
{{TODO{Metronome Toolbar, add screenshots}}}

!See Also

*Thesaurus: [[Metronome Toolbar|- Thesaurus -##Metronome Toolbar]]
{{TODO{Screenshot}}}

!Alternative Metric Display

The time load and the page faults are always shown in the [[Main Toolbar]] (lower left corner of the centered status panel).

You can also configure the [[Controller Bar]] to show some of the metrics. Add a custom button and customize it like this:

|[img[./Files/MonitorPanelAlternative.png]]|

!See Also

*UI: [[MIDI Monitor]]
*UI: [[Profiler]]

!Web Links

📖 Guide: [[Monitor Panel|https://www.cantabilesoftware.com/guides/monitorPanel]]
📖 Guide: [[Understanding Cantabile's Performance Metrics|https://www.cantabilesoftware.com/guides/understandingPerformanceMetrics]]
Forum: [[What’s a “Locked Zombie”?|https://community.cantabilesoftware.com/t/whats-a-locked-zombie/353]]
If you have been using a DAW for a long time and just started trying out cantabile, you might get confused in some situations. Some components may look familiar (like the timeline or the onscreen keyboard), but behave differently.
The transport concept is different as well.

!Main Differences

||DAW|Cantabile|h
|Main working area|Arrangement with tracks and mixing console|[[Routing Panel]]|
|Adding VSTs|As track|As [[Plugin Slot]]|
|MIDI routing|As property on each track (pull)|As explicite route object (push)|
|Mixing|Vertical mixing console|[[Plugin Slot's|Plugin Slot]] level (or it's audio routes' levels)|
|[[Onscreen Keyboard]]|Automatically wired to selected track|Fixed wiring - has to be done manually.|
|Transport|DAW is master, free navigation|Master transport has to be assigned. See [[Transport]]|
|Playhead vs. Song Position|It's the same thing.|Media Players can have their own playhead position, not affecting the song position.|
|Media Tracks|Each track shows it's contents (wave forms or piano roll)|Tracks exist in [[Media Players]]. The content of one track at a time can be shown in the [[Timeline Panel]]|
|Tempo & signature changes|Can be done within the DAW|Have to be done externally and imported as MIDI file|
|Automation|Can be done (graphically) within the DAW|Has to be done using Media Players containing MIDI files or by using Transport Bindings.|
!See Also

*↗ Official: [[Notes|https://www.cantabilesoftware.com/guides/showNotes]]
!Web Links

📖 Guide: [[Notes|https://www.cantabilesoftware.com/guides/showNotes]]
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Onscreen Keyboard|-|[^ K] "View - Onscreen Keyboard"<br>[^+K] "View - Hide Onscreen Keyboard"|View > Onscreen Keyboard|

|[img[./Files/OnscreenKeyboard.png]]|

|◆ Elements|c
|◆ Element|👀 Show(s)...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|Upper Corner|(invisible)|Click & drag to resize.|[^K] "View - Onscreen Keyboard"<br>[^+K] "View - Hide Onscreen Keyboard"|
|Black & white keys|...incoming MID notes<br>(Prerequisite: A proper routing as described [[here|- First Steps After Installing -##Making Use Of The Onscreen Keyboard]]).|Click to play a note.<br>The lower the louder.|[F12] "Tools - Capture Keyboard".<br>See [[PC Keyboard Capturer]]|
|Octave numbers|-|Click & drag to move the visible portion<br>of the onscreen keyboard.||
|Active Octave Bars|...which octaves can be played via PC keyboard.|Click besides to move them.|[+PgUp] Shifts the upper active octave bar up<br>[+PgDn] Shifts the upper active octave bar up<br>[^PgUp] Shifts the lower active octave bar up<br>[^PgDn] Shifts the lower active octave bar up|
|Output channel|...the MIDI channel that the on-screen keyboard sends on.|Change the channel.||
|PC keyboard capture indicator|...the activity state of the [[PC Keyboard Capturer]].|Toggles the state.|[F12] "Tools - Capture Keyboard".<br>See [[PC Keyboard Capturer]]|

!See Also

*Thesaurus: [[Onscreen Keyboard|- Thesaurus -##Onscreen Keyboard]]
*First Steps: [[Making Use Of The Onscreen Keyboard|- First Steps After Installing -##Making Use Of The Onscreen Keyboard]]
*UI: [[Main Window]]

!Web Links

📖 Guide: [[Onscreen Keyboard|https://www.cantabilesoftware.com/guides/onscreenKeyboard]]
📣 Blog: [[Working with Cantabile’s Onscreen Keyboard|https://blog.cantabilesoftware.com/working-with-cantabile-s-onscreen-keyboard-a15110e60cff/]]
📣 Blog: [[Using Cantabile as a Standlone Onscreen Keyboard|https://blog.cantabilesoftware.com/using-cantabile-as-a-standlone-onscreen-keyboard-6d54baaed5c7/]]
When this service is active, you can use the PC keyboard as input device for the [[Onscreen Keyboard]].

!Activation

* To momentarily activate the capture put focus into the onscreen keyboard (by mouse click) 
* To toggle the explicite PC keyboard capture mode, clicking the lower right indicator in the onscreen keyboard or press the mapped hot key (by default [F12]).

!Usage

{{notice{There's a competitive situation between PC keyboard capture, global hot keys and bindings from PC keys. If you have concurrent mappings, it depends on the state of the explicite PC keyboard capture mode which mapping "wins".}}}

|PC Keyboard Mapping|c
|[F12]*|Toggles explicite PC keyboard capture mode|
|[Shift]|Simulates the hold pedal|
|[PgUp]|Shifts both active octave bars up|
|[PgDn]|Shifts both active octave bars up|
|[Shift]+[PgUp]|Shifts the upper active octave bar up|
|[Shift]+[PgDn]|Shifts the upper active octave bar up|
|[Ctrl]+[PgUp]|Shifts the lower active octave bar up|
|[Ctrl]+[PgDn]|Shifts the lower active octave bar up|
 *) Can be customized

!Customization

|What|Where|Notes|h
|Capturing scope|Global Options > On-screen Keyboard|Can even capture key strokes when Cantabile Window is not active.|
|Toggle hot key|Global Options > Hot Keys > "Tools - Capture Keyboard"|

!Web Links

📖 Guide: [[Onscreen Keyboard|https://www.cantabilesoftware.com/guides/onscreenKeyboard]]
{{TODO{Pitch Bend, Asymmetrical, add screenshots}}}

You can only scale down the amount of pitch bending. Set the maximum range in your plugin (e.g. 3 semi tones) and scale down the range for one direction to e.g. 2 semi tones by limiting the target range to 5461 (see table below).

|TargetRange = 8192/OriginalRange*DesiredRange|

|Original Range|Target<br>1|<br>2|<br>3|<br>4|<br>7|<br>12|h
|Major 2nd (2 semi tones)|4096|-|-|-|-|-|
|Minor 3rd (3 semi tones)|2731|5461|-|-|-|-|
|Major 3rd (4 semi tones)|2048|4096|6144|-|-|-|
|Major 4th (5 semi tones)|1638|3277|4915|6553|-|-|
|Major 5th (7 semi tones)|1170|2341|3511|4681|-|-|
|1 Octave|683|1365|2048|2731|4779|-|
|2 Octaves|341|683|1024|1365|2389|4096|
!!!!!Table showing pre calculated values

!Web Links

💬 Forum: [[C3 Utility Racks - Neil Durant & Dave Dore's posts|https://community.cantabilesoftware.com/t/c3-utility-racks/1934/19]] (different approach, utilizing bindings)
!See Also

*Services: [[Media Players]]
!How To Show

{{TODO{Play List Editor}}}

|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|Insert > Plugin...|"Add Object"|"Insert - Plugin"<br>Default: [Ctrl]-[Shift]-[P]|-|

|[img[Files/PluginSelector.png]]|

!See Also

*Thesaurus: [[Plugin Selector|- Thesaurus -##Plugin Selector]]

!Web Links

📖︎︎ Guide [[Managing Plugins|https://www.cantabilesoftware.com/guides/managingPlugins]]
📖︎︎ Guide [[Working With Plugins|https://www.cantabilesoftware.com/guides/workingWithPlugins]]

!Program Change, Volume (and others)

*These MIDI messages are often recieved by VST plugins and change their sounds/states
*This is normaly not what you want to happen, when using a VST host like Cantabile...
**...because you want to use songs/states to switch sounds 
**...do the mix using Cantabile's plugin gains (instead of output volume settings buried in plugins)

!Strategy (a): Avoiding Poison CCs

*There's no need to use the traditional CCs for e.g. song/state switching or mixing
*Cantabile can be controlled by any (exotic) MIDI event that wouldn't interfere with plugins
*You need...
**...either a fully programmable master keyboard to directly invoke such events
**...or a MIDI filter, globally integrated in a MIDI port, transforming the poison CCs to s.th. less dangerous

{{notice{Mostly unused CCs are: ''9, 20..31, 80..83, 102..119''}}}

!Strategy (b): Remapping & Surpressing Poison CCs

{{notice{Do not use MIDI filters in routings or plugins, because this is inefficient and error-prone (concerning usability).}}}

*Bind program changes to anything you want (e.g. Song States by Program) and make sure, you activated the "Routing Mode (Supress)". This can be found in the context menu of the source port.
*Remeber: If you want the binding to be globally effective, put it into the Background Rack.

|[img[Files/RoutingModeSuppress.png]]|

!See Also

*[[Example (Real Life) by Vodi]]

!Web Links

📣 Blog [[Routing Modes and Order of Bindings|https://community.cantabilesoftware.com/t/routing-modes-and-order-of-bindings/3767]]

💬 Forum [[Question about Program Change messages|https://community.cantabilesoftware.com/t/question-about-program-change-messages/]]
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Profiler|-|"View - Profiler"|-|

[img[Files/Profiler.png]]

!See Also

*UI: [[Monitor Panel]]

!Web Links

📖 Guide: [[Profiler|https://www.cantabilesoftware.com/guides/profiler]]
📖 Guide: [[Diagnostic Options|https://www.cantabilesoftware.com/guides/diagnosticOptions]]
📖 Guide: [[Glitch Free|https://download.cantabilesoftware.com/GlitchFree.pdf]]

{{dualColorTable{
|👀 How to Show / Hide|c
||☰ Menu|🖱️ Mouse|⌨ Hot Keys|⚯ Bindings|h
|Show|-|Double click name in slot.|-|-|
|Hide|-|⏏ icon|-|View > Close Rack Editor|
|Maximize|-|▭ icon|"View - Toggle Zoom Rack"|View > Zoom Rack Editor|
}}}

|[img[Files/RackPanel.png]]|
!!!!!An empty rack panel

|◆ Elements|c
|◆ Element|👀 Show(s)...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|▭ icon |-|Maximize/normalize the rack panel |???|
!Background Rack

*The background rack service is a special instance of a rack service that is always running independently of the loaded song.
*It's purpose is to handle globally effective bindings, plugins and media players
*It's saved as a [[separate file in the settings folder|Customization]], when Cantabile is closed.

!Linked Rack

???

Remeber that you can copy & paste complete plugin slots from song to song - creating an independent copy of that sound.

!See Also

*Thesaurus: [[Rack|- Thesaurus -##Rack]]

!Web Links

📖 Guide: [[Racks|https://www.cantabilesoftware.com/guides/racks]]


|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Main Panel > Routing|"Routing" in the top middle area|"View - Main"<br>(Default: [Ctrl]-[I])|View > Routing|

!Elements

!Customizability

!See Also

*Thesaurus: [[Routing Panel|- Thesaurus -##Routing Panel]]

!Web Links

📖 Guide: [[Understanding Ports and Routes|https://www.cantabilesoftware.com/guides/portsAndRoutes]]
📖 Guide: [[Routing Diagrams|https://www.cantabilesoftware.com/guides/routingDiagrams]]
Routings and bindings are sometimes competing concepts, since you can use both to virtually wire up things. Therefore it's important to understand the similarities and differences.

|Routing|Binding|h
|"Tree shaking" approach: Let through everything and filter out what you don't want.|"Cherry picking" approach: Only let through specific event types.|
A set list is a saved list of song files that can be quickly switched between. You'll typically use a set list to pre-configure the a set of songs in the correct order for a gig.

!Habitat & Scope

*Set lists are just files that can reside anywhere you saved them
*They contain references to [[song|Song]] files
**The references are relative to the path of the set list file
**When a song is deleted, it would be a broken reference in all referring set lists.

!UI Representations

[[Set List Panel]], [[Set List Grid]] and [[Ticker Bar]].

! See Also

* Thesaurus: [[Set List|- Thesaurus -##Set List]]

!Web Links

📖 Guide: [[Set Lists|https://www.cantabilesoftware.com/guides/setLists]]
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Main Panel > Set List Grid|⊞ at upper left corner|"View - Show Set List Grid"<br>(Default: [Ctrl]-[G])|View > Set List Grid|

|[img[Toolbar|Files/SetListGrid.png]]|

|◆ Elements|c
|◆ Element|👀 Show(s)...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|⊞ icon|-|Toggle Set List grid visibility.||
|📌︎︎ Pin|The pin state.|Make the grid sticky - will stay visible after selecting a song.||
|Section titles|...the names of breaks between parts of the setlist.|Right: Show context menu.||
|Song buttons|..song names - currently loaded song is highlighted.|Left: Load the song and hide the grid (unless pinned).<br>Right: Show context menu.||

!Hidden Functions

|Filtering|Press the "Filter Set List" hot key (by default [F3]) and enter s.th.|

!Customizing

Right click anywhere in the grid and choose the respective menu.

[img[Toolbar|Files/SetListGridLayout.png]]

!See Also

*Thesaurus: [[Set List Grid|- Thesaurus -##Set List Grid]]
*[[Set List Panel]]
*[[Ticker Bar]]

!Web Links

📣 Blog: [[Set List Grid|https://blog.cantabilesoftware.com/set-list-grid-and-set-list-improvements-34264ffc5b02/]]
!See Also

*[[Set List Grid]]
*[[Ticker Bar]]

{{TODO{Song Switching}}}
There are many concepts of how to use different sounds in a song. Any of them can be realized in cantabile - with more or less efford and complexity.
At the end of the day, it's your personal decision. The main conceptual categories are:

|Preference|Suggestions|h
|I want to have my favorite sounds mapped on many buttons (fixed assignent) that'll be the same for every song|Put everything (VSTs, Bindings, ...) into the background rack or use linked racks. Use Songs only for notes.|
|I want to use different sounds for each song... |Use states to enable/disable MIDI routes to plugins.|
|...and I want to switch them randomly|Map program changes to state switching (read more below).|
|...and I want to switch them sequentially|Map a controller (e.g. foot switch) to state next/previous (read more below)|
|Instead of switching sounds I want to add some layers while playing (e.g. Piano + Strings)|Map knobs/faders/pedals to a plugin's "Fade" binding target (read more below).|
|I want to use a mixture of centralized stuff and individual stuff.|Use linked racks.|

!Using MIDI Program Change Events For Sound Switching

If you want to use MIDI program change events for sound switching, you should make sure they won't ever be routed to any plugin.
See [[Poison CCs, Surpressing]].

!Using States

* Normally you would enable/disable the Input Ports Routes per state (the you can switch sounds while still holding down keys)
* Optionally you could enable/disable the "Running" state of plugins to save CPU load (in this case the sounds will stop while switching)

{{notice{BEWARE: States can remember much more things than just enabled/disabled settings. This can cause unexpected effects (and some headache).}}}

|[img[./Files/SoundSwitchingStateBehaviour.png]]|The "Enabled" attribute is normally what you want.<br>All other attributes should be disabled unless you know what you're doing.|

*If you create a binding from incoming "Program Change" to "Load State", the program change events will not be passed through. This avoids unwanted sound switching in VST plugins.

!Without States

*You could use plain old program change events to switch sounds in your VSTs (which of course have to support that)
*You could use conditional MIDI routes
**Open a MIDI route Editor, expand the "Program" section and check "Only route when this program number is active"
*You could create bindings from any MIDI event to Enable/Disable routes and/or plugins.

!Web Links

💬 Forum [[What’s your preferred method for changing states? |https://community.cantabilesoftware.com/t/whats-your-preferred-method-for-changing-states/561]]
💬 Forum [[Best Way To Change Sounds (plugs) Per Song Section|https://community.cantabilesoftware.com/t/best-way-to-change-sounds-plugs-per-song-section/632]]
!Who's Responsible?

*You can put the responsibility of handling splits/layers (a) closer to the keyboard or (b) closer to the tone generators. Explaination:
*(a) An explicite "master keyboard" can send to multiple targets - doing transposing, filtering, etc. The targets can be kept simple.
**In the MIDI era, this allowed you to use "multi timbral" tone generators which would recieve on fixed MIDI channels
**E.g. Roland workstations use this strategy internally
*(b) The keyboard is sending on one channel, targets are daisy-chained and have capabilities of filtering, transposing, etc. 
**In the MIDI era, this allowed you to use a simple keyboard (like a DX 7) as master keyboard.
**E.g. Korg workstations use this strategy internally
*You can do both in Cantabile, while strategy (a) is better supported (explaination below, read [[##How To Do It]])
**(a) can be done by utilizing many input ports sharing the same source, routed to different plugins
**(b) can be done by using a single input port routed to a plugin, the "MIDI in passthrough port" of which must be routed to the subsequent plugin

!Pros & Cons

{{dualColorTable{
|Strategy ▶<br>▼ Use case|(a) Multiple Input Ports|(b) Single Input Port|h
|Splitting|(+) Ranges have to be set in each input port's MIDI Route Settings|(-) Ranges are buried in each target's MIDI in filter|
|Layering|(=) One input port per target|(=) One "passthrough port" per additional target|
|Transposing|(-) Each input port has to be transposed redundantly|(+) One single point to transpose all|
|Filtering|(-) Fiters have to be copied to each input port of a layer|(+) Filters exist only once.|
}}}

Rule of thumb: Normally you should go with strategy (a), unless you have lots of layers with complex filters.

!How To Do It

!!(a) Multiple Input Ports

Strategy (a) is better supported by Cantabile:

*When adding a plugin, a corresponding input port will be created automatically, using your Default Port
**So you will get layers for free.
*The key ranges of input ports are visualized in the "Indicators column"

To edit the ranges, click on the route settings display and control, ie: "Omni" (do not accidentally click the filter symbol 🝖 left of it)

|[img[Files/SplitsLayersInputPorts.png]]|

This will open up the [[MIDI Route Editor]], where you can define the key range.

|[img[Files/KeyRange.png]]|

!!(b) Single Input Port Plus Daisy Chaining

*After adding multiple plugins (e.g. "Piano", "Strings"), delete the automatically created input ports except the first one
*Right click the name of the first plugin ("Piano") and choose "Enable MIDI Passthrough Port" from the context menu
*Expand the plugin slot to make it's routes visible (by clicking ▶ on the left)
*Add a route from "MIDI In (Passthrough)" to the next plugin in the chain (e.g. "Strings - MIDI In")

|[img[Files/DaisyChaining.png]]|
!!!!!Example of a layer done with daisy chaining 

Now you've got a layer. If you want to have a split instead, click the filter symbols 🝖 of the plugins and add a "Key Range" MIDI filter.

[[MIDI Route Editor]]

!How To Create Flexible Split Zones

Sometimes when you create split zones it's just a few notes missing on the upper/lower end of a zone to make certain sequences playable.
By making usage of bindings, you can create split zones that grow and shrink automatically as you play.

This is explained in an online tutorial video:

YouTube: [[Split Zones: Adaptive, Flexible, Automatic (with Cantabile)|https://www.youtube.com/watch?v=1A79APUv_9M]]

Discussion: [[[Tutorial] Split Zones: Adaptive, Flexible, Automatic|https://community.cantabilesoftware.com/t/tutorial-split-zones-adaptive-flexible-automatic/4219]]

!Web Links

📖 Guide [[Main Window Controls - MIDI Route Slots|https://www.cantabilesoftware.com/guides/mainWindowControls#midi-route-slots]]

💬 Forum [[MIDI In Passthrough Port - anyone using it?|https://community.cantabilesoftware.com/t/midi-in-passthrough-port-anyone-using-it/3931]]
💬 Forum [[What is the best way to activate and deactivate a Keyboard split?|https://community.cantabilesoftware.com/t/what-is-the-best-way-to-activate-and-deactivate-a-keyboard-split/1239]]
Use can use states in a linear manner (as a sequence of song parts) or non-linear (like random access presets).

Linear Usage

*Create one state per song part.
*Bind a button or pedal to 'Next State (Instant)'.
*Switch sounds in the order as they appear in the song.
*Switch notes (as if you would flip a page in a song book).

Non-Linear Usage

*Create one state per sound (e.g. Pad, Solo Lead).
*Bind buttons (e.g. program changers) to 'Load State by Program (Instant)'.
*It is helpful to have the [[Ticker Bar]] with song states visible - so you'll see which sound is mapped to which button.

!Web Links

💬 Forum [[What’s your preferred method for changing states? |https://community.cantabilesoftware.com/t/whats-your-preferred-method-for-changing-states/561]]
💬 Forum [[Best Way To Change Sounds (plugs) Per Song Section|https://community.cantabilesoftware.com/t/best-way-to-change-sounds-plugs-per-song-section/632]]

|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Side Panel > States Behavior|"States"<br>at top of side panel|"View - State Behaviours"<br>(Default: [Ctrl]-[T])|n.a.|

|[img[Files/StatesPanel.png]]|''Anatomy''<br><br>The States Behaviour Panel is a sub panel of the [[States Panel]].<br>It's height can be altered.<br>It shows a list of properties of the selected slot.<br>On the upper right there's a sandwich menu containing actions that can be taken on the state behaviours list.|
|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Side Panel > States|"States"<br>at top of side panel|"View - States"<br>(Default: [Ctrl]-[T])|View > States Tab|

|[img[Files/StatesPanel.png]]|''Anatomy''<br><br>The states panel consists of an upper and a lower part, the last of which is a container for the [[State Behaviour Panel]].<br>The height of the lower part can be altered.<br>The upper part shows a list of all existing states and their program numbers.<br>On the upper right there's a sandwich menu containing actions that can be taken on the state list.|
|👀 How to Show|c
|Click on the right half of an "Action" entry in a [[Binding Bar]], the action of which is "SysEx"|

|[img[Files/SysExDataEditor.png]]|

!See Also

*Thesaurus: [[Sys-ex Data Editor|- Thesaurus -##Sys-ex Data Editor]]
*Concepts: [[Hardware Synths]]

!Web Links

📖 Guide: [[Sys-ex Expressions|https://www.cantabilesoftware.com/guides/sysexExpressions]]
📖 Guide: [[SysEx Macros|https://www.cantabilesoftware.com/guides/sysexMacros]]
!Web Links

📖 Guide: [[Sys-ex Expressions|https://www.cantabilesoftware.com/guides/sysexExpressions]]
The Ticker Bar provides a clear view of your current place in the [[Set List]] can also be used to switch [[songs|Song]] and [[states|State]].  It's Build up as a horizontally scrolling bar with upcoming songs and states displayed to the right of the currently loaded item.

|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Ticker Bar|-|"View - Ticker Bar"<br>(Default: [/])|View > Ticker Bar|

|[img[Toolbar|Files/TickerBar.png]]|

|◆ Elements|c
|◆ Element|👀 Shows...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|Song Ticker|...song names and breaks.|Left: Load the song.<br>Right: Context menu.|[PgUp]: Increase font size.<br>[PgDn]: Decrease font size.<br>"Control - Previous Song"<br>"Control - Next Song"<br>"Control - First Song"<br>"Control - Last Song"|
|State Ticker|...song states (aka "parts").|Left: Activate the state.<br>Right: Context menu.|[PgUp]: Increase font size.<br>[PgDn]: Decrease font size.<br>"Control - Previous State"<br>"Control - Next State"<br>"Control - First State"<br>"Control - Last State"|

!Customizing

Right click anywhere in the bar and choose the respective menu.

[img[Toolbar|Files/TickerBarCustomizing.png]]

!See Also

*Thesaurus: [[Ticker Bar|- Thesaurus -##Ticker Bar]]
*UI: [[Set List Grid]]
*UI: [[Set List Panel]]

!Web Links

📖 Guide: [[Ticker Bar|https://www.cantabilesoftware.com/guides/tickerBar]]
The Timeline Panel shows the content of the active media file (audio or MIDI) of the selected [[Media Player|Media Players]].

|👀 How to Show|c
|☰ Menu|🖱️ Mouse|⌨ Hot Key|⚯ Binding|h
|View > Timeline|Hold [Shift] while dragging up <br>from the edge of the main window.|"View - Timeline"<br>(Default: [Ctrl]-[E])|View > Timeline<br>(Toggle)|

|[img[Files/TimelinePanel.png]]|

|◆ Elements|c
|◆ Element|👀 Shows...|🖱️ Mouse Actions|⌨ Hotkeys / ⚯ Bindings|h
|Range Selector|...the name of the currently active range.|Left: Choose range.<br>Right: Create binding.|Hot Keys: None.<br>Bindings: See [[Media Players]]|
|Loop Mode Selector|...the current loop state - or count (of the current range).|Change state/count.|None, because the loop mode is a sub property of a range.|
|Position Indicator|...the local time position* of the selected player.|-|Bindings: See [[Media Players]]|
|Transport Buttons|...current transport state (by green and orange colours)|Click & hold Rew./FF for continuous operation.|Hotkeys: None.<br>Bindings: See [[Media Players]]|
|Menu Button|-|Provides additional commands.|-|
|Marker Axis|...named markers.|Right: Customize marker.|-|
|Time Axis|...real time range; or beats and bars when in musical mode.|Click to set position indicator.<br>Wheel: Scroll.<br>Wheel+[Ctrl]: Zoom.|"Show All"<br>"Zoom to current position", "Zoom to play range"<br>"Zoom in", "Zoom out"|
|Waveform and MIDI Display|...a visual representation of the media file.|Same as time axis.|Same as time axis.|
|Current Position Indicator (orange)|...the local play head position* of the selected player.|Click & drag (triangle) to move.|Bindings: See [[Media Players]]|
|Left/Right Markers (white)|...begin & end of the current range.|Click & drag (lower handle) to move.|"Set left marker", "Set right marker", "Clear markers"|

 *) If the player is not linked to [[Transport]] (as master or slave), it's position is independent of the global transport position.

!Weblinks

📖 Guide: [[Timeline Panel|https://www.cantabilesoftware.com/guides/timeline]]
Transport defines the play state, tempo, current playhead position and signature changes of a song.

!Different Master Transport Modes

{{dualColorTable{
|Mode|When To Choose|Tempo/Signature|Navigation|h
|Metronome|When you need a simple metronome and<br>don't have any backing tracks.|Tempo can be set directly or tapped.<br>No signature changes possible.|Not possible.|
|MIDI Clock|When you want to run a DAW parallel and<br>synced to Cantabile.|Externally.|Externally.|
|Media Player*|Use this when you have backing tracks.|Either by media file properties** or MIDI file events.<br>Not by Metronome***.|By clicking the timeline.<br>By switching ranges.|
}}}

{{notice{
 *) The play range of the selected media player will be effective. "Stop" will return to the beginning of the range (not to zero).
 **) Audio files: The tempo you set in the file properties must match the actual tempo of the audio file.
 ***) The Metronome is in slave mode now. It's tempo setting is without any effect, but the sounds can be used as click source.
}}}

!How Media Players Affect Master Transport

|Sync Mode|Behaviour|If A MIDI File Is Loaded|h
|None|Media Player has it's own, decoupled transport.|Same thing.|
|Master*|Globally Effective: Start, stop, pause, current position, active range. |Tempo & signature changes of the MIDI file are used.|
|Slave (Realtime)|Globally Effective: Start, stop, pause, current position**.|The MIDI file's own tempo is preserved.|
|Slave(Musical***)|Globally Effective: Start, stop, pause, current position**.|The MIDI file's tempo is overrided by master.|

{{notice{
 *) There can only be one master media player. Setting 'master' in a media player will steal the master state from others (last one wins).
 **) Although the player is in "slave" mode, it still affects the global transport (e.g. by clicking in the [[Timeline Panel]] or triggering start/stop bindings).
 ***) "Musical" does the same as "Realtime" on audio files. To avoid confusion, you shouldn't use it on audio files.
}}}

!Relationship between Song States, Sections, Play Ranges

{{TODO{Relationship between Song States, Sections, Play Ranges}}}

!See Also

*Thesaurus: [[Transport|- Thesaurus -##Transport]]
*Thesaurus: [[Transport Triggers|- Thesaurus -##Transport Triggers]]

!Web Links

📖 Guide [[Timeline|https://www.cantabilesoftware.com/guides/timeline]]
📖 Guide [[Media Players (Master Transport Selection)|https://www.cantabilesoftware.com/guides/mediaPlayers#master-transport-selection]]
📖 Guide [[MIDI Clock Synchronization|https://www.cantabilesoftware.com/guides/midiClock]]

📣 Blog [[Changes to Transport and Run Mode Buttons|https://blog.cantabilesoftware.com/changes-to-transport-and-run-mode-buttons-983d7ca53ff6/]]

💬 Forum [[Media player timing sync support|https://community.cantabilesoftware.com/t/media-player-timing-sync-support/67/49]]
💬 Forum [[Transport Triggers|https://community.cantabilesoftware.com/t/sneak-peak-transport-triggers/3157]]
💬 Forum [[Transport Questions and Suggestions: Different behaviours when stopped/paused/playing|https://community.cantabilesoftware.com/t/transport-questions-and-suggestions-different-behaviours-when-stopped-paused-playing/4410]]
💬 Forum [[Playback at a specific timeline position|https://community.cantabilesoftware.com/t/playback-at-a-specific-timeline-position/462]]
💬 Forum [[Bindings, MIDI Players and sync mode|https://community.cantabilesoftware.com/t/bindings-midi-players-and-sync-mode/780/6]]
💬 Forum [[Can you start song at beginning, loop middle, continue to end|https://community.cantabilesoftware.com/t/can-you-start-song-at-beginning-loop-middle-continue-to-end/3954]]
💬 Forum [[Strategy with states for live performance|https://community.cantabilesoftware.com/t/strategy-with-states-for-live-performance/3258]]
!Global Transpose vs. MIDI Route Transpose vs. Plugin MIDI Filter Transpose

There are several places which can be used to transpose played MIDI notes. Son you have the agony of choice. Here are some suggestions.

|Place|Best choice for...|h
|Global|Temporary transpose (to adapt to different singers in different bands).|
|Route's MIDI Filter|Normally not useful. The MIDI Route Setting is the better place.|
|Route's MIDI Route Settings|"Play-aid-transpose". Permanent transpose for you to make playing some songs less painful.|
|Plugin's MIDI filter|Adding an octave when creating layer sounds.|

!Synchronizing Global Transpose to External Hardware Keyboards

When you e.g. use an external stage piano along with your plugin synths and globally transpose your song, the stage piano won't be transposed. You could of course turn LocalOff and route MIDI out through Cantabile, transpose and route it back to the piano. If the good old MIDI interfaces are involved (DIN, not USB), this will add some latency.

Another alternative is to activate the transpose function directly in the piano - this can oftenly done via SysEx (refer to the specs of your hardware).
Therefore, you need to add a binding to each of your songs (it's not useful to centralize that in the Background Rack).

|[img[./Files/TransposingToHardwareSynthBinding.png]]|This binding will emit Cantabile's transpose state to your hardware.|

|[img[./Files/TransposingToHardwareSynthSysEx.png]]|64 is just a fixed offset (as specified by Yamaha)<br>1 is the "play-aid-transpose" (see above)<br>"value" is the current global transpose value coming from Cantabile|
!!!!!Example for Yamaha P-80
*User Interfaces enable interaction between you and Cantabile's [[entities|ENTITIES]] and [[services|​SERVICES]]
*A UI can be a whole window, a panel or a small widget
*Sometimes UI elements are nested
*To get started, study the [[Main Window]]
!Web Links

📖 Guide: [[Variables|https://www.cantabilesoftware.com/guides/variables]]
*Services are components running behind the scenes
*Often they have one (or more) representative [[UI]]
*Often they can be configured by [[entities|ENTITIES]]