First pass at reorganizing/cleaning up the MIDI part.

A few other files were touched as well as they were referred to by files
in the MIDI part, which lead to other connected things being pulled in.
As this is only the first pass, there will be more necessary changes
coming in the near future.  Also, the lowest two levels of structure
were mistakenly removed from the build system; these have been added
back as they are necessary to keep the structure of the manual sane.
This commit is contained in:
Shamus Hammons 2020-05-18 18:07:17 -05:00
parent b0bef685d2
commit f04db3fe5d
36 changed files with 1002 additions and 740 deletions

View File

@ -4,7 +4,7 @@
# finished manual/website.
#
# by James Hammons
# (C) 2017 Underground Software
# (C) 2020 Underground Software
#
# Contributors: Ed Ward
#
@ -80,12 +80,12 @@ def ParseHeader(fileObj):
# Turn a "part" name into an int
#
def PartToLevel(s):
level = -1
lvl = {'part': 0, 'chapter': 1, 'subchapter': 2}
lvl = {'part': 0, 'chapter': 1, 'subchapter': 2, 'section': 3, 'subsection': 4 }
if s in lvl:
return lvl[s]
else:
return -1
return -1
#
@ -108,7 +108,7 @@ def num2roman(num):
#
def GetFileStructure():
fs = []
fnames = [None]*6
fnames = [None] * 6
content = ''
grab = False
mf = open(global_master_doc)
@ -212,8 +212,9 @@ def GetParent(fs, pos):
#
def reheader(txt, delta):
for i in range(6, 0, -1):
txt = txt.replace('<h' + str(i),'<h' + str(i+delta))
txt = txt.replace('</h' + str(i),'</h' + str(i+delta))
txt = txt.replace('<h' + str(i), '<h' + str(i + delta))
txt = txt.replace('</h' + str(i), '</h' + str(i + delta))
return txt
@ -275,6 +276,7 @@ def FindInternalLinks(fs):
return linkDict
#
# Same as above, but create anchors (for the one-page version)
#
@ -355,19 +357,23 @@ def BuildOnePageSidebar(fs):
content = '\n\n<ul class="toc">\n'
lvl = 0
levelNums = [0]*3
levelNums = [0] * 5
for i in range(len(fs)):
# Handle Part/Chapter/subchapter numbering
# Handle Part/Chapter/subchapter/section/subsection numbering
level = fs[i]['level']
if level < 2:
levelNums[2] = 0
levelNums[level] = levelNums[level] + 1;
j = level
txtlevel = ''
while j > 0: #level 0 is the part number which is not shown
txtlevel = str(levelNums[j]) + '.' + txtlevel
j = j-1
j = j - 1
if len(txtlevel) > 0:
txtlevel = txtlevel[:-1] + ' - '
@ -379,6 +385,7 @@ def BuildOnePageSidebar(fs):
while lvl < level:
content = content + '<ul class="toc">\n'
lvl = lvl + 1
while lvl > level:
content = content + '</ul>\n'
lvl = lvl - 1
@ -398,11 +405,12 @@ def CreateLinkSidebar(fs, pos, childList):
# Build the list recursively from the top level nodes
content = BuildList(FindTopLevelNodes(fs), fs, pos, childList)
# Shove the TOC link and one file link at the top...
active = ' class=active' if pos<0 else ''
content = content.replace('<ul>','<ul><li' + active + '><a href="/toc/">Table of Contents</a></li>',1)
active = ' class=active' if pos < 0 else ''
content = content.replace('<ul>', '<ul><li' + active + '><a href="/toc/">Table of Contents</a></li>\n', 1)
return content
# Preliminaries
# We have command line arguments now, so deal with them
@ -410,19 +418,20 @@ parser = argparse.ArgumentParser(description='A build script for the Ardour Manu
parser.add_argument('-v', '--verbose', action='store_true', help='Display the high-level structure of the manual')
parser.add_argument('-q', '--quiet', action='store_true', help='Suppress all output (overrides -v)')
parser.add_argument('-d', '--devmode', action='store_true', help='Add content to pages to help developers debug them')
parser.add_argument('-n', '--nopdf', action='store_true', help='Do not automatically generate PDF from content')
parser.add_argument('-p', '--pdf', action='store_true', help='Automatically generate PDF from content')
args = parser.parse_args()
verbose = args.verbose
quiet = args.quiet
noisy = not args.quiet
devmode = args.devmode
nopdf = args.nopdf
pdf = args.pdf
if quiet:
# --quiet overrides --verbose, so tell it to shut up if user did both
if not noisy:
verbose = False
level = 0
fileCount = 0
levelNums = [0]*3
levelNums = [0] * 5
lastFile = ''
page = ''
onepage = ''
@ -430,20 +439,17 @@ pdfpage = ''
toc = ''
pageNumber = 0
if not quiet and devmode:
if noisy and devmode:
print('Devmode active: scribbling extra junk to the manual...')
if os.access(global_site_dir, os.F_OK):
if not quiet:
if noisy:
print('Removing stale HTML data...')
shutil.rmtree(global_site_dir)
shutil.copytree('./source', global_site_dir)
# Read the template, and fix the stuff that's fixed for all pages
temp = open(global_screen_template)
template = temp.read()
@ -451,14 +457,14 @@ temp.close()
template = template.replace('{{page.bootstrap_path}}', global_bootstrap_path)
template = template.replace('{{page.page_title}}', global_page_title)
# Same as above, but for the One-page version
# Same as above, but for the "One-Page" version
temp = open(global_onepage_template)
onepage = temp.read()
temp.close()
onepage = onepage.replace('{{page.bootstrap_path}}', global_bootstrap_path)
onepage = onepage.replace('{{page.page_title}}', global_page_title)
if not nopdf:
if pdf:
# Same as above, but for the PDF version
temp = open(global_pdf_template)
pdfpage = temp.read()
@ -475,11 +481,11 @@ nodeChildren = FindChildren(fileStruct)
links = FindInternalLinks(fileStruct)
oplinks = FindInternalAnchors(fileStruct)
if not quiet:
if noisy:
print('Found ' + str(len(links)) + ' internal link target', end='')
print('.') if len(links) == 1 else print('s.')
if not quiet:
if noisy:
master = open(global_master_doc)
firstLine = master.readline().rstrip('\r\n')
master.close()
@ -501,9 +507,10 @@ for header in fileStruct:
lastLevel = level
level = header['level']
# Handle Part/Chapter/subchapter numbering
# Handle Part/Chapter/subchapter/section/subsection numbering
if level < 2:
levelNums[2] = 0
levelNums[level] = levelNums[level] + 1;
# This is totally unnecessary, but nice; besides which, you can capture
@ -526,15 +533,10 @@ for header in fileStruct:
toc = toc + '\t<p class="chapter">Ch. ' + str(levelNums[level]) + ':&nbsp;&nbsp;<a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
elif level == 2:
toc = toc + '\t\t<p class="subchapter"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
# Handle one-page and PDF titles...
opl = ''
if 'link' in header:
opl = ' id="' + header['link'] + '"'
else:
opl = ' id="' + header['filename'] + '"'
oph = '<h' + str(level+1) + ' class="clear"' + opl +'>' + header['title'] + '</h' + str(level+1) + '>\n';
elif level == 3:
toc = toc + '<p class="section"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
elif level == 4:
toc = toc + '<p class="subsection"><a href="/' + header['filename'] + '/">' + header['title'] + '</a></p>\n'
# Make the 'this thing contains...' stuff
if HaveChildren(fileStruct, pageNumber):
@ -617,9 +619,13 @@ for header in fileStruct:
opcontent = FixInternalLinks(oplinks, content, header['title'])
opcontent = reheader(opcontent, 2)
# Create "one page" header
oph = '<h' + str(level+1) + ' class="clear" id="' + header[('link' if 'link' in header else 'filename')] +'">' + header['title'] + '</h' + str(level+1) + '>\n';
# Set up the actual page from the template
onepage = onepage.replace('{{ content }}', oph + '\n' + opcontent + '\n{{ content }}')
if not nopdf:
if pdf:
if not 'pdf-exclude' in header:
pdfpage = pdfpage.replace('{{ content }}', oph + '\n' + opcontent + '\n{{ content }}')
else:
@ -682,8 +688,8 @@ onepage = onepage.replace('{{ content }}', '') # cleans up the last spaceholder
onepageFile.write(onepage)
onepageFile.close()
if not nopdf:
if not quiet:
if pdf:
if noisy:
print('Generating the PDF...')
# Create the PDF version of the documentation
@ -705,6 +711,6 @@ if not nopdf:
doc = HTML(string = pdfpage, base_url = global_site_dir)
doc.write_pdf(global_site_dir + 'manual.pdf', font_config = html_font_config)
if not quiet:
if noisy:
print('Processed ' + str(fileCount) + ' files.')

View File

@ -1,44 +1,51 @@
<p class=fixme>WTH is &ldquo;Note Level Editing&rdquo;? (See table below, &ldquo;So, to summarize&hellip;&rdquo;.)</p>
<h2>Adding new notes</h2>
<p>
For light MIDI editing, the Internal Edit Mode can be used. This mode allows
to select notes, copy, move or delete them and alter their properties. Adding
new notes in this mode is done by <kbd class="mouse
mod1">Left</kbd> dragging.
For more extensive MIDI editing, the <kbd class="menu">Draw Mode</kbd>.
allows to <kbd class="mouse">Left</kbd> click or drag to add a new note, without
having to hold down <kbd class="mod1n"></kbd>. However, Draw Mode doesn't offer
region-level editing nor rubberband selection.
<p>
For light MIDI editing, Internal Edit Mode can be used. This mode allows
selecting, copying, moving and deleting notes, and also allows altering
notes&rsquo; properties. To <em>add</em> notes using the mouse, <kbd
class="mouse mod1">Left</kbd>-drag. For more extensive MIDI editing, <kbd
class="menu">Draw Mode</kbd> may be preferred. New notes can be added with
a click or drag, without having to hold down <kbd class=mod1n></kbd>.
However, <kbd class="menu">Draw Mode</kbd> doesn't allow region-level
editing.
</p>
<p class=fixme>Not sure if the following paragraph is true.</p>
<p>
In both modes, a mouse <em>click</em> creates a note at the pointer location
(or the nearest grid point if grid is enabled), and its duration is one <a
href="@@grid-controls">Grid unit</a>, even if the grid is disabled. A mouse
<em>drag</em> creates the note like a click does, but allows to set the
duration of the note until the mouse button is released.
In both modes, a mouse <em>click</em> creates a note at the pointer location
(or the nearest grid point if grid is enabled), and its duration is one <a
href="@@grid-controls">Grid unit</a>, even if the grid is disabled. A mouse
<em>drag</em> creates the note like a click does, but allows continuously
setting the duration of the note until the mouse button is released.
</p>
<p>So, to summarize:</p>
<table class="dl">
<tr><th>Selecting, moving, copying, trimming, deleting <em>regions</em></th>
<td><kbd class="menu">Note Level Editing</kbd> disabled, using Grab,
Range or other mouse modes</td></tr>
<tr><th>Selecting, moving, copying trimming, deleting <em>notes</em></th>
<td><kbd class="menu">Note Level Editing</kbd> enabled, and using Internal
Edit mode</td></tr>
<tr><th>Adding new notes</th>
<td>enabling "Note Level Editing" and then either
<ul>
<li>using Draw mode and <kbd class="mouse">Left</kbd>
clicking/dragging, or</li>
<li>using Internal Edit mode and <kbd
class="mouse mod1">Left</kbd> clicking/dragging.</li>
</ul>
</td></tr>
<tr>
<th>Selecting, moving, copying, trimming, deleting <em>regions</em></th>
<td><kbd class="menu">Note Level Editing</kbd> disabled, using object, range or other mouse modes</td>
</tr>
<tr>
<th>Selecting, moving, copying trimming, deleting <em>notes</em></th>
<td><kbd class="menu">Note Level Editing</kbd> enabled, and using mouse object mode</td>
</tr>
<tr>
<th>Adding new notes</th>
<td>Enabling "Note Level Editing" and then either
<ul>
<li>using mouse object mode and <kbd class="mouse mod1">Left</kbd>-drag, or</li>
<li>using mouse draw mode.</li>
</ul>
</td>
</tr>
</table>
<p>
There is also <a href="@@step-entry">a step entry editor</a> allowing to enter
notes from a virtual keyboard and lots more besides.
<p class="note">
There is also <a href="@@step-entry">a step entry editor</a> that allows the
entry of notes from a virtual keyboard.
</p>

View File

@ -1,5 +1,5 @@
<figure class="left">
<figure class="right">
<img class="mini" src="/images/add-track-or-bus.png" alt="the add-track dialog">
<figcaption>
The Add Track/Bus/VCA dialog.
@ -11,9 +11,9 @@
</p>
<ul>
<li>Choosing <kbd class="menu">Track &gt; Add Track, Bus or VCA&hellip;</kbd>.</li>
<li><kbd class="mouse">Right</kbd>-clicking in an empty part of the track controls area.</li>
<li>Clicking the <kbd class="menu">Plus (&plus;)</kbd> button underneath the list of tracks in the mixer.</li>
<li>Choosing <kbd class="menu">Track &gt; Add Track, Bus or VCA&hellip;</kbd></li>
<li><kbd class="mouse">Right</kbd>-clicking in an empty part of the track controls area</li>
<li>Clicking the <kbd class="menu">Plus (&plus;)</kbd> button underneath the list of tracks in the mixer</li>
</ul>
<p>
Any of these actions will open the Add Track/Bus/VCA dialog.
@ -21,74 +21,90 @@
<p>
The list of available track templates (both factory and user-created ones)
in the left panel allows to choose the <a href="@@track-types">track(s) type</a>
(e.g. Audio, MIDI, bus, VCA etc.). Some templates can do even more, like the
in the left panel allows for choosing the <a href="@@track-types">track's type</a>
(e.g. Audio, MIDI, bus, VCA, etc.). Some templates can do even more, like the
factory-provided <kbd class="menu">Live Band</kbd> that automatically creates
a number of usual tracks for a common band setup. See <a
a typical number of tracks for a common band setup. See <a
href="@@newopen-session-dialog">New Session</a> for more information about
templates.
</p>
<p>
The common templates have parameters to tweak:
Any template can be fine-tuned using the controls in the dialog:
</p>
<table class="dl">
<tr><th>Add</th>
<td>Selects the number of tracks, busses or VCAs to create.</td></tr>
<tr><th>Name</th>
<td>Defines the name of the new track(s). If multiple tracks are created, or if
a track with the same name already exists, a space and number will be happened
at the end (e.g.: Audio 1, Audio 2&hellip;).</td></tr>
<tr><th>Configuration</th>
<td>This menu allows to choose from a number of route templates, which determine
the number of input ports and optionally contain plugins and other mixer strip
configuration. The most common choices here are <em>mono</em> and
<em>stereo</em>.</td></tr>
<tr><th>Instrument</th>
<tr>
<th>Add</th>
<td>Selects the number of tracks, busses or VCAs to create.</td>
</tr>
<tr>
<th>Name</th>
<td>Defines the name of the new track. If multiple tracks are to be created,
or if a track with the same name already exists, a space and number will be
appended to the end (e.g.: Audio 1, Audio 2&hellip;).</td>
</tr>
<tr>
<th>Configuration</th>
<td>This menu allows choosing from a number of routing templates, which
determines the number of input ports and optionally contains plugins and
other mixer strip configurations. The most common choices here are
<em>mono</em> and <em>stereo</em>.</td>
</tr>
<tr>
<th>Instrument</th>
<td>This option is only available for MIDI tracks and busses and allows the
selection of a default instrument from the list of available plugins.</td></tr>
<tr><th>Group</th>
<td>Tracks and busses can be assigned groups so that a selected range of
operations are applied to all members of a group at the same time (selecting
record enable, or editing, for example). This option assigns the new track/bus
to an existing group, or create a new group.</td></tr>
<tr><th>Pin Mode</th>
selection of a default instrument from the list of available plugins.</td>
</tr>
<tr>
<th>Group</th>
<td>Tracks and busses can be assigned to groups so that a selected range of
operations are applied to all members of the group at the same time
(selecting record enable, or editing, for example). This option assigns the
new track/bus to an existing group, or creates a new group.</td>
</tr>
<tr>
<th>Pin Mode</th>
<td>Defines how the number of output responds to adding a plugin with a
different number of outputs than the track itself. In <em>Strict I/O</em> mode,
plugins cannot alter the track's channel count, while in <em>Flexible I/O</em>
mode, it will automatically adapt
to the I/O of its plugins. See <a href="@@trackbus-signal-flow">Signal flow</a>
to learn more about those options.</td></tr>
<tr><th>Record mode</th>
different number of outputs than the track itself. In <em>Strict I/O</em>
mode, plugins cannot alter the track's channel count, while in <em>Flexible
I/O</em> mode, it will automatically adapt to the I/O of its plugins. See <a
href="@@trackbus-signal-flow">Signal flow</a> for details.</td>
</tr>
<tr>
<th>Record mode</th>
<td>This option is only available for audio tracks and affects how it behaves
when recording. See <a href="@@track-types#trackmodes">Track Modes</a> for
details.</td></tr>
<tr><th>Position</th>
details.</td>
</tr>
<tr>
<th>Position</th>
<td>Defines where in the track list is the track created. The default is
<em>Last</em>, i.e. after all the tracks and busses, and can also be
<em>First</em>, <em>Before Selection</em> (to place it just above the selected
track) or <em>After selection</em>.</td></tr>
<em>Last</em>, i.e. after all the tracks and busses, and can also be
<em>First</em>, <em>Before Selection</em> (to place it just above the
selected track) or <em>After selection</em>.</td>
</tr>
</table>
<p>
Multiple tracks of different types can be created by using the <kbd
class="menu">Add selected items (and leave dialog open)</kbd> button, which, used
in conjunction with the <kbd class="menu">Add</kbd> field, allows for a very efficient
and fast way to create a base track setup.
class="menu">Add selected items (and leave dialog open)</kbd> button, which,
when used in conjunction with the <kbd class="menu">Add</kbd> field, allows
for a very fast and efficient way to create an initial track setup.
</p>
<p>
New tracks appear in both the editor and mixer windows. The editor window
shows the timeline, with any recorded data, and the mixer shows just the
processing elements of the track (its plugins, fader and so on).
processor elements of the track (its plugins, fader, etc).
</p>
<h2>Removing Tracks and Busses</h2>
<p>
<dfn>Removing</dfn> tracks and busses, is done by selecting them, <kbd
<dfn>Removing</dfn> tracks and busses is done by selecting them, <kbd
class="mouse">right</kbd>-clicking and choosing <kbd class="menu">Remove</kbd>
from the menu. A warning dialog will pop up, as track removal cannot be undone;
this option should be used with care!
from the menu. A warning dialog will ask for confirmation as track removal
cannot be undone; this option should be used with care!
</p>

View File

@ -1,23 +1,20 @@
<p>
All the details about a selected note can be viewed by context-clicking on
it. The dialog that pops up will also allow to modify all the properties
of the selected note(s). Individual properties can also be modified more efficiently
using the techniques described below.
All details about selected notes can be viewed by context-clicking on them. The dialog that pops up also allows for the modification of all properties of the selected notes. Individual properties can also be modified more efficiently using the techniques described below:
</p>
<table class="dl">
<tr><th>Moving notes</th>
<td>
Right arrow and Left arrow move the selected note(s) early and later in time.
<kbd>&larr;</kbd> and <kbd>&rarr;</kbd> move selected notes earlier and later in time.
</td></tr>
<tr><th>Changing pitch values</th>
<td>
<kbd>&uarr;</kbd> increases the pitch of the selected notes.<br>
<kbd>&darr;</kbd> reduces the pitch of the selected notes.<br>
If any of the selected notes are already at the maximum or minimum value,
no changes will be made to any of the notes, to preserve relative pitches.
This can be overrode with <kbd class="mod2"> </kbd>. The default shift
<kbd>&uarr;</kbd> raises the pitch of the selected notes.<br>
<kbd>&darr;</kbd> lowers the pitch of the selected notes.<br>
If any of the selected notes are already at their minimum or maximum values,
no changes will be made to any them, to preserve their relative pitches.
This can be overridden with <kbd class="mod2"> </kbd>. The default shift
distance is one semitone. <kbd class="mod3"> </kbd> alters this to
one octave.
</td></tr>
@ -27,24 +24,23 @@
<br/>
<kbd class="mod1">&darr;</kbd> reduces the velocity of the selected
notes.<br>
If any of the selected notes are already at the maximum or minimum value,
no changes will be made to any of the notes, to preserve relative velocities.
This can be overrode with <kbd class="mod2"> </kbd>.
Also, pressing <kbd>v</kbd> pops up a dialog that will allow to set
the absolute velocity value of each selected note. Finally, the scroll wheel
If any of the selected notes are already at their minimum or maximum values,
no changes will be made to them, to preserve their relative velocities. This can be overridden with <kbd class="mod2"> </kbd>.
Also, pressing <kbd>v</kbd> pops up a dialog that allows setting
the absolute velocity value of all selected notes. Finally, the scroll wheel
<kbd class="mouse">&uArr;</kbd> <kbd class="mouse">&dArr;</kbd> will also
adjust notes in the same way as the arrow keys (note that like the arrow keys
it only affects selected notes, not the note the pointer is over).
adjust notes in the same way as the arrow keys (note that, like the arrow keys,
it only affects selected notes&mdash;not the note the pointer is over).
</td></tr>
<tr><th>Changing channel</th>
<td>
Pressing <kbd>c</kbd> brings up a dialog that allows to see and alter the
Pressing <kbd>c</kbd> brings up a dialog that allows viewing and/or altering the
MIDI channel of the selected notes. If the selected notes use different
channels, they will all be forced to the newly selected channel.
</td></tr>
<tr><th>Changing start/end/duration</th>
<td>
<kbd>,</kbd> (comma) will alter the start time of the note. <br>
<kbd>,</kbd> (comma) will alter the start time of the note.<br>
<kbd>.</kbd> (period) will alter the end time of the note. Both keys will by
default make the note longer (either by moving the start earlier or the end
later). For the opposite effect, <kbd class="mod1">,</kbd>/<kbd
@ -57,12 +53,12 @@
<kbd>q</kbd> will quantize the selected notes using the current quantize
settings. If the quantize settings have not been set for this session yet,
the quantize dialog will appear. <kbd class="mod2">q</kbd> will display the
quantize dialog to allow to reset the quantize settings, and then
quantizes the selected notes. The default quantize settings are: quantize
quantize dialog to allow editing the current quantize settings, and then
will quantize the selected notes. The default quantize settings are: quantize
note starts to the current grid setting, no swing, no threshold, full
strength.
</td></tr>
<tr><th>Step Entry, Quantize etc.</th>
<tr><th>Step Entry, Quantize, etc.</th>
<td>Refer to the <a href="@@step-entry">Step Entry</a>, <a
href="@@quantize-midi">Quantizing MIDI</a>, etc. specific pages.</td></tr>
</table>

View File

@ -1,21 +1,12 @@
<p>
Although recording MIDI is a common way to create new MIDI regions, it is
often desirable to do so as part of editing/arranging.
Although <a href="@@midi-recording">recording MIDI</a> on an existing track is a common way to create new MIDI regions, it is often desirable create new MIDI regions as part of the editing and/or arranging process.
</p>
<p>
To create a new MIDI region with the mouse, simply enter draw mode (press
"d" or click on the pencil tool) and then <kbd
class="mouse">Left</kbd>-click in a MIDI track. This creates a region
that is one bar long. Alternatively, use the left button to
drag-create a new region of the desired length.
A new MIDI region can be created with the mouse by entering <a href="@@toolbox">Draw Mode</a> (entered by pressing the <kbd>d</kbd> key or clicking on the Draw tool) and then <kbd class="mouse">left</kbd>-clicking anywhere in an existing MIDI track; this will create a region that is one bar long. If longer regions are desired, they can be created by <kbd class="mouse">left</kbd>-clicking anywhere in an existing MIDI track and dragging the mouse until the region is the desired length.
</p>
<p>
Once the region exists, to trim it to a different length, switch
back to grabber/object/select mode (press "g" or click on the
grabber tool). Then <a href="@@trimming-regions">trim</a> to your desired length.
</p>
<p>
Once the region is ready, <a href="@@add-new-notes">add some notes</a>
to it.
<p class=note>
Once created, all the typical methods of editing audio regions will work the same as they do for MIDI regions. See <a href="@@editing-regions-and-selections">Editing Regions and Selections</a> for more details.
</p>

View File

@ -1,17 +1,13 @@
<p>
To create <dfn>MIDI track(s)</dfn>, choose <kbd class="menu">Session &gt;
Add Track/Bus</kbd> from the main menu. In the <a href="@@adding-tracks-busses-and-vcas">Add
Track/Bus dialog</a>, left pane, choose <kbd class="menu">MIDI Tracks</kbd>.
A <dfn>MIDI track</dfn> is created much like any other track (see <a href="@@adding-tracks-busses-and-vcas">Adding Tracks, Busses and VCAs</a>). However, there are a few things that are unique to creating MIDI tracks.
</p>
<p>
A track template can be used, by selecting it in the <em>Configuration</em> drop
down menu.
When adding a MIDI track using the <kbd class="menu">Add Track/Bus/VCA</kbd> dialog, the <kbd class="menu">MIDI Tracks</kbd> item should be highlighted in the <kbd class="menu">Template/Type</kbd> list on the left. This will enable the <kbd class="menu">Instrument</kbd> combobox while disabling the <kbd class="menu">Configuration</kbd> and <kbd class="menu">Record Mode</kbd> comboboxes.
</p>
<p>
When you create a MIDI track you can select an instrument. The instrument in
this context is any plugin that will generate audio in response to receiving MIDI.
The <kbd class="menu">Instrument</kbd> combobox allows the selection of a plugin for the track to be created that will generate audio in response to MIDI data; if the track is intended to drive an external device then <kbd class="menu">-none-</kbd> should be selected instead.
</p>

View File

@ -1,28 +1,24 @@
<p>
Ardour's handling of <dfn>MIDI editing</dfn> differs from most other DAWs
and MIDI sequencers.
Ardour's handling of MIDI and how it allows the editing of MIDI data differs
in key ways from most other DAWs and MIDI sequencers. Also, unlike its
handling of audio data, the editing of MIDI data in Ardour is necessarily
<em>destructive</em> by nature.
</p>
<h2>Key features of Ardour MIDI handling</h2>
<h2>Key features of Ardour MIDI editing</h2>
<ul>
<li>
All editing is done in-place, in-window. There is no separate piano roll
window or pane. Edit notes right where they appear.
</li>
<li>
MIDI, just like audio, exists in regions. MIDI regions behave like audio
regions: they can be moved, trimmed, copied (cloned), or deleted. Ardour
allows either editing MIDI (or audio) regions, or MIDI region content (the
notes), but never both at the same time. The <kbd class="menu">e</kbd> key
(by default) toggles between region level and note level editing
All editing is done in-place, in-window; there is no separate piano roll
window or pane. Notes are edited right where they appear.
</li>
<li>
Editing note information in Ardour occurs in only a single region. There is
no way currently to edit in note data for multiple regions at the same time,
so for example notes cannot be selected in several regions and then all
deleted, nor can they be copied-and-pasted from one region to another.
Region(s), though, can be copy-pasted just as with audio.
no way currently to edit note data for multiple regions at the same time;
so, for example, notes cannot be selected in several regions and then all
deleted, nor can they be copied and pasted from one region to another.
Regions, however, <em>can</em> be copied and pasted just as with audio.
</li>
<li>
When using jackd as the audio server for Ardour, all MIDI I/O is done
@ -48,29 +44,9 @@
There is a Normal and a Percussive mode for note data editing.
</li>
<li>
The <dfn>scroomer</dfn> is a combination scroll/zoom tool for altering
the zoom level and range of visible MIDI data.
The vertical dimension of the region window is controlled by a
<dfn>scroomer</dfn> widget, which is a combination scroll/zoom tool for
altering the zoom level and range of visible MIDI data.
</li>
</ul>
<h2>Notable Differences</h2>
<ul>
<li>
Fader (volume) control currently operates on transmitted MIDI data, not by
sending CC #7.
</li>
<li>
All note/data editing is per-region. There are no cross-region operations at
this time.
</li>
<li>
By default, copying a MIDI region creates a <dfn>deep link</dfn>&mdash;both
regions share the same data source, and edits to the contents of one will
affect the other. Breaking this link is done by selecting <kbd
class="menu">MIDI &gt; Unlink from other copies</kbd> from the region
context menu, after which the selected region(s) will have their own copies
of <em>only</em> the data that they visually display on screen. The region
will no longer be trimmable back to its original length after an Unlink
operation, and the operation cannot be undone.
</li>
</ul>

View File

@ -1,22 +1,20 @@
<figure class="left">
<img src="/images/toolbar-editpoint.png" alt="Editor toolbar's Edit Point">
<figcaption>
Editor toolbar's Edit Point
</figcaption>
<img src="/images/toolbar-editpoint.png" alt="Editor toolbar's Edit Point">
<figcaption>Editor toolbar's Edit Point</figcaption>
</figure>
<p>
Editing operations in a Digital Audio Workstation like Ardour can be broken
down according to how many points on the timeline are required to carry the
operation out. Splitting a region for example, requires just one position on
the timeline (the one where the split will happen). Cutting out a time range
requires two positions, one for the start of the cut and one for the end.
the timeline&mdash;the one where the split will happen. Cutting out a time
range requires two positions, one for the start of the cut and one for the end.
</p>
<p>
In Ardour the <dfn>edit point</dfn> is the location where most single-point
editing operations take place. It can be set to either of the following:
In Ardour the <dfn>Edit Point</dfn> is the location where most single-point
editing operations take place. It can be set to any of the following:
</p>
<ul>
@ -26,7 +24,7 @@ editing operations take place. It can be set to either of the following:
</ul>
<p>
The default edit point is the location of the pointer.
The default edit point is the location of the mouse pointer.
</p>
<p>

View File

@ -41,5 +41,5 @@
dragged to the desired location. Hovering over a control point will show its
current level in dB. <kbd class="mouse">Left</kbd> clicking a control point
and pressing <kbd>Delete</kbd>, or <kbd class="mod3 mouse">Right</kbd>
clicking a point deletes it.
clicking a control point deletes it.
</p>

View File

@ -0,0 +1,7 @@
<p class="fixme">ADD CONTENT PLEASE</p>
<p>
MIDI automation works in a similar way to regular <a href="@@automation">audio automation</a>, but has a few key differences.
</p>

View File

@ -1,5 +1,5 @@
<figure>
<figure class="right">
<img src="/images/midi-list-editor.png" alt="The MIDI List Editor window">
<figcaption>
The MIDI List Editor window
@ -9,38 +9,43 @@
<p>
The <dfn>List Editor</dfn> is a way to look at the MIDI data of a region, not
graphically as they are displayed in the Editor, but in a tabular form.
This way of seeing the MIDI data allows for a quicker "debugging" of a MIDI region,
and for a fast <em>non-graphical</em> (i.e. no mouse involved) editing. This
list has a vertical flow, i.e. the first events (in time) are on the top
of the window, and the latest are at its bottom.
This way of seeing the MIDI data allows for quicker "debugging" of a MIDI
region, and for fast <em>non-graphical</em> (i.e. no mouse involved)
editing. The list has a vertical flow, i.e. the first events (in time) are
at the top of the window, and the last are at the bottom.
</p>
<p>
It is accessed by selecting the <kbd class="menu">Region &gt; MIDI &gt; List Editor&hellip;</kbd>
menu while having one MIDI region selected, or by <kbd class="mouse">Right</kbd>
clicking the MIDI region and choosing <kbd class="menu"><em>Name_Of_The_Region</em>
&gt; MIDI &gt; List Editor&hellip;</kbd>
It is accessed by selecting the <kbd class="menu">Region &gt; MIDI &gt; List
Editor&hellip;</kbd> menu while having one MIDI region selected, or by <kbd
class="mouse">Right</kbd> clicking the MIDI region and choosing <kbd
class="menu"><em>Name_Of_The_Region</em> &gt; MIDI &gt; List
Editor&hellip;</kbd>.
</p>
<p>
The window displays the following MIDI data:
</p>
<table class="dl">
<tr><th>Start</th><td>the timestamp of the start of the note</td></tr>
<tr><th>Channel</th><td>the MIDI channel of the event</td></tr>
<tr><th>Num</th><td>The <a href="@@midi-notes-ref">MIDI number</a> of the note</td></tr>
<tr><th>Name</th><td>The MIDI name of the note, made of its English name and octave (e.g. "C4")</td></tr>
<tr><th>Vel</th><td>the velocity of the note (i.e. its intensity, between 0 and 127)</td></tr>
<tr><th>Vel</th><td>the velocity of the note, i.e. its volume, between 0 (silent) and 127 (full)</td></tr>
<tr><th>Length</th><td>duration of the note, either expressed as a number (in ticks, related to the tempo) or as a text
(fraction of a beat, also related to the tempo)</td></tr>
</table>
<p>
At the top of the window is a <kbd class="menu">Sound Selected MIDI Notes</kbd>,
which is a toggle button allowing to listen to a note as it is selected.
At the top of the window is a <kbd class="menu">Sound Selected MIDI
Notes</kbd> button, which toggles playing a note as it is selected.
</p>
<p>
Each value can be manually modified, by <kbd class="mouse">Left</kbd> clicking it.
The Name field is related to the Number one, and cannot be edited. To change a
note, its number must be changed, which will be reflected in the Name field.
Each value can be manually modified, by <kbd class="mouse">left</kbd>
clicking it. However, the <em>Name</em> field is derived from the
<em>Number</em> field, and cannot be edited. To change a note, its number
must be changed, which will be reflected in the <em>Name</em> field.
</p>

View File

@ -0,0 +1,72 @@
<p>
MIDI (or Musical Instrument Digital Interface) is a method of representing
musical concepts in a form suitable for use in computers. MIDI defines 16
different <dfn>channels</dfn>, along which messages are passed to instruments
or synthesizers that understand the MIDI protocol; notes are played by
sending appropriately crafted <dfn>NoteOn</dfn> messages that are followed
by <dfn>NoteOff</dfn> messages. MIDI channels can be manipulated with
special <dfn>controller</dfn> messages to alter the pitch of instruments, or
their volume or timbre, and they can also tell the instrument or synthesizer
what sound to play using <dfn>Program Change</dfn> and <dfn>Bank Select</dfn>
messages.
</p>
<p class="note">
Typically Program Change and Bank Select messages are collectively referred to by the singular term <dfn>Patch Change</dfn>.
</p>
<h2>Key features of Ardour MIDI handling</h2>
<ul>
<li>
MIDI, just like audio, exists in regions. MIDI regions behave like audio
regions: they can be moved, trimmed, copied (cloned), or deleted. Ardour
allows either editing MIDI (or audio) regions, or MIDI region content (the
notes), but never both at the same time. The <kbd>e</kbd> key
(by default) sets <a href="@@toolbox#edit-internal">Internal Edit</a> Mode,
which allows the editing of MIDI data in a given region.
</li>
<li>
All MIDI I/O is done either by ALSA or JACK (depending on which backend was chosen when starting Ardour), for sample accurate timing and maximal efficiency when communicating with external software synthesizers.
</li>
<li>
Every MIDI track has its own JACK MIDI port for input; it may have an
arbitrary combination of audio and MIDI outputs, depending on the signal
processing in the track; the full flexibility of JACK connectivity is
present for MIDI just as it is for audio.
</li>
<li>
Full automation for MIDI tracks, integrated with the handling of all MIDI
<abbr title="Continuous Controller">CC</abbr> data for each track.
</li>
<li>
Controllers (CC data) can be set to discrete or continuous modes; the
latter will linearly interpolate between control points and send additional
data.
</li>
</ul>
<h2>Notable differences compared to other DAWs and sequencers</h2>
<ul>
<li>
Fader (volume) control currently operates on transmitted MIDI data, not by
sending CC #7.
</li>
<li>
All note/data editing is per-region. There are no cross-region operations at
this time.
</li>
<li>
By default, copying a MIDI region creates a <dfn>deep link</dfn>&mdash;both
regions share the same data source, and edits to the contents of one will
affect the other. Breaking this link is done by selecting <kbd
class="menu">MIDI &gt; Unlink from other copies</kbd> from the region
context menu, after which the selected region(s) will have their own copies
of <em>only</em> the data that they visually display on screen. The region
will no longer be trimmable back to its original length after an Unlink
operation, and the operation cannot be undone.
</li>
</ul>

View File

@ -0,0 +1,3 @@
<p class=fixme>ADD CONTENT PLEASE</p>

View File

@ -1,4 +1,6 @@
<p class=fixme>ADD IMAGES PLEASE</p>
<p>
Ardour is capable of being used to both record and deliver MIDI "scene"
automation. These are MIDI messages typically used to switch presets or
@ -7,12 +9,14 @@
presets between songs or to change lighting conditions based on a specific
position on the timeline.
</p>
<p>
Each change from one scene to another is represented by a marker in
the "Marker" bar.
</p>
<p>
Technically, scene changes are delivered as a combination of bank and
Typically, scene changes are delivered as a combination of bank and
program change MIDI messages. MIDI allows for 16384 banks, each with
128 programs.
</p>
@ -24,16 +28,19 @@
be done by connecting this port to whatever source(s) of MIDI scene (bank/program
change) messages should be recorded.
</p>
<p>
Whenever the global record enable button is engaged and Ardour's
transport is rolling, a new marker will be created for each scene
change message received via the "Scene In" port.
</p>
<p>
If two different scene changes are received within a certain time
period, only the later one will be recorded as a new marker. The
default threshold for this is 1 millisecond.
</p>
<p>
If a scene change message is received while the playhead is close to
an existing marker with an associated scene change, the recording
@ -55,6 +62,7 @@
changes can be done by connecting this port to whatever target(s) of MIDI
scene (bank/program change) messages should be sent to.
</p>
<p>
When the global record enable button is <em>not</em> enabled, the relevant
message(s) will be sent via the "Scene Out" port as the playhead rolls past
@ -72,3 +80,4 @@
<p>
This feature is not currently implemented.
</p>

View File

@ -1,53 +1,95 @@
<figure>
<figure class="right">
<img src="/images/midi-tracer.png" alt="The MIDI Tracer window">
<figcaption>
<figcaption class="center">
The MIDI Tracer window
</figcaption>
</figure>
<p>
The <dfn>MIDI Tracer</dfn> is similar to the <a href="@@midi-list-editor">MIDI
List Editor</a>, in the way that it displays MIDI information as a tabular text
view, and has a vertical flow, i.e. the events follow a top to bottom time
order.
The <dfn>MIDI Tracer</dfn> window, which is accessed by selecting <kbd
class="menu">Window &gt; MIDI Tracer</kbd> from the main menu, is similar to
the <a href="@@midi-list-editor">MIDI List Editor</a> in that it displays
MIDI information as tabular text, and has a vertical flow (i.e. the
events follow a top to bottom time-oriented order).
</p>
<p>
Its use is different though, as it is <em>not</em> bound to a specific region or track:
the MIDI that is monitored is any global input or output Ardour presents to the
system. It is hence a very useful option to monitor a MIDI port, be it an external
controller/device or the in/output of any track.
Its use is different however, as it is <em>not</em> bound to a specific
region or track; the MIDI shown in the MIDI Tracer window is any global input
or output Ardour presents to the system. As such, it is a very useful way to
monitor MIDI traffic, whether it is an external controller or device or the
input or output of any track.
</p>
<p class="note">
The MIDI Tracer can list all types of MIDI and "audio" events, and <a href="@@midi-scene-automation">scene automation</a> and <a href="@@timecode-generators-and-slaves">timecode</a> events as well.
</p>
<p>
It is accessed by selecting the <kbd class="menu">Window &gt; MIDI Tracer</kbd>
menu.
</p>
<p>
The window is made of:
The window consists of:
</p>
<table class="dl">
<tr><th><dfn>Port</dfn></th><td>a list of all the MIDI ports Ardour presents to the system. They
are both internal and external and are the same ports Ardour presents to JACK, if
enabled.</td></tr>
<tr><th>the events list</th><td>where all the events for this port are listed, see below</td></tr>
<tr><th><dfn>Line history</dfn></th><td>how many lines should be kept in the events list</td></tr>
<tr><th><dfn>Delta times</dfn></th><td>if checked, shows the times as the duration since the last event, instead of the <a href="@@on-clock-and-time">absolute time</a></td></tr>
<tr><th><dfn>Decimal</dfn></th><td>if checked, shows the MIDI data as decimal values instead of the original hexadecimal values</td></tr>
<tr><th><dfn>Enabled</dfn></th><td>if checked, the events are displayed in the events list, otherwise stops the logging</td></tr>
<tr><th><dfn>Auto-Scroll</dfn></th><td>if checked, the events list scrolls as new events are logged, allowing to keep the newest events on screen</td></tr>
<tr>
<th><dfn>Port</dfn></th>
<td>A list of all the MIDI ports Ardour presents to the system. They are both
internal and external and are the same ports Ardour presents to JACK, if
enabled</td>
</tr>
<tr>
<th>The events list</th>
<td>Where all the events for this port are listed, see below</td>
</tr>
<tr>
<th><dfn>Line history</dfn></th>
<td>How many lines should be kept in the events list; once this limit is
reached, older events will be removed from the list</td>
</tr>
<tr>
<th><dfn>Delta times</dfn></th>
<td>If checked, shows the times as the duration since the last event, instead
of <a href="@@on-clock-and-time">absolute times</a></td>
</tr>
<tr>
<th><dfn>Decimal</dfn></th>
<td>If checked, shows the MIDI data as decimal values instead of
hexadecimal</td>
</tr>
<tr>
<th><dfn>Enabled</dfn></th>
<td>If checked, events are displayed in the events list as they occur,
otherwise stops the logging</td>
</tr>
<tr>
<th><dfn>Auto-Scroll</dfn></th>
<td>If checked, the events list scrolls as new events are logged, keeping the
newest events on screen</td>
</tr>
</table>
<p>
The events list displays the events as columns:
</p>
<table class="dl">
<tr><th>time of the event</th><td>either absolute or relative, based on the <kbd class="option">Delta times</kbd> checkbox</td></tr>
<tr><th>MIDI status (event type)</th><td>what midi events happened (e.g. Note On, Note Off, Pitch Bend, &hellip;)</td></tr>
<tr><th>MIDI channel</th><td>in which MIDI channel did the event happen</td></tr>
<tr><th>MIDI data bytes (event parameters)</th><td>parameters of the event, e.g. for a Note On: what <a gref="@@midi-notes-ref">note</a> was it, and which was the note's velocity</td></tr>
<tr>
<th>Time of the event</th>
<td>Either absolute or relative, based on the <kbd class="option">Delta
times</kbd> checkbox</td>
</tr>
<tr>
<th>MIDI status (event type)</th>
<td>What MIDI events happened (e.g. Note On, Note Off, Pitch Bend, etc.)</td>
</tr>
<tr>
<th>MIDI channel</th>
<td>The MIDI channel the event happened in</td>
</tr>
<tr>
<th>MIDI data bytes (event parameters)</th>
<td>Parameters of the event, e.g. for a Note On: what the <a
href="@@midi-notes-ref">note</a> was, and its velocity</td>
</tr>
</table>
<p class="note">
Note: The MIDI Tracer can lists all kind of MIDI events, "audio" ones, but also <a href="@@midi-scene-automation">scene automation</a> or <a href="@@timecode-generators-and-slaves">timecodes</a> ones.
</p>

View File

@ -1,47 +1,53 @@
<p>A typical <dfn>MIDI track header</dfn> looks like this:</p>
<p class=fixme>Item #3 below does not hold in all cases; check to make sure the rest of the content is sane as well</p>
<figure>
<img src="/images/typical-midi-track-controls.png" alt="A MIDI track header">
<figcaption>
A MIDI track header
</figcaption>
<img src="/images/typical-midi-track-controls.png" alt="A MIDI track header">
<figcaption class="center">MIDI track header, stretched to show normally hidden controls.</figcaption>
</figure>
<p>
To show the full set of MIDI track controls, the <a href="@@track-height">track height</a>
must be increased beyond the default. MIDI tracks show only a few of the control elements
when there is insufficient vertical space.
</p>
<p>
A MIDI track has the same basic controls as an <a href="@@audio-track-controls">audio track</a>,
with the addition of three extra elements:
A MIDI track has the same basic controls as an <a
href="@@audio-track-controls">audio track</a>, with the following
differences:
</p>
<ol>
<li>Some meters for the track's outputs (MIDI in <span style="color:red;">red</span>,
Audio in <span style="color:green;">green</span>)</li>
<li>The <dfn>Scroomer</dfn>, a zoom and scroll controller for the midi notes range</li>
<li>When the track is tall enough, the External MIDI Device selection dropdown appears.</li>
<li>The level meters for the track's outputs show MIDI output in <span
style="color:red;">red</span>, on the left; Audio output in <span
style="color:green;">green</span>, on the right</li>
<li>The <dfn>Scroomer</dfn>, a combined scroll and zoom widget for
controlling MIDI notes display range, is unique to MIDI tracks</li>
<li>An External MIDI Device combobox can appear, for selecting <a
href="@@patch-change#midnam">MIDNAMs</a></li>
<li>An External Device Mode combobox can appear, for selecting an external
device's mode</li>
</ol>
<p>
Also, <kbd class="mouse">right</kbd> clicking the <kbd style="color:red;">&#9679;</kbd>
(record) button shows the <a href="@@step-entry">Step Entry</a> dialog instead of
controlling the rec-safe.
<p class="note">
To show the full set of MIDI track controls, the <a
href="@@track-height">track height</a> must be increased beyond the default
height. MIDI tracks will show only a few of the control elements when there
is insufficient vertical space. Further, the External MIDI Device and
External Device Mode comboboxes will <strong>not</strong> appear if there is
a synth plugin on the track that comes with an associated <a
href="@@patch-change#midnam">MIDNAM</a>.
</p>
<h2>The Scroomer</h2>
<p>
The Scroomer performs a couple of functions:
The Scroomer performs the following functions:
</p>
<ul>
<li>The scrollbar controls the range of pitches that are visible on the
track, as visualized by the piano keyboard. Dragging the body of the scrollbar up
and down displays higher or lower pitches.</li>
<li>Dragging the scrollbar handles zooms in and out and increases or decreases the
range of visible pitches.</li>
track, as visualized by the piano keyboard. Dragging the body of the
scrollbar up and down displays higher or lower pitches.</li>
<li>Dragging the scrollbar handles zooms in and out and increases or
decreases the range of visible pitches.</li>
<li>Double clicking the scrollbar auto-adjusts the zooms to make the range of
visible pitches fit the actual content of the track.</li>
visible pitches fit the actual content of the track.</li>
<li>Clicking on the piano plays the corresponding MIDI note for reference.</li>
<li><kbd class="mouse mod3">left</kbd> clicking on a note adds the note to the
selection (for all regions on the track). See <a href="@@note-selection">Note
@ -50,61 +56,93 @@
only the note.</li>
</ul>
<h2>Channel and patch selection</h2>
<h2>Channel and Patch Selection</h2>
<h3>The Channel Selector</h3>
<figure class="right">
<img class="mini" src="/images/midi_channel_control.png" alt="The MIDI channel control window">
<figcaption>
The MIDI channel control window
</figcaption>
<img src="/images/midi-chan-sel-dlg.png" alt="The MIDI channel control window">
<figcaption class="center">The MIDI channel control window.</figcaption>
</figure>
<p>
A MIDI track's data may span any number of the 16 available MIDI channels, and sometimes it is
useful to view only a subset of those channels; different instruments may,
for example, be put on different channels. In the context menu (<kbd class="mouse">right</kbd> click),
the <kbd class="menu">Channel Selector</kbd> allows to control the <dfn>MIDI channel</dfn>(s)
that will be visible in the editor.
A MIDI track's data may utilize any number of the 16 available <dfn>MIDI channels</dfn>, and it is useful to be able to filter out a subset of those or force the input or output to utilize only certain channels. The Channel Selector dialog allows for filtering or modification of both the input and output of any given MIDI track.
</p>
<p>
This window also gives control over which channel(s) will be recorded, and which will be played back, choosing between:
The Channel Selector dialog is activated by <kbd class="mouse">right</kbd>-clicking on a MIDI track's header and selecting <kbd class="menu">Channel Selector...</kbd> from the menu that appears. Filtering or modification of Inbound MIDI events for the given MIDI track is done by selecting among:
</p>
<ul>
<li>All channels</li>
<li>Only selected channels &mdash;Ardour then proposes to choose amongst the 16 channels which are to be recorded/played</li>
<li>Force all to one channel &mdash;Ardour then 'routes' all the channels to one user selectable channel.</li>
<li><kbd class=menu>Record only selected channels</kbd></li>
<li><kbd class=menu>Force all channels to 1 channel</kbd></li>
</ul>
<p class="note">
Selecting <kbd class=menu>Record all channels</kbd> does no filtering of inbound MIDI events.
</p>
<p>
If simple filtering of incoming MIDI events is desired, <kbd class=menu>Record only selected channels</kbd> should be selected. A 1-by-16 grid of squares with numbers in them will become sensitive to mouse clicks, and the desired channels to be allowed through the filter can then be selected by clicking on them. Channels that are allowed to pass through will be highlighted in green.
</p>
<p>
<kbd class=menu>Force all channels to 1 channel</kbd> will rewrite the channel number of all incoming events of the selected MIDI track to whichever channel is highlighted in the 1-by-16 grid of squares. When this option is chosen, one and only one channel can be selected.
</p>
<p>
Filtering or modification of outbound MIDI events is done by selecting among:
</p>
<ul>
<li><kbd class=menu>Play only selected channels</kbd></li>
<li><kbd class=menu>Use a single fixed channel for all playback</kbd></li>
</ul>
<p class="note">
Selecting <kbd class=menu>Playback all channels</kbd> does no filtering of outbound MIDI events.
</p>
<p>
Simple filtering of outgoing MIDI events is done similarly to simple filtering of incoming MIDI events, and is done by selecting <kbd class=menu>Play only selected channels</kbd>. Also similarly to the incoming case, <kbd class=menu>Use a single fixed channel for all playback</kbd> will rewrite the channel number of all outgoing events of the selected MIDI track to whichever channel is selected.
</p>
<p>
When either <kbd class=menu>Record only selected channels</kbd> or <kbd class=menu>Playback only selected channels</kbd> is selected, a group of three buttons, each appearing below their respective 1-by-16 grids, will become sensitive to mouse clicks. They perform the following functions:
</p>
<table>
<tr>
<th>All</th>
<td>Selects all the channels in the 1-by-16 grid above it; all the squares become lit with green</td>
</tr>
<tr>
<th>None</th>
<td>Deselects all the channels in the 1-by-16 grid above it; all the squares become unlit</td>
</tr>
<tr>
<th>Invert</th>
<td>Any channel in the 1-by-16 grid that is lit green becomes unlit, and any unlit channel becomes lit with green</td>
</tr>
</table>
<h3 class="clear">The Patch Selector</h3>
<figure class="left">
<img class="mini" src="/images/patch_selector.png" alt="The Patch Selector window">
<figcaption>
The Patch Selector window
</figcaption>
<img class="mini" src="/images/midi-patch-selector.png" alt="The Patch Selector window">
<figcaption class="center">The Patch Selector window.</figcaption>
</figure>
<a href="@@patch-change"></a>
<p>
The Patch Selector window is an easy way to set which instrument will be used on any of the MIDI channels.
Although patches can be changed at any time using a <a href="@@patch-change">patch change</a>, this dialog
provides an easy and convenient way to preview patches in software and hardware instruments. It
integrates fully with Ardour's support for MIDNAM (patch definition files), so Ardour can display named programs/patches
for both General MIDI synths and those with MIDNAM files.
</p>
<p>
The window itself makes it easy to choose a channel, a bank number, optionally choosing a bank number through its <dfn title="Most Significant Byte">MSB</dfn>
and <dfn title="Least Significant Byte">LSB</dfn> numbers (CC#00 and CC#32) for large banks, then choosing an instrument.
</p>
<p>
The keyboard at the bottom of the window allows for a quick preview of the selected instrument, either automatically
(using the buttons on top of the keyboard) or manually by either clicking a note or using the computer keyboard as a
piano keyboard.
The Patch Selector window is an easy way to set which instrument will be used on any of the MIDI channels. Although patches can be changed at any time using a <a href="@@patch-change">patch change</a>, this dialog provides an easy and convenient way to preview patches in software and hardware instruments. It integrates fully with Ardour's support for MIDNAM (patch definition files), so Ardour can display named programs/patches for both General MIDI synths and those with MIDNAM files.
</p>
<p>
To edit the contents of a MIDI track see <a href="@@edit-midi">MIDI Editing</a>.
The window itself makes it easy to choose a channel, a bank number, optionally choosing a bank number through its <dfn title="Most Significant Byte">MSB</dfn> and <dfn title="Least Significant Byte">LSB</dfn> numbers (CC#00 and CC#32) for large banks, then choosing an instrument.
</p>
<p>
The keyboard at the bottom of the window allows for a quick preview of the selected instrument, either automatically (using the buttons on top of the keyboard) or manually by either clicking a note or using the computer keyboard as a piano keyboard.
</p>

40
include/midnam-ref.html Normal file
View File

@ -0,0 +1,40 @@
<p class=fixme>Add information of how these files are defined instead of telling the user to go modify an existing file, also, remove the &ldquo;you&rdquo; language!</p>
<h2>Adding a custom MIDNAM file</h2>
<p>
MIDNAM files are <abbr title="eXtensible Markup Language">XML</abbr>, and can be edited using any text editor. When doing so, please ensure to change the "Model" of the device, as Ardour will only load each model once (i.e. it will skip files, if there are clashes).
</p>
<p>
After you have done modifications to a file, it is a good idea to validate it. This can be done using the tool <em>xmllint</em> as shown below:
</p>
<pre><code class="bash">$ xmllint --valid --noout myfile.midnam
$ wget http://www.midi.org/dtds/MIDINameDocument10.dtd
$ xmllint --dtdvalid MIDINameDocument10.dtd myfile.midnam
</code></pre>
<p>
Once you are satisfied with your file, you have to put it at a location where Ardour picks it up. The best place would be the (hidden) directory <a href="@@files-and-directories-ardour-knows-about">Ardour configuration directory</a> subdirectory patchfiles. in your home-folder. Should the sub-directory <em>patchfiles</em> not exist yet, just create it. The path and file-names are case-sensitive. The file should end with "<em>.midnam</em>".
</p>
<p>
After restarting Ardour, hit the small Log-button in the upper right corner of the main window. It should say something like (this is Linux, MacOS or Windows will be different):
</p>
<pre>[INFO]: Loading 3 MIDI patches from /home/username/.config/ardour5/patchfiles</pre>
<p>
The added device should now show up in the dropdown mentioned in the previous paragraph.
</p>
<p>
Should the MIDNAM-file be useful for the general public, it would be nice to share it: Fork the Ardour-project on <a href="https://github.com/Ardour/ardour">gitHub</a> by hitting the "Fork"-Button. Go to the <a>patchfiles</a>-directory (and read the README).
</p>
<p>
You can upload the file using the Web-Interface. Be sure to select "<em>Create a new branch for this commit and start a pull request</em>".
</p>

View File

@ -1,18 +1,29 @@
<p>
While in <a href="@@add-new-notes">note edit</a> mode, selected notes can be
cut and paste as in most software, that is:
While in <a href="@@toolbox">Internal Edit Mode</a>, selected notes can be
cut, copied, pasted, or deleted using the following keyboard shortcuts:
<p>
<ul>
<li>cut: <kbd class="mod1">x</kbd></li>
<li>copy: <kbd class="mod1">c</kbd></li>
<li>delete: <kbd>Delete</kbd></li>
<li>paste: <kbd class="mod1">v</kbd>.</li>
</ul>
<table>
<tr>
<th>Cut</th>
<td><kbd class="mod1">x</kbd></td>
</tr>
<tr>
<th>Copy</th>
<td><kbd class="mod1">c</kbd></td>
</tr>
<tr>
<th>Paste</th>
<td><kbd class="mod1">v</kbd></td>
</tr>
<tr>
<th>Delete</th>
<td><kbd>delete</kbd></td>
</tr>
</table>
<p>
These operations use the same keyboard shortcuts as most editing software does,
and as Ardour uses for regions. Obviously, the paste operation only works if a
cut or copy operation has happened beforehand.
<p class="note">
Pasted notes will appear, in the region they were cut from, at the <a href="@@edit-point-control">Edit Point</a>.
</p>

View File

@ -1,38 +1,35 @@
<h2>Navigating/Selecting notes with the keyboard</h2>
<p>
<kbd>tab</kbd> selects the next note in a MIDI region, while <kbd
class="mod1">tab</kbd> selects the previous note. Holding down the <kbd
class="mod3"></kbd> key as well prevents previously visited notes from being
deselected.
</p>
<h2>Selecting notes with the mouse</h2>
<p>
While in Draw mode or Internal Edit mode, any note can be clicked to select
it. Once a note has been selected, <kbd class="mouse
mod3">Left</kbd>-clicking on another selects all notes between them. Adding
or removing a note to/from the selection is done by <kbd class="mouse
mod1">Left</kbd> clicking it.
</p>
<p>
In any mode, <kbd class="mod3 mouse">left</kbd> clicking on a note on the
Scroomer (the piano header of the track, see <a
href="@@midi-track-controls">MIDI Track Controls</a>) will add all
occurrences of that note to the selection, while <kbd
class="mouse">middle</kbd> clicking will only select/deselect all occurences
of that note, clearing the selection. These Scroomer selections works on all
MIDI regions of the track at once.
While in <a href="@@toolbox">Object Mode</a>, any note can be clicked on to select it. Once a note has been selected, <kbd class="mouse mod3">left</kbd>-clicking on another note selects all notes between the first note selected and the second one. Adding or removing a note to or from the selection is done by <kbd class="mouse mod1">left</kbd>-clicking it. Clicking and dragging outside of a note will <dfn>rubberband select</dfn> any notes enclosed by the selection rectangle; holding down the <kbd class="mod3n"></kbd> key will prevent any previously selected notes from being deselected.
</p>
<p>
In Internal Edit mode only, <kbd class="mouse">left</kbd> clicking and dragging
outside of a note <dfn>rubberband selects</dfn> a series of notes.
<kbd class="mod3n"></kbd> rubberband selecting adds the notes to the selection.
In any mode, <kbd class="mod3 mouse">left</kbd>-clicking on a note on the
Scroomer (the piano header of the track, see <a
href="@@midi-track-controls">MIDI Track Controls</a>) will add all
occurrences of that note to the selection, while <kbd
class="mouse">middle</kbd>-clicking will only select/deselect all occurances
of that note, clearing the previous selection. Scroomer selections work on
all MIDI regions of a track at once.
</p>
<h2>Selecting/navigating note-by-note</h2>
<p>
<kbd>Tab</kbd> selects the next note as defined by their starting time.
<kbd class="mod1">Tab</kbd> selects the previous note. <kbd class="mod3">Tab</kbd>
or <kbd class="mod13">Tab</kbd> adds the next/previous note to the selection.
</p>
<h2>Listening to Selected Notes</h2>
<h2>Listening to selected notes</h2>
<p>
If <kbd class="menu">Edit &gt; Preferences &gt; MIDI &gt; Sound MIDI notes
as they are selected in the editor</kbd> is enabled, Ardour will send a pair of
NoteOn/NoteOff messages through the track, which will typically allow to
hear each note as it is selected.
If <kbd class="menu">Edit &gt; Preferences &gt; MIDI &gt; Sound MIDI notes as
they are selected</kbd> is enabled, Ardour will send a pair of NoteOn/NoteOff
messages through the track as notes are selected. Assuming there is an
appropriate device or synthesizer attached to the track, these should be
audible.
</p>

View File

@ -1,8 +1,8 @@
<p>
The <code>/jog</code> command will have a different affect depending
on which jog mode is selected. The jog system has two commands and
gives feedback of the mode chosen.
The <code>/jog</code> command will have a different affect depending
on which jog mode is selected. The jog system has two commands and
gives feedback of the mode chosen.
</p>
<table class="dl">
@ -38,18 +38,20 @@
<li>7 Bank, Moves the current bank left or right by one bank.</li>
</ul>
</p>
<p>
The jog mode may be set using a slider with 0 to 7 limits, a group of switches
or radio buttons. What works in any situation will depend on the controller.
The jog mode may be set using a slider with 0 to 7 limits, a group of switches
or radio buttons. What works in any situation will depend on the controller.
</p>
<h2 id="scrub">Scrub</h2>
<p>
Scrub deserves special mention. In an ideal world, scrub would be jog with sound.
However, Ardour does not have that functionality yet. So scrub starts the transport
rolling at either 50% or 100% depending on how fast the jog wheel is turned. The
position of the last tick is always saved and if no more ticks are received, the
transport is located there when stopped at time out. If the jog wheel gives a value
of 0 when released the transport stops at the location the value 0 is sent.
Scrub deserves special mention. In an ideal world, scrub would be jog with sound.
However, Ardour does not have that functionality yet. So scrub starts the transport
rolling at either 50% or 100% depending on how fast the jog wheel is turned. The
position of the last tick is always saved and if no more ticks are received, the
transport is located there when stopped at time out. If the jog wheel gives a value
of 0 when released the transport stops at the location the value 0 is sent.
</p>

View File

@ -1,110 +1,91 @@
<figure class="right">
<img src="/images/patch_change.png" alt="A patch change in a MIDI region"/>
<figcaption>A patch change in a MIDI region</figcaption>
<img src="/images/patch_change.png" alt="A patch change in a MIDI region"/>
<figcaption class="center">A patch change in a MIDI region</figcaption>
</figure>
<p>
A <dfn>patch change</dfn> is Ardour's description for a combination
of MIDI program change and bank select messages, that (typically)
instruct a synthesizer or sampler to select a different sound to use
on a particular channel.
</p>
<p>
Patch changes are shown within MIDI regions as small rectangles or
<dfn>flags</dfn>, with a vertical line showing where in the region
(hence "when") this patch change happens.
A <dfn>Patch Change</dfn> is Ardour's description for a combination of MIDI
program change and bank select messages, that typically instruct a
synthesizer or sampler to select a sound to use on any given channel. Patch
changes are shown within MIDI regions as small rectangles or
<dfn>flags</dfn>, with a vertical line showing where in the region the patch
change will occur.
</p>
<h2>Inserting Patch Changes</h2>
<figure class="right">
<img src="/images/region-midi-r-click-menu.png" alt="Region > MIDI context menu"/>
<figcaption class="center">MIDI context menu</figcaption>
</figure>
<figure class="right">
<img src="/images/patch-change-dlg.png" alt="Patch Change dialog"/>
<figcaption class="center">Patch Change dialog</figcaption>
</figure>
<figure class="right">
<img src="/images/patch-r-click-menu.png" alt="Patch Change context menu"/>
<figcaption class="center">Patch Change context menu</figcaption>
</figure>
<p>
To insert a patch change, the <a href="@@edit-point-control">edit point</a>
should be located where the patch change should be (within an existing MIDI
region). When <kbd class="mouse">right</kbd> clicking, and from the MIDI
region's context menu, selecting <kbd class="menu">MIDI &gt; Insert Patch
Change</kbd>, a dialog appears allowing to set the bank and program values.
A patch change is inserted by first ensuring that the mouse is in <a
href="@@toolbox">Grab Mode</a>, then <kbd class="mouse">right</kbd>-clicking
on the MIDI region where the patch changed is desired, then selecting <kbd
class="menu">&lt;Region Name&gt; &gt; MIDI &gt; Insert Patch Change...</kbd>.
The desired patch is then chosen from the dialog that appears.
<p>
<p class="note">
Inserted patch changes always appear in the selected region at the <a
href="@@edit-point-control">Edit Point</a>.
</p>
<h2>Modifying Patch Changes</h2>
<p>
Context-clicking on a patch change will bring up the same dialog that
was used to create it, allowing to modify the program and/or bank
numbers.
</p>
<p>
The mouse wheel can also be used: <kbd class="mouse">&uArr;</kbd>/<kbd
class="mouse">&dArr;</kbd> on the patch change will alter the program
number, <kbd class="mouse mod1">&uArr;</kbd>/<kbd
class="mouse mod1">&dArr;</kbd> will modify the bank number.
A patch change can be modified by <kbd class="mouse">right</kbd>-clicking on
it, then selecting the desired patch from the menu that appears. A patch
change can also be modified by hovering the mouse pointer over the patch
change to be modified and moving the mouse wheel until the desired program
number is selected. The bank number can be modified similarly by holding down
the <kbd class="mod3"></kbd> key while moving the mouse wheel until the
desired bank is selected.
</p>
<h2>Moving Patch Changes</h2>
<p>
Just <kbd class="mouse">Left</kbd>-dragging the patch change moves it
around.
A patch change can be moved, within the region in which it resides, by <kbd
class="mouse">left</kbd>-clicking it and dragging it to the desired location.
</p>
<h2>Removing Patch Changes</h2>
<p>
Pressing <kbd>Del</kbd> with the mouse pointer into the rectangular area, or
using the <kbd class="menu">delete</kbd> mouse button operation will remove the
patch change (the operation can be undone).
A patch change can be removed by holding down the <kbd class="mod3"></kbd> key
and then <kbd class="mouse">right</kbd>-clicking on it.
</p>
<h2>Names for Patch Numbers: MIDNAM files</h2>
<h2 id="midnam">Names for Patch Numbers: MIDNAM files</h2>
<p>
MIDNAM files assign human-redable names to the "coordinates" (MSB, LSB, pc) of
instruments and controls of MIDI-devices. A number of MIDNAM files come already pre-bundled
with Ardour. Should this not be the case for your device, you can add your own (see below).
MIDNAM files assign human-readable names to the "sound coordinates" (Program
Change, Bank Select) of MIDI synthesizers and devices. A number of MIDNAM
files come bundled with Ardour; if the MIDNAM for a device is not included
with Ardour, <a href="@@midnam-ref">a custom MIDNAM file can be created</a>
for device in question.
</p>
<h3>Selecting a device</h3>
<p>
For the proper names to show up in the "Patch Selector"-dialog, you have to assign a
device to your current track. To do so, hover the lower border of the tracks header
(the mouse-cursor will change to a "resize-cursor") and expand it.
You'll see dropdown menus. Select your device in the menu.
Selecting a MIDNAM is only possible if there is no MIDI synth on the track in
question or the MIDI synth does not have a MIDNAM associated with it. In this
case, it is possible to select the desired MIDNAM from a combobox in the MIDI
track's header, usually directly below the track's fader. See <a
href="@@midi-track-controls">MIDI Track Controls</a> for more details.
</p>
<h3>Adding a custom MIDNAM-file</h3>
<p>
MIDNAM-files are XML-Files. You can edit them using your favorite text-editor. When
doing so, please ensure to change the "Model" of the device, as Ardour will only load
each model once (i.e. it will skip files, if there are clashes).
</p>
<p>
After you have done modifications to a file, it is a good idea to validate it. This can
be done using the tool <i>xmllint</i> as shown below:
</p>
<pre><code class="bash">
$ xmllint --valid --noout myfile.midnam
$ wget http://www.midi.org/dtds/MIDINameDocument10.dtd
$ xmllint --dtdvalid MIDINameDocument10.dtd myfile.midnam
</code></pre>
<p>
Once you are satisfied with your file, you have to put it at a location where Ardour
picks it up. The best place would be the (hidden) directory
<a href="@@files-and-directories-ardour-knows-about">Ardour configuration directory</a>
subdirectory patchfiles.
in your home-folder. Should the sub-directory <i>patchfiles</i> not exist yet, just
create it. The path and file-names are case-sensitive. The file should end with
"<i>.midnam</i>".
</p>
<p>
After restarting Ardour, hit the small Log-button in the upper right corner of the
main window. It should say something like
(this is Linux, Macos or Windows will be different):
</p>
<pre>[INFO]: Loading 3 MIDI patches from /home/username/.config/ardour5/patchfiles</pre>
<p>
The added device should now show up in the dropdown mentioned in the previous paragraph.
</p>
<p>
Should the MIDNAM-file be useful for the general public, it would be nice to share it:
Fork the Ardour-project on <a href="https://github.com/Ardour/ardour">gitHub</a> by
hitting the "Fork"-Button. Go to the <a>patchfiles</a>-directory (and read the README).
</p>
<p>
You can upload the file using the Web-Interface. Be sure to select
"<i>Create a new branch for this commit and start a pull request</i>".
</p>

View File

@ -1,8 +1,7 @@
<figure class="right">
<img src="/images/session_properties.png" alt="The Session Properties window">
<figcaption>
The Session Properties window
</figcaption>
<img src="/images/session_properties.png" alt="The Session Properties window">
<figcaption>The Session Properties window</figcaption>
</figure>
<p>
@ -14,24 +13,21 @@
</p>
<p>
Preferences are grouped by category:
Preferences are grouped by category:
</p>
<ul>
<li><a href="#properties-timecode">Timecode</a></li>
<li><a href="#properties-sync">Sync</a></li>
<li><a href="#properties-fade">Fades</a></li>
<li><a href="#properties-media">Media</a></li>
<li><a href="#properties-locations">Locations</a></li>
<li><a href="#properties-filenames">Filenames</a></li>
<li><a href="#properties-monitoring">Monitoring</a></li>
<li><a href="#properties-meterbridge">Meterbridge</a></li>
<li><a href="#properties-misc">Misc</a></li>
<li><a href="#properties-timecode">Timecode</a></li>
<li><a href="#properties-sync">Sync</a></li>
<li><a href="#properties-fade">Fades</a></li>
<li><a href="#properties-media">Media</a></li>
<li><a href="#properties-locations">Locations</a></li>
<li><a href="#properties-filenames">Filenames</a></li>
<li><a href="#properties-monitoring">Monitoring</a></li>
<li><a href="#properties-meterbridge">Meterbridge</a></li>
<li><a href="#properties-misc">Misc</a></li>
</ul>
<h2 id="properties-timecode">Timecode</h2>
<ul>

View File

@ -1,27 +1,25 @@
<p class="fixme">step_editing.bindings doesn't seem to exist anywhere discoverable by an average user; also, what does "Insert Snap-Rest" mean? And what key is the "bar" key and why doesn't it work?</p>
<p>
Editing MIDI can be a tedious task. Ardour allows using a connected
MIDI device like a music keyboard or pad controller, or use the mouse.
A third option, providing fine-grain control, precision and speed of entry
comes from using a custom note entry dialog.
</p>
<p>
The step entry dialog is accessed via a <kbd class="mouse">right click</kbd>
context menu on the <kbd>rec-enable</kbd> button, because step entry is related
to <em>recording</em> MIDI data. Step editing and recording MIDI via the
track's MIDI port cannot happen simultaneously, so the track should <em>not</em>
be rec-armed.
Entering notes in Ardour can be done by using a connected MIDI device like a MIDI keyboard or pad controller, or by using the mouse. A third option, which provides for fine-grained control, precision and speed comes from using Ardour's Step Entry dialog.
</p>
<figure>
<img src="/images/step_entry.png" alt="Ardour's Step Entry dialog">
<figcaption>
Ardour's Step Entry dialog
</figcaption>
<img class="fit" src="/images/step_entry.png" alt="Ardour's Step Entry dialog">
<figcaption class="center">Ardour's Step Entry dialog.</figcaption>
</figure>
<p>
The dialog (quite closely modelled on Logic's) contains:
The step entry dialog is accessed by <kbd class="mouse">right</kbd>-clicking on the <kbd class="menu" style="color:red;">&#9679;</kbd> (Rec-Enable) button of the <a href="@@midi-track-controls">MIDI track</a> to be edited and selecting <kbd class="menu">Step Entry</kbd> from the menu that appears.
</p>
<p class="note">
Step editing and recording MIDI via the track's MIDI port cannot happen simultaneously.
</p>
<p>
The dialog (closely modelled on Logic's) contains:
</p>
<ul>
@ -37,7 +35,7 @@
<li>Insert a rest of the current grid step size</li>
<li>Move back to the last inserted note</li>
<li>Move forward to the next beat, or bar</li>
<li>Move forward to the edit point</li>
<li>Move to the edit point</li>
</ul>
</li>
<li>Dynamics controls from pianississimo to fortississimo</li>
@ -50,58 +48,59 @@
</ul>
<p>
More or less all actions in the step entry dialog can be driven directly from
the keyboard, so that moving back and forth from the keyboard to the mouse is
not necessary even for complex data insertion.
Almost all actions in the step entry dialog can be driven directly from the
keyboard, so that moving back and forth from the keyboard to the mouse is
typically not necessary&mdash;even for complex data entry.
</p>
<p>
The default key bindings for this (configured in <tt>step_editing.bindings</tt>) are:
</p>
<table>
<tr><td><kbd>grave</kbd></td><td>octave 0</td></tr>
<tr><td><kbd>1</kbd> to <kbd>9</kbd></td><td>octave 1 to 9</td></tr>
<tr><td><kbd>0</kbd></td><td>octave 10</td></tr>
<tr><td><kbd>`</kbd> (grave accent)</td><td>Set octave 0</td></tr>
<tr><td><kbd>1</kbd> to <kbd>9</kbd></td><td>Set octave 1 to 9</td></tr>
<tr><td><kbd>0</kbd></td><td>Set octave 10</td></tr>
<tr><td><kbd>F1</kbd></td><td>note length whole</td></tr>
<tr><td><kbd>F2</kbd></td><td>note length half</td></tr>
<tr><td><kbd>F3</kbd></td><td>note length third</td></tr>
<tr><td><kbd>F4</kbd> to <kbd>F8</kbd></td><td>note length quarter to sixtyfourth</td></tr>
<tr><td><kbd>f1</kbd></td><td>Set note length whole</td></tr>
<tr><td><kbd>f2</kbd></td><td>Set note length half</td></tr>
<tr><td><kbd>f3</kbd></td><td>Set note length third</td></tr>
<tr><td><kbd>f4</kbd> to <kbd>f8</kbd></td><td>Set note length quarter to sixtyfourth</td></tr>
<tr><td><kbd>a</kbd></td><td>insert C</td></tr>
<tr><td><kbd>w</kbd></td><td>insert C &sharp;</td></tr>
<tr><td><kbd>s</kbd></td><td>insert D</td></tr>
<tr><td><kbd>e</kbd></td><td>insert D &sharp;</td></tr>
<tr><td><kbd>d</kbd></td><td>insert E</td></tr>
<tr><td><kbd>f</kbd></td><td>insert F</td></tr>
<tr><td><kbd>t</kbd></td><td>insert F &sharp;</td></tr>
<tr><td><kbd>g</kbd></td><td>insert G</td></tr>
<tr><td><kbd>y</kbd></td><td>insert G &sharp;</td></tr>
<tr><td><kbd>h</kbd></td><td>insert A</td></tr>
<tr><td><kbd>u</kbd></td><td>insert A &sharp;</td></tr>
<tr><td><kbd>j</kbd></td><td>insert B</td></tr>
<tr><td><kbd>a</kbd></td><td>Insert C</td></tr>
<tr><td><kbd>w</kbd></td><td>Insert C&sharp;</td></tr>
<tr><td><kbd>s</kbd></td><td>Insert D</td></tr>
<tr><td><kbd>e</kbd></td><td>Insert D&sharp;</td></tr>
<tr><td><kbd>d</kbd></td><td>Insert E</td></tr>
<tr><td><kbd>f</kbd></td><td>Insert F</td></tr>
<tr><td><kbd>t</kbd></td><td>Insert F&sharp;</td></tr>
<tr><td><kbd>g</kbd></td><td>Insert G</td></tr>
<tr><td><kbd>y</kbd></td><td>Insert G&sharp;</td></tr>
<tr><td><kbd>h</kbd></td><td>Insert A</td></tr>
<tr><td><kbd>u</kbd></td><td>Insert A&sharp;</td></tr>
<tr><td><kbd>j</kbd></td><td>Insert B</td></tr>
<tr><td><kbd>Tab</kbd></td><td>insert rest</td></tr>
<tr><td><kbd>Primary Tab</kbd></td><td>insert snap rest</td></tr>
<tr><td><kbd>BackSpace</kbd></td><td>back</td></tr>
<tr><td><kbd>tab</kbd></td><td>Insert rest</td></tr>
<tr><td><kbd class="mod1">tab</kbd></td><td>Insert snap rest (?)</td></tr>
<tr><td><kbd>backspace</kbd></td><td>Set insert cursor back one note length</td></tr>
<tr><td><kbd>z</kbd></td><td>note velocity &#119183;&#119183;&#119183;</td></tr>
<tr><td><kbd>x</kbd></td><td>note velocity &#119183;&#119183;</td></tr>
<tr><td><kbd>c</kbd></td><td>note velocity &#119183;</td></tr>
<tr><td><kbd>v</kbd></td><td>note velocity &#119184;&#119183;</td></tr>
<tr><td><kbd>b</kbd></td><td>note velocity &#119184;&#119185;</td></tr>
<tr><td><kbd>n</kbd></td><td>note velocity &#119185;</td></tr>
<tr><td><kbd>m</kbd></td><td>note velocity &#119185;&#119185;</td></tr>
<tr><td><kbd>comma</kbd></td><td>note velocity &#119185;&#119185;&#119185;</td></tr>
<tr><td><kbd>z</kbd></td><td>Set note velocity &#119183;&#119183;&#119183;</td></tr>
<tr><td><kbd>x</kbd></td><td>Set note velocity &#119183;&#119183;</td></tr>
<tr><td><kbd>c</kbd></td><td>Set note velocity &#119183;</td></tr>
<tr><td><kbd>v</kbd></td><td>Set note velocity &#119184;&#119183;</td></tr>
<tr><td><kbd>b</kbd></td><td>Set note velocity &#119184;&#119185;</td></tr>
<tr><td><kbd>n</kbd></td><td>Set note velocity &#119185;</td></tr>
<tr><td><kbd>m</kbd></td><td>Set note velocity &#119185;&#119185;</td></tr>
<tr><td><kbd>,</kbd> (comma)</td><td>Set note velocity &#119185;&#119185;&#119185;</td></tr>
<tr><td><kbd>Up</kbd></td><td>next note velocity</td></tr>
<tr><td><kbd>Down</kbd></td><td>prev note velocity</td></tr>
<tr><td><kbd>Primary Up</kbd></td><td>next note length</td></tr>
<tr><td><kbd>Primary Down</kbd></td><td>prev note length</td></tr>
<tr><td><kbd>apostrophe</kbd></td><td>toggle triplet</td></tr>
<tr><td><kbd>period</kbd></td><td>toggle dotted</td></tr>
<tr><td><kbd>Primary period</kbd></td><td>no dotted</td></tr>
<tr><td><kbd>bar</kbd></td><td>toggle chord</td></tr>
<tr><td><kbd>&uarr;</kbd></td><td>Set next note velocity</td></tr>
<tr><td><kbd>&darr;</kbd></td><td>Set prev note velocity</td></tr>
<tr><td><kbd class="mod1">&uarr;</kbd></td><td>Set next note length</td></tr>
<tr><td><kbd class="mod1">&darr;</kbd></td><td>Set prev note length</td></tr>
<tr><td><kbd>'</kbd></td><td>Toggle triplet</td></tr>
<tr><td><kbd>.</kbd></td><td>Set single dotted</td></tr>
<tr><td><kbd class="mod1">.</kbd></td><td>Clear dotted</td></tr>
<tr><td><kbd>bar (?)</kbd></td><td>Toggle chord</td></tr>
</table>

View File

@ -98,10 +98,12 @@
massively reduces the rate at which data can be read from the disk. Avoid
this.</td></tr>
</table>
<p>
Richard Ames presents a long (28
minute) <a href="https://www.youtube.com/watch?v=GUsLLEkswzE">video</a>
that is very helpful if you want to understand these issues in more
depth. It is a little bit Windows-centric, but the explanations to
depth. It is a little bit Windows-centric, but the explanations apply to
all types of computers and operating systems.
</p>

View File

@ -1,16 +1,16 @@
<p class="fixme">Requires sanity checking; the section on Internal Edit mode is wrong in a few places. It seems the description of Audition Mode is incorrect with respect to scrubbing; it seems to work but not in any predictable manner.</p>
<figure>
<img src="/images/toolbar-tools.png" alt="Editor toolbar's tools, aka toolbox">
<figcaption>
Editor toolbar's tools, aka toolbox
</figcaption>
<img src="/images/toolbar-tools.png" alt="Editor toolbar's tools, aka toolbox">
<figcaption>Editor toolbar's tools, AKA toolbox.</figcaption>
</figure>
<h2>Global Edit mode</h2>
<p>
Ardour has a global <dfn>edit mode</dfn> selector at the left of the
Editing toolbar, which affect how regions are moved or copied:
Ardour has a global <dfn>Edit Mode</dfn> selector at the left side of the
Editing toolbar, which affects how regions are moved or copied:
</p>
<table class="dl">
@ -23,7 +23,7 @@
</table>
<p>
Ripple Edit mode provides the following conveniences:
Ripple Edit mode provides the following:
<ul>
<li>Deleting a range will move later regions to compensate for the deleted time</li>
<li>Deleting a region will move later regions to compensate for the deleted region's length</li>
@ -36,76 +36,100 @@
If <kbd class="menu">Snap To Grid</kbd> is enabled, then regions can
only move so that they align with locations determined by the current
snap settings (beats, or seconds, or other region boundaries, etc).
See <a href="@@grid-controls">Snap To the Grid</a>
for details.
See <a href="@@grid-controls">Snap To the Grid</a> for details.
</p>
<h2>The <em>Smart</em> switch</h2>
<h2>The <em>Smart</em> mode toggle switch</h2>
<p>
The <dfn>Smart Mode</dfn> button to the left of the mouse mode buttons
modifies the <dfn>Grab Mode</dfn>. When enabled, the mouse behaves as if it
is in "Range Mode" in the upper half of a region, and in "Grab Mode" in the
lower half. This allows avoiding constant switching between these two modes.
The <dfn>Smart Mode</dfn> toggle button (shortcut: <kbd>y</kbd>) to the left
of the mouse mode buttons modifies the behavior of <dfn>Grab Mode</dfn>: when
enabled, the mouse behaves as if it is in <dfn>Range Mode</dfn> in the upper
half of a region, while behaving as if it is in <dfn>Grab Mode</dfn> in the
lower half. This makes it possible to avoid constant switching between these
two modes.
</p>
<h2>Mouse Modes</h2>
<table class="dl">
<tr><th id="object">Grab Mode</th>
<td>The <dfn>Grab Mode</dfn> is used for selecting, moving, deleting and
copying objects. When in object mode, the mouse pointer appears as a hand
whenever it is over the track canvas or the rulers. The mouse can now be
used to select and perform operations on objects such as regions, markers etc.
This is the most common mode to work in, as it allows you to select and move regions,
as well as modify automation points on the automation tracks.</td></tr>
<p>
Editing <a href="@@working-with-regions">regions</a> and their contents is very complex and, by virtue of this, requires different <dfn>Mouse Modes</dfn> in order to be able to perform typical editing chores in a way that is powerful and makes sense.
</p>
<tr><th>Range Mode</th>
<td>When in <dfn>Range Mode</dfn>, the mouse pointer appears as a vertical line
whenever it is over the track canvas or the rulers. The mouse will now be
able to select a point or range of time. Time ranges can be selected over
one or several tracks, depending on the selection of your tracks.<br>
If none of your tracks are selected, the Range Tool will operate on all the
session track visualized in the Editor.<br>
If you want to edit only particular tracks, select them before you apply
the range tool.</td></tr>
<tr><th>Cut Tool Mode</th>
<td>When in <dfn>Cut Tool Mode</dfn>, the mouse pointer appears as a pair of scissors
whenever it is over the track canvas or the rulers. This tools allows to cut
any region into 2 regions at the mouse cursor, regardless of the Edit Point.<br>
If one or more track(s) is selected, then all the regions on these tracks will
be split at the mouse cursor position.<br>
If no track is selected, then only the region hovered by the mouse cursor will
be split.</td></tr>
<tr><th>Stretch Mode</th>
<td>When in <dfn>time fx</dfn> mode, the mouse pointer appears as a
distinctive expanding square symbol whenever it is over the track canvas or
the rulers. This mode is used to resize regions using a timestretch
algorithm. Click on an edge of a region of audio and drag it one way or the other to
stretch or shrink the region.</td></tr>
<tr><th>Audition Tool</th>
<td>Clicking a region using the <dfn>audition tool</dfn> will play this
region to the control room outputs.<br>
You can also <dfn>scrub</dfn> with this tool by clicking and dragging in
the direction you wish to listen. The amount you drag in one direction or
the other will determine the playback speed.</td></tr>
<tr><th>Draw Tool</th>
<td>When in <dfn>Draw Tool</dfn> mode, the mouse pointer will change to
a pencil. You can then click within an audio region to change the <dfn>gain
envelope</dfn> for that region. This curve is separate from fader automation
for individual tracks. It will remain locked to the region's time, so if the
region is moved, the region gain envelope is moved along with it.<br>
The draw tool works on automation too, allowing the creation and modification
of control points on the automation curves.<br>
Last, it is used on a MIDI region to edit the notes.</td></tr>
<tr><th>Internal/Region Edit Mode</th>
<td>When in <dfn>Internal Edit</dfn> mode, the mouse pointer will change to
cross-hairs. This tool acts on region gain and automation as the Draw tool.<br>
On a MIDI region, it allows to lasso-select multiple notes at a time.</td></tr>
<table>
<tr><th><strong>Mode</strong></th><td><strong>Keyboard Shortcut</strong></td></tr>
<tr><th>Grab</th><td><kbd>g</kbd></td></tr>
<tr><th>Range</th><td><kbd>r</kbd></td></tr>
<tr><th>Cut</th><td><kbd>c</kbd></td></tr>
<tr><th>Stretch</th><td><kbd>t</kbd></td></tr>
<tr><th>Audition</th><td>None</td></tr>
<tr><th>Draw</th><td><kbd>d</kbd></td></tr>
<tr><th>Internal Edit</th><td><kbd>e</kbd></td></tr>
</table>
<p class="note">
Changes to the mouse pointer only occur when hovering over the track canvas;
the mouse pointer <em>always</em> changes to a hand in the ruler area
regardless of what mode is selected, and always moves the <a
href="@@controlling-playback">playhead</a> to the position <kbd
class="mouse">left</kbd>-clicked on&mdash;as long as there is no marker or other tag under the mouse position clicked on.
</p>
<h3 id="object">Grab Mode</h3>
<p>
<dfn>Grab Mode</dfn> is used for selecting, moving, deleting and copying
objects. In this mode, the mouse pointer appears as a hand and can be used to select and perform various operations on objects such as regions, markers and etc. This is the most common mode to work in, as it allows the for selection and moving of <a href="@@working-with-regions">regions</a>, as well as the modification of control points in <a href="@@automation-lanes">automation lanes</a>.
</p>
<h3 id="range">Range Mode</h3>
<p>
In <dfn>Range Mode</dfn>, the mouse pointer appears as a vertical line; <kbd class="mouse">left</kbd>-clicking on the track canvas will display the time at the position clicked on. <kbd class="mouse">left</kbd>-clicking and dragging on the track canvas will create a time range for the track clicked and dragged on; adjacent tracks can be selected as well by dragging the mouse into them. Once a time range has been defined, it can be resized by <kbd class="mouse">left</kbd>-clicking on either the left-hand or right-hand side of the range and dragging the mouse to the desired position.
</p>
<h3 id="cut">Cut Tool Mode</h3>
<p>
In <dfn>Cut Tool Mode</dfn>, the mouse pointer appears as a pair of scissors and allows for the separation of any region into two distinct regions by <kbd class="mouse">left</kbd>-clicking at the desired point of separation. If more than one track is selected, then all the regions on the selected tracks will be split at the point clicked on. If no track is selected, then only the region hovered by the mouse cursor will be split.
</p>
<h3 id="stretch">Stretch Mode</h3>
<p>
In <dfn>Stretch Mode</dfn>, the mouse pointer appears as an expanding square symbol and is used to resize regions using a timestretch algorithm. Resizing a region is done by <kbd class="mouse">left</kbd>-clicking on the right-hand side of the region and dragging the edge to the desired position; once the button is released a <kbd class="menu">Time Stretch Audio</kbd> dialog will appear.
</p>
<h3 id="audition">Audition Mode</h3>
<p>
<kbd class="mouse">left</kbd>-clicking on a given region using <dfn>Audition Mode</dfn> will play the contents of that region (along with all other non-muted tracks). The regions can also be <dfn>scrubbed</dfn> by <kbd class="mouse">left</kbd>-clicking and dragging in the direction desired; the amount dragged in one direction or the other will determine the playback speed.
</p>
<h3 id="draw">Draw Mode</h3>
<p>
In <dfn>Draw Mode</dfn>, the mouse pointer will change to a pencil; the effect it will have depends on the type of track or region it is utilized in.
</p>
<p>
In an <a href="@@audio-track-controls">audio track</a>, a green line will appear in the region which is that region's <a href="@@gain-envelopes"><dfn>gain envelope</dfn></a>. <kbd class="mouse">left</kbd>-clicking anywhere in a given region between two existing <dfn>control points</dfn> will add one to the region at the X-coordinate clicked on with the Y-coordinate being on the line connecting the control points on either side of the new one. <kbd class="mouse">left</kbd>-clicking on a control point will allow it to be moved to any point in the region in between the control points that bound it on either side of itself. And finally, <kbd class="mouse">left</kbd>-clicking on a control point and pressing the <kbd>delete</kbd> key or holding down the <kbd class="mod3n"></kbd> key while <kbd class="mouse">right</kbd>-clicking on it will delete the control point.
</p>
<p>
In an <a href="@@automation-lanes">automation lane</a>, if any automation is defined in it, a green line connecting its control points will appear in the lane. Control points in the lane are manipulated in exactly the same way as they are in a region's gain envelope (see previous paragraph for details).
</p>
<p>
In a <a href="@@midi-track-controls">MIDI track</a>, if the mouse is <kbd class="mouse">left</kbd>-clicked in a part of the track that has no region, a region one bar long will be created. If the mouse is dragged after being <kbd class="mouse">left</kbd>-clicked in a part of the track that has no region, a region of arbitrary length will be created by releasing the mouse at the desired length.
l-click in region depends on note mode, sustained inserts note with length of snap grid(?) while percussive enters a diamond; l-click & drag draws note of arb. length in sustained while percussive draws a succession of diamonds in the dragged area, # & type depend on grid & divisions.
</p>
<h3 id="edit-internal">Internal Edit Mode</h3>
<p>
In <dfn>Internal Edit Mode</dfn>, the mouse pointer will change to
cross-hairs. This tool acts on region gain and automation as the Draw tool.
On a MIDI region, it allows to lasso-select multiple notes at a time.
</p>

View File

@ -1,12 +1,12 @@
<figure class=right>
<img src="/images/automation-menu1.png">
<figcaption class=center>The automation menu.</figcaption>
<figcaption class=center>The top level automation menu.</figcaption>
</figure>
<p>
To automate a parameter on a given track, click on the track's <kbd
class=menu>A</kbd> button and select a parameter to control from the menu
A parameter on a given track can be automated by clicking on the track's <kbd
class=menu>A</kbd> button and selecting a parameter to control from the menu
that appears. Once a parameter has been selected, an automation lane for that
parameter will appear beneath the track. The lane thus shown will be empty;
from here an automation curve must be defined.
@ -23,9 +23,9 @@
</p>
<ul>
<li>Record it using <kbd class=menu>Write</kbd> mode</li>
<li>Record it using <kbd class=menu>Touch</kbd> mode</li>
<li>Draw it using the mouse</li>
<li>Recording it using <kbd class=menu>Write</kbd> mode</li>
<li>Recording it using <kbd class=menu>Touch</kbd> mode</li>
<li>Drawing it using the mouse</li>
</ul>
<h3>Recording an Automation Curve Using Write Mode</h3>
@ -68,17 +68,17 @@
<h3>Drawing an Automation Curve Using the Mouse</h3>
<p>
In <dfn>Draw</dfn> mode, <dfn>control points</dfn> can be entered in the
automation lane by <kbd class=mouse>Left</kbd>-clicking in the lane at a
In <a href="@@toolbox"><dfn>Draw</dfn> mode</a>, <dfn>control points</dfn> can be entered in the
automation lane by <kbd class=mouse>left</kbd>-clicking in the lane at a
point where there is no existing control point.
</p>
<p>
Once added, a control point can be <kbd class=mouse>Left</kbd>-clicked and
dragged to a desired location. Hovering over a control point will show its
current level in dB. To remove a control point, <kbd
class=mouse>Left</kbd>-click it and press <kbd>Delete</kbd>, or <kbd
class=mod3n></kbd><kbd class=mouse>Right</kbd>-click on it.
Once added, a control point can be <kbd class=mouse>left</kbd>-clicked and
dragged to any desired location. Hovering over a control point will show its
current value. To remove a control point, <kbd class=mouse>left</kbd>-click
it and press <kbd>Delete</kbd>, or <kbd class=mod3n></kbd><kbd
class=mouse>right</kbd>-click on it.
</p>
<h2>Controlling the Track</h2>
@ -96,3 +96,16 @@
in <kbd class=menu>Play</kbd> mode.
</p>
<h3>Removing Automation</h3>
<figure class=right>
<img src="/images/automation-audio-r-click-menu.png">
<figcaption class=center>The automation lane context menu.</figcaption>
</figure>
<p>
Clearing the automation lane is done by <kbd
class="mouse">right</kbd>-clicking on the lane to be cleared, and selecting
<kbd class="menu">Clear</kbd> from the menu that appears.
</p>

View File

@ -64,7 +64,7 @@
or "vocals") to allow controlling the gain of all those tracks at once in the
mix while retaining their relative gain.<br>
VCAs are fed audio by <a href="@@control-masters-mixer-strips">assigning them</a>
to one or multiple track(s) or bus(ses).
to one or more tracks or busses.
</td></tr>
</table>

View File

@ -1,87 +1,95 @@
<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 powerful with the Transform tool.
</p>
<figure>
<img src="/images/MIDI_transform.png" alt="MIDI transformation">
<figcaption>MIDI transformation</figcaption>
<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&hellip;</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>
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>
In the picture above, the Transform tool has been used 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 its original velocity. So
three operations are applied:
To access the Transform tool, right click the MIDI region &gt;
<em>name_of_the_region</em> &gt; MIDI &gt; Transform&hellip;.
</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.
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 19.
</p>
<p>
The properties that can be computed are:
The parameters that can be transformed are:
</p>
<ul>
<li>note number (e.g. C2 is note number 24, C#2 is 25 and <a href="@@midi-notes-ref">so on</a>)</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:
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> 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>
<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:
The mathematical operators are:
</p>
<ul>
<li>+ (addition)</li>
<li>- (subtraction)</li>
<li>* (multiplication)</li>
<li>/ (euclidian division)</li>
<li>mod (remainder 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 class="note">
All these operations can be very handy, as long as there is a mathematical way
to achieve the targeted 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.
Keep in mind that 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>
<p>
Very interesting results can nevertheless be created, like humanizing
(randomizing the velocity, start time and duration of all the notes), creating
arpeggios, automating tedious tasks, transposing, etc.
</p>

View File

@ -633,6 +633,7 @@ part: chapter
---
title: Editor Tracks
link: track-controls
uri: ardours-interface/editor-tracks
part: chapter
---
@ -1294,10 +1295,9 @@ part: part
---
---
title: MIDI Editing
include: edit-midi.html
link: edit-midi
uri: working-with-midi
title: MIDI Overview
include: midi-overview.html
link: midi-overview
part: chapter
---
@ -1306,7 +1306,7 @@ title: Creating MIDI Tracks
include: create-midi-tracks.html
link: create-midi-tracks
uri: working-with-midi/create-midi-tracks
part: chapter
part: subchapter
---
---
@ -1314,6 +1314,14 @@ title: Creating MIDI Regions
include: create-midi-regions.html
link: create-midi-regions
uri: working-with-midi/create-midi-regions
part: subchapter
---
---
title: MIDI Editing
include: edit-midi.html
link: edit-midi
uri: working-with-midi
part: chapter
---
@ -1322,15 +1330,7 @@ title: Adding New Notes
include: add-new-notes.html
link: add-new-notes
uri: working-with-midi/add-new-notes
part: chapter
---
---
title: Changing Note Properties
include: change-note-properties.html
link: change-note-properties
uri: editing-and-arranging/editing-midi/changing-note-properties
part: chapter
part: subchapter
---
---
@ -1339,15 +1339,7 @@ menu_title: Overlapping Notes
include: handling-overlapping-notes.html
link: handling-overlapping-notes
uri: working-with-midi/handle-overlapping-notes
part: chapter
---
---
title: Note Cut, Copy and Paste
include: note-cut-copy-and-paste.html
link: note-cut-copy-and-paste
uri: working-with-midi/note-cut-copy-and-paste-
part: chapter
part: section
---
---
@ -1355,23 +1347,23 @@ title: Note Selection
include: note-selection.html
link: note-selection
uri: editing-and-arranging/edit-midi/note-selection
part: chapter
part: subchapter
---
---
title: Quantizing MIDI
include: quantize-midi.html
link: quantize-midi
uri: working-with-midi/quantize-midi
part: chapter
title: Note Cut, Copy and Paste
include: note-cut-copy-and-paste.html
link: note-cut-copy-and-paste
uri: working-with-midi/note-cut-copy-and-paste-
part: subchapter
---
---
title: Step Entry
include: step-entry.html
link: step-entry
uri: working-with-midi/step-entry
part: chapter
title: Changing Note Properties
include: change-note-properties.html
link: change-note-properties
uri: editing-and-arranging/editing-midi/changing-note-properties
part: subchapter
---
---
@ -1379,7 +1371,7 @@ title: Patch Change
include: patch-change.html
link: patch-change
uri: working-with-midi/patch-change
part: chapter
part: subchapter
---
---
@ -1388,7 +1380,15 @@ menu_title: Copy MIDI Region
include: independent-and-dependent-midi-region-copies.html
link: independent-and-dependent-midi-region-copies
uri: working-with-midi/copy-midi-region
part: chapter
part: subchapter
---
---
title: Quantizing MIDI
include: quantize-midi.html
link: quantize-midi
uri: working-with-midi/quantize-midi
part: subchapter
---
---
@ -1396,52 +1396,67 @@ title: Transposing MIDI
include: transposing-midi.html
link: transposing-midi
uri: working-with-midi/transpose-midi
part: chapter
---
---
title: Automating MIDI-Pitch bending and aftertouch
menu_title: Automating MIDI
include: automating-midi---pitch-bending-and-aftertouch.html
link: automating-midi---pitch-bending-and-aftertouch
uri: working-with-midi/automation-midi
part: chapter
---
---
title: Transforming MIDI-Mathematical operations
menu_title: Transforming MIDI
include: transforming-midi---mathematical-operations.html
link: transforming-midi---mathematical-operations
uri: working-with-midi/transformation-midi
part: chapter
part: subchapter
---
---
title: MIDI List Editor
include: midi-list-editor.html
link: midi-list-editor
part: chapter
part: subchapter
---
---
title: MIDI Tracer
include: midi-tracer.html
link: midi-tracer
part: chapter
title: Transforming MIDI&mdash;Mathematical Operations
menu_title: Transforming MIDI
include: transforming-midi---mathematical-operations.html
link: transforming-midi---mathematical-operations
uri: working-with-midi/transformation-midi
part: subchapter
---
---
title: MIDI Recording
include: midi-recording.html
link: midi-recording
part: chapter
---
---
title: Step Entry
include: step-entry.html
link: step-entry
uri: working-with-midi/step-entry
part: subchapter
---
---
title: MIDI Automation
include: midi-automation.html
link: midi-automation
part: chapter
---
---
title: Pitch Bend &amp; Aftertouch
include: automating-midi---pitch-bending-and-aftertouch.html
link: automating-midi---pitch-bending-and-aftertouch
uri: working-with-midi/automation-midi
part: subchapter
---
---
title: MIDI Scene Automation
include: midi-scene-automation.html
link: midi-scene-automation
uri: automation/midi-scenes
part: subchapter
---
---
title: MIDI Tracer
include: midi-tracer.html
link: midi-tracer
part: chapter
---
@ -1585,7 +1600,7 @@ title: Mono Panner
include: mono-panner.html
link: mono-panner
uri: mixing/panning/mono_panner
part: subchapter
part: section
---
---
@ -1593,7 +1608,7 @@ title: Balance Control
include: balance-control.html
link: balance-control
uri: mixing/panning/balance_control
part: subchapter
part: section
---
---
@ -1601,7 +1616,7 @@ title: Stereo Panner
include: stereo-panner.html
link: stereo-panner
uri: mixing/panning/stereo_panner
part: subchapter
part: section
---
---
@ -1609,7 +1624,7 @@ title: VBAP Panner
include: vbap-panner.html
link: vbap-panner
uri: mixing/panning/vbap_panner
part: subchapter
part: section
---
---
@ -1785,7 +1800,7 @@ part: chapter
---
---
title: OSC&#58; Controlling Ardour with OSC
title: Controlling Ardour with OSC
include: osc58-controlling-ardour-with-osc.html
link: osc58-controlling-ardour-with-osc
uri: using-control-surfaces/controlling-ardour-with-osc/osc-control
@ -1793,7 +1808,7 @@ part: subchapter
---
---
title: OSC&#58; Using the Setup Dialog
title: Using the Setup Dialog
include: osc58-using-the-setup-dialog.html
link: osc58-using-the-setup-dialog
uri: using-control-surfaces/controlling-ardour-with-osc/osc-setup-dialog
@ -1801,7 +1816,7 @@ part: subchapter
---
---
title: OSC&#58; Linking Surfaces
title: Linking Surfaces
include: osc58-linking-surfaces.html
link: osc58-linking-surfaces
uri: using-control-surfaces/controlling-ardour-with-osc/linking-surfaces
@ -1809,7 +1824,7 @@ part: subchapter
---
---
title: OSC&#58; Querying Ardour
title: Querying Ardour
include: osc58-querying-ardour.html
link: osc58-querying-ardour
uri: using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc
@ -1817,7 +1832,7 @@ part: subchapter
---
---
title: OSC&#58; Feedback
title: Feedback
include: osc58-feedback.html
link: osc58-feedback
uri: using-control-surfaces/controlling-ardour-with-osc/feedback-in-osc
@ -1825,7 +1840,7 @@ part: subchapter
---
---
title: OSC&#58; Feedback and Strip-types Values
title: Feedback and Strip-types Values
include: osc58-feedback-and-strip-types-values.html
link: osc58-feedback-and-strip-types-values
uri: using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values
@ -1833,7 +1848,7 @@ part: subchapter
---
---
title: OSC&#58; Jog Modes
title: Jog Modes
include: osc58-jog-modes.html
link: osc58-jog-modes
uri: using-control-surfaces/controlling-ardour-with-osc/jog-modes
@ -1841,7 +1856,7 @@ part: subchapter
---
---
title: OSC&#58; Custom Strip Lists
title: Custom Strip Lists
include: osc58-custom-strips.html
link: osc58-custom-strips
uri: using-control-surfaces/controlling-ardour-with-osc/custom-strips
@ -1849,7 +1864,7 @@ part: subchapter
---
---
title: OSC&#58; Automation
title: Automation
include: osc58-automation.html
link: osc58-automation
uri: using-control-surfaces/controlling-ardour-with-osc/automation
@ -1857,7 +1872,7 @@ part: subchapter
---
---
title: OSC&#58; Personal Monitoring Control
title: Personal Monitoring Control
include: osc58-personal-monitoring-control.html
link: osc58-personal-monitoring-control
uri: using-control-surfaces/controlling-ardour-with-osc/osc-personal-monitoring
@ -1865,7 +1880,7 @@ part: subchapter
---
---
title: OSC&#58; Parameter Types
title: Parameter Types
include: osc58-parameter-types.html
link: osc58-parameter-types
uri: using-control-surfaces/controlling-ardour-with-osc/parameter-types-in-osc
@ -1873,7 +1888,7 @@ part: subchapter
---
---
title: OSC&#58; Selection and Expansion Considerations
title: Selection and Expansion Considerations
include: osc58-selection-and-expansion-considerations.html
link: osc58-selection-and-expansion-considerations
uri: using-control-surfaces/controlling-ardour-with-osc/selection-considerations-in-osc
@ -2056,8 +2071,16 @@ part: chapter
---
---
title: MIDI notes reference
title: MIDI Notes Reference
include: midi-notes-ref.html
link: midi-notes-ref
part: chapter
---
---
title: MIDNAM Reference
include: midnam-ref.html
link: midnam-ref
part: chapter
---

View File

@ -166,7 +166,7 @@
#content figcaption.titleover {
text-align: center;
caption-side: top ;
caption-side: top;
}
#content figure.right {
@ -194,6 +194,10 @@
width: 100%;
}
#content img.fit {
width: 100%;
}
kbd {
text-shadow: 0 0 2px rgb(255, 255, 255);
box-shadow: inset 0 0 1px rgb(255, 255, 255), inset 0 0 .4em rgb(200, 200, 200), 0 .1em 0 rgb(130, 130, 130), 0 .11em 0 rgba(0, 0, 0, .4), 0 .1em .11em rgba(0, 0, 0, .9);

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB