Page 1 of 2

Notion 6 Custom Rules Documentation

Posted: Sun Mar 24, 2019 7:31 pm
by zaharischtonov
Is there a detailed user guide or documentation on how to use the custom rules in Notion 6?

The general information available on PreSonus' website (https://support.presonus.com/hc/en-us/a ... /210049153) is not enough. It only gives a description and short examples. A full explanation of the features and how to properly program rules is needed.

Any help in this area would be highly appreciated!

Cheers!

Re: Notion 6 Custom Rules Documentation

Posted: Sun Mar 31, 2019 7:57 pm
by shanecoombs
I don't think there is anything more extensive, but I am sure if you have specific questions that some of us would be able to help.

Re: Notion 6 Custom Rules Documentation

Posted: Fri Oct 28, 2022 8:56 pm
by johnwaylett
It seems very strange that Presonus is not willing to provide ITS CUSTOMERS with more information on prules than they have. The existing documentation in the Notion 6 User Guide is useless wrt creating prules. What we need to know is how the prule file that is output from their custom rule generator is executed during processing. The computer clearly does not step through each line in the prules file .. of it dis they would never work. Understanding the flow and sequencing is critical to writing complex prules. Where can we find a description of this process??

Re: Notion 6 Custom Rules Documentation

Posted: Sat Oct 29, 2022 6:44 pm
by acequantum
Hi,

Sorry, this post is long

If you go through the examples in the repository, I think it can be helpful to you:

https://github.com/notionmusic/presets

I think one thing to get past is editing a prules file. That's the old way and the options might be a little different. You won't be editing that directly as the newer version of Notion (I think since maybe 6.5 or 6.6) has a graphical interface (GUI) for that. However, if you create a set of rules with the GUI that you want to use on another library or set of instruments, you can export your ruleset as a .prules file and load that into another defintition to get you started so you don't have to do everything from scratch. There's really no need to save or edit the raw file except for use in other templates or to share.

There are like 4 basic steps:

Step 1. The Directory Structure. If you have Windows, create a folder in your windows Documents library labeled Notion
* Inside that directory create a folder labeled Presets
* Inside the Presets folder will be folders for each of your VSTi libraries. For example, I might have a guitar VSTi called "Super Guitar". I'll create a folder here labeled Super Guitar
* And in the VSTi folder create a folder labeled Instruments so you could have multiple instruments defined for a single library. Also in this folder you'd create a Preset.xml file.

The Preset.xml file defines the name and identity of the instrument and any custom user technique names that may not exist natively in notion - and ties this to the score that you create.

Step 2. Define your Preset.xml file. You need the preset tag definition, the identifier tag, user-techniques tag, and the technique tag that includes a couting number for each custom technique you add. If you don't have any user techniques to add, you still need to create the file with the other tags but just don't include any <technique number> </technique> tags.

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>

<preset>
   <identifier>MyUniqueID_12345</identifier>
   <name lang="en-US">Super Guitar</name>
   
   <user-techniques>
        <technique number="1">Rasgueado</technique>
        <technique number="2">Alzapua</technique>

   </user-techniques>
   
</preset>


Step 3. Create a template. This means create a score, add your VSTi and any effects etc. Set up your staves, any general starting tempo, time sig, key sig, any layout options. You don't have to populate the score with notes, though recommended for testing, but just create a complete setup for your particular VSTi. A single template should be for a single instrument. (Note: once all of your instrument definitions are complete, you can create a template that has all of these instruments in a score. Don't confuse this with a single preset definition). You'll do one instrument for each template especially if they will have different rules to follow. You save this Notion file in the Instruments folder you created first. If there are multiple instruments for the VSTi like if it was Garritan Personal Orchestra, you might want to have a Number in front of each file name for a particular instrument template, so you can keep it organized in the folder.

Step 4. Add rules. Once you add the rules, save your template again. Upon opening the template, the rules will exist within it. This is the crux of your question really, and of course the most complex.

The top portion of the ruleset define the velocity and hairpin ((de)crescendo) values for the different dynamics. By default, notes without dynamic markings playback at 90 velocity and 90 expression.

Though you may have many rules in a single ruleset, If it's a single instrument template, you don't need to create multiple rulesets. The conditional logic you program should be able to handle various cases of articulations and techniques. Add the ruleset to the beginning measure of your template. Once you are happy with your ruleset, you might want to apply the same rules to other instruments.

This idea might be where exporting a created ruleset to a .prules file comes into play. If you've defined a great ruleset and want to use it in another template but with a few alterations, it would save you time to import that ruleset into the new template and just tweak it in the GUI.

The rules function in a hierarchy: top to bottom. The conditions dictate the actions. All of the individual rules inside a ruleset are read unless the Enabled check box is not checked. If you have an action with no condition, it is executed. Conditions are tested at the time a note is triggered. "Before note" and "After note" condition modifiers are triggered on the note they are on and look ahead or behind to see if the note value is the same as the current note before returning a boolean (True or False) repsonse.

Beyond the instructions in the manual in section 9.13 I can say these couple of pointers:

* anything in the rules involving a MIDI channel change is for a single instance of an event. When the note occurs and there's an articulation and you change the MIDI channel, it happens at that moment and goes back to whatever MIDI channel the track is set to. To permanently or for an extended period change the MIDI channel of a track, use the Change Instrument function - not a rule.

* once a rule is added to the score and placed on a staff, it is in effect from that point on until the end of the score.

* flags do not carry over like a variable in a scripting language to other events. At any given note, the ruleset is checked at that time. Only the actions dictated by the conditions AT THAT MOMENT will be put in effect. For example, if you are trying to measure volume or dynamics on a whole note, if you have a hairpin and are waiting for it to get louder before you do something else, your conditions will only respond to the single instance when the whole note was initially played. You won't get a condition change even if the volume swells up. This I think is one of the harder concepts to understand. The rules always function when a note is triggered - not in the space between notes/events

* techniques carry over but again rules react to notes played. Articulation conditions happen at the time of the note being played that the articulation is set to.

* you can hide the rule placed on the staff in your template so that when it loads, you don't see the rule text on the staff. Right Click on the rule text on the staff, then click Attachments > Hide Attachments

On the Main Menu under view, you check or uncheck Show Hidden Items to see what was hidden or to keep them hidden. Once they are visible using Show Hidden Items, you can right click and choose Attachments > Unhide to make the rule visible on the staff.

* and a biggie (I thought when i discovered it) You cannot use rules on the existing instruments that come with Notion. The instruments will not respond to your custom rules - they have preprogrammed rules that they respond to.

All in all if there is something in particular you are trying to do, you can ask. But as far as the general steps, they are as above. One thing I also ran into is the words that show up in the ruleset for techniques or articulations, don't 100% match the words on the pallet or in the manual. I found that to be a pain. And only by testing the symbol and choosing the words from the drop down until I got a match in the behavior I wanted for a particular technique or articulation, did I know what actually to choose from the drop down in the rules.

For example, if you choose Accent with Tenuto from the pallet on the score, you will not find those words in the Rule Set for an articulation condition. You'll have to know or guess. Maybe it's a Legato Accent? I'm not sure why the naming isn't the same between the two but it makes things difficult and sometimes you can't understand why a rule isn't working when simply you chose the wrong option.

Anyway, once you get down the flow of the 4 basic steps above, it's really just working out the logic and knowing and understanding the VSTi you're trying to design rules for. Again if you have a particular question, feel free to ask.

Re: Notion 6 Custom Rules Documentation

Posted: Thu Nov 24, 2022 9:10 pm
by johnwaylett
Hello and sorry for the late reply to your response. I really appreciate your help - very informative. II have written custom rules for my BBCSO and Orchestral Tools libraries along with xml files. My prules are working fine but I have several questions about why and how they are working (lol). And like you, I find the inconsistencies in documentation on "techniques" and "articulation" names to be a HUGE pain.

The Notion User documentation says that Notion goes through the rules in a prule file one at a time - one after the other - and takes action on the conditions and logic. I set flags when my user techniques are detected so that I can do more complex things later if I wish. I reset the main flag and all user technique flags except the one that is detected and send it's keyswitch number to my VSTi. This works great! But if Notion "really" goes through the prules one at a time - one after the other - executing based on conditions and logic, then my prules SHOULD NOT WORK. This means I do not really understand Notion's logical processing of prules. I'll explain why at the end of my prules file (this is my BBCSO strings prules file.

<rule-set version="1">
<rules>
<dynamic-map id="VELO">
<dynamic dynamic="pppp" value="5"/>
<dynamic dynamic="ppp" value="12"/>
<dynamic dynamic="pp" value="30"/>
<dynamic dynamic="p" value="45"/>
<dynamic dynamic="mp" value="60"/>
<dynamic dynamic="mf" value="70"/>
<dynamic dynamic="f" value="85"/>
<dynamic dynamic="ff" value="100"/>
<dynamic dynamic="fff" value="115"/>
<dynamic dynamic="ffff" value="127"/>
</dynamic-map>
<dynamic-map id="HAIR">
<dynamic dynamic="pppp" value="5"/>
<dynamic dynamic="ppp" value="12"/>
<dynamic dynamic="pp" value="30"/>
<dynamic dynamic="p" value="45"/>
<dynamic dynamic="mp" value="60"/>
<dynamic dynamic="mf" value="70"/>
<dynamic dynamic="f" value="85"/>
<dynamic dynamic="ff" value="100"/>
<dynamic dynamic="fff" value="115"/>
<dynamic dynamic="ffff" value="127"/>
</dynamic-map>
<setup>
<velocity-map id="VELO"/>
<hairpin-map id="HAIR"/>
<hairpin-cc value="11"/>
</setup>


<!-- Set Main Sound Flag Rule -->

<rule remark="Main Sound Flag" enabled="true">
<if not-condition="under-slur"/>
<set-flag name="main"/>
</rule>

<!-- Articulation Note Settings -->

<rule remark="Dash" enabled="true">
<if articulation="dash"/>
<duration-change amount="0.8"/>
</rule>
<rule remark="Staccato" enabled="true">
<if articulation="staccato"/>
<dynamic-change bump="0"/>
<duration-change amount="0.30"/>
</rule>
<rule remark="Staccatissimo" enabled="true">
<if articulation="staccatissimo"/>
<dynamic-change bump="0"/>
<duration-change amount="0.15"/>
</rule>
<rule remark="Mezzo-Staccato" enabled="true">
<if articulation="mezzo-staccato"/>
<duration-change amount="0.6"/>
</rule>
<rule remark="Accent" enabled="true">
<if articulation="accent"/>
<dynamic-change bump="1"/>
<duration-change amount="0.6"/>
</rule>
<rule remark="Legato Accent" enabled="true">
<if articulation="legato-accent"/>
<dynamic-change bump="1"/>
<duration-change amount="1.0"/>
</rule>
<rule remark="Staccato Accent" enabled="true">
<if articulation="staccato-accent"/>
<dynamic-change bump="1"/>
<duration-change amount="0.30"/>
</rule>
<rule remark="Staccatissimo Accent" enabled="true">
<if articulation="staccatissimo-accent"/>
<dynamic-change bump="1"/>
<duration-change amount="0.15"/>
</rule>
<rule remark="Strong Accent" enabled="true">
<if articulation="strong-accent"/>
<dynamic-change bump ="2"/>
<duration-change amount="0.6"/>
</rule>
<rule remark="Legato Strong Accent" enabled="true">
<if articulation="legato-strong-accent"/>
<dynamic-change bump="2"/>
<duration-change amount="1.0"/>
</rule>
<rule remark="Staccato Strong Accent" enabled="true">
<if articulation="staccato-strong-accent"/>
<dynamic-change bump ="2"/>
<duration-change amount="0.30"/>
</rule>
<rule remark="Staccatissimo Strong Accent" enabled="true">
<if articulation="staccatissimo-strong-accent"/>
<dynamic-change bump="2"/>
<duration-change amount="0.15"/>
</rule>
<rule remark="Soft Start" enabled="true">
<if articulation="soft-start" />
<dynamic-change bump="-1"/>
</rule>


<!-- BBCSO Technique Flags -->

<rule remark="Condition Under Slur" enabled="true">
<if condition="under-slur"/>
<if no-articulation="true"/>
<set-flag name="lega"/>
</rule>
<rule remark="Legato" enabled="true">
<if user-technique="1"/>
<set-flag name="lega"/>
</rule>
<rule remark="Long" enabled="true">
<if user-technique="2"/>
<set-flag name="long"/>
</rule>
<rule remark="Long Con Sord" enabled="true">
<if user-technique="3"/>
<set-flag name="cons"/>
</rule>
<rule remark="Flaut" enabled="true">
<if user-technique="4"/>
<set-flag name="flau"/>
</rule>
<rule remark="Spiccato" enabled="true">
<if user-technique="5"/>
<set-flag name="spic"/>
</rule>
<rule remark="Staccato" enabled="true">
<if user-technique="6"/>
<set-flag name="sttc"/>
</rule>
<rule remark="Pizz" enabled="true">
<if user-technique="7"/>
<set-flag name="pizz"/>
</rule>
<rule remark="ColLegno" enabled="true">
<if user-technique="8"/>
<set-flag name="legn"/>
</rule>
<rule remark="Trem" enabled="true">
<if user-technique="9"/>
<set-flag name="trem"/>
</rule>
<rule remark="TrillMj2nd" enabled="true">
<if user-technique="10"/>
<set-flag name="tmj2"/>
</rule>
<rule remark="TrillMn2nd" enabled="true">
<if user-technique="11"/>
<set-flag name="tmi2"/>
</rule>
<rule remark="SulTasto" enabled="true">
<if user-technique="12"/>
<set-flag name="tast"/>
</rule>
<rule remark="Harm-L" enabled="true">
<if user-technique="13"/>
<set-flag name="harl"/>
</rule>
<rule remark="Harm-S" enabled="true">
<if user-technique="14"/>
<set-flag name="hars"/>
</rule>
<rule remark="PizzBartok" enabled="true">
<if user-technique="15"/>
<set-flag name="pizb"/>
</rule>
<rule remark="Marcato-L" enabled="true">
<if user-technique="16"/>
<set-flag name="marc"/>
</rule>
<rule remark="TremSulPont" enabled="true">
<if user-technique="17"/>
<set-flag name="trsp"/>
</rule>
<rule remark="TremConSord" enabled="true">
<if user-technique="18"/>
<set-flag name="trcs"/>
</rule>
<rule remark="SulPont" enabled="true">
<if user-technique="19"/>
<set-flag name="sulp"/>
</rule>
<rule remark="SpiccatoCS" enabled="true">
<if user-technique="20"/>
<set-flag name="spcs"/>
</rule>

