Unify Manual

Your complete reference to PlugInGuru's creative playground!

User Tools

Site Tools


patch-variations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
patch-variations [2021/09/03 00:05]
shane created
patch-variations [2022/02/08 20:12]
shane [Basic Concept]
Line 1: Line 1:
 ====== Patch Variations ====== ====== Patch Variations ======
-This page describes an **advanced feature** which few Unify users will need. To use the techniques +This page describes an **advanced feature** which few Unify users will need, and which is still somewhat experimental at the time of writing. 
-described here, you should be comfortable with creating and editing [[midi-controller-files#about_plain-text_files|plain-text files]].+ 
 +To use the techniques 
 +described here, you should be comfortable with creating and editing [[midi-controller-files#about_plain-text_files|plain-text files]]. However, the first example includes a link to a //.guru// file you can download and try, even before you understand all the details. 
 + 
 +**Important Note:** when loading a patch from a library, Unify always expects to find the variations-list file in //that library's own Media folder//. This means, if you re-save a patch into a different library, you will need to copy the original variations-list file into that library's //Media// folder (and you may need to create the folder, if there isn't one already). **This is a limitation in Unify v1.6.x.** It may be fixed in a future update, but this is not guaranteed.
 ----- -----
  
-===== Concept of patch variations =====+===== Basic Concept =====
  
 //Patch variations// were introduced in Unify v1.6.0. Any patch can optionally include a reference to a plain-text "variations" file (kept in the library's //Media// folder), which is simply a list of "variation names", one per line. The newly-added [[param-paths#top-level_paths|top-level parameter]] //variation// can be linked to a macro knob, and simply selects which of the variation names is displayed in white to the right of the patch name. //Patch variations// were introduced in Unify v1.6.0. Any patch can optionally include a reference to a plain-text "variations" file (kept in the library's //Media// folder), which is simply a list of "variation names", one per line. The newly-added [[param-paths#top-level_paths|top-level parameter]] //variation// can be linked to a macro knob, and simply selects which of the variation names is displayed in white to the right of the patch name.
  
-===== Typical usage scenario =====+You select the variations file for a patch (if any) when saving the patch. As of Unify v1.6.0, the patch-save dialog includes a "Variations" section (which was expanded in v1.8) as shown below: 
 + 
 +{{::variations-0.png|}} 
 + 
 +To select (or change) the referenced variations file, click the //Variations// button to select the variations file you created from a pop-up menu: 
 +    * The first item allows you to //Clear// the variations file selection (if you decide you don't want to use one) 
 +    * After this, you will see a list of all //.txt// files in your library's //Media// folder, from which you can select. 
 +    * If you hold down Option/ALT when clicking the button, there will also be an //Open...// item near the top. This will pop pop up a standard file-open dialog, so you can navigate to any location to find the //.txt// file you want. //Note this will make your patch non-portable to other machines.// 
 + 
 + 
 +===== Example 1: Song sections ===== 
 +One very good use of patch variations is for patches containing one embedded-Unify INST layer for each part of a performance (e.g. Intro, Verse, Chorus), which are selectively enabled via //midiEnable// parameters linked to a macro knob. As the knob is turned, the layers are enabled one at a time, and the variation-text at the top of the GUI changes to match. 
 + 
 +{{::variations-2.png?600|}} 
 + 
 +==== Variations file ==== 
 +For this example, the variations-list file (//Intro_Verse_Chorus.txt//, found in the //Media// sub-folder of the //User Library// folder) is very simple, consisting of just three lines: 
 + 
 +<code> 
 +Intro 
 +Verse 
 +Chorus 
 +</code> 
 + 
 +==== Parameter links ==== 
 +In the example //3 Parts Song Switcher// patch, macro knob #8 has been set up with some carefully-crafted links so that as the knob is turned, the layers are enabled one at a time, and the variation-text at the top of the GUI changes accordingly. Here is what the links look like: 
 + 
 +{{::variations-3.png?300|}} {{::variations-4.png?300|}} {{::variations-5.png?300|}} {{::variations-6.png?300|}} 
 + 
 +The stairstep response-curves were not made by hand, but were generated mathematically. The download link below in the next section includes these, in the form of macro-link curve presets. 
 + 
 +==== Example downloads ==== 
 + 
 +Clicking the following link downloads a zipped [[guru-files|.guru file]] which installs a single new patch called //3 Parts Song Switcher// into your //User Library//, all set up in this way, including variations. 
 + 
 +{{ :unify_step_curves.zip |}} 
 + 
 +This //.guru// file also installs the special "stairstep" curve presets into the correct folder, so they're ready to use in your own patches. 
 + 
 +These special curves were generated using a [[https://www.python.org/|Python program]], which you can also download here: 
 + 
 +{{ ::generate-step-curves.zip |}}
  
-Patch variations are most commonly used in combination with one or more sample-maps in [[guru-sampler|Guru Sampler]], where the parameter //osc1SampleSelect// is linked to the same macro-knob as //variation//, and the names in the variations file correspond one-to-one with the available choices on the sample-select menu in //Guru Sampler//.+Both of these downloads are //.zip// files; you will have to unzip them after downloading. 
 +===== Example 2: Sample maps ===== 
 +Patch variations can also be used in combination with one or more sample-maps in [[guru-sampler|Guru Sampler]], where the parameter //osc1SampleSelect// is linked to the same macro-knob as //variation//, and the names in the variations file correspond one-to-one with the available choices on the sample-select menu in //Guru Sampler//.
 Provided the lines in the variations file correspond one-to-one with the //Guru Sampler// sample-select menu choices, and the //exact same response curves// are used in both parameter links, the variation-name displayed in large white text at the top of the Unify GUI will always indicate which sample is selected in //Guru Sampler//, so it's not necessary to have the sampler GUI open to see it. This technique was first used in the Unify library //PlugInGuru Chill GTR Phrases//. Provided the lines in the variations file correspond one-to-one with the //Guru Sampler// sample-select menu choices, and the //exact same response curves// are used in both parameter links, the variation-name displayed in large white text at the top of the Unify GUI will always indicate which sample is selected in //Guru Sampler//, so it's not necessary to have the sampler GUI open to see it. This technique was first used in the Unify library //PlugInGuru Chill GTR Phrases//.
  
Line 88: Line 135:
 //Guru Sampler// supports optional //Sample-names list files// sibling to //.gsd// or //.sfz// sample-map files (with the same file name, but extension //.txt//). These sample-names lists must correspond one-to-one with the available samples in the sample-map, plus an extra initial "all samples" entry. //Guru Sampler// supports optional //Sample-names list files// sibling to //.gsd// or //.sfz// sample-map files (with the same file name, but extension //.txt//). These sample-names lists must correspond one-to-one with the available samples in the sample-map, plus an extra initial "all samples" entry.
  
-Here is an example from the //PlugInGuru Chill GTR Phrases// library:+Here is an example from the //PlugInGuru Chill GTR Phrases// library, a file called //120 Moody Chill GTR Phrases.txt// (there are several, and their contents are identical) in the library's //Samples// folder.
  
 <code> <code>
Line 154: Line 201:
 </code> </code>
  
-Observe how these sample-names correspond one-to-one, to the names in the variations file. The exact text is different, chosen by the library author (in this case, John Lehmkuhlto work well in the large variation-name display in the former case, vs. the small sample-select menu in the latter.+Observe how these sample-names correspond one-to-one, to the names in the variations file, //except there is no default "all samples" line at the start//. This is because this is a list of //sample names//, not //mapping options//. 
 + 
 +The exact text in the two files need not be the same; library author John Lehmkuhl has chosen the text to work well in the large variation-name display in the former case, vs. the small sample-select menu in the latter.
  
 ==== Parameter links ==== ==== Parameter links ====
Line 162: Line 211:
 {{::variations-1.png|}} {{::variations-1.png|}}
  
 +What's not immediately obvious in this screenshot is that the leftmost end of the response curve //does not go all the way down to zero//, because that would select the default "all samples" map, which is not used in this case. Instead, the leftmost point has been carefully positioned to select the //second// choice, which in this case is the single sample "Guitar Phrase #01 - Dm". Then the curve is copy/pasted to the second link to //variation//.
 +
 +===== Important reminders =====
  
-**Important:** 
   * Always include an initial entry in the variations file, corresponding to the default "all samples" choice.   * Always include an initial entry in the variations file, corresponding to the default "all samples" choice.
 +  * The sample-name list files used with //Guru Sampler// do //not// include the "all samples" item.
   * Parameter response curves should normally be linear; there is little practical value in using curved shapes.   * Parameter response curves should normally be linear; there is little practical value in using curved shapes.
   * If you don't want to ever select the "all samples" choice, make sure the lowest value of your response curve does not go all the way down to zero.   * If you don't want to ever select the "all samples" choice, make sure the lowest value of your response curve does not go all the way down to zero.
  
patch-variations.txt · Last modified: 2022/02/08 20:12 by shane