You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2231 lines
117 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.16">
<meta name="author" content="Laborejo Software Suite">
<title>Laborejo</title>
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;-webkit-tap-highlight-color:transparent}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos{border-right:1px solid;opacity:.35;padding-right:.5em}
pre.pygments .lineno{border-right:1px solid;opacity:.35;display:inline-block;margin-right:.75em}
pre.pygments .lineno::before{content:"";margin-right:-.125em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article toc2 toc-left">
<div id="header">
<h1>Laborejo</h1>
<div class="details">
<span id="author" class="author">Laborejo Software Suite</span><br>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Inhaltsverzeichnis</div>
<ul class="sectlevel1">
<li><a href="#_einleitung">1. Einleitung</a>
<ul class="sectlevel2">
<li><a href="#_zielgruppe">1.1. Zielgruppe</a></li>
</ul>
</li>
<li><a href="#_grundlagen">2. Grundlagen</a>
<ul class="sectlevel2">
<li><a href="#_platzierung_zoom_und_skalierung">2.1. Platzierung, Zoom und Skalierung</a>
<ul class="sectlevel3">
<li><a href="#_zoom">2.1.1. Zoom</a></li>
<li><a href="#_skalierung">2.1.2. Skalierung</a></li>
</ul>
</li>
<li><a href="#_navigation_und_pfeiltasten_arbeiten_mit_der_auswahl">2.2. Navigation und Pfeiltasten - Arbeiten mit der Auswahl</a></li>
<li><a href="#_der_cursor_als_quelle_für_befehle">2.3. Der Cursor als Quelle für Befehle</a></li>
<li><a href="#_wiedergabe_und_playhead">2.4. Wiedergabe und Playhead</a>
<ul class="sectlevel3">
<li><a href="#_cursor_tempo_wiederholungen_und_sprünge">2.4.1. Cursor: Tempo, Wiederholungen und Sprünge</a></li>
</ul>
</li>
<li><a href="#_noteneingabe_und_pausen">2.5. Noteneingabe und Pausen</a>
<ul class="sectlevel3">
<li><a href="#_tastatur_eingabe">2.5.1. Tastatur-Eingabe</a></li>
<li><a href="#_midi_eingabe">2.5.2. MIDI-Eingabe</a></li>
<li><a href="#_live_aufnahme">2.5.3. Live-Aufnahme</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_ansichten_und_betriebsmodi">3. Ansichten und Betriebsmodi</a>
<ul class="sectlevel2">
<li><a href="#_spur_editor">3.1. Spur-Editor</a>
<ul class="sectlevel3">
<li><a href="#_spuren_verschieben_und_anordnen">3.1.1. Spuren Verschieben und Anordnen</a></li>
<li><a href="#_erweiterte_spuroptionen">3.1.2. Erweiterte Spuroptionen</a></li>
</ul>
</li>
<li><a href="#_noten_editor">3.2. Noten-Editor</a>
<ul class="sectlevel3">
<li><a href="#_akkorde_und_pseudo_polyphonie">3.2.1. Akkorde und Pseudo-Polyphonie</a></li>
<li><a href="#_feineinstellung_für_notendauern_rechteck_notenköpfe_sequencer">3.2.2. Feineinstellung für Notendauern &amp; Rechteck-Notenköpfe (Sequencer)</a></li>
<li><a href="#_transposition">3.2.3. Transposition</a></li>
<li><a href="#_metrum_oder_taktart">3.2.4. Metrum oder Taktart</a></li>
<li><a href="#_notenschlüssel">3.2.5. Notenschlüssel</a></li>
<li><a href="#_vorzeichen_und_tonarten">3.2.6. Vorzeichen und Tonarten</a></li>
<li><a href="#_dynamik">3.2.7. Dynamik</a></li>
<li><a href="#_bindebögen_oder_legatobögen">3.2.8. Bindebögen oder Legatobögen</a></li>
<li><a href="#_instrumentenwechsel_das_objekt">3.2.9. Instrumentenwechsel (das Objekt)</a></li>
<li><a href="#_midi_kanäle">3.2.10. MIDI-Kanäle</a></li>
</ul>
</li>
<li><a href="#_blöcke_und_blockmodus">3.3. Blöcke und Blockmodus</a>
<ul class="sectlevel3">
<li><a href="#_blöcke_erschaffen_und_duplizieren">3.3.1. Blöcke Erschaffen und Duplizieren</a></li>
<li><a href="#_blöcke_löschen">3.3.2. Blöcke Löschen</a></li>
<li><a href="#_blöcke_mit_fester_mindestdauer">3.3.3. Blöcke mit fester Mindestdauer</a></li>
<li><a href="#_verlinkte_blöcke">3.3.4. Verlinkte Blöcke</a></li>
<li><a href="#_blöcke_trennen_und_vereinen">3.3.5. Blöcke Trennen und Vereinen</a></li>
<li><a href="#_blockmodus">3.3.6. Blockmodus</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_modus_für_control_changes">4. Modus für Control Changes</a>
<ul class="sectlevel2">
<li><a href="#_einrasten">4.1. Einrasten</a></li>
<li><a href="#_interpolation_automatische_zwischenschritte">4.2. Interpolation - Automatische Zwischenschritte</a></li>
<li><a href="#_control_changes_und_midikanäle">4.3. Control Changes und Midikanäle</a></li>
</ul>
</li>
<li><a href="#_tempospur">5. Tempospur</a></li>
<li><a href="#_werkzeugkasten">6. Werkzeugkasten</a></li>
<li><a href="#_raster_grid">7. Raster / Grid</a></li>
<li><a href="#_hover_tastasturkürzel">8. Hover-Tastasturkürzel</a></li>
<li><a href="#_tickwidget">9. Tickwidget</a></li>
<li><a href="#_metronom">10. Metronom</a></li>
<li><a href="#_lilypond_ausgabe">11. Lilypond Ausgabe</a></li>
<li><a href="#_eigene_scripte">12. Eigene Scripte</a></li>
<li><a href="#_faq_und_detailerklärungen">13. FAQ und Detailerklärungen</a>
<ul class="sectlevel2">
<li><a href="#_die_gleiche_note_zweimal_in_einem_akkord">13.1. Die gleiche Note zweimal in einem Akkord</a></li>
<li><a href="#_extreme_notenwerte_und_dauern">13.2. Extreme Notenwerte- und Dauern</a></li>
<li><a href="#_eine_note_auf_mehreren_channels_gleichzeitig_senden">13.3. Eine Note auf mehreren Channels gleichzeitig senden</a></li>
<li><a href="#_relative_midi_programchanges_oder_bankchanges">13.4. Relative MIDI Programchanges oder Bankchanges</a></li>
<li><a href="#_notizen_des_autors_wenn_sie_die_sehen_habe_ich_vergessen_sie_umzuschreiben">13.5. Notizen des Autors. Wenn Sie die sehen habe ich vergessen sie umzuschreiben.</a></li>
</ul>
</li>
<li><a href="#_installation_und_start">14. Installation und Start</a></li>
<li><a href="#_helfen_und_entwicklung">15. Helfen und Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_testen_und_programmfehler">15.1. Testen und Programmfehler</a></li>
</ul>
</li>
<li><a href="#_entwicklung">16. Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_übersetzungen">16.1. Übersetzungen</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Für Programmversion 2.0.2</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_einleitung">1. Einleitung</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_zielgruppe">1.1. Zielgruppe</h3>
<div class="paragraph">
<p>Laborejo richtet sich an Personen, die Musik als Notation begreifen und ein Computersystem dadurch
zum Klingen bringen möchten. Damit fällt es in die Kategorie der sogenannten "Sequenzer".</p>
</div>
<div class="paragraph">
<p>Es ist für Kompositionen und -produktionen gedacht, die von Anfang an in Laborejos "Workflow"
geplant und umgesetzt worden sind.</p>
</div>
<div class="paragraph">
<p>Es erfordert daher Erfahrung mit Tonhöhen, Notenwerten, verschiedenen Schlüsseln, Tonartenvorzeichen,
Skalenlehre und vieles mehr.</p>
</div>
<div class="paragraph">
<p>Laborejo ist kein Notensatz oder -druckprogramm. Zwar existiert ein rudimentärer Lilypondexporter,
dieser wird jedoch immer hinter den vollen Möglichkeiten von Lilyponds Funktionsumfang zurückbleiben.</p>
</div>
<div class="paragraph">
<p>Dieses Handbuch ist eine umfangreiche Beschreibung des Programmes und seiner Benutzung.
Allerdings wird nicht jede selbsterklärende Funktion bis ins Detail beschrieben. Vielmehr geht es
darum typische Fälle der Benutzung ergebnisorientiert zu beschreiben.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_grundlagen">2. Grundlagen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Im folgenden eine Übersicht über Grundlagen, die im Kapitel "Funktionsumfang" ergänzt wird. Wenn Sie
bereits über Erfahrung mit Sequencern und Notenprogrammen verfügen sollten Sie nach diesem Kapitel
in der Lage sein durch Ausprobieren, und nur gelegentliches Nachschlagen, Laborejo zu benutzen.</p>
</div>
<div class="paragraph">
<p>Die Hirarchie ist: Spuren&#8594;Blöcke&#8594;Objekte.</p>
</div>
<div class="paragraph">
<p>Laborejo organisiert Musik in Spuren, in Partituransicht (was untereinander steht klingt
gleichzeitig). Spuren gehen in der Hauptansicht von links nach rechts, ohne Zeilenumbrüche. Eine
Spur kann, muss aber nicht, in Blöcke aufgeteilt sein, die an verschiedenen Stellen wiederverwendet
werden können.
Dabei ist angedacht eine einstimmige Stimme pro Spur zu schreiben. Homophone Akkorde
sind möglich, polyphone Stimmen in einer Spur sind schwierig bis unmöglich umzusetzen.</p>
</div>
<div class="paragraph">
<p>Noten werden in die Spuren (bzw. Blöcke eingetragen). Dies geht nur mit der Computertastatur
alleine oder zusätzlich mit Hilfe eines Midi-Instrumentes, z.B. einem Keyboard. Dazu gibt es, wie
in einem Texteditor oder Schreibprogramm, einen Cursor, der markiert an welcher Stelle Eingaben
oder Änderungen gemacht werden.</p>
</div>
<div class="paragraph">
<p>Alle Funktionen, außer der Navigation (Cursor bewegen), sind als Menüeinträge aufrufbar. Navigation
muss auswendig gelernt werden, folgt aber etablierten Konzepten (Pfeiltasten, Umschalten zum
markieren etc.). Siehe dazu das Kapitel "Navigation und Pfeiltasten".</p>
</div>
<div class="paragraph">
<p>Laborejo selbst erzeugt keine Klänge, sondern arbeitet als Midi-Sequenzer, der an andere
JACK-Programme sendet, etwa an Sampler oder Synthesizer.</p>
</div>
<div class="paragraph">
<p>Aus diesem Grund ist der "New Session Manager" die ideale Umgebung um das Programm Laborejo zu
starten, da man hier auch alle nötigen Klangerzeuger und Hilfsprogramme verwalten kann.
Die Laborejo Software Suite bietet hierzu das Programm "Agordejo" an.</p>
</div>
<div class="sect2">
<h3 id="_platzierung_zoom_und_skalierung">2.1. Platzierung, Zoom und Skalierung</h3>
<div class="sect3">
<h4 id="_zoom">2.1.1. Zoom</h4>
<div class="paragraph">
<p>Wie in vielen Programmen ist auch in Laborejo ein Zoom möglich. Strg mit Plus(+) oder Minus(-)
verkleinert oder vergrößert die Notenansicht. Alternativ kann auch Strg+Mausrad benutzt werden.</p>
</div>
<div class="paragraph">
<p>Es gibt Grenzen der Vergrößerung oder Verkleinerung.</p>
</div>
</div>
<div class="sect3">
<h4 id="_skalierung">2.1.2. Skalierung</h4>
<div class="paragraph">
<p>Oft möchte man nicht zoomen sondern den Notenzwischenraum kleiner oder größer machen, wahrscheinlich
öfter als der normale Zoom. Dies wird hier als "Skalierung" bezeichnet.</p>
</div>
<div class="paragraph">
<p>Veränderung der Skalierung ist für alle Benutzer eine sehr häufige Aktion in Laborejo.</p>
</div>
<div class="paragraph">
<p>Strg+Umschalten mit Plus(+) oder Minus(-) verkleinert oder vergrößert die Notenzwischenräume.</p>
</div>
<div class="paragraph">
<p>Warum?</p>
</div>
<div class="paragraph">
<p>Je nachdem ob die momentane Stelle hauptsächlich kurze oder lange Noten enthält ist ein größerer
oder kleinerer Zwischenraum besser zu erkennen, bzw. überhaupt zu erkennen.</p>
</div>
<div class="paragraph">
<p>Laborejo zeigt Rhythmus linear an. Hinter den Spuren ist ein (änderbares) Gitternetz zu sehen,
das die rhythmische Ausdehnung anzeigt und außerdem auch hilft Noten mit Hilfslinien besser in ihrer
Tonhöhe zu erkennen.</p>
</div>
<div class="paragraph">
<p>Eine halbe Note benutzt immer doppelt so viele Pixel wie eine Viertelnote. Eine ganze Note besteht
also aus ihrer Notengrafik und dann reseviertem Leerraum. Die folgende Note wird erst nach diesem
Leerraum platziert. Das bedeutet aber, dass bei sehr kurzen Noten der reservierte Leeraum kleiner
ist als die Notengrafik selbst, und somit Noten "ineinander" stecken.</p>
</div>
<div class="paragraph">
<p>Und noch mehr: Objekte, die keine eigene Dauer haben (Notenschlüssel) sind an der gleichen Stelle
wie die nächste Note. Manche Objekte werden daher über die Notenlinien geschoben, damit man sie
überhaupt sieht. Im schlimmsten Fall kann man aber nicht mehr richtig erkennen welche Reihenfolge
die Objekte haben.</p>
</div>
<div class="paragraph">
<p>Es sei an dieser Stelle zugegeben, dass die derzeitige Lösung noch Nachteile hat, aber es noch keine
bessere Idee gibt, die gleichzeitig Tastatursteuerung ermöglicht und ein lineares
Rhythmus/Pixel-Verhältnis bietet.</p>
</div>
<div class="paragraph">
<p>In traditionellem Notensatz wird das anders gehandhabt: Noten werden nach
im Sinne der Lesbarkeit näher aneinander gerückt oder zusätzlicher Platz wird zwischen kurze
Notenwerte eingefügt. Der traditionelle Notensatz ist die klar besser lesbare Variante, allerdings
fürs Sequencing nicht so gut geeignet, da hier noch mehr als pure Noten wichtig sind (z.B. CC-Kurven).
In Laborejo ist der Notensetzer auch gleichzeitig der Komponist, so dass man jede Note und alle
Zusammenhänge gut kennt. Diese "mentale Karte" des Stückes federt die schlechtere Lesbarkeit
hoffentlich etwas ab.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_navigation_und_pfeiltasten_arbeiten_mit_der_auswahl">2.2. Navigation und Pfeiltasten - Arbeiten mit der Auswahl</h3>
<div class="paragraph">
<p>Laborejo hat einen einzigen Cursor, der anzeigt an welcher Stelle gerade gearbeitet und eingefügt
wird. Damit funktioniert es wie ein Textverarbeitungsprogramm. Der Cursor ist immer nur in einer
Spur, an einer Position und an einer Tonhöhe gleichzeitig.</p>
</div>
<div class="paragraph">
<p>Die <strong>Pfeiltasten</strong> bewegen den Cursor nach links und rechts. Der Cursor ist immer auf der Note, die
direkt rechts von ihm ist.</p>
</div>
<div class="paragraph">
<p>Die Pfeiltasten nach oben und unten bewegen den Cursor in der Tonhöhe.
Der Cursor steht immer auf einer absoluten Tonhöhe, und nicht etwa auf einer Notenlinie: Wechselt
man in einen anderen Schlüssel so "springt" auch der Cursor grafisch an eine andere Stelle um auf
der gleichen Tonhöhe zu bleiben.</p>
</div>
<div class="paragraph">
<p>Bild Auf und Bild Ab (Page Up / Down) <strong>wechseln die Spur</strong> nach oben oder unten.</p>
</div>
<div class="paragraph">
<p>Hält man die <strong>Steuerungstaste</strong> (Strg / Ctrl) gedrückt werden alle Navigationstasten in ihrer Wirkung
<strong>verstärkt</strong>. Dies gilt auch in Kombination mit Auswahl und Veränderung (s.u.)
* Links / Rechts springen einen Takt weiter. Wenn keine Taktart eingestellt wird eine ganze Note gesprungen
* Oben / Unten springt eine Oktave auf oder ab.
* Bild Auf/Ab springt zu ersten bzw. letzten Spur.</p>
</div>
<div class="paragraph">
<p>Hält man die <strong>Umschaltentaste</strong> (Shift) gedrückt wird zusätzlich zur Bewegung eine <strong>Auswahl</strong> erzeugt,
die sich über mehrere Spuren erstrecken kann:
* Links / Rechts erweitert und reduziert die Auswahl.
* Oben / Unten hat keine Funktion, lässt die Auswahl aber intakt
* Bild Auf/Ab wählt auch die nächste Spur, parallel, mit aus.
* Die Verstärkung durch die Steuerungstaste gilt auch hier</p>
</div>
<div class="paragraph">
<p>Die Auswahl ist immer zusammenhängend. Sie muss auch immer die gleichen rhythmischen Werte (als
Summe) in jeder Spur beinhalten. Ist die Auswahl deswegen ungültig ändert sich das Auswahlrechteck
von einem Schatten zu einem Punktemuster. Eine Auswahl in einer Einzelspur ist immer gültig.</p>
</div>
<div class="paragraph">
<p>Wie oft in diesem Handbuch zu lesen sind Objekte ohne eigene Dauer (z.B. Notenschlüssel) etwas
komplizierter. Für eine Auswahl über mehrere Spuren ist es besser nicht auf diesen anzufangen oder
aufzuhören, da das Programm nicht wissen kann ob und wieviele Objekte ohne Dauer in allen Spuren
gemeint sind.</p>
</div>
<div class="paragraph">
<p>Hält man die Alttaste (nicht Alt-Gr) gedrückt ändern die Pfeiltasten ihre Wirkung indem sie eine
Note oder die Auswahl verändern:
* Links / Rechts verdoppelt oder halbiert den Grundwert der Note
* Oben / Unten schiebt die Noten höher oder tiefer. Noten bleiben dabei in der aktuellen Skala.
* Mit der Steuerungstaste wird um eine reine Oktave transponiert.</p>
</div>
<div class="paragraph">
<p>Falls keine Auswahl besteht wird die dem Curor nächste Note benutzt.</p>
</div>
<div class="paragraph">
<p>Zusätzlich gibt es noch folgende Tasten:
* Pos1 (Home) springt zum Anfang der Spur (oder wählt von der aktuellen Cursorposition bis dahin aus)
* Ende (End) springt zum Ende der Spur (oder wählt bis dahin aus)
* Steuerung+A markiert den aktuellen Takt in allen Spuren
* Umschalten+A markiert die ganze Spur.
* Steuerung+Umschalten+A markiert alles.</p>
</div>
<div class="paragraph">
<p>Die <strong>Maus</strong> kann ebenfalls benutzt werden, um den Cursor zu setzen. Ein Klick mit der Linken Maustaste
setzt die Position, mit Umschalten wird die Auswahl verändert.</p>
</div>
</div>
<div class="sect2">
<h3 id="_der_cursor_als_quelle_für_befehle">2.3. Der Cursor als Quelle für Befehle</h3>
<div class="paragraph">
<p>Die Cursorposition, besonders die Tonhöhe, wird in vielen Befehlen benutzt, nicht nur um Noten
einzufügen. Tonartenanweisungen holen sich hierüber den Grundton beim Einfügen. Der Werkzeugkasten
benutzt die Cursorposition u.a. als Spiegelachse oder als Fixpunkt um zufällige Noten im Umkreis
um den Cursor zu erzeugen.</p>
</div>
<div class="paragraph">
<p>Ein Beispiel ist das Einfügen einer Tonart, bwz. deren Vorzeichen. Diese wählt als Grundton die
Tonhöhe des Cursors aus.</p>
</div>
<div class="paragraph">
<p>Mit ein wenig Erfahrung wird bald klar wann der Cursor vor einem Befehl richtig gesetzt werden muss.</p>
</div>
</div>
<div class="sect2">
<h3 id="_wiedergabe_und_playhead">2.4. Wiedergabe und Playhead</h3>
<div class="paragraph">
<p>In der Notenansicht befindet sich eine vertikale rote Linie, die über allen Spuren liegt.
Das ist der "Playhead". Er zeigt die Stelle der momentanen Wiedergabe an.
Drückt man auf die Leertaste (s.u.) beginnt die Wiedergabe und alle Noten werden als JACK-MIDI-Signale
an verbundene Instrumente geschickt. Hier endet die Verantwortung Laborejos.</p>
</div>
<div class="paragraph">
<p>Aufgrund technischer Grundlagen des MIDI-Protokolls ist es leider nur möglich, dass Noten von ihrem
Anfang an gespielt werden. Startet der Playhead z.B. in der Hälfte einer ganzen Noten wird diese
nicht zu hören sein.</p>
</div>
<div class="paragraph">
<p>Folgend Wiedergabe-Modi sind möglich:
* Spiele von der aktuellen Position des Playheads (Leertaste)
* Starte beim normalen Cursor (Strg+Leertaste). Da der Cursor sich durch die Wiedergabe nicht bewegt kann man hierdurch immer wieder von der gleichen Position starten.
* Spiele von Anfang (Umschalten+Leertaste)
* Es ist möglich den Playhead per Drag&amp;Drop mit der Maus zu bewegen.</p>
</div>
<div class="paragraph">
<p>Um von Anfang oder vom Cursor zu starten muss die Wiedergabe nicht zwingend gestoppt sein.
Man kann z.B. Strg+Leertaste auch benutzen um zurückzuspringen.</p>
</div>
<div class="paragraph">
<p>Das bearbeiten, löschen, einfügen etc. von Noten und Objekten ist auch möglich während die Wiedergabe läuft.</p>
</div>
<div class="sect3">
<h4 id="_cursor_tempo_wiederholungen_und_sprünge">2.4.1. Cursor: Tempo, Wiederholungen und Sprünge</h4>
<div class="paragraph">
<p>Laborejo hat den Rhythmus ("Tick") als lineare Grundlage. Als Konsequenze ergibt sich, dass die
Cursorgeschwindigkeit sich verändert, sobald das Tempo wechselt.</p>
</div>
<div class="paragraph">
<p>Die Wiedergabe läuft immer von links nach rechts. Der Playhead springt niemals.
Wiederholungen und Sprünge (Wiederholungszeichen, 1. und 2. Klammer, Da Capo etc.) gibt es nicht,
bzw. nur als rein grafisches Element.</p>
</div>
<div class="paragraph">
<p>Soll es eine wörtliche Wiederholung geben so muss diese im Notentext stehen. Um das einfacher zu
machen (und Lilypond im Export dazu zu bringen tatsächlich Wiederholungszeichen und Sprungmarken
zu setzen) werden verlinkte Blöcke benutzt (s.u.).</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_noteneingabe_und_pausen">2.5. Noteneingabe und Pausen</h3>
<div class="paragraph">
<p>Laborejo arbeitet prinzipiell untransponiert. Alle Spuren und Instrumente sind in C.</p>
</div>
<div class="paragraph">
<p>Es gibt zwei Möglichkeiten neue Noten einzugeben.
* Der Basismodus ist die Tastatureingabe, mit der alle Möglichkeiten des Programmes bedient werden können.
* Als Ergänzung ist es möglich ein MIDI-Instrument zu benutzen. Dies beschleunigt in erster Linie die Eingabe.</p>
</div>
<div class="sect3">
<h4 id="_tastatur_eingabe">2.5.1. Tastatur-Eingabe</h4>
<div class="paragraph">
<p>Der typische Prozess ist es beide Hände auf der Tastatur zu haben, linke Hand auf den Nummertasten,
rechte Hand auf den Pfeiltasten.</p>
</div>
<div class="paragraph">
<p>Zuerst wird die Tonhöhe ausgewählt, dann durch den Rhythmus eingefügt, dann werden Modifikationen
gemacht (Punktierung, Vorzeichen etc.). Bitte beachten Sie, dass die zuletzte eingefügte Note am
Ende einer Spur oder eines Blocks gleichzeitg die derzeit ausgewählte Note ist. Sie müssen nicht
mit den Pfeiltasten einen Schritt nach links machen um ein Vorzeichen zu setzen und dann nach
rechts um neue Noten einzugeben.</p>
</div>
<div class="paragraph">
<p>Tonhöhen:
* Die Pfeiltasten hoch und runter wählen die Tonhöhe aus (sieben Schritte per Oktave, in der
vorherrschenden Tonart).
* Enter fügt einen Akkordton hinzu
* Umschalten+Enter oder Umschalten+Entfernen löscht dem Cursor nächsten Akkordton, aber nie die letzte Einzelnote.
* Plus(+) und Minus(-) setzt ein Vorzeichen auf die derzeit ausgewählte Note, oder entfernt es wieder.
* Hat man sich vertippt ist es oft schneller mit Alt+Auf/Ab die Tonhöhe nachträglich zu ändern, statt zu löschen.</p>
</div>
<div class="paragraph">
<p>Rhythmus:
* Die Nummerntasten 1 bis 6 fügen Noten unterschiedlicher Dauer ein.
* Nummerntasten zusammen mit der Umschaltentasten fügen Pausen ein.
* Die Taste Q punktiert eine Note oder eine Pause, bzw. schaltet durch drei Zustände:
* Ohne Punkt, Punktierung, Doppelpunktierung. Danach wieder "ohne Punkt".
* Die Taste R fügt eine Mehrtaktpause ein, aber nur wenn es eine Taktart gibt.
* Mehrtaktpausen starten bei einem einem Takt und können mit Alt+Links/Rechts eingestellt werden.
* Alt+R bietet die Möglichkeit direkt eine Taktzahl eingeben zu können.
* Hat man sich vertippt ist es oft schneller mit Alt+Links/Rechts die Dauer nachträglich zu ändern, statt zu löschen.</p>
</div>
<div class="paragraph">
<p>Die kürzeste eintippbare Noten (Taste 6) ist eine 32tel. Kürzere Noten können durch mit
Alt+Links/Rechts die Dauer nachträglich gemacht werden.</p>
</div>
<div class="paragraph">
<p>Möchte man zu Kompositionszwecken leeren Raum "reservieren", weil man etwa in einer Spur einen Teil
noch nicht geschrieben hat, aber am folgenden weitermachen möchte, benutzt man hierzu besser keine
Mehrtaktpausen sondern leere Blöcke mit einer festgesetzten rhythmischen Dauer (s.u.). So kann man
sich z.B. 32 Takte reservieren, die auch durch nachträgliche Eingabe nicht länger oder kürzer
werden.</p>
</div>
</div>
<div class="sect3">
<h4 id="_midi_eingabe">2.5.2. MIDI-Eingabe</h4>
<div class="paragraph">
<p>Die MIDI-Eingabe ist eine Ergänzung zur Tastatursteuerung und übernimmt deren zeitaufwändigsten Part:
die Auswahl der Tonhöhen.</p>
</div>
<div class="paragraph">
<p>Mit F4 schaltet man die Tonhöheneingabe über ein Midi-Instrument ein. Es handelt sich um schrittweise
Eingabe ("Step Entry"): Die Tondauer wird immer noch über die Nummerntasten ausgewählt, allerdings
fügt jetzt ein Tastendruck auf z.B. 3 nicht mehr eine Viertelnote ein sondern wählt den Rhythmus
für Noten, die per MIDI eingegeben werden.</p>
</div>
<div class="paragraph">
<p>Eine Leiste am linken Rand zeigt an welche Tondauer gerade ausgewählt ist.</p>
</div>
<div class="paragraph">
<p>Akkorde können eingefügt werden indem man nach der ersten Noten noch weitere spielt ohne die erste
zu "releasen". Für ein Midi-Keyboard heißt das nichts anderes als die erste Taste festzuhalten und
dann weitere zu spielen. Für andere Midi-Instrumente entscheidet die Haptik und Spielweise inwiefern
das möglich ist. Technisch wird gewartet bis das MIDI event "Note-Off" der ersten Note im Programm
ankommt. Alles zwischen Note-On und Note-Off wird als ein Akkord zusammengefasst.
In der Praxis bedeutet dies, das man die Tasten gleichzeitig drücken kann.</p>
</div>
<div class="paragraph">
<p>Die eingehenden MIDI-Noten unterscheiden laut MIDI-Protokoll nicht zwischen enharmonischen
Varianten. Cis und Des sind zunächst die gleiche Note. Um dies zu verbessern entscheidet Laborejo
anhand der aktuell geltenden Tonart welche Variante benutzt wird.</p>
</div>
<div class="paragraph">
<p>Beim alltäglichen Komponieren sind evtl. nicht alle Tonart-Modulation durch einen Tonartenwechsel
gekennzeichnet, so dass es bei der MIDI-Eingabe zur enharmonischen Verwechselung kommen kann.
Laborejo ist kein Notensatzprogramm, es "möchte" mehr Informationen haben als üblicherweise
ausgedruckt werden. Setzen Sie statt dessen an Stellen, an denen implizit Tonartenwechsel
stattfinden explizit ein Objekt um die Vorzeichen zu ändern. Darüberhinaus bleibt immer noch die
nachträgliche Änderung ohne das Midiinstrument, was in der Praxis auch nicht so schlimm ist.</p>
</div>
<div class="paragraph">
<p>Pausen, Extra-Vorzeichen und Punktierungen müssen nach wie vor durch nachträgliche Modifikation
gemacht werden.</p>
</div>
<div class="paragraph">
<p>Die eingehenden MIDI-Noten werden in Echtzeit an die Spurausgänge weitergeleitet, so dass man immer
die Instrumente hört, die auch gemeint sind. Dabei wird die Cursorposition benutzt um Parameter,
wie den Midi-Kanal, einzustellen. Es ist daher nicht nötig das Midiinstrument von Hand mit einem
anderem Instrument zu verbinden.</p>
</div>
<div class="paragraph">
<p>Es ist möglich Midi-Eingabe mit F4 ein- und auszuschalten während die Wiedergabe läuft. Man kann
weiterhin zur Musik spielen; die Echtzeitweiterleitung bleibt bestehen. Das ermöglicht es Ideen
auszuprobieren, mit oder ohne Wiedergabe.</p>
</div>
<div class="paragraph">
<p>Die Midi-Eingabe funktioniert nur, wenn man auch gerade Noten eingeben darf. Also nicht im CC-Modus
(s.u.) oder während der Spureditor offen ist.
Allerdings ist sie auch aktiv, wenn das Laborejo-Fenster gerade nicht zu sehen ist, also auf einer
anderen Desktop-Arbeitsfläche oder minimiert. Schalten Sie also besser die Eingabe aus, bevor Sie
sich jammenderweise in einem anderem Programm umsehen, sonst ist nachher alles voller "Müllnoten".</p>
</div>
</div>
<div class="sect3">
<h4 id="_live_aufnahme">2.5.3. Live-Aufnahme</h4>
<div class="paragraph">
<p>Eine Live-Aufnahme, mit Rhythmus, Dynamik und anderen MIDI-Werten, ist derzeit nicht möglich.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_ansichten_und_betriebsmodi">3. Ansichten und Betriebsmodi</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Die Hauptansicht in Laborejo ist der Noteneditor. Dieser hat mehrere Betriebsmodi, wobei der Standard
die Noteneingabe ist. Es gibt allerdings noch andere, spezialisierte Ansichten und Betriebsmodi,
die hier erklärt werden.</p>
</div>
<div class="sect2">
<h3 id="_spur_editor">3.1. Spur-Editor</h3>
<div class="paragraph">
<p>Der Menüeintrag <code>Steuerung</code>&#8594;`Spureditor`, oder Strg+T (T wie "Track"), zeigt den Spureditor.
Erneutes Aufrufen zeigt wieder den Noteneditor.</p>
</div>
<div class="paragraph">
<p>Zunächst kann hier für alle Spuren gleichzeitig der Auftakt eingestellt werden.</p>
</div>
<div class="paragraph">
<p>Anschließend werden alle Spuren abstrakt aufgeführt und es können verschiedene, wichtige
Einstellungen vorgenommen und Werte eingegeben werden:
* Der Name der Spur (Standard ist eine Zahl, eine ID). Dies ist auch der JACK-Portname.
* Der Name des Instrumentes (für Lilypond Export. z.B. "Viola")
* Die Abkürzung des Instrumentennames (z.B. "Vla")
* Auftakt für diese Spur
* Doppelspur erweitert das Liniensystem von 5 auf 10/11 nach unten, so dass man mit einem Violinenschlüssel gut lesbar bis in den Bassschlüssel schreiben kann
* Hörbar ist normalerweise aktiv. Falls ausgeschaltet wird alles außer Noten gesendet. Diese Funktion ist kein Ersatz fürs Stummschalten ("mute") im Mixer. Vielmehr geht es hier um kurzfristiges ausschalten, wobei CCs und Program Changes weiterhin an das externe Instrument geschickt werden, damit beim Einschalten während der laufenden Wiedergabe korrekt weitergespielt wird. Sollte Sie ein Instrument benutzen, dass auch bei CCs o.ä. Klang generiert wird Ihnen diese Funktion nicht helfen.
* Sichtbar versteckt die Spur in der Notenansicht. Die Spur sendet aber weiterhin MIDI. Der Cursor springt über sie hinweg, sie wird bei "Alles auswählen" nicht beachtet. Einige Funktionen, die von sich aus auf alle Spuren wirken (z.B. Lösche leere Blöcke), greifen aber auf die versteckten Spur zu.
* Der Löschen-Knopf löscht diese Spur.</p>
</div>
<div class="paragraph">
<p>Ausgabeoptionen für MIDI:
* Channel ist der Midikanal von 1 bis 16. Es ist nur einer gleichzeitig möglich. Der Kanal kann aber durch andere Befehle im Noteneditor geändert werden, auch nur kurzfristig für einzelne Noten.
* CC Channels stellt ein auf welchen Kanälen Control Changes gleichzeitig gesendet werden. Der momentane Kanal ist auf jeden Fall dabei. Die Auswahl zusätzlicher Kanäle erfordert Planung. Welche umspannt das externe Instrument? Eine Geige könnte Abstriche auf Channel 1 und Aufstriche auf Channel 2 spielen. Dann ist es sinnvoll, dass CCs immer auf beiden Kanälen gesendet werden, z.B. Modulation um Vibrato einzustellen. Ansonsten würde die Einstellung evtl. nur für die Abstriche gelten.
* Program ist der Program Change (0xC0), und damit das Midi-Instrument von 0 bis 127. Im GM Standard ist 0 das Klavier, 41 die Geige etc. Lässt man den Wert auf -1 wird überhaupt kein Program Change über MIDI gesendet.