<rule remark="Normale=Main" enabled="true">
<if user-technique="26"/>
<set-flag name="main"/>
</rule>


<!-- BBCSO Technique Key Switches -->

<rule remark="Legato Set By SLUR or User" enabled="true">
<if flag="lega"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="0" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Long" enabled="true">
<if flag="long"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Long Con Sord" enabled="true">
<if flag="cons"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="2" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Flaut" enabled="true">
<if flag="flau"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="3" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Spiccato" enabled="true">
<if flag="spic"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="4" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Staccato" enabled="true">
<if flag="sttc"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="5" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Pizz" enabled="true">
<if flag="pizz"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="6" velocity="1" type="note-on-prefix"/>

</rule>
<rule remark="ColLegno" enabled="true">
<if flag="legn"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="7" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Trem" enabled="true">
<if flag="trem"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="8" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="TrillMj2nd" enabled="true">
<if flag="tmj2"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="9" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="TrillMn2nd" enabled="true">
<if flag="tmi2"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="10" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="SulTasto" enabled="true">
<if flag="tast"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="11" velocity="1" type="note-on-prefix"/>

</rule>
<rule remark="Harm-L" enabled="true">
<if flag="harl"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="12" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Harm-S" enabled="true">
<if flag="hars"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="13" velocity="1" type="note-on-prefix"/>

</rule>
<rule remark="PizzBartok" enabled="true">
<if flag="pizb"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="14" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Marcato-L" enabled="true">
<if flag="marc"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="15" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="TremSulPont" enabled="true">
<if flag="trsp"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="16" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="TremConSord" enabled="true">
<if flag="trcs"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="17" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="SulPont" enabled="true">
<if flag="sulp"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="18" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="SpiccConSord" enabled="true">
<if flag="spcs"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="lega"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<key-switch midi-pitch="19" velocity="1" type="note-on-prefix"/>
</rule>


<!-- CC controller rules for BBCSO Vibrato, Reverb, Etc. -->

<rule remark="CC64 ON (for activate sustain pedal)" enabled="true">
<if condition="with-sustain-pedal"/>
<cc controller="64" value="127" type="note-on-prefix"/>
</rule>
<rule remark="CC64 OFF (for de-activate sustain pedal)" enabled="true">
<if not-condition="with-sustain-pedal"/>
<cc controller="64" value="0" type="note-off-suffix"/>
</rule>
<rule remark="Vibrato On" enabled="true">
<if technique="vibe"/>
<cc controller="21" value="127" type="note-on-prefix"/>
</rule>
<rule remark="Vibrato Off" enabled="true">
<if technique="nvib"/>
<cc controller="21" value="1" type="note-on-prefix"/>
</rule>


<!-- Reset to main sound rule. This MUST be the last rule! -->

<rule remark="Main Keyswitch" enabled="true">
<if flag="main"/>
<key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
</rule>
</rules>
</rule-set>


I will just use a few of the flags and user techniques (see below - cons sord, flaut and spiccato) to explain my dilemma. Say in my score I have user technique 3 (Con Sord) set on a note. Notion is going through the prules file and detects this. Notion sets the flag "cons" in Flags below. Notion proceeds to technique 4 (Flaut) and sets no flag as I've not used this user technique. Notion then proceeds to technique 5 (Spiccato) and sets no flag as I've not used this user technique either. Notion proceeds sequentially through the rest of the flag prules (no flags are set) and then on to the User Techniques. Notion sees that the flag "cons" is set for Con Sord. So Notion unsets all flags (except "cons") including the main flag and sends keyswitch midi pitch 2 to my Vsti. Con sord plays. All is good to this point.

