]> Shamusworld >> Repos - ardour-manual/blobdiff - include/transforming-midi---mathematical-operations.html
Ruler/Markers rewrite, part 5 of N
[ardour-manual] / include / transforming-midi---mathematical-operations.html
index e179823a13c5f8efd821334dc833a394379671e6..8ed454d714e98b432583ff135bb4cbb3e5f748db 100644 (file)
@@ -1,54 +1,98 @@
 
-<p>Considering the numerical nature of MIDI events, it can be tempting to apply mathematical transformations to our MIDI regions by using mathematical operations. Ardour makes it very easy and powerfull with the Transform tool.</p>
-  
-<img src="/images/MIDI_transform.png" alt="MIDI transformation" />
+<figure class="right">
+  <img src="/images/MIDI_transform.png" alt="MIDI transformation">
+  <figcaption>The MIDI transformation dialog</figcaption>
+</figure>
 
-<p>To access the Transform tool, right click the MIDI region &gt; <em>name_of_the_region</em> &gt; MIDI &gt; Transform...</p>
+<p>
+  Considering the numerical nature of MIDI events, it can be useful to
+  transform a MIDI region by applying mathematical operations to it. Ardour
+  makes this kind of powerful transformation very easy with the Transform tool. 
+  The tool makes possible things such as humanizing (randomizing the velocity,
+  start time and duration of all the notes), creating arpeggios, automating
+  tedious tasks, transposing, etc.
+</p>
 
-<p>First, select the property you want to modify in the 'Set' field, then change the target value using the 2 following fields. If you want to add more operands, click the "+" sign to create new lines. You can remove a superfluous line using the "-" sign on the right of the newly created line.</p>
+<p>
+  The Transform tool is accessed by <kbd class="mouse">right</kbd>-clicking
+  the MIDI region &gt; <em>name_of_the_region</em> &gt; MIDI &gt; Transform&hellip;.
+</p>
 
-<p>In the picture above, we've used the Transform tool to add a bit of humanisation, by slightly changing the velocity of each note of the region, by a random number between -19 and +19 from it's original velocity. So we've used 3 operations :</p>
+<p>
+  First, the property to be modified in the <kbd class="menu">Set</kbd> field
+  is selected, then the target value is changed using the two fields that
+  follow. If more operands are desired, the <kbd class="menu">+</kbd> button is
+  clicked to create new lines. Any superfluous line can be removed by clicking
+  on the <kbd class="menu">-</kbd> button on the right side of the line to be
+  removed. Finally, once everything is set as desired, the <kbd
+  class=menu>Transform</kbd> button is pressed to apply the transformation.
+</p>
+
+<p>
+  In the image above, the Transform tool has been used to add a bit of
+  humanization, by slightly changing the velocity of each note of the region by
+  a random number between -19 and +19 from its original velocity. So the
+  following three operations are applied:
+</p>
 
 <ul>
-       <li>Set velocity to this note's velocity</li>
-       <li>+ a random number from 1 to 20</li>
-       <li>- a random number from 1 to 20</li>
+  <li>Set velocity to this note's velocity</li>
+  <li>+ a random number from 1 to 20</li>
+  <li>- a random number from 1 to 20</li>
 </ul>
 
-<p>Each note will trigger a calculation of its own, so its velocity will be increased by a random number between 1 and 20, then decreased by a random number between 1 and 20.</p>
+<p>
+  Each note will trigger a unique calculation, where its velocity will be
+  increased by a random number between 1 and 20, then decreased by a random
+  number between 1 and 20. This will result in a new velocity being applied to
+  the note, which will be the original velocity plus or minus a value &lt;19.
+</p>
 
-<p>The properties that can be computed are :</p>
+<p>
+  The parameters that can be transformed are:
+</p>
 
 <ul>
-       <li>note number (eg C2 is note number 24, C#2 is 25 and so on)</li>
-       <li>velocity (the global intensity of the note, between 0 and 127)</li>
-       <li>start time (in beats)</li>
-       <li>length (in beats)</li>
-       <li>channel</li>
+  <li>MIDI note number (e.g. <a href="@@midi-notes-ref">C2 is note number 24,
+  C#2 is 25, etc.</a>)</li>
+  <li>MIDI velocity (the volume of the note, between 0 and 127)</li>
+  <li>start time (in beats)</li>
+  <li>length (in beats)</li>
+  <li>MIDI channel</li>
 </ul>
 
-<p>and the calculation may be based on the following properties :</p>
+<p>
+  and the transformation can be based on any of the following:
+</p>
 
 <ul>
-       <li>this note's</li>
-       <li>the previous note's</li>
-       <li>this note's index (number of the note, i.e. the first one is 0, the second is 1, etc.)</li>
-       <li>exactly (for a constant value, between 1 and 127)</li>
-       <li>a random number from <em>lower</em> to <em>higher</em> (<em>lower</em> and <em>higher</em> beeing constant values between 1 and 127)</li>
-       <li>equal steps from <em>lower</em> to <em>higher</em> (<em>lower</em> and <em>higher</em> beeing constant values between 1 and 127)</li>
+  <li>this note's</li>
+  <li>the previous note's</li>
+  <li>this note's index (number of the note, i.e. the first one is 0, the second
+  is 1, etc.)</li>
+  <li>exactly (for a constant value, between 1 and 127)</li>
+  <li>a random number from <em>lower</em> to <em>higher</em> (<em>lower</em> and
+  <em>higher</em> being constant values between 1 and 127)</li>
+  <li>equal steps from <em>lower</em> to <em>higher</em> (<em>lower</em> and
+  <em>higher</em> being constant values between 1 and 127)</li>
 </ul>
 
-<p>The mathematical operators can be :</p>
+<p>
+  The mathematical operators are:
+</p>
 
 <ul>
-       <li>+ (addition)</li>
-       <li>- (substration)</li>
-       <li>* (multiplication)</li>
-       <li>/ (euclidian division)</li>
-       <li>mod (rest of the euclidian division)</li>
+  <li>+ (addition)</li>
+  <li>- (subtraction)</li>
+  <li>* (multiplication)</li>
+  <li>/ (euclidian division)</li>
+  <li>mod (remainder of the euclidian division)</li>
 </ul>
 
-<p>All this operations can be very handy, as long as you find a mathematical way to achieve your goal. Beware though of odd "border cases" : division by zero (which does nothing), using the note's index and forgetting it starts at 0 and not 1, etc.<p>
-
-<p>You can nevertheless create very interesting results, like humanizing (randomizing the velocity, start time and duration of all the notes), creating arpeggios, automating tedious tasks, transposing, etc.</p>
+<p class="note">
+  While the Transform tool is powerful, it is not infallible.
+  Things like division by zero (which does nothing), using the note's index and
+  thinking that it starts at one (instead of zero), etc. can yield
+  unexpected results.
+<p>