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.

2225 lines
118 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.10">
<meta name="author" content="Laborejo Software Suite">
<title>Laborejo</title>
<style>
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment @import statement to use as 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";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-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}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;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}
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"]{box-sizing:border-box;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{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;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;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-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%}
.center{margin-left:auto;margin-right:auto}
.stretch{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;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{font-family:inherit;font-weight:400;font-size:1em;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;height:0}
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{font-size:1em;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;font-size:1em}
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}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite::before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
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:solid 1px #dedede}
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{display:table-cell;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}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
:not(pre)>code.nobreak{word-wrap:normal}
:not(pre)>code.nowrap{white-space:nowrap}
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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;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-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;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:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;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-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.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>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
.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)}
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
.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)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;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{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;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;-webkit-border-radius:4px;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 currentColor;opacity:.35;padding-right:.5em}
pre.pygments .lineno{border-right:1px solid currentColor;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;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;text-align:left;margin-right:0}
table.tableblock{max-width:100%;border-collapse:separate}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot,table.frame-ends{border-width:1px 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{display:table-cell;line-height:1.6;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{margin-left:.625em}
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:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;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}
.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:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;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);-webkit-border-radius:100px;border-radius:100px;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{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{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;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{-webkit-box-shadow:none!important;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]::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}
#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 print,amzn-kf8{#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</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 "Argodejo" 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.
* Hat man einen Program ausgewählt werden die Felder für Bank MSB und LSB aktiv. Diese gehören ebenfalls zur MIDI-Instrumentenauswahl und wechseln je nach externem Instrument ihre Bedeutung. Die Erklärung der Werte muss also im Handbuch des Instrumentes nachgelesen werden.
* Transposition ist eine Halbtontransposition der MIDI Noten, ganz am Ende der Verarbeitungskette nachdem alles in Laborejo berechnet wurde. Für MIDI-Kenner: Der hier eingstellte Wert wird auf die genierte Midi-Note (60 = mittleres C) addiert. Es ist also plus oder minus möglich. Man muss selbst zusehen, dass dadurch keine Noten höher als 127 oder tiefer als 0 entstehen. Laborejo sendet in diesem Fall 127 oder 0, verändert aber die Originalnoten nicht.</p>
</div>
<div class="sect3">
<h4 id="_spuren_verschieben_und_anordnen">3.1.1. Spuren Verschieben und Anordnen</h4>
<div class="paragraph">
<p>Jede Spur hat im Editor einen Index, also eine Zahl, die die Reihenfolge bestimmt. Die Zahlen
können frei vergeben werden. Nur die Reihenfolge ist wichtig, nicht die Abstände der Zahlen.
Nachdem der Spureditor geschlossen wurde bereinigt Laborejo die Eingabe und nummeriert alle Spuren
neu. Sollten Sie den gleichen Index für zwei Spuren eingegeben haben ist die Reihenfolge der
beteiligten Spuren praktisch zufällig, allerdings nur bis der Spureditor geschlossen wird, ab dann
ist sie wieder korrekt definiert.</p>
</div>
<div class="paragraph">
<p>Der Blockmodus (F6, siehe dessen Kapitel) kann auch benutzt werden um ganze Spuren zu verschieben.
Hierzu die Alt-Taste gedrückt haben, während Sie mit der Linken Maustaste Spuren hoch und runter
verschieben.</p>
</div>
</div>
<div class="sect3">
<h4 id="_erweiterte_spuroptionen">3.1.2. Erweiterte Spuroptionen</h4>
<div class="paragraph">
<p>Laborejo verwendet Noten, ist aber trotzdem ein MIDI-Sequencer. Notation hat einen Kontext, also
eine Umgebung an momentan gültigen musikalischen Werten. Während in einem Pianoroll-Sequencer jede
Note ihre eigenen Anschlagsstärke (Velocity) hat, ergibt sich diese in Laborejo aus einer
vorangegangenen Dynamikanweisung wie "forte" oder "piano". Für eine Trompete bedeutet "forte" aber
etwas anderes als für eine Geige. Und für Mozart ist piano etwas anderes als für Debussy.</p>
</div>
<div class="paragraph">
<p>Ebenfalls werden Noten von echten Musikern nie in ihrer vollen Dauer gespielt sondern
unterschiedlich phrasiert. Je nach Stück oder Instrument (ließ: Spur) ist auch ein Staccato mal
kürzer oder länger.</p>
</div>
<div class="paragraph">
<p>Das Ziel ist es seinen Klang so einstellen zu können, dass "Alle Instrumente spielen piano" einen
bereits ausgewogenen Klang ergibt. Ebenso sollen bei einer Viertelnote tutti auch alle zur gleichen
Zeit aufhören. Soundsetup ist sehr komplex und hängt nicht zuletzt von den verbundenen Instrumenten
ab.</p>
</div>
<div class="paragraph">
<p>Um zuverlässig zu arbeiten können all diese Werte (wie kurz ist ein Staccato?, wie laut ist forte?)
im Spureditor pro Spur eingestellt werden.</p>
</div>
<div class="paragraph">
<p>Im Reiter <strong>Dynamische Veränderungen</strong> sind alle Einfügbaren Dynamikanweisungen definiert. Ändert man
hier Werte dann folgen alle bereits in der Spur vorhandenen Anweisungen den neuen Zahlen.
0 ist unhörbar, 127 ist die höchste Stufe.</p>
</div>
<div class="paragraph">
<p>Eine Spur ohne eingefügte Dynamikanweisungen benutzt den "Benutzdefiniert"-Wert.</p>
</div>
<div class="paragraph">
<p>Welche Lautstärke am Ende aus den Lautsprechern kommt hängt von
zahlreichen Faktoren außerhalb Laborejos ab: Aufnahmepegel und Abspiellautstärke des Instruments,
Mixer und Effekte (Kompression etc.)</p>
</div>
<div class="paragraph">
<p>Im Reiter <strong>Rhythmische Veränderungen</strong> sind die <strong>Abweichungen</strong> vom Anfang und Ende der Noten durch
einen mathematischen Ausdruck definiert. Der eigentliche Wert und die Abweichung bilden durch
Addition einen neuen Wert. Es ist sogar möglich simple Programmieranweiseungen zu geben!</p>
</div>
<div class="paragraph">
<p>Benutzt werden D für Duration, gefolgt von einer Zahl für einen Basisnotenwert:
* Die Variable steht x für die die eigentliche Notenlänge.
* DM Maxima (Doppellonga, Achtfachtganze)
* DL Longa (Doppelbreve, Vierfachganze)
* DB Breve (Doppelganze)
* D1 Ganze Note
* D2 Halbe Note
* D4 Viertelnote
* D8 Achtelnote
* D16 Sechzehntelnote
* D32 Zweiunddreißigstelnote
* D64 Vierundsechzigstelnote
* D128 Hunderachtundzwanzigstelnote
* usw: D256, D512, D1024. 1024 ist die kleinste mögliche Note in Laborejo und auch in der musikalischen Literatur.<sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup>.</p>
</div>
<div class="paragraph">
<p>Man kann die Python-Syntax für falls/dann Unterscheidung benutzen, aber nur für zwei Fälle:
<code>MATHEFORMEL1 if BEDINGUNG-WAHR else MATHEFORMEL2 `
z.B.
`-1 * D64 if x &#8656; D16 else -1 * D32</code>
Die Note wird um eine 64tel verkürzt (-1*D64) falls die eigentliche Note kleiner (oder gleich) ist als eine 16tel, ansonsten wird sie um eine 32tel verkürzt (-1*D32).</p>
</div>
<div class="paragraph">
<p>Zum Beispiel:
* "Normal Anfang" steht auf 0, das heißt eine Note fängt genau da an, wo sie auch logisch sein soll
* "Tenuto Ende" steht auf 0. Die Noten ist exakt so lang wie sie logisch andauert, wird also voll ausgespielt.
* "Legato Ende" steht auf D128, also eine 128tel länger als ihr logischer Wert
* "Staccato Ende" ist -1*x+D64. -1*x heißt die Länge wird auf 0 gesetzt, da eine Länge minus die gleiche Länge natürlich 0 ergibt. Anschließend wird 0 noch um eine 64tel verlängert, also sind Staccatonoten immer so lange wie eine 64tel. Bei Stücken, die bereits über regelmäßie 64tel verfügen und diese dann auch noch Staccato haben möchten sollte man diesen Wert als auf D128, oder noch kürzer, ändern.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_noten_editor">3.2. Noten-Editor</h3>
<div class="paragraph">
<p>Der Noten-Editor (im Gegensatz zum Spur-Editor) hat mehrere Modi: Noten, Blöcke und Control Changes.</p>
</div>
<div class="paragraph">
<p>Nicht alle Menübefehle funktionieren in jedem Modus. Sie werden evtl. ausgegraut und ihre
Tastenkürzel deaktiviert.</p>
</div>
<div class="paragraph">
<p>Der Notenmodus ist die normale Ansicht. Durch <code>Steuerung</code>&#8594;`Modus zur Ansicht und
Bearbeitung` &#8594; <code>Noten</code> (Taste F5) kann man in diesen zurückkehren. Hier kann man Noten und andere
Objekte eingeben, Löschen und bearbeiten.</p>
</div>
<div class="paragraph">
<p>Wie Noten eingegeben werden steht bereits weiter oben. Es gibt aber noch eine Menge andere
Funktionen und Objekte:</p>
</div>
<div class="sect3">
<h4 id="_akkorde_und_pseudo_polyphonie">3.2.1. Akkorde und Pseudo-Polyphonie</h4>
<div class="paragraph">
<p>Akkorde können auch ohne Mehrspur-Polyphonie gebildet werden. Die Enter Taste fügt Akkordtöne hinzu.</p>
</div>
<div class="paragraph">
<p>Wenn man einen Akkord per Auswahl markiert wirken sich alle Befehle auf den ganzen Akkord aus.
Ohne Auswahl wird die dem Tonhöhencursor nächste Note benutzt. So wird Alt+Pfeil Auf/Ab Einzelnoten
innerhalb des Akkordes verschieben.</p>
</div>
<div class="paragraph">
<p>Mit Alt+Links/Rechts ist es möglich Einzelnoten kürzer oder länger zu machen und damit
Pseudo-Polyphone Akkorde zu bilden. Grundsätzlich zählt die <strong>kürzeste Note im Akkord</strong> als dessen
logische Definition: Eine Achtel- und eine Viertelnote zusammen werden innerhalb der Spur als
Achtelnote behandelt, d.h. die nächste Note folgt nach einer Achtel.</p>
</div>
<div class="paragraph">
<p>Falls ein Befehl eine Tonhöhe zur Berechnung benötigt zählt der tiefste Ton im Akkord.</p>
</div>
<div class="paragraph">
<p>Alle Ansprüche, die über diesen Funktionsumfang hinaus gehen müssen durch echte Polyphonie in
mehreren Spuren gelöst werden. Diese können durch Lilypondexport und Midi-Ausgabe das selbe
Instrument ansprechen und in einer Notenzeile gedruckt werden.</p>
</div>
</div>
<div class="sect3">
<h4 id="_feineinstellung_für_notendauern_rechteck_notenköpfe_sequencer">3.2.2. Feineinstellung für Notendauern &amp; Rechteck-Notenköpfe (Sequencer)</h4>
<div class="paragraph">
<p>Traditionelle Noten mit Köpfen und Hälsen sind gut lesbar, unterscheiden korrekt zwischen
enharmonischen Tonhöhen und ermöglichen eine kompakte Schreibweise.</p>
</div>
<div class="paragraph">
<p>Typische Software-Midisequencer arbeiten in der Regel mit der sogenannten Piano-Roll und
rechteckigen Tönen, die exakt die Tonlänge 1:1 darstellen.</p>
</div>
<div class="paragraph">
<p>Laborejo bietet im Menü <code>Steuerung</code> den Befehl <code>Balken-Noten</code> an (Taste F1), mit der die Ansicht
auf solche Rechtecknoten umgeschaltet werden kann. Man sieht jetzt die tatsächliche Länge der
Note. Die Basisnotenlänge, Phrasierungen von Bögen, andere Zeichen wie Staccato etc. werden komplett
berücktsichtig. Was man sieht ist was man hört.</p>
</div>
<div class="paragraph">
<p>Mit den Befehlen <code>Kürzer</code> (Alt+Umschalten+Links) und <code>Länger</code> (Alt+Umschalten+Rechts) im Menü
<code>Noten Bearbeiten</code> können einzelne Noten oder eine Auswahl verlängert oder verkürzt werden.
Alternativ kann man mit der Maus an den Balkenenden links und rechts die Länge ändern.</p>
</div>
<div class="paragraph">
<p>Im Hintergrund ist nach wie vor eine Basislänge vorhanden (Viertel, Halbe, Achtel etc.) und Sie
können jederzeit zwischen Noten und Rechtecken hin- und herschalten. Die Änderungen werden seperat
gespeichert. Auf diese Weise geänderte Noten werden farblich markiert.</p>
</div>
<div class="paragraph">
<p>Tonhöhen, Lautstärke etc. ändern sich dadurch nicht.</p>
</div>
</div>
<div class="sect3">
<h4 id="_transposition">3.2.3. Transposition</h4>
<div class="paragraph">
<p>Alle Töne in Laborejo klingen zunächst so, wie sie notiert sind. Transposition, wie sie etwa
Blechblasinstrumente oder Klarinetten, aber auch Kontrabässe, in normaler Notation (auf dem Papier)
benötigen sind ein Arbeitsschritt für die Druckausgabe, etwa in Lilypond.</p>
</div>
<div class="paragraph">
<p>Möchte man dennoch einzelne Akkorde oder Auszüge in der Tonhöhe verändern (etwa als Variante eines
kopierten Teils nach einer Tonartenmodulation) bietet Laborejo destruktive Befehl an, also
Verfahren, bei denen die Noten tatsächlich geändert werden:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>Noten Bearbeiten</code> &#8594; <code>Akkord Transponieren</code> transponiert einen Akkord oder die momentane Auswahl.</p>
</li>
<li>
<p><code>Strukturen</code>&#8594; <code>Alles transponieren</code> transponiert das gesamte Stück.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Eigentlich sollten für nicht-destruktive Klangtransposition externe Midifilter verwendet werden,
dennoch bietet der Spureditor einen Transpositionswert in Halbtönen, pro Spur an. Die Berechnung
erfolgt als letzter Schritt vor der tatsächlichen Midiausgabe. Sollten Befehle, auch
selbstgeschriebene Skripte, auf die Tonhöhe zugreifen werden sie nicht den Klang benutzen sondern
die logische, tatsächliche, Tonhöhe.</p>
</div>
<div class="paragraph">
<p>TODO: Beschreibung der einzelnen Standaloneobjekte hier drunter
<code>Objekte Einfügen</code> &#8594; ``</p>
</div>
</div>
<div class="sect3">
<h4 id="_metrum_oder_taktart">3.2.4. Metrum oder Taktart</h4>
<div class="paragraph">
<p>Eine Spur ohne Metrikanweisung hat keine Taktart und dementsprechend auch keine Taktstriche.</p>
</div>
<div class="paragraph">
<p>Das Metrum oder die Taktart kann in Laborejo durch Metrikanweisungen eingestellt werden.
Hierzu <code>Objekte Einfügen</code> &#8594; <code>Metrum</code> (Taste M) auswählen.</p>
</div>
<div class="paragraph">
<p>Der Befehl zeigt ein Submenü, in dem häufige Taktarten zur Auswahl angeboten werden. "6/8" fügt
z.B. ein Objekt in die Spur ein, ab dem der 6/8 Takt gilt.</p>
</div>
<div class="paragraph">
<p>Sie können so viele Taktart-Objekte in die Spur einfügen, wie sie möchten. Außerdem können Spuren
unterschiedliche Taktarten haben.</p>
</div>
<div class="paragraph">
<p>Das Objekt kann nicht verändert werden. Es muss gelöscht werden und ein anderes an die selbe Stelle
gesetzt werden.</p>
</div>
<div class="paragraph">
<p>Sie sind selbst dafür verantwortlich, das Objekt ausschließlich an den Anfang eines Taktes zu
setzen. Taktwechsel bevor ein Takt fertig ist sind musikalisch per Definition ausgeschlossen und
ein logischer Fehler. Allerdings nötig für die Bearbeitung der Spur.</p>
</div>
<div class="paragraph">
<p>Diese ausgwählten Taktarten ergeben in Musik und evtl. Lilypond-Druckversion genau die ausgewählten
Taktarten. Allerdings fällt sofort auf, dass in der Spur selbt ein Objekt vorhanden ist, über dem
"Metrical" steht, gefolgt von einer Kombination aus Zahlen und Notenwerten. Es handelt sich um
die tatsächlichen metrischen Verhältnisse (s.u.)</p>
</div>
<div class="sect4">
<h5 id="_eigene_metrische_anweisungen">Eigene metrische Anweisungen</h5>
<div class="paragraph">
<p>Laborejo Metriksystem geht weit über die traditionell bekannten Abkürzungen wie "4/4" hinaus und
unterstützt sehr komplexe, zusammengesetzte und verschachtelte Taktarten beliebieger Länge. Es kann
daher nicht bedient werden ohne die musiktheoretischen Hintergründe zu kennen, was Taktarten
eigentlich sind und warum eine Beschreibung wie "5/8" nur eine auswendiggelernte Abstraktion für
einen komplexen Sachverhalt ist. Daher gibt es hierzu ein eigenes Kapitel am Ende dieser Anleitung.</p>
</div>
<div class="paragraph">
<p>Die Option im Submenü bietet dann die Eingabe in der beschriebenen Form an.</p>
</div>
<div class="paragraph">
<p>TODO: Beschreiben, wenn das Menü tatsächlich existiert. Eigenes Kapitel ganz am Ende. Nur ein String?</p>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_notenschlüssel">3.2.5. Notenschlüssel</h4>
<div class="paragraph">
<p>Der Notenschlüssel wählt aus welcher Ausschnitt aller möglichen Tonhöhen auf dem Fünfliniensystem
gezeigt wird. Er ist damit Bestandteil des Layouts und nicht des Klanges.</p>
</div>
<div class="paragraph">
<p>Eine Spur ohne explizites Schlüsselobjekt wird im G-Schlüssel ("Violinenschlüssel") dargestellt.</p>
</div>
<div class="paragraph">
<p>In Laborejo haben alle Noten tatsächliche Tonhöhen, der Schlüssel ändert nur die Anzeige. Wenn Sie
einen Schlüssel vor vorhandene Noten setzen werden diese sich automatisch auf andere Notenlinien
setzen. Ein Schlüssel ändert <strong>niemals</strong> den Klang!</p>
</div>
<div class="paragraph">
<p>Durch den Befehl <code>Objekte Einfügen</code> &#8594; <code>Schlüssel</code> (Taste C von engl. Clef) kann
ein neuer Notenschlüssel an der Cursorposition eingefügt werden. Die häufigsten Schlüssel gibt es
als Kurzwahl.</p>
</div>
<div class="paragraph">
<p>Es können beliebig viele Schlüssel in einer Spur verwendet werden. Jede Spur hat seine eigenen
Schlüssel.</p>
</div>
<div class="paragraph">
<p>Die Percussion- und Schlagzeugschlüssel sind tatsächliche Notenschlüssel und machen die Spur nicht
etwa zu einem Drumcomputer. Noten haben nach wie vor eine Länge und senden Noten-On und Note-Off
Midisignale.</p>
</div>
</div>
<div class="sect3">
<h4 id="_vorzeichen_und_tonarten">3.2.6. Vorzeichen und Tonarten</h4>
<div class="paragraph">
<p><code>Objekte Einfügen</code> &#8594; <code>Tonart</code> (Taste K von engl. Key) fügt einen Tonartenwechsel an der
Cursorposition ein. Dabei wird die Tonhöhe des Cursors als Grundton der Tonart verwendet. Möchte
man also "D-Dur" setzt man den Cursor auf ein beliebiges D, wählt den Befehl aus und wählt im
folgenden Submenü die Option für "Dur".</p>
</div>
<div class="paragraph">
<p>Neben "Dur" stehen noch viele weitere Tonarten zur Verfügung. Moll natürlich, aber auch Dorisch
oder exotischere Tonarten.</p>
</div>
<div class="paragraph">
<p>Es können beliebig viele Tonarten in einer Spur verwendet werden. Jede Spur hat seine eigenen
Tonarten.</p>
</div>
<div class="paragraph">
<p>Das Submenü bietet auch die Möglichkeit die Tonart komplett selbst zu bestimmen. Kreuze und Bs
können in beliebiger Reihenfolge und Zusammensetzung ausgewählt werden. Hier kann auch jeder
beliebige Grundton ausgewählt werden.</p>
</div>
<div class="paragraph">
<p>Ist in einer Spur keine explizite Tonart gesetzt geht Laborejo von C-Dur aus.</p>
</div>
</div>
<div class="sect3">
<h4 id="_dynamik">3.2.7. Dynamik</h4>
<div class="paragraph">
<p>Das Menü <code>Objekte Einfügen" enthält den Befehl `Dynamik</code> (Taste D). Nach Aufruf können Sie die Art
auswählen, es stehen die üblichen italienischen Bezeichnungen inkl tacet, Stille, zur Verfügung.</p>
</div>
<div class="paragraph">
<p>Zur schnelleren Benutzung kann die Dynamikanweisung hier mit den Nummerntasten eingefügt werden.</p>
</div>
<div class="paragraph">
<p>Außerdem gibt es die Möglichkeit eine Lautstärkeänderung über die Zeit einzufügen (Taste r von
engl. "Ramp"). Ob es crescendo oder decrescendo wird entscheidet sich automatisch. Die Veränderung
sucht sich die beiden Dynamikanweisungen vorher und nachher.</p>
</div>
<div class="sect4">
<h5 id="_feineinstellung">Feineinstellung</h5>
<div class="paragraph">
<p>Wie oben beschrieben gilt in Laborejo zunächst der Kontext für die Lautstärke. Alle Noten, die der
Dynamikanweisung "forte" folgen werden dementsprechend laut gespielt. Die musikalische Realität
verlangt aber noch feinerere Kontrolle. So werden die Zielnoten von Phrasen, z.B. Läufen, nach oben
oft zunehmend lauter gespielt, oder die erste Zählzeit pro Takt wird betont.</p>
</div>
<div class="paragraph">
<p>Jede Note kann zusätzlich zum Kontext dynamisch noch verändert werden. Diese Modifikation ist
relativ, ändert sich also auch wenn der Kontext von Forte nach Piano wechseln würde.</p>
</div>
<div class="paragraph">
<p>Im <code>Noten Bearbeiten</code>-Menü finden sich die Befehle <code>Lauter</code> (Taste &gt;) und <code>Leiser</code> (Taste &lt;).
Werden sie benutzt schalten die Noten automatische in die Balkenansicht um und man sieht wie sich
der vertikale Balken verändert. Der Lautstärkebalken ist nicht mit der Tonhöhe verknüpft, er startet
immer von der gleichen Grundlinie. Die Lautstärken der Noten sind also miteinander vergleichbar.</p>
</div>
<div class="paragraph">
<p>Man kann bei Balken-Noten auch die Maus benutzen um die Lautstärken zu "ziehen".</p>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_bindebögen_oder_legatobögen">3.2.8. Bindebögen oder Legatobögen</h4>
<div class="paragraph">
<p><code>Objekte Einfügen</code> &#8594; <code>Bindebogen</code> (Taste S für engl. Slur) setzt ebendiesen in die Spur.</p>
</div>
<div class="paragraph">
<p>Alle Noten unter einem Bindebogen werden ineinander übergehend gespielt. D.h. die Länge jeder Note
ist etwas länger als ihre normale Gesamtlänge. Die exakte Länge, was "legato" bedeutet, kann im
Spur-Editor in den erweiterten Optionen pro Spur eingestellt werden. Siehe das dazugehörige
Kapitel.</p>
</div>
<div class="paragraph">
<p>Bindebögen sind tatsächliche Objekte (im Gegensatz zu Rhythmusbalken) in der Spur. Ob ein Bogen
geöffnet oder geschlossen wird entscheidet sich aus der Reihenfolge. Das bedeutet implizt, dass
Bindebögen nicht verschachtelt werden können. Für ungeübte Augen sieht es manchmal in gedruckten
Noten so aus, als gäbe es dieses Phänomen. Es handelt sich jedoch bei übergeordneten Bögen stets um
sogenannte "Phrasierungsbögen". Phrasierungsbögen gehören in den Bereich der gedruckten Noten und
sind unspezifische Interpretationshinweise, die meist eine zusammengehörende Melodielinie
kennzeichnen, damit der Interpret das z.B. durch Lautstärke (cresc) oder Geschwindigkeit (accel)
subtil umsetzt. Da diese Art von Interpretation in Laborejo explizit gesetzt wird gibt es
Phrasierungsbögen nur als Lilypond-Befehl.</p>
</div>
</div>
<div class="sect3">
<h4 id="_instrumentenwechsel_das_objekt">3.2.9. Instrumentenwechsel (das Objekt)</h4>
<div class="paragraph">
<p>Das Objekt <code>Objekte Einfügen</code> &#8594; <code>Instrumentenwechsel</code> ist eine Möglichkeit das Midi-Instrument zu
wechseln, indem Program und zwei Bankparameter eingegeben werden. Das ist äquivalent zur
Einstellung des Spur-Editors.</p>
</div>
<div class="paragraph">
<p>Es können beliebig viele Instrumentenwechsel in die Spur eingefügt werden.</p>
</div>
<div class="paragraph">
<p>Ihre Auswirkung hängt allein vom über JACK verbundenen Instrument ab.</p>
</div>
<div class="paragraph">
<p>Zusätzlich kann noch ein Instrumentenkürzel (z.B. Vla für Viola) eingegeben werden. Das kann rein
der Übersicht dienen, wird aber auch von der Lilypondausgabe als Instrumentenwechsel interpretiert.</p>
</div>
<div class="paragraph">
<p>Bitte beachten Sie, dass Program/Bank-Changes exakt dann gesendet werden, wenn der Playhead sie
berührt. Springt man manuell in einen Bereich mit einem anderen Instrument so wird dies nicht
zusätzlich gesendet. Die in die Spur (durch den Spur-Editor) eingebauten Werte werden genau einmal
am Anfang gesendet, wenn der Cursor auf Position 0 steht (<code>Steuerung</code> &#8594; <code>Wiedergabe vom Anfang</code>).</p>
</div>
</div>
<div class="sect3">
<h4 id="_midi_kanäle">3.2.10. MIDI-Kanäle</h4>
<div class="paragraph">
<p>Sample-Instrumente benutzen oft MIDI-Kanäle um unterschiedliche Spielweisen schnell
ansteuern zu können. z.B. um zwischen Auf- und Abstrichen von Streichern hin- und herzuschalten.</p>
</div>
<div class="paragraph">
<p>Dem MIDI-Kanal wird daher besondere Aufmerksamkeit zu teil.</p>
</div>
<div class="paragraph">
<p>Im Spureditor (Strg+T) kann der Basiskanal für eine Spur eingestellt werden. Die Kanäle für MIDI CCs
sind etwas besonderes, hier können mehrere auf einmal ausgewählt werden (oder gar keiner). Diese
Option gibt es genau aus dem Grund, dass Instrumente auf mehrere Kanäle verteilt sind aber
Parameter, die durch CCs vorgenommen werden (Lautstärke, Modulation, Filter etc.) auch auf all
diesen Teilkanälen eingstellt werden müssen.</p>
</div>
<div class="paragraph">
<p>Möchte man Noten auf zwei Kanälen gleichzeitig senden gibt es entweder die Möglichkeit die Spur mit
Hilfe von verlinkten Blöcken zu doppeln, oder ein externes Programm zu nutzen (z.B. mididings oder
einen von mehreren MIDI-Filtern im LV2 Format). Letztere Möglichkeit wird klar empfohlen.</p>
</div>
<div class="paragraph">
<p>Im Noteneditor werden nun die Noten auf dem eingestellten Kanal gesendet. Nun zu den kurzzeitigen
Veränderungen:</p>
</div>
<div class="paragraph">
<p>Im Menü <code>Werkzeugkasten</code> &#8594; <code>MIDI</code> ist <code>Channel Change einfügen</code>. Hiermit kann man den Kanal ab dem
Objekt einstellen.</p>
</div>
<div class="paragraph">
<p>Im Menü <code>Musikobjekte Bearbeiten</code> kann man für jedes Objekt, meistens Noten und Akkorde, <code>Midi
Channel +</code>, <code>Midi Channel -</code> und <code>Midi Channel zurücksetzen</code> auswählen.</p>
</div>
<div class="paragraph">
<p>Plus und Minus verändern den Kanal um je 1, ausgehend vom derzeitigen Basiskanal (ausgewählt durch
den Spureditor oder den Werkzeugkasten). Man kann den Befehl mehrfach auf das gleiche Objekt
aufrufen um um +3 etc. zu verändern. <code>Zurücksetzen</code> löscht die Veränderung wieder.</p>
</div>
<div class="paragraph">
<p>Diese Veränderungen sind Eigenschaften der Noten selbst, bzw. des gesamten homophonen Akkordes.
Auch hier ist echte Polyphonie nur durch mehrere Spuren möglich.</p>
</div>
<div class="paragraph">
<p>Sie sind selber dafür verantwortlich, dass der Kanal nicht 1 unter- und 16 überschreitet.</p>
</div>
<div class="paragraph">
<p>Die drei Befehle sind sehr nützlich, haben aber keine Standardtastaturkürzel. Für diesen
Einsatzzweck sind sogenannte "Hover Shortcuts" gedacht. TODO: interner link</p>
</div>
<div class="paragraph">
<p>TODO: Hier weiter machen:
Triolen
N-Tole
Zweiteilen/Dreiteilen/X-Tteilen. auch als altenrative um Triolen zu setzen.
Balken, auch mit dem Selection-Trick. balken ist ein switch in der note, so wie legatobögen. Mit start/end
Tenuto, Staccator, Haltebogen/Tie</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_blöcke_und_blockmodus">3.3. Blöcke und Blockmodus</h3>
<div class="paragraph">
<p>Laborejos Spuren bestehen aus Blöcken. Jede Spur hat automatisch einen Block, der so lange ist wie
die Spur, d.h. es ist möglich Noten zu setzen ohne jemals mit Blöcken in Berührung zu kommen.</p>
</div>
<div class="paragraph">
<p>Nun kann dieser Block um weitere ergänzt werden, in die Noten eingetragen werden können.
Ein Blockende ist durch eine geschwungene Linie gekennzeichnet, über die der Cursor mit einem
Extraschritt navigieren muss.</p>
</div>
<div class="paragraph">
<p>Blöcke und deren Grenzen sind in der Wiedergabe nicht zu hören. Auch für die Notenlogik existieren
die Grenzen nicht. Es wird weiterhin von Links nach Rechts ausgewertet: Momentan geltende Schlüssel,
Tonarten, Dynamikanweisungen usw. bleiben über die Blockgrenzen gültig.</p>
</div>
<div class="paragraph">
<p>Es gibt mehrere Gründe Blöcke zu verwenden:
* Übersicht: Unterschiedliche Teile ("Strophe, Refrain" oder einfach "A, B, C"
* Erleichtertes Arbeiten: Blöcke duplizieren ist manchmal einfacher als Kopieren &amp; Einfügen, selbst wenn man anschließend unabhängig an ihnen weiterarbeitet.
* Wiederverwendung: Wiederholungen gehören zur Musik. Wörtliche Wiederholungen können durch verlinkte Blöcke hergestellt werden.
* Dopplung in anderen Spuren: Blöcke können auf andere Spuren verschoben werden, auch verlinkte Blöcke. Damit können zwei Instrumente das gleiche spielen.</p>
</div>
<div class="paragraph">
<p>Es können neue Blöcke am Ende der Spur erschaffen werden, der Block am Cursor geteilt werden oder
zwei Blöcke vereint werden.</p>
</div>
<div class="paragraph">
<p>Um Blöcke umzubenennen und hin- und herzuschieben muss man sich in den Blockmodus begeben. Siehe
das entsprechende Kapitel.</p>
</div>
<div class="paragraph">
<p>Normale Blöcke, und auch verlinkte Blöcke, werden immer direkt in eine Spur eingefügt und befinden
sich aufgereiht auf der selben Ebene. Das heißt, man kann keine Blöcke in andere Blöcke (und keine
Spuren in Blöcke) einfügen. Verschachtelung und Rekursion sind nicht möglich.</p>
</div>
<div class="paragraph">
<p>Welche Dauer ein Block haben soll richtet sich ganz nach Ihren Vorlieben. Wir empfehlen allerdings
eine Länge von einigen Takten. Zumindest sollte im Blockmodus die Beschriftung des Blocks ("ABC
Start" und "ABC Ende") nicht länger sein als der Block selbst.</p>
</div>
<div class="paragraph">
<p>Die Farbe eines Blockes ergibt sich automatisch aus seinem Namen. Siehe dazu "Blockmodus".</p>
</div>
<div class="sect3">
<h4 id="_blöcke_erschaffen_und_duplizieren">3.3.1. Blöcke Erschaffen und Duplizieren</h4>
<div class="paragraph">
<p>Das Strukturen-Menü beinhaltet alle Befehle um mit Blöcken umzugehen.</p>
</div>
<div class="paragraph">
<p>Die schnellste Art einen neuen Block zu erschaffen ist die Einfügentaste (Insert). Befindet sich der
Cursor in einem Block wird dieser an der Cursorposition getrennt. Am Ende der Spur hat das den
selben Effekt, als würde ein leerer Block angehängt.</p>
</div>
<div class="paragraph">
<p>Wenn Sie verlinkte Blöcke trennen und vereinen gibt es Spezialfälle zu beachten, siehe dazu das
Kapitel "Blöcke Trennen und Vereinen".</p>
</div>
<div class="paragraph">
<p>In seltenen Fällen benötigt man zwingend die Funktion explizit einen leeren Block ans Ende zu
setzen, etwas wenn man nach einen verlinkten Block am Ende einen eigenständigen, leeren Block haben
möchte. Hierzu gibt es im Menü <code>Strukturen</code> den Befehl <code>Leeren Block ans Ende anhängen</code></p>
</div>
<div class="paragraph">
<p>Der Befehl "Duplizieren" erschafft eine Kopie des ausgewählten Blocks und platziert sie rechts
nebem dem Original. An den Namen wird ein "Copy" (engl. Kopie) angehängt. Die Kopie teilt sich
zunächst den Inhalt mit dem Original, ist aber ab jetzt unabhängig. Die Kopie kann auch in eine
andere Spur verschoben werden (siehe Kapitel "Blockmodus").</p>
</div>
<div class="paragraph">
<p>Um eine Kopie zu erhalten, die sich den Inhalt mit dem Original teilt siehe "Verlinkte Blöcke".</p>
</div>
</div>
<div class="sect3">
<h4 id="_blöcke_löschen">3.3.2. Blöcke Löschen</h4>
<div class="paragraph">
<p>Blöcke löschen Sie über das Menü <code>Strukturen</code>&#8594;`Diesen Block löschen`. Der Befehl hat mit Absicht
kein Tastenkürzel, da eine Blocklöschung nicht ausversehen passieren soll. Möchten Sie mehrere
Blöcke hintereinander löschen, etwa in einer "Aufräumphase", begeben Sie sich in den Blockmodus
um dort mit der rechten Maustaste Blöcke löschen zu können.</p>
</div>
<div class="paragraph">
<p>Der letzte bzw. einzige Block einer Spur kann nicht gelöscht werden.</p>
</div>
<div class="paragraph">
<p>Manchmal erschafft man ausversehen mehrere leere Blöcke hintereinander. Etwas am Anfang der Spur,
oder weil man zweimal hintereinander auf die Einfügentaste gedrückt hat ohne es zu bemerken.
Für diesen Fall muss man nicht umständlich den Cursor zwischen zwei Blockgrenzen bewegen, was man
nicht sehen könnte, sondern es gibt <code>Strukturen</code>&#8594;`Alle leeren Blöcken löschen`.</p>
</div>
</div>
<div class="sect3">
<h4 id="_blöcke_mit_fester_mindestdauer">3.3.3. Blöcke mit fester Mindestdauer</h4>
<div class="paragraph">
<p>Ein Block kann, entweder durch das Sturkturmenü oder durch das Kontextmenü im Blockmodus, auf eine
feste Mindestdauer eingestellt werden ("Eigenschaften Bearbeiten"). Nach Auswahl zeigt sich ein
Untermenü, dass eine Berechnung der "Ticks" erlaubt. Das ist die MIDI-Einheit für Rhythmus.
Es entsteht eine Art Platzhalter, der erst länger wird, sobald der Inhalt auch länger wird.</p>
</div>
<div class="paragraph">
<p>Oft weiß man schon im Vorraus, wie lange eine Strophe, ein kontrastierender Formteil, oder ein
Gitarrensolo sein wird. Mit Mindestdauern (und evtl. verlinkten Blöcken) kann man sich bereits ein
Grundgerüst für die Komposition erstellen, dass man anschließend mit Musik füllen kann.</p>
</div>
</div>
<div class="sect3">
<h4 id="_verlinkte_blöcke">3.3.4. Verlinkte Blöcke</h4>
<div class="paragraph">
<p>Ein verlinkter Block teilt sich den Inhalt mit einem, oder mehreren, anderen. Ändert man einen,
Noten einfügen, löschen etc. ändern sich auch automatisch alle anderen. Auch andere Eigenschaften,
wie der Name und die Mindestdauer, sind geteilt.</p>
</div>
<div class="paragraph">
<p>Im Blockmodus können verlinkte Blöcke beliebig verschoben werden, etwa an das Ende einer Spur oder
sogar in eine andere Spur.</p>
</div>
<div class="paragraph">
<p>Das ermöglicht viele nützliche Arbeitstechniken. Zum Beispiel:
* Ein Refrain kommt nach der Strophe noch ein weiteres mal, oder generell mehrmals im Stück
* Zwei Instrumente spielen die gleichen Noten für eine Weile.
* Oder ein Instrument spielt zu einem späteren Zeitpunkt etwas, dass vorher woanders vorkam.</p>
</div>
<div class="paragraph">
<p>Verlinkte Blöcke erzeugt man fast wie normale Kopien auch: <code>Strukturen</code>&#8594;`Diesen Block mit Link
verdoppeln`. Oder im Blockmodus durch das Rechtsklick-Kontextmenü.</p>
</div>
<div class="paragraph">
<p>Das Bearbeiten von verlinkten Blöcken sollten Sie vorzugsweise in der ersten Version (ganz links)
machen, da hier die Ansicht am "stabilsten" ist. Würden Sie etwa im vierten verlinkten Block einer
Spur arbeiten würde sich jedes Einfügen einer Note darin auswirken, dass der Cursor optisch viermal
so weit nach rechts "springt", wie man eigentlich erwartet, da jetzt weiter links (also früher) in
jedem der vier verlinkten Blöcke diese Note eingefügt wurde.</p>
</div>
<div class="paragraph">
<p>Löscht man einen verlinkten Block so ändert sich dadurch nichts an den anderen Versionen.</p>
</div>
<div class="paragraph">
<p>Um einen verlinkten Blöck zu einer eigenständigen Version zu machen benutzen gibt es <code>Link des
Blocks lösen</code> im `Struktur`menü, sowie als Kontextmenüfunktion im Blockmodus.</p>
</div>
<div class="paragraph">
<p>Um von einem verlinkten Block eine eigenständige Kopie zu erstellen können Sie einfach das normale
`Duplizieren`benutzen.</p>
</div>
<div class="paragraph">
<p>Bitte bedenken Sie, dass die Ansicht der Noten nicht deren Inhalt bedeutet. Laborejo speichert
Tonhöhen, und nicht Positionen auf Linien. Haben Sie also zwei verlinkte Blöcke, bei einem steht
ein Violinenschlüssel vorher (in einem anderen Block) und beim anderen ein Bassschlüssel, so sehen
die Noten auch anders aus.</p>
</div>
<div class="paragraph">
<p>Gleiches gilt auch für Lautstärken und andere Parameter, die von der Umgebung abhängig sind:
Befindet sich vor der erste Kopie des verlinkten Blocks eine Dynamikanweisung "piano" und vor dem
zweiten ein "forte", so werden die Blöcke auch unterschiedlich laut gespielt.</p>
</div>
</div>
<div class="sect3">
<h4 id="_blöcke_trennen_und_vereinen">3.3.5. Blöcke Trennen und Vereinen</h4>
<div class="paragraph">
<p>Um einen existierenden Block zu trennen, also zwei daraus zu machen, drücken sie die Einfügen Taste
oder benutzen den Befehl <code>Strukturen</code>&#8594;`Diesen Block teilen`. Da diese Funktion eine Cursorposition
benötigt kann sie nicht im Blockmodus benutzt werden.</p>
</div>
<div class="paragraph">
<p>Beide Blöcke haben zunächst den gleichen Namen, und damit die gleiche Farbe. Sie stehen auch noch
an der alten Position, musikalisch ist noch keine Veränderung eingetreten. Ab nun sind sie aber
individuell veränderbar und können im Blockmodus auch verschoben werden.</p>
</div>
<div class="paragraph">
<p>Das Gegenteil von Trennen (abgesehen von Undo, Strg+Z) ist <code>Mit nächstem Block vereinen</code>, das es
im `Struktur`menü gibt, sowie als Kontextmenüfunktion im Blockmodus. Die zu vereinenden Blöcke
müssen nicht vorher getrennt worden sein, alle Blöcke sind geeignet.</p>
</div>
<div class="paragraph">
<p>Eine Besonderheit ergibt sich bei verlinkten Blöcken. Diese können, wie normale Blöcke, getrennt
werden. Die Trennung geschieht dann in allen verlinkten Versionen. Als Resultat erhalten Sie einen
neuen Satz an verlinkten Blöcken, die jeweils zweiten Hälften.</p>
</div>
<div class="paragraph">
<p>Vereinen geht auch, aber nur unter eine Bedingung: Alle Versionen müssen von jeweils dem gleichen
verlinkten Block gefolgt werden. Vereinfacht kann man sich diesen Prozess als das Rückgängigmachen
der Trennung vorstellen.</p>
</div>
<div class="paragraph">
<p>Beispiel: A ist ein Set verlinkter Blöcke, B ebenso, C und D sind unabhängige Blöcke. X ist ein neu
enstandener verlinkter Block.</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>ABAB</code> kann vereint werden. Es ensteht: <code>XX</code></p>
</li>
<li>
<p><code>ABCAB</code> kann vereint werden. Es ensteht: <code>XCX</code></p>
</li>
<li>
<p><code>ABAC</code> kann nicht vereint werden, da B und C verschieden sind.</p>
</li>
<li>
<p><code>AABBAB</code> kann nicht vereint werden, da auf A jeweils B folgen müsste.</p>
</li>
<li>
<p><code>AA</code> ist ein Spezialfall und kann nicht vereint werden.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_blockmodus">3.3.6. Blockmodus</h4>
<div class="paragraph">
<p>Der Blockmodus ist eine Spezialansicht des Noteneditors, wie auch Control Changes. Durch
<code>Steuerung</code>&#8594;`Modus zur Ansicht und Bearbeitung` &#8594; <code>Blöcke</code> (Taste F6) kann man ihn aktivieren.
Die Noteneingabe und viele andere Befehle, auch per Midi, werden deaktiviert.</p>
</div>
<div class="paragraph">
<p>Blöcke werden nun deutlich mit Namen und Farbe dargestellt, ohne Noten und andere Objekte.
Die Skalierung (Steuerung+Umschalten mit Plus oder Minus) ist jetzt besonders hilfreich um das ganze
Stück auf einmal zu betrachten.</p>
</div>
<div class="paragraph">
<p>Drückt man mit der linken Maustaste auf einen Block, hält sie gedrückt und bewegt dann die Maus kann
man einen Block verschieben. Dies ist auch Spurübergreifend möglich. Sobald man die Maustaste wieder
loslässt ändert sich die Blockstruktur.</p>
</div>
<div class="paragraph">
<p>Es ist nicht möglich Blöcke in einem Arbeitsschritt zu verschieben und zu kopieren (wie das in
einem Dateimanager oft der Fall ist). Es muss immer erst dupliziert und/oder verlinkt werden und
anschließend in einem zweiten Schritt die Kopie verschoben werden.</p>
</div>
<div class="paragraph">
<p>Da man im Blockmodus mit der Maus arbeiten muss und es keinen Cursor gibt, der den aktuellen Block
auswählt (also die Menübefehle deaktiviert sind) gibt es hier ein Kontextmenü: Mit der rechten
Maustaste lassen sich die Eigenschaften eines Blocks bearbeiten sowie weitere typische Funktionen
(löschen, duplizieren etc.) aufrufen.</p>
</div>
<div class="paragraph">
<p>Der Blockmodus kann auch benutzt werden um ganze Spuren zu verschieben. Hierzu die Alt-Taste
gedrückt haben, während Sie mit der Linken Maustaste Spuren hoch und runter verschieben.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_modus_für_control_changes">4. Modus für Control Changes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Nebem dem Notenmodus und dem Blockmodus gibt es den CC-Modus. Durch <code>Steuerung</code>&#8594;`Modus zur Ansicht
und Bearbeitung` &#8594; <code>Control Changes</code> (Taste F7) kann man ihn aktivieren.</p>
</div>
<div class="paragraph">
<p>CCs sind Bestandteil des MIDI Protokolls. Man kann sie sich als Regler oder Drehknöpfe an einem
Gerät vorstellen. Jeder der 16 Midikanäle verfügt über 128 (0 bis 127) CCs, deren Bedeutung per
Konvention oder Tradition festlegt ist, technisch aber einfach nur einen Zahlenraum, wiederum von 0
bis 127, darstellt. Zum Beispiel wird der CC Nr 7 ("CC7") oft für Lautstärke ("Channel Volume")
benutzt. Stellt man seinen Wert auf 0 ist die Lautstärke aus, auf 127 ist das Maximum. Was das
konkret bedeutet entscheidet das Gerät oder Programm (Synthesizer, Sampler etc.), an das die Spur
seine CCs sendet. Ein anderes Gerät könnte CC7 aber auch durchaus für die Helligkeit seines
eingebauten Displays benutzen. Welche CC Nummern traditionell welche Funktion haben muss außerhalb
dieses Handbuchs nachgelesen werden.</p>
</div>
<div class="paragraph">
<p>Im CC-Modus wird die Spur zu einem Graphen, also Einzelpunkte und deren Verbindungen.
Die Musiknoten schimmern leicht im Hintergrund durch, damit Sie sich noch an der Musik orientieren
können.</p>
</div>
<div class="paragraph">
<p>In der Menüleiste ist ein Kontrollfeld erschienen, in dem man die momentan zu bearbeitende CC Nummer
(für alle Spuren) auswählen kann. D.h. es ist nicht möglich zwei CCs der gleichen Spur parallel zu
betrachten.</p>
</div>
<div class="paragraph">
<p>Ein Klick mit der linken Maustaste fügt nun an der entsprechenden Rhythmusposition einen Wert ein.
So könnte man z.B. allmählich die Lautstärke (CC7) von 0/aus zu voll/127 steigern indem man immer
höhere Punkte nach weiter rechts setzt.</p>
</div>
<div class="paragraph">
<p>Punkte können auch durch die Maus frei verschoben werden, sowohl in Wert als auch Position.</p>
</div>
<div class="paragraph">
<p>TODO: Selection?</p>
</div>
<div class="sect2">
<h3 id="_einrasten">4.1. Einrasten</h3>
<div class="paragraph">
<p>Ebenfalls in der Menüleiste gibt es die "Einrasten"-Funktion. Hierbei wird die Rhythmusposition
automatisch an die nächste Stelle des Rhythmusgitters verschoben. (siehe dort). Das ist nützlich,
wenn man CC-Werte rhythmisch präzise, z.B. gleichzeitig mit Noten setzen möchte. Man stelle sich
Achtelkette vor, die auf jeder Position auch einen CC-Wert ändert.</p>
</div>
</div>
<div class="sect2">
<h3 id="_interpolation_automatische_zwischenschritte">4.2. Interpolation - Automatische Zwischenschritte</h3>
<div class="paragraph">
<p>Häufig möchte man von einem Startwert einen Zielwert erreichen. Alle Zwischenschritte von Hand als
Einzelpunkte zu setzen ist sicherlich musikalisch am wertvollsten, allerdings auch zeitaufwändig.</p>
</div>
<div class="paragraph">
<p>Laborejo kann automatisch Zwischenschritte generieren, sogenannte Interpolation.
Mit der rechten Maustaste auf einen existierenden Punkt kann man diesen editieren und die Interpolation
zum Folgepunkt auswählen.</p>
</div>
<div class="paragraph">
<p>Man sieht dabei stets die tatsächlich Punkte, und nicht eine Verbindungslinie.
Es ist also ablesbar wann genau sich der Wert von z.B. 57 auf 58 ändert. Zwischenschritte lässt
das MIDI-Protokoll schlicht nicht zu.</p>
</div>
<div class="paragraph">
<p>Es gibt mehrere (mathematische) Kurven, wie diese Veränderung des Werte auf die vorhandene Zeit
aufgeteilt wird. Die einfachste Methode ist "linear", der Vorhandene Zeitraum wird gleichmäßig
aufgeteilt. Weitere musikalisch sinnvollere Interpolationskurven probieren Sie am besten selbst aus.
Und am Ende des Tages gibt es immer die Möglichkeit die Punkte von Hand zu setzen. Machen Sie keine
musikalischen Kompromisse!</p>
</div>
<div class="paragraph">
<p>Control Changes sind, wie Noten, in Blöcken organisiert. Diese können nach den gleichen Regeln
dupliziert, verschoben, verlinkt, getrennt und vereint werden. Bitte lesen Sie dazu das Kapitel
über Notenblöcke. Der Unterschied zu Notenblöcken ist, dass bei CCs alles mit der Maus gehandhabt
wird.</p>
</div>
</div>
<div class="sect2">
<h3 id="_control_changes_und_midikanäle">4.3. Control Changes und Midikanäle</h3>
<div class="paragraph">
<p>Kurzversion: Laborejo kann im Spur-Editor einstellen, auf welchen Midikanälen die CCs gleichzeitig
gesendet werden sollen. Hat man ein Instrumente mit "Articulations" auf den Channels sollte man alle
nötigen Kanäle für CCs aktivieren. damit sich Änderungen auch auf alle Articulations auswirken.</p>
</div>
<div class="paragraph">
<p>Lange Erklärung:</p>
</div>
<div class="paragraph">
<p>Der MIDI-Standard sah ursprünglich vor, dass über ein Kabel (für JACK ist das ein Port, für
Laborejo eine Spur) 16 Instrumente gleichzeitig angesteuert werden konnten. Das sind die
Kanäle/Channels. Dementsprechend gelten CCs auch immer nur für einen Kanal, da sonst eine
Lautstärkenveränderung durch CC7 alle Instrumente gleichzeitig betroffen hätte.</p>
</div>
<div class="paragraph">
<p>In einer modernen Softwareumgebung, in der sich Laborejo befindet, ist dieses Konzept eigentlich
überholt. Ein Instrument wird nun durch einen Port, also ein ursprüngliches Kabel, dargstellt. Die
16 Kanäle haben eigentlich keine Funktion mehr und werden auch in vielen Programmen wie
Synthesizern gar nicht mehr benutzt.</p>
</div>
<div class="paragraph">
<p>Orchestrale Samples, die typischerweise mit Laborejo angesteuert werden, benutzen die
freigewordenen Kanäle jedoch häufig, um alternative Spielweisen des selben Instrumentes anzusteuern.
z.B. Auf- und Abstriche eines Streichinstruments. (Es gibt auch Alternativen wie Keyswitches, aber
die bereiten Ihnen bei CCs keine Probleme, sind also hier nicht Thema).</p>
</div>
<div class="paragraph">
<p>Die genaue Kanalbelegung eines Instrumentes variiert natürlich von Sample zu Sample. Alle folgenden
Zahlen sind nur Beispiele:</p>
</div>
<div class="paragraph">
<p>Aufstrich ist auf Kanal 2, Abstrich auf Kanal 3.
Sendet man während eines Aufstrichs eine CC-Änderung (z.B. "Expression", um Vibrato der
linken Hand einzustellen) gilt dieser Wert noch nicht für den Abstrichkanal. Kommt nun der Abstrich
auf wird die falsche Vibratoeinstellung benutzt.</p>
</div>
<div class="paragraph">
<p>Die Lösung ist es CC-Werte auf allen Kanälen gleichzeitig "auf Vorrat" zu senden. Im Spur-Editor
kann pro Spur eingestellt werden, welche Kanäle für CCs gelten. Im obigen Beispiel wollen wir also
immer auf 2 und 3 senden. Würde sich ein Staccato-Sample auf Kanal 4 befinden müsste dieser auch als
CC aktiviert werden.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_tempospur">5. Tempospur</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Die Tempospur befindet sich ganz oben in der Notenansicht. Sie ist immer vorhanden und sichtbar.
Es gilt immer genau ein Tempo gleichzeitig, für alle Spuren.</p>
</div>
<div class="paragraph">
<p>In der wirklichen Welt hat Musik immer nur genau ein Tempo. In Laborejo wird das praktiziert: Da
hier der Computer für Sie "denkt" sind für komplexe Musik keine Notbehelfe oder Selbsttäuschung
wie "Polytempo" nötig.</p>
</div>
<div class="paragraph">
<p>Generell folgt das Setzen von Tempoänderungen dem gleichen Schema wie CCs. Lesen Sie also bitte das
Control-Change-Kapitel um das Setzen von Punkten, Interpolation, Blöcke und mehr zu lernen.
Tempo ist in MIDI ein eigener Bereich und hat nichts mit Kanälen zu tun. Die ausführliche
Betrachtung über Kanäle im CC-Kapitel spielt also hier keine Rolle.</p>
</div>
<div class="paragraph">
<p>Tempopunkte in Laborejo bestehen aus zwei Werten: Welcher Rhythmuswert (z.B. Viertelnote/D4) wird
gezählt und wieviele davon soll es pro Minute geben. Dies folgt dem traditionellen Metronom bzw.
BPM (Beats per Minute).</p>
</div>
<div class="paragraph">
<p>Einige Arbeitsschritte mit dem Tempo sind so häufig, dass es für sie Objekte im <code>Einfügen</code>-Menü gibt.
z.B. ist eine Fermate in Wirklichkeit eine extreme Verlangsamung des Tempos für eine Notendauer.</p>
</div>
<div class="paragraph">
<p>Hinweis: Bitte benutzen Sie keinen verlinkten Block als letzten, am Ende der Tempospur. Der letzte
Block wird automatisch auf die Länge der längsten Spur erweitert. Das heißt alle verlinkten
Versionen werden auch länger! Es entsteht eine unvorhersagbare Verschiebung der Tempospur, die
musikalisch unnütz ist.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_werkzeugkasten">6. Werkzeugkasten</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_raster_grid">7. Raster / Grid</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_hover_tastasturkürzel">8. Hover-Tastasturkürzel</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Die Tastaturkürzel ("Shortcuts") in Laborejo sind festgelegt. Manche Befehle, wie z.B. alle im
Werkzeugkasten, haben überhaupt keine Kürzel, müssen aber trotzdem sehr häufig aufgerufen werden um
normal benutzbar zu sein. Zum Beispiel benötigt das Erzeugen einer zufälligen Melodie das vielfache
Erzeugen einer Einzelnote. Jedes mal den Menübefehl mit der Maus aufzurufen wäre eine Zumutung.</p>
</div>
<div class="paragraph">
<p>Dafür gibt es in Laborejo sog. Hovershortcuts. Hat ein Menübefehl noch kein Tastenkürzel kann man
mit dem Mauszeiger über diesem schweben, also einfach darauf zeigen, und dann eine Tastenkombination
drücken um sie dem Menübefehl zuzuweisen. Natürlich können nur Tasten verwendet werden, die noch
nichts anderes auslösen.</p>
</div>
<div class="paragraph">
<p>Versucht man einen bereits benutzten Hovershortcut an einen anderen Befehl zu binden wird dessen
alte Verwendung gelöscht.</p>
</div>
<div class="paragraph">
<p>Diese Einstellungen werden auf dem Computer (für Experten: Im Config-Verzeichnis des Benutzers)
gespeichert, aber nicht in der Datei.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_tickwidget">9. Tickwidget</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TODO nach Redesign des Widgets.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_metronom">10. Metronom</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TODO:</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lilypond_ausgabe">11. Lilypond Ausgabe</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TODO: Lilypond gibt es, soll hier aber als eigenständiger Bereich erklärt werden.
So z.B. transponierte Instrumente hier, anstatt im Transpositionskapitel.
Es wird nicht erklärt wie Lilypond funktioniert. Nur klargemacht, dass das die Druckausgabe ist.
So richtig komplexe Partituren macht man besser in Lilypond selbst, aber der Laborejoexport sollte ne
gute Grundlage sein.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_eigene_scripte">12. Eigene Scripte</h2>
<div class="sectionbody">
<div class="paragraph">
<p>TODO: Das Interface und Menü fehlt noch. Geht aber schon mit der Testdatei.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_faq_und_detailerklärungen">13. FAQ und Detailerklärungen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Um ehrlich zu sein, niemand hat diese Fragen gestellt. Aber es sind dennoch wichtige Details. Daher
verzichten wir auch auf tatsächliche Fragestellungen.</p>
</div>
<div class="sect2">
<h3 id="_die_gleiche_note_zweimal_in_einem_akkord">13.1. Die gleiche Note zweimal in einem Akkord</h3>
<div class="paragraph">
<p>Die gleiche Stammnote kann nicht zweimal in einem Akkord vorkommen. Auch Fis mit Fes nicht. z.B.
für diese Stimmführung über zwei Leittöne mit zwei Stimmen: <code>&lt;g g&gt; &lt;ges gis&gt; &lt;f a&gt;</code></p>
</div>
<div class="paragraph">
<p>Das wäre echte Polyphonie und gehört auf eine eigene Spur. Laborejos Philosohpie ist es, dass eine
Spur eine Stimme darstelle. Akkorde oder einfache Polyphonie sind aus Bequemlichkeitsgründen
möglich, aber bestimmte, komplexe, Stimmführung erfordert echte Stimmführung. Im Fis/Fes-Beispiel
ist außerdem zu überprüfen, ob es sich nicht um einen ortographischen Fehler handelt.</p>
</div>
</div>
<div class="sect2">
<h3 id="_extreme_notenwerte_und_dauern">13.2. Extreme Notenwerte- und Dauern</h3>
<div class="paragraph">
<p>Nur weil extreme Werte theoretisch unterstützt werden (Maxima- und 1024tel Noten, Noten tiefer oder
höher als MIDI 0 und 127) heißt nicht, dass diese auch zur Benutzung gedacht sind. Extremwerte sind
ein Toleranzbereich, der es erlaubt während der Bearbeitung kurzzeitig Grenzen zu überschreiten,
die nicht erklingen sollen.</p>
</div>
<div class="paragraph">
<p>z.B. soll eine ganze Reihe Noten, inkl der Midi-Note 120, eine Quinte (7 Halbtöne) nach oben
transponiert werden. Der Benutzer entscheidet sich aus Übersichtsgründen erst eine Oktave nach oben
(12 Halbtöne) zu transponieren und dann wieder nach unten zu korrigieren. Hier wird kurzeitig die
Midi-Note 132 erreicht. Würde Laborejo die pure Existenz dieser Werte ablehnen würde der ganze
Prozess gestoppt werden, im schlimmsten Fall mit Datenverlust, da 120 + 12 = 132 ergibt, aber
127 erzwungen wird. Anschließend würde von 127 abwärts gerechnet und es käme die falsche Note
heraus.</p>
</div>
<div class="paragraph">
<p>Analog kann man sich vorstellen, dass so etwas auch mit rhythmischen Längen passieren kann.</p>
</div>
<div class="paragraph">
<p>Es kann auch vorkommen, dass ein Wert rechnerisch unterstützt wird aber in der grafischen Oberfläche
keine Entsprechung hat. Das kommt nur selten vor (z.B. 1024tel Noten) und ist generell unkritisch.</p>
</div>
<div class="paragraph">
<p>Sollte sich ein Datenverlust dennoch einstellen, der nicht mehr rückgängig gemacht werden kann,
bleibt nur noch die Undo-Funktion, da diese sich die tatsächlichen Werte gemerkt hat und nicht
einfach den gegenteiligen Befehl ausführt (also nicht Dauer halbieren durch verdoppeln rückgängig
machen).</p>
</div>
</div>
<div class="sect2">
<h3 id="_eine_note_auf_mehreren_channels_gleichzeitig_senden">13.3. Eine Note auf mehreren Channels gleichzeitig senden</h3>
<div class="paragraph">
<p>Channel Ranges, also eine Midi-Note mehreren kanälen gleichzeitig, müssen extern gemacht werden.
Es gibt eine Reihe an Midi-Programmen und Plugins, die so etwas machen.</p>
</div>
<div class="paragraph">
<p>Eine Ausnahme sind Control Changes. Diese kann Laborejo auf beliebig vielen Midikanälen gleichzeitig
senden. Siehe dazu den Spureditor.</p>
</div>
</div>
<div class="sect2">
<h3 id="_relative_midi_programchanges_oder_bankchanges">13.4. Relative MIDI Programchanges oder Bankchanges</h3>
<div class="paragraph">
<p>Es gibt zwar relative Midi-Channelchanges, z.B. vom jetzigen Channel +1, aber keine relativen
Programchanges oder Bankchanges. MIDI-Kanäle sind in den Zeiten eines Jack-Systems fast schon
obsolet und werden hauptsächlich unterstüzt um all die alten Softwaresampler, wie sf2 Player, zu
unterstützen, die Kanäle benutzen um Artikulationswechsel (z.B. Aufstrich und Abstrich) zu
implementieren.</p>
</div>
<div class="paragraph">
<p>Programchanges haben historisch nie diese Rolle übernommen und werden daher auch nicht in dieser
Funktion unterstützt.</p>
</div>
</div>
<div class="sect2">
<h3 id="_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.</h3>
<div class="paragraph">
<p>Für Triolen ist es einfacher eine Viertelnote zu setzen und zu splitten anstatt drei Achtelnoten umzuformen.</p>
</div>
<div class="paragraph">
<p>Beams sind einfachs per Selection, statt Start und Ende zu markieren.</p>
</div>
<div class="paragraph">
<p>Slurs sind eigene Objekte, Beams nicht. Erklären warum: Bei Slur schreibt man dazwischen, Beam gehört zu einem notenwert, den kann man nicht einfach ändern.</p>
</div>
<div class="paragraph">
<p>Trackname mit rechtsklick auf den namen geht nur im Blockmodus. Das ist gewollte, damit das nicht im Weg ist.
Der normale Weg ist der Trackeditor.</p>
</div>
<div class="paragraph">
<p>Objekt/Auswahl verdoppeln noch irgendwo ein.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_und_start">14. Installation und Start</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Laborejo ist exklusiv für Linux. Am besten installieren Sie Laborejo über deinen Paketmanager.
Falls es dort nicht vorhanden ist, oder nur in einer veralteten Version, bitten sie ihre
Linuxdistribution Laborejo bereitzustellen.</p>
</div>
<div class="paragraph">
<p>Falls in den Paketquellen vorhanden bitte direkt bei "laborejo in Argodejo (New Session Manager)" weiterlesen.
Falls nicht kann man Laborejo auch selbst "bauen".</p>
</div>
<div class="ulist">
<div class="title">Abhängigkeiten*</div>
<ul>
<li>
<p>Eine Liste der Abhängigkeit befindet sich in der README.md</p>
</li>
<li>
<p>Kompilieren und Installieren geht entweder mit einem Releasedownload oder mit der Git-Version:</p>
<div class="ulist">
<ul>
<li>
<p>Laden Sie von <a href="https://www.laborejo.org/downloads" class="bare">https://www.laborejo.org/downloads</a> die aktuelle Version herunter und entpacken Sie sie.</p>
</li>
<li>
<p><code>git clone <a href="https://git.laborejo.org/lss/laborejo.git" class="bare">https://git.laborejo.org/lss/laborejo.git</a></code></p>
</li>
</ul>
</div>
</li>
<li>
<p>Wechseln Sie in das neue Verzeichnis und benutzen diese Befehle:
*<code>./configure --prefix=/usr</code></p>
<div class="ulist">
<ul>
<li>
<p>Das Standardprefix is /usr/local</p>
</li>
</ul>
</div>
</li>
<li>
<p><code>make</code></p>
</li>
<li>
<p><code>sudo make install</code></p>
</li>
</ul>
</div>
<div class="ulist">
<div class="title">laborejo im Argodejo (New Session Manager, NSM) starten</div>
<ul>
<li>
<p>Starten Sie <code>argodejo</code></p>
</li>
<li>
<p>Erstellen Sie eine neue Session, geben Sie einen Namen für das Musikstück ein.</p>
</li>
<li>
<p>Benutzen Sie den Launcher um <code>laborejo</code> hinzuzufügen.</p>
</li>
<li>
<p>Fügen Sie beliebige kompatible Programme hinzu, z.B. Synthesizer.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In der Datei README.md befinden sich weitere Möglichkeiten laborejo zu starten. Diese sind zum
Musikmachen nicht praktikabel, aber nützlich für Tests und Entwicklung.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_helfen_und_entwicklung">15. Helfen und Entwicklung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Sie können Laborejo auf viele Arten und Weisen helfen: Testen und Fehler melden, übersetzen, marketing,
anderen Nutzern helfen und schließlich programmieren.</p>
</div>
<div class="sect2">
<h3 id="_testen_und_programmfehler">15.1. Testen und Programmfehler</h3>
<div class="paragraph">
<p>Falls Sie einen Fehler im Programm entdecken (oder es zu langsam läuft) melden Sie diese bitte auf
eine Art und Weise, die ihnen am besten passt.</p>
</div>
<div class="ulist">
<div class="title">Kontaktmöglichkeiten</div>
<ul>
<li>
<p>Bugs und Probleme melden: <a href="https://www.laborejo.org/bugs" class="bare">https://www.laborejo.org/bugs</a></p>
</li>
<li>
<p>Webseite: <a href="https://www.laborejo.org" class="bare">https://www.laborejo.org</a></p>
</li>
<li>
<p>E-Mail: <a href="mailto:info@laborejo.org">info@laborejo.org</a></p>
</li>
<li>
<p>Wenn Sie die Gelegenheiten sehen und wissen, dass ein Entwickler es lesen wird sind auch Foren, Socialmedia etc. möglich.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_entwicklung">16. Entwicklung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Falls Sie an der Entwicklung interessiert sind, melden Sie sich am besten direkt bei uns (s.o.)
Kurzversion: clone git, programmieren, einen git-patch erstellen oder uns eine git URL zukommen lassen.</p>
</div>
<div class="sect2">
<h3 id="_übersetzungen">16.1. Übersetzungen</h3>
<div class="paragraph">
<p>Laborejo ist mit Hilfe der Qt-Toolchain sehr einfach zu übersetzen, ohne, dass man dafür Programmieren muss.
Die einfachste Variante ist es einfach die Entwickler anzusprechen und sie werden die neue Sprache einrichten.</p>
</div>
<div class="paragraph">
<p>Hier ist dennoch die komplette Anleitung, um eine Übersetzung komplett alleine anzufertigen und in
das Programm einzubinden. Das Programm ist in zwei Teile aufgeteilt: Ein gemeinsames "Template"
(für alle Laborejo Software Suit Programme) sowie das eigentliche Programm.</p>
</div>
<div class="paragraph">
<p>Der Übersetzungsprozess ist der gleiche für beide Teile, man muss ihn jedoch in unterschiedlichen
Verzeichnissen durchführen:
<code>template/qtgui</code> und nur <code>/qtgui</code>, relativ zum Stammverzeichnis, wo sich die ausführbare Datei
laborejo befindet.</p>
</div>
<div class="paragraph">
<p>Jedes "template/qtgui" hier kann durch nur "qtgui" ersetzt werden um den zweiten Teil zu übersetzen.</p>
</div>
<div class="paragraph">
<p>So fügt man eine neue Sprache hinzu:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Öffnen Sie ein Terminal und navigieren zu template/qtgui/resources/translations</p>
</li>
<li>
<p>Bearbeiten Sie die Datei <code>config.pro</code> in einem Texteditor.</p>
<div class="ulist">
<ul>
<li>
<p>Hängem Sie in der letzten Zeile den Namen der neuen Sprache an, in der Form <code>XY.ts</code>, wobei XY der Sprachcode ist.</p>
</li>
<li>
<p>Achten Sie bitte darauf ein Leerzeichen zwischen den einzelnen Sprachen zu lassen</p>
</li>
</ul>
</div>
</li>
<li>
<p>Führen Sie <code>sh update.sh</code> im selben Verzeichnis aus.</p>
<div class="ulist">
<ul>
<li>
<p>Das Programm hat nun eine neue <code>.ts</code>-Datei im Verzeichnis erstellt.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Starten Sie Qt Linguist mit <code>linguist-qt5</code> (kann evtl. anders heißen) und öffnen von dort die neu generierte Datei.</p>
</li>
<li>
<p>Wählen Sie die "Target Language", also Zielsprache, aus und benutzen das Programm um eine Übersetzung anzufertigen.</p>
</li>
<li>
<p>Senden Sie uns bitte die .ts Datei, z.B. per E-Mail an <a href="mailto:info@laborejo.org">info@laborejo.org</a> (s.u bei Bugs und Programmfehler für mehr Kontaktmöglichkeiten)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Die Übersetzung können Sie auch selbst, zum Testen, einbinden. Dafür sind rudimentäre
Python Kentnisse nötig.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Im Qt Linguist "Datei" Menü ist eine "Release" Option. Das erstellt eine <code>.qm</code> Datei im gleichen Verzeichnis wie die <code>.ts</code> Datei.* Bearbeiten Sie <code>template/qtgui/resources/resources.qrc</code> und kopieren die Zeile <code>&lt;file&gt;translations/de.qm&lt;/file&gt;</code> . Dabei das Länderkürzel zum Neuen ändern.</p>
</li>
<li>
<p>Führen Sie <code>sh buildresources.sh</code> aus</p>
</li>
<li>
<p>Bearbeiten Sie <code>engine/config.py</code>: Die neue Sprache hinzufügen. z.B. <code>{"German":"de.qm", "Esperanto:"eo.qm"}</code></p>
<div class="ulist">
<ul>
<li>
<p>Um den Sprachstring herauszufinden öffnen Sie den <code>python3</code>-Interpreter im Terminal und führen aus:</p>
</li>
<li>
<p><code>from PyQt5 import QtCore;QtCore.QLocale().languageToString(QtCore.QLocale().language())</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Um die neue Übersetzung zu testen starten Sie das Programm, falls ihr System bereits auf diese
Sprache eingstellt ist.
Ansonsten starten Sie laborejo mit diesem Befehl, Sprachcode ändern, vom Terminal aus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>LANGUAGE=de_DE.UTF-8 ./laborejo -V</code></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnotedef_1">
<a href="#_footnoteref_1">1</a>. <a href="http://homes.sice.indiana.edu/donbyrd/CMNExtremes.htm" class="bare">http://homes.sice.indiana.edu/donbyrd/CMNExtremes.htm</a>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2020-07-19 13:51:26 +0200
</div>
</div>
</body>
</html>