Now say four measures beyond user technique 3 (Con Sord) in my score I have placed user technique 5 (Spiccato). When Notion detects this it sets flag "spic". It then proceeds sequentially through the prules to User Techniques and sees that flag "cons" is still set (remember that I did not reset this flag after technique 3 con sord was detected. The con sord user technique is still playing. Notion goes through the Con Sord rule (because the "cons" flag is still set) and resets all the flags INCLUDING THE "SPIC" FLAG that was just set. It then proceeds to the Flaut user technique 4 and takes no action because its flag, "flaut", was not set. It then proceeds to Spiccato user technique 5 which I wanted enabled four measures after con sord. """This is the point of confusion""". Based on prules documentation, my BBCO string prules should not send the spiccato keyswitch 4 because the "spic" flag would have been reset by the Con Sord user technique. But the spiccato keyswitch 4 is sent and my prules work fine and I don't know why. I cant' figure out. It seems completely illogical based on the Notion prule documentation.
It may seem trivial but because of this misunderstanding, I am not able to apply any more complex "flag - based" logical operations in my prules file.

Also need some help with what the significance is of the Keyswitch options of "only note-on" and "automatically send note-off".

Any help you can provide with my understanding this would be really greatly appreciated.


Flags..................

<rule remark="Con Sord" enabled="true">
<if user-technique="3"/>
<set-flag name="cons"/>
</rule>
<rule remark="Flaut" enabled="true">
<if user-technique="4"/>
<set-flag name="flau"/>
</rule>
<rule remark="Spiccato" enabled="true">
<if user-technique="5"/>
<set-flag name="spic"/>
</rule>


User Techniques ...................

<rule remark="Long Con Sord" enabled="true">
<if flag="cons"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="2" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Flaut" enabled="true">
<if flag="flau"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="3" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Spiccato" enabled="true">
<if flag="spic"/>
<unset-flag name="main"/>
<unset-flag name="lega"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmi2"/>
<unset-flag name="tmj2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="4" velocity="1" type="note-on-prefix"/>
</rule>

Re: Notion 6 Custom Rules Documentation

Posted: Fri Nov 25, 2022 6:26 pm
by acequantum
Hmmmm,

I agree, according to the logic, it shouldn't work. Because of the check for spic after cons, spic should be unset and therefore not send the keyswitch to change to spiccato. But wait, is it the same instrument on the same staff? If you are setting spicatto on a different staff it's going to behave independently.

Otherwise, I'll have to think about this a bit. It could be behavior differences of the user techniques vs the built-in techniques.

Built in techniques need to be turned off with either the normale technique on the staff or by using the action: Unset technique.

There is no "Unset technique" action for user defined techniques. A user technique may automatically "Unset" when a new user technique is encountered. Therefore cons becomes deactivated and spic becomes activated when you add Spicatto technique to the staff. I'm guessing at this. I'd have to test this out.


The second part of your question:

Also need some help with what the significance is of the Keyswitch options of "only note-on" and "automatically send note-off".


That setting is in case key switches aren't "held" by the virtual instrument. Some VSTis need a key-on key-off combination sent to them for keyswitches. If you notice unexpected behavior when sending keyswitches, try changing this setting.

Re: Notion 6 Custom Rules Documentation

Posted: Fri Nov 25, 2022 7:46 pm
by johnwaylett
Many thanks for the quick reply .. all my user techniques (Con Sord, Flaut and Spiccato) are on the same stave with just the one set of prules (as shown above). I will keep plodding away .. if you find anything that might cause this to work when it appears as though it should not, please let me know. Regarding the significance is of the Keyswitch options of "only note-on" and "automatically send note-off", I've had no problems with BBCSO so I will stick with the "only note-on" settting.
Thanks again for all your help..

Re: Notion 6 Custom Rules Documentation

Posted: Sat Nov 26, 2022 2:22 am
by acequantum
OK I think I got a handle on it now. Mostly :D

Keyswitches and user techniques

The bottom line - User Techniques are deactivated when they encounter another user technique. They are not deactivated automatically when they encounter a built in technique. Keyswitches remain active until they are ACTIVELY changed in either a user defined technique or a built in technique.

...the significance is of the Keyswitch options of "only note-on" and "automatically send note-off"


Plays a big role here. If set to only note-on, multiple keyswitches can remain on at once. Whether or not the VSTi interprets that is another story. Ample Guitar, for example would allow Sustain and Palm Mute keyswitches to be on at the same time and the palm mute would kick in at lower velocities otherwise it would be sustain. If you set this to "automatically send note-off" then when another keyswitch is engaged, the first keyswitch shuts off.

If your user defined techniques rules are only setting keyswitches, you can simplify the logic by eliminating tests for flags. Also, I tested dynamic changes with user defined techniques. I didn't need a flag to control it.

I set one user technique to change the dynamics to -4 and also set the pitch to a constant middle C. I put the marking on the score and then followed it with another technique that had no dynamic change at all. The dynamics and fixed pitch affected the 1st technique on the score. When the 2nd user technique was reached in the score, the first technique's dynamic change and pitch did not carry over.

I would support my original suspicion that since User techniques do not have an Unset User Technique action, then they are deactivated when they encounter another User Technique.

So, in your situation, as soon as the user technique Spicatto is reached in the score, Con Sord is deactivated and Spicatto is activated therefore the flag 'cons' does not get set and cannot unset 'spic.' Spic remains set and the keyswitch is sent to your VSTi. So, the logic all works out!

If this was all done using built in Notion Techniques, it would be a different story.

Re: Notion 6 Custom Rules Documentation

Posted: Sat Nov 26, 2022 11:11 am
by johnwaylett
Great info .. thank you. How do you find all this out? I can't find any of this kind of detailed information about prules processed on Notion sites.

Based on your clarification for me I understand the following:

1. User Techniques are deactivated when they encounter another user technique buy they are not deactivated automatically when they encounter a built in technique. So, if I use built in techniques and user techniques (user techniques for the odd VST techniques that not covered by Notion), I still must use flags on all techniques in order to turn off user techniques because a user technique may or may not be followed by a built in technique.

2. The Keyswitch options of "only note-on" and "automatically send note-off" plays a big role here. If set to only note-on, multiple keyswitches can remain on at once. This is important to VST's that allow combining of keywsitches. However, for my BBCSO, there I can only access one keyswitch at a time so this is not an issue. I just use "only note-on".

3. If your user defined techniques rules are only setting keyswitches, you can simplify the logic by eliminating tests for flags. True, but don't I still need to set a flag for the active user or internal technique to keep resetting the main flag in order for the active technique (user or internal) to keep playing the following notes (up until a new user or internal technique is detected)?

4. Also, I tested dynamic changes with user defined techniques. I didn't need a flag to control it. Thanks .. good to know that dynamics work on user techniques as they do on internal techniques.

5. I would support my original suspicion that since User techniques do not have an Unset User Technique action, then they are deactivated when they encounter another User Technique. I agree with you but (see item 1 above) the main flag will constantly be set for subsequent notes and unless turned off before end of prules will deactivate the user technique prior to encountering any other user technique.

So, in your situation, as soon as the user technique Spicatto is reached in the score, Con Sord is deactivated (only as long as main flag is turned off by detection of the Con Sord flag cons) and Spicatto is activated therefore the flag 'cons' does not get set and cannot unset 'spic.' Spic remains set and the keyswitch is sent to your VSTi. So, the logic all works out!

6. If this was all done using built in Notion Techniques, it would be a different story.
I need some help on this please ...
You say internal techniques are not shut off automatically when a new internal technique is detected. I assume I don't need to be concerned about internal techniques. I believe the sound library that comes with Notion is a VSL library that allows multiple techniques to be combined to create new sounds. But what if I use the internal technique names from the palette (i.e. pizz., sol pont, col legno) to trigger my BBCSO VST techniques? Will there be complications? I've tried this and found inconsistencies.

<rule remark="Pizzicato" enabled="true">
<if technique="pizz"/> ----- here I use the internal technique name from palette
<unset-flag name="main"/>
<set-flag name="pizz"/>
<key-switch midi-pitch="6" velocity="1" type="note-on-prefix"/>
</rule>

Thanks again for your help on prules. It is such a disappointment that Notion has provided so little detailed information on how to effectively use prules for external libraries. Of course I can understand their reason for this from a marketing perspective ... they want to sell us their own sound libraries and they may also have contractual commitments with the companies whose libraries they do support (East West, Garritan, VSL, etc).

Re: Notion 6 Custom Rules Documentation

Posted: Sat Nov 26, 2022 6:01 pm
by acequantum
You're soooo right. There's so much nuance to rules there needs to be a dedicated manual to all this stuff. For example, I have no idea what a Component ID is or how to use it in the rules. I'm able to figure out most stuff based on experience.

My jobs in the past have been in programming, analytics and system conversion type stuff. I've also spent some time messing around with MIDI. Script testing and behaviors are part of my skill set - also reading through what documentation was available and reading the forum posts, I think I've gained a small understanding. One test I normally do for rules is to open a MIDI monitor, set the staves on a score to MIDI out, and test the rules to see what the MIDI results are.

I'm sorry these posts are so long. Here's some more info based on your numbered list:

1. Yes flags are very useful for controlling your logic and rules. My point was, if you have a user defined technique (UT) set to take an action like change pitch, duration, dynamics, CC numbers etc. it will be unset/deactivated as soon as it hits another UT on the score. And if there is a keyswitch, one UT will cause the other to end and change the keyswitch without a flag being necessary.

In the case of using flags, if the UT Long Con Sord is placed on measure 4 and the flag 'cons' gets set, 5 measures later when the score hits UT Spicatto, Long Con Sord, turns off therefore it's flag 'cons' does not get set. Because UT Spicatto is now active, 'spic' gets set. Remember, the rules are a per note test. If the current note is riding under one UT, the tests will respond to that. As soon as another UT is reached, the old UT "turns off" and the tests respond to the new UT.

Built in techniques (BT) are different. They STAY ON until you turn them off either by placing the built in Normale on a score or using the action Unset Technique. And they DO NOT deactivate a UT; but a BT can play at the same time as a UT.

2. yup

3. See number 1. Once a technique is active its on until UT meets UT or BT is turned off. So you might want to add a rule and UT used to turn off currently playing UTs. But perhaps that's the function of your 'main' flag that checks for notes under a slur.

4. Yup. The ps, fs, mps etc. are all defined at the top of your ruleset and set to MIDI CC and velocity values. When you send these types of rule actions, the appropriate MIDI commands are sent to your VSTi.

5. I see what you are doing here with the 'main' flag, and it does seem to work at least initially before any UTs are placed. However, it doesn't turn the UT off, but rather defaults the keyswitch to something else. In Notion's brain, the UT is still active but your flags are controlling what happens. In fact, I'm thinking 'main' never gets reached for the rest of the score as soon as you place one UT on the score. The UT flags always unset 'main' and the UT flags will always be set as soon as 1 UT is on the score.

6. See number 3 and number 1 above. What happens with a BT that follows a UT, the UT will continue to do its thing and the BT, while active, per note will do its thing. They will both do their thing at the same time. Your flags control for the most part what you want to happen, but because both the BT and UT will be on because neither turn off the other technique in Notion's brain, the flags for each should be on as well. Your flags are active based on what technique is active. Likely the playback will be whatever technique is executed first in your rules. In that case, if the other flag is turned off by the earlier rule, then only the on flag will play.

Of course you can use the BTs from the palette. You can use these exclusively in your ruleset if you so desire. The only time you really need a user technique is if it doesn't exist in the standard list of techniques or you want different names.

As far as the default sounds that come with Notion, you cant build rules for them (that work anyway). They are all preprogrammed.

If one does decide to use UTs in their ruleset, probably the first rule then that should be programmed is a "default" type technique that resets everything for the instrument to a startup state. Call it norm. or something. That way you can effectively reset any UT to the startup state.

Re: Notion 6 Custom Rules Documentation

Posted: Sun Nov 27, 2022 7:48 pm
by johnwaylett
Thanks .. I have rewritten my BBCSO string prules and used a default start technique.
I found I still had to create flags for each user technique in order to trigger the condition

<rule remark="Condition Under Slur" enabled="true">
<if condition="under-slur"/>
<if no-articulation="true"/>
<set-flag name="lega"/>
</rule>

<rule remark="Legato" enabled="true">
<if flag="lega"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmj2"/>
<unset-flag name="tmi2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="0" velocity="1" type="note-on-prefix"/>
</rule>

However, all the other user techniques did not require the resetting of flags. They only required the resetting of the main flag used for the default technique (long).

I have not yet tried to use the notion internal techniques to trigger my BBCSO VST string sounds .. that will be next. You mentioned that the notion internal techniques do not reset each other so I will need to unset each internal technique when a new one is used.

Complete Prules as follows:

a<rule-set version="1">
<rules>
<dynamic-map id="VELO">
<dynamic dynamic="pppp" value="5"/>
<dynamic dynamic="ppp" value="12"/>
<dynamic dynamic="pp" value="30"/>
<dynamic dynamic="p" value="45"/>
<dynamic dynamic="mp" value="60"/>
<dynamic dynamic="mf" value="70"/>
<dynamic dynamic="f" value="85"/>
<dynamic dynamic="ff" value="100"/>
<dynamic dynamic="fff" value="115"/>
<dynamic dynamic="ffff" value="127"/>
</dynamic-map>
<dynamic-map id="HAIR">
<dynamic dynamic="pppp" value="5"/>
<dynamic dynamic="ppp" value="12"/>
<dynamic dynamic="pp" value="30"/>
<dynamic dynamic="p" value="45"/>
<dynamic dynamic="mp" value="60"/>
<dynamic dynamic="mf" value="70"/>
<dynamic dynamic="f" value="85"/>
<dynamic dynamic="ff" value="100"/>
<dynamic dynamic="fff" value="115"/>
<dynamic dynamic="ffff" value="127"/>
</dynamic-map>
<setup>
<velocity-map id="VELO"/>
<hairpin-map id="HAIR"/>
<hairpin-cc value="11"/>
</setup>


<!-- Main Flag Rule -->

<rule remark="Main Sound Flag" enabled="true">
<if not-condition="under-slur"/>
<set-flag name="main"/>
</rule>

<!-- Articulation Settings -->

<rule remark="Dash" enabled="true">
<if articulation="dash"/>
<duration-change amount="0.8"/>
</rule>
<rule remark="Staccato" enabled="true">
<if articulation="staccato"/>
<dynamic-change bump="0"/>
<duration-change amount="0.50"/>
</rule>
<rule remark="Staccatissimo" enabled="true">
<if articulation="staccatissimo"/>
<dynamic-change bump="0"/>
<duration-change amount="0.25"/>
</rule>
<rule remark="Mezzo-Staccato" enabled="true">
<if articulation="mezzo-staccato"/>
<duration-change amount="0.75"/>
</rule>
<rule remark="Accent" enabled="true">
<if articulation="accent"/>
<dynamic-change bump="1"/>
<duration-change amount="0.75"/>
</rule>
<rule remark="Legato Accent" enabled="true">
<if articulation="legato-accent"/>
<dynamic-change bump="1"/>
<duration-change amount="1.0"/>
</rule>
<rule remark="Staccato Accent" enabled="true">
<if articulation="staccato-accent"/>
<dynamic-change bump="1"/>o
<duration-change amount="0.50"/>
</rule>
<rule remark="Staccatissimo Accent" enabled="true">
<if articulation="staccatissimo-accent"/>
<dynamic-change bump="1"/>
<duration-change amount="0.25"/>
</rule>
<rule remark="Strong Accent" enabled="true">
<if articulation="strong-accent"/>
<dynamic-change bump ="2"/>
<duration-change amount="0.75"/>
</rule>
<rule remark="Legato Strong Accent" enabled="true">
<if articulation="legato-strong-accent"/>
<dynamic-change bump="2"/>
<duration-change amount="1.0"/>
</rule>
<rule remark="Staccato Strong Accent" enabled="true">
<if articulation="staccato-strong-accent"/>
<dynamic-change bump ="2"/>
<duration-change amount="0.50"/>
</rule>
<rule remark="Staccatissimo Strong Accent" enabled="true">
<if articulation="staccatissimo-strong-accent"/>
<dynamic-change bump="2"/>
<duration-change amount="0.25"/>
</rule>
<rule remark="Soft Start" enabled="true">
<if articulation="soft-start" />
<dynamic-change bump="-1"/>
</rule>

<!-- Technique Flags-->


<rule remark="Condition Under Slur" enabled="true">
<if condition="under-slur"/>
<if no-articulation="true"/>
<set-flag name="lega"/>
</rule>
<rule remark="Legato" enabled="true">
<if user-technique="1"/>
<set-flag name="lega"/>
</rule>
<rule remark="Long" enabled="true">
<if user-technique="2"/>
<set-flag name="long"/>
</rule>
<rule remark="Long Con Sord" enabled="true">
<if user-technique="3"/>
<set-flag name="cons"/>
</rule>
<rule remark="Flaut" enabled="true">
<if user-technique="4"/>
<set-flag name="flau"/>
</rule>
<rule remark="Spiccato" enabled="true">
<if user-technique="5"/>
<set-flag name="spic"/>
</rule>
<rule remark="Staccato" enabled="true">
<if user-technique="6"/>
<set-flag name="sttc"/>
</rule>
<rule remark="Pizz" enabled="true">
<if user-technique="7"/>
<set-flag name="pizz"/>
</rule>
<rule remark="ColLegno" enabled="true">
<if user-technique="8"/>
<set-flag name="legn"/>
</rule>
<rule remark="Trem" enabled="true">
<if user-technique="9"/>
<set-flag name="trem"/>
</rule>
<rule remark="TrillMj2nd" enabled="true">
<if user-technique="10"/>
<set-flag name="tmj2"/>
</rule>
<rule remark="TrillMn2nd" enabled="true">
<if user-technique="11"/>
<set-flag name="tmi2"/>
</rule>
<rule remark="SulTasto" enabled="true">
<if user-technique="12"/>
<set-flag name="tast"/>
</rule>
<rule remark="Harm-L" enabled="true">
<if user-technique="13"/>
<set-flag name="harl"/>
</rule>
<rule remark="Harm-S" enabled="true">
<if user-technique="14"/>
<set-flag name="hars"/>
</rule>
<rule remark="PizzBartok" enabled="true">
<if user-technique="15"/>
<set-flag name="pizb"/>
</rule>
<rule remark="Marcato-L" enabled="true">
<if user-technique="16"/>
<set-flag name="marc"/>
</rule>
<rule remark="TremSulPont" enabled="true">
<if user-technique="17"/>
<set-flag name="trsp"/>
</rule>
<rule remark="TremConSord" enabled="true">
<if user-technique="18"/>
<set-flag name="trcs"/>
</rule>
<rule remark="SulPont" enabled="true">
<if user-technique="19"/>
<set-flag name="sulp"/>
</rule>
<rule remark="SpiccatoCS" enabled="true">
<if user-technique="20"/>
<set-flag name="spcs"/>
</rule>

<rule remark="Normale=Main" enabled="true">
<if user-technique="21"/>
<set-flag name="main"/>
</rule>


<!-- BBCSO Techniques-->

<rule remark="Legato" enabled="true">
<if flag="lega"/>
<unset-flag name="main"/>
<unset-flag name="long"/>
<unset-flag name="cons"/>
<unset-flag name="flau"/>
<unset-flag name="spic"/>
<unset-flag name="sttc"/>
<unset-flag name="pizz"/>
<unset-flag name="legn"/>
<unset-flag name="trem"/>
<unset-flag name="tmj2"/>
<unset-flag name="tmi2"/>
<unset-flag name="tast"/>
<unset-flag name="harl"/>
<unset-flag name="hars"/>
<unset-flag name="pizb"/>
<unset-flag name="marc"/>
<unset-flag name="trsp"/>
<unset-flag name="trcs"/>
<unset-flag name="sulp"/>
<unset-flag name="spcs"/>
<key-switch midi-pitch="0" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Long" enabled="true">
<if flag="long"/>
<unset-flag name="main"/>
<key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Long Con Sord" enabled="true">
<if flag="cons"/>
<unset-flag name="main"/>
<key-switch midi-pitch="2" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Flaut" enabled="true">
<if flag="flau"/>
<unset-flag name="main"/>
<key-switch midi-pitch="3" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Spiccato" enabled="true">
<if flag="spic"/>
<unset-flag name="main"/>
<key-switch midi-pitch="4" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Staccato" enabled="true">
<if flag="sttc"/>
<unset-flag name="main"/>
<key-switch midi-pitch="5" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Pizz" enabled="true">
<if flag="pizz"/>
<unset-flag name="main"/>
<key-switch midi-pitch="6" velocity="1" type="note-on-prefix"/>

</rule>

<rule remark="ColLegno" enabled="true">
<if flag="legn"/>
<unset-flag name="main"/>
<key-switch midi-pitch="7" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Trem" enabled="true">
<if flag="trem"/>
<unset-flag name="main"/>
<key-switch midi-pitch="8" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="TrillMj2nd" enabled="true">
<if flag="tmj2"/>
<unset-flag name="main"/>
<key-switch midi-pitch="9" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="TrillMn2nd" enabled="true">
<if flag="tmi2"/>
<unset-flag name="main"/>
<key-switch midi-pitch="10" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="SulTasto" enabled="true">
<if flag="tast"/>
<unset-flag name="main"/>
<key-switch midi-pitch="11" velocity="1" type="note-on-prefix"/>
</rule>

<rule remark="Harm-L" enabled="true">
<if flag="harl"/>
<unset-flag name="main"/>
<key-switch midi-pitch="12" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Harm-S" enabled="true">
<if flag="hars"/>
<unset-flag name="main"/>
<key-switch midi-pitch="13" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="PizzBartok" enabled="true">
<if flag="pizb"/>
<unset-flag name="main"/>
<key-switch midi-pitch="14" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="Marcato-L" enabled="true">
<if flag="marc"/>
<unset-flag name="main"/>
<key-switch midi-pitch="15" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="TremSulPont" enabled="true">
<if flag="trsp"/>
<unset-flag name="main"/>
<key-switch midi-pitch="16" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="TremConSord" enabled="true">
<if flag="trcs"/>
<unset-flag name="main"/>
<key-switch midi-pitch="17" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="SulPont" enabled="true">
<if flag="sulp"/>
<unset-flag name="main"/>
<key-switch midi-pitch="18" velocity="1" type="note-on-prefix"/>
</rule>
<rule remark="SpiccConSord" enabled="true">
<if flag="spcs"/>
<unset-flag name="main"/>
<key-switch midi-pitch="19" velocity="1" type="note-on-prefix"/>
</rule>

<!-- CC controller rules for Vibrato, Reverb, Etc. -->

<rule remark="CC64 ON (for activate sustain pedal)" enabled="true">
<if condition="with-sustain-pedal"/>
<cc controller="64" value="127" type="note-on-prefix"/>
</rule>

<rule remark="CC64 OFF (for de-activate sustain pedal)" enabled="true">
<if not-condition="with-sustain-pedal"/>
<cc controller="64" value="0" type="note-off-suffix"/>
</rule>

<rule remark="Vibrato On" enabled="true">
<if technique="vibe"/>
<cc controller="21" value="127" type="note-on-prefix"/>
</rule>

<rule remark="Vibrato Off" enabled="true">
<if technique="nvib"/>
<cc controller="21" value="1" type="note-on-prefix"/>
</rule>

<!-- Main Flag Keyswitch -->

<rule remark="Main Keyswitch" enabled="true">
<if flag="main"/>
<key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
</rule>
</rules>
</rule-set>

Re: Notion 6 Custom Rules Documentation

Posted: Mon Nov 28, 2022 11:52 am
by acequantum
Hi,

It seemed you said originally your ruleset worked anyway but the dilemma was understanding why it worked - and you seem to be good with that. Does it make sense?

Just a note: If you post large blocks of code in a message, put it between two code tags (but without the quotation marks) so it's easier to read and manage. It might be helpful to go back and edit previous posts. The quotation marks are there to keep the tags from disappearing in the example 'my code goes here'

["code] my code goes here [/code"]

like so

Code: Select all
<rule-set version="1">
   <rules>
      <dynamic-map id="VELO">
         <dynamic dynamic="pppp" value="5"/>
         <dynamic dynamic="ppp" value="12"/>
         <dynamic dynamic="pp" value="30"/>
         <dynamic dynamic="p" value="45"/>
         <dynamic dynamic="mp" value="60"/>
         <dynamic dynamic="mf" value="70"/>
         <dynamic dynamic="f" value="85"/>
         <dynamic dynamic="ff" value="100"/>
         <dynamic dynamic="fff" value="115"/>
         <dynamic dynamic="ffff" value="127"/>
      </dynamic-map>
      <dynamic-map id="HAIR">
         <dynamic dynamic="pppp" value="5"/>
         <dynamic dynamic="ppp" value="12"/>
         <dynamic dynamic="pp" value="30"/>
         <dynamic dynamic="p" value="45"/>
         <dynamic dynamic="mp" value="60"/>
         <dynamic dynamic="mf" value="70"/>
         <dynamic dynamic="f" value="85"/>
         <dynamic dynamic="ff" value="100"/>
         <dynamic dynamic="fff" value="115"/>
         <dynamic dynamic="ffff" value="127"/>
      </dynamic-map>
      <setup>
         <velocity-map id="VELO"/>
         <hairpin-map id="HAIR"/>
         <hairpin-cc value="11"/>
      </setup>


<!-- Main Flag Rule -->

      <rule remark="Main Sound Flag" enabled="true">
         <if not-condition="under-slur"/>
         <set-flag name="main"/>
      </rule>

<!-- Articulation Settings -->

      <rule remark="Dash" enabled="true">
         <if articulation="dash"/>
         <duration-change amount="0.8"/>
      </rule>
      <rule remark="Staccato" enabled="true">
         <if articulation="staccato"/>
         <dynamic-change bump="0"/>
         <duration-change amount="0.50"/>
      </rule>
      <rule remark="Staccatissimo" enabled="true">
         <if articulation="staccatissimo"/>
         <dynamic-change bump="0"/>
         <duration-change amount="0.25"/>
      </rule>
      <rule remark="Mezzo-Staccato" enabled="true">
         <if articulation="mezzo-staccato"/>
         <duration-change amount="0.75"/>
      </rule>
      <rule remark="Accent" enabled="true">
         <if articulation="accent"/>
         <dynamic-change bump="1"/>
         <duration-change amount="0.75"/>
      </rule>
      <rule remark="Legato Accent" enabled="true">
         <if articulation="legato-accent"/>
         <dynamic-change bump="1"/>
         <duration-change amount="1.0"/>
      </rule>
      <rule remark="Staccato Accent" enabled="true">
         <if articulation="staccato-accent"/>
         <dynamic-change bump="1"/>o
         <duration-change amount="0.50"/>
      </rule>
      <rule remark="Staccatissimo Accent" enabled="true">
         <if articulation="staccatissimo-accent"/>
         <dynamic-change bump="1"/>
         <duration-change amount="0.25"/>
      </rule>
      <rule remark="Strong Accent" enabled="true">
         <if articulation="strong-accent"/>
         <dynamic-change bump ="2"/>
         <duration-change amount="0.75"/>
      </rule>
      <rule remark="Legato Strong Accent" enabled="true">
         <if articulation="legato-strong-accent"/>
         <dynamic-change bump="2"/>
         <duration-change amount="1.0"/>
      </rule>
      <rule remark="Staccato Strong Accent" enabled="true">
         <if articulation="staccato-strong-accent"/>
         <dynamic-change bump ="2"/>
         <duration-change amount="0.50"/>
      </rule>
      <rule remark="Staccatissimo Strong Accent" enabled="true">
         <if articulation="staccatissimo-strong-accent"/>
         <dynamic-change bump="2"/>
         <duration-change amount="0.25"/>
      </rule>
      <rule remark="Soft Start" enabled="true">
         <if articulation="soft-start" />
         <dynamic-change bump="-1"/>
      </rule>

<!-- Technique Flags-->


      <rule remark="Condition Under Slur" enabled="true">
         <if condition="under-slur"/>
         <if no-articulation="true"/>
         <set-flag name="lega"/>
      </rule>
      <rule remark="Legato" enabled="true">
         <if user-technique="1"/>
         <set-flag name="lega"/>
      </rule>
      <rule remark="Long" enabled="true">
         <if user-technique="2"/>
         <set-flag name="long"/>
      </rule>
      <rule remark="Long Con Sord" enabled="true">
         <if user-technique="3"/>
         <set-flag name="cons"/>
      </rule>
      <rule remark="Flaut" enabled="true">
         <if user-technique="4"/>
         <set-flag name="flau"/>
      </rule>
      <rule remark="Spiccato" enabled="true">
         <if user-technique="5"/>
         <set-flag name="spic"/>
      </rule>
      <rule remark="Staccato" enabled="true">
         <if user-technique="6"/>
         <set-flag name="sttc"/>
      </rule>
      <rule remark="Pizz" enabled="true">
         <if user-technique="7"/>
         <set-flag name="pizz"/>
      </rule>
      <rule remark="ColLegno" enabled="true">
         <if user-technique="8"/>
         <set-flag name="legn"/>
      </rule>
      <rule remark="Trem" enabled="true">
         <if user-technique="9"/>
         <set-flag name="trem"/>
      </rule>
      <rule remark="TrillMj2nd" enabled="true">
         <if user-technique="10"/>
         <set-flag name="tmj2"/>
      </rule>
      <rule remark="TrillMn2nd" enabled="true">
         <if user-technique="11"/>
         <set-flag name="tmi2"/>
      </rule>
      <rule remark="SulTasto" enabled="true">
         <if user-technique="12"/>
         <set-flag name="tast"/>
      </rule>
      <rule remark="Harm-L" enabled="true">
         <if user-technique="13"/>
         <set-flag name="harl"/>
      </rule>
      <rule remark="Harm-S" enabled="true">
         <if user-technique="14"/>
         <set-flag name="hars"/>
      </rule>
      <rule remark="PizzBartok" enabled="true">
         <if user-technique="15"/>
         <set-flag name="pizb"/>
      </rule>
      <rule remark="Marcato-L" enabled="true">
         <if user-technique="16"/>
         <set-flag name="marc"/>
      </rule>
      <rule remark="TremSulPont" enabled="true">
         <if user-technique="17"/>
         <set-flag name="trsp"/>
      </rule>
      <rule remark="TremConSord" enabled="true">
         <if user-technique="18"/>
         <set-flag name="trcs"/>
      </rule>
      <rule remark="SulPont" enabled="true">
         <if user-technique="19"/>
         <set-flag name="sulp"/>
      </rule>
      <rule remark="SpiccatoCS" enabled="true">
         <if user-technique="20"/>
         <set-flag name="spcs"/>
      </rule>
     
      <rule remark="Normale=Main" enabled="true">
         <if user-technique="21"/>
         <set-flag name="main"/>
      </rule>


<!-- BBCSO Techniques-->

      <rule remark="Legato" enabled="true">
         <if flag="lega"/>
            <unset-flag name="main"/>
            <unset-flag name="long"/>
            <unset-flag name="cons"/>
            <unset-flag name="flau"/>
            <unset-flag name="spic"/>
            <unset-flag name="sttc"/>
            <unset-flag name="pizz"/>
            <unset-flag name="legn"/>
            <unset-flag name="trem"/>
            <unset-flag name="tmj2"/>
            <unset-flag name="tmi2"/>
            <unset-flag name="tast"/>
            <unset-flag name="harl"/>
            <unset-flag name="hars"/>
            <unset-flag name="pizb"/>
            <unset-flag name="marc"/>
            <unset-flag name="trsp"/>
            <unset-flag name="trcs"/>
            <unset-flag name="sulp"/>
            <unset-flag name="spcs"/>
            <key-switch midi-pitch="0" velocity="1" type="note-on-prefix"/>
      </rule>

      <rule remark="Long" enabled="true">
         <if flag="long"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Long Con Sord" enabled="true">
         <if flag="cons"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="2" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Flaut" enabled="true">
         <if flag="flau"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="3" velocity="1" type="note-on-prefix"/>
      </rule>

      <rule remark="Spiccato" enabled="true">
         <if flag="spic"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="4" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Staccato" enabled="true">
         <if flag="sttc"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="5" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Pizz" enabled="true">
         <if flag="pizz"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="6" velocity="1" type="note-on-prefix"/>
         
      </rule>

      <rule remark="ColLegno" enabled="true">
         <if flag="legn"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="7" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Trem" enabled="true">
         <if flag="trem"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="8" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="TrillMj2nd" enabled="true">
         <if flag="tmj2"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="9" velocity="1" type="note-on-prefix"/>
      </rule>

      <rule remark="TrillMn2nd" enabled="true">
         <if flag="tmi2"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="10" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="SulTasto" enabled="true">
         <if flag="tast"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="11" velocity="1" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Harm-L" enabled="true">
         <if flag="harl"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="12" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="Harm-S" enabled="true">
         <if flag="hars"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="13" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="PizzBartok" enabled="true">
         <if flag="pizb"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="14" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="Marcato-L" enabled="true">
         <if flag="marc"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="15" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="TremSulPont" enabled="true">
         <if flag="trsp"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="16" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="TremConSord" enabled="true">
         <if flag="trcs"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="17" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="SulPont" enabled="true">
         <if flag="sulp"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="18" velocity="1" type="note-on-prefix"/>
      </rule>
      <rule remark="SpiccConSord" enabled="true">
         <if flag="spcs"/>
         <unset-flag name="main"/>
         <key-switch midi-pitch="19" velocity="1" type="note-on-prefix"/>
      </rule>
     
<!-- CC controller rules for Vibrato, Reverb, Etc. -->
     
      <rule remark="CC64 ON (for activate sustain pedal)" enabled="true">
         <if condition="with-sustain-pedal"/>
         <cc controller="64" value="127" type="note-on-prefix"/>
      </rule>

      <rule remark="CC64 OFF (for de-activate sustain pedal)" enabled="true">
         <if not-condition="with-sustain-pedal"/>
         <cc controller="64" value="0" type="note-off-suffix"/>
      </rule>

      <rule remark="Vibrato On" enabled="true">
         <if technique="vibe"/>
         <cc controller="21" value="127" type="note-on-prefix"/>
      </rule>
     
      <rule remark="Vibrato Off" enabled="true">
         <if technique="nvib"/>
         <cc controller="21" value="1" type="note-on-prefix"/>
      </rule>
     
<!-- Main Flag Keyswitch -->
     
      <rule remark="Main Keyswitch" enabled="true">
         <if flag="main"/>
         <key-switch midi-pitch="1" velocity="1" type="note-on-prefix"/>
      </rule>
   </rules>
</rule-set>

Re: Notion 6 Custom Rules Documentation

Posted: Mon Nov 28, 2022 1:36 pm
by johnwaylett
Ok thanks .. will use code marks. This is new to me.

Also, yes .. my original prules worked. The new rules work with just the un-set flag "main" on user techniques. But still need all the flags unset for condition under slur to work.

Re: Notion 6 Custom Rules Documentation

Posted: Mon Nov 28, 2022 7:22 pm
by aduki
Guys this is so so useful. I am about to embark on this so what you have gleaned is amazing!
I'll report back.

Cheers

Re: Notion 6 Custom Rules Documentation

Posted: Mon Nov 28, 2022 10:18 pm
by johnwaylett
Excellent .. the more of us that are working on understanding prules and technique processing (both user defined techniques and standard notion techniques), the better our understanding. Thank you for jumping in!.

Re: Notion 6 Custom Rules Documentation

Posted: Fri Jan 20, 2023 1:27 pm
by timothyboulette
John,

Would you be willing to post your actual rule files (I may not be using that term correctly) here?

I've read this thread multiple times and I'm still baffled as to how to proceed. I too would love to get BBC SO working well with Notion.

Re: Notion 6 Custom Rules Documentation

Posted: Fri Jan 20, 2023 2:10 pm
by acequantum
Hi,

Just a note, the rules aren't enough. You need the directory structure setup, you need templates in the directory and you need a presets.xml file to define the user techniques.

Re: Notion 6 Custom Rules Documentation

Posted: Sat Jan 21, 2023 11:34 am
by timothyboulette
acequantum wroteHi,

Just a note, the rules aren't enough. You need the directory structure setup, you need templates in the directory and you need a presets.xml file to define the user techniques.


Proving that I'm baffled!

Re: Notion 6 Custom Rules Documentation

Posted: Sat Jan 21, 2023 9:58 pm
by acequantum
Do you have windows or mac?

Re: Notion 6 Custom Rules Documentation

Posted: Fri Mar 03, 2023 8:51 pm
by acequantum
Hello,

This is just a general update on this thread. I finally understand (sort of) the Component ID flag in the rules.

Previously, I was a bit dismayed when trying to use an external GM mapped drum kit VST with Notion. Let's say I built a drum part starting with Notion's default drum kit. I could go and use the quick entry pads, I can even use some of the preset patterns notion has included so I can quickly whip up a drum part. Awesome! But now i want to use different drums from a VST or through MIDI.

Unfortunately, Notion Maps the staff to it's internal drums so everything works in that case. When you add a standard GM kit, the pitches on the staff don't match the standard MIDI. So if I change the instrument on the drum staff I built in Notion, the drums will be all over the place - not the correct drums at all.

This bothered me. So I went over the rules again and a light bulb went off. The Component Id flags are similar to regular flags but they are numeric and seem to be designed specifically to conditions related to notes being played.

If I set up a condition that looks at the pitch, note-head, etc. I can assign that a Component ID. For example, a kick drum is F4 on the Notion drum staff. In a rule, I set up a condition to look for pitch F4 then assign an action that sets Component ID of say 1. Then later in the set of rules I have a condition that looks to see if Component ID 1 was set. If so, it transposes the current note that was assigned Component ID 1 down to C2. I had several notes play at once as a "chord" to make sure they independently transpose to their proper GM mapping.

I don't know if there is an advantage to assigning a component ID vs just transposing the note when a certain pitch is played.

[Edit]
Ok, I've been using Transpose as an action when I could be using Fixed Pitch. This way there could be multiple scenarios that could set a particular Component ID. However, if the result of any of the varied conditions is meant to be the same, then the set Component ID can trigger the action as only one command instead of responding to each condition. Fixed Pitch in this case would work better than transpose Still, I'm not 100% sure what's the best way to use it - it's very similar to jst setting a flag.

If I get a good mapping after experimenting, I'll post it here.