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.
 
 

1328 lines
67 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.12">
<meta name="author" content="Laborejo Software Suite">
<title>Patroneo</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;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{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;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-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:none;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);word-wrap:anywhere}
.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;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}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{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}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border: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:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{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}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media 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>Patroneo</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="#_benutzung">1. Benutzung</a></li>
<li><a href="#_bedienung">2. Bedienung</a>
<ul class="sectlevel2">
<li><a href="#_schnellstart">2.1. Schnellstart</a></li>
<li><a href="#_grundlagen">2.2. Grundlagen</a></li>
<li><a href="#_tastatursteuerung">2.3. Tastatursteuerung</a></li>
</ul>
</li>
<li><a href="#_beschreibung_der_grafischen_oberfläche_und_ihrer_funktionen">3. Beschreibung der grafischen Oberfläche und ihrer Funktionen</a>
<ul class="sectlevel2">
<li><a href="#_werkzeugleiste">3.1. Werkzeugleiste</a></li>
<li><a href="#_form_editor">3.2. Form-Editor</a></li>
<li><a href="#_muster_editor">3.3. Muster-Editor</a>
<ul class="sectlevel3">
<li><a href="#_kontext_menü_im_muster">3.3.1. Kontext Menü im Muster</a></li>
<li><a href="#_länge_und_lautstärke">3.3.2. Länge und Lautstärke</a></li>
<li><a href="#_tonhöhen_skala_und_tonleiter">3.3.3. Tonhöhen, Skala und Tonleiter</a></li>
<li><a href="#_schatten">3.3.4. Schatten</a></li>
</ul>
</li>
<li><a href="#_gruppierung_im_muster">3.4. Gruppierung im Muster</a></li>
</ul>
</li>
<li><a href="#_installation_und_start">4. Installation und Start</a></li>
<li><a href="#_helfen_und_entwicklung">5. Helfen und Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_testen_und_programmfehler">5.1. Testen und Programmfehler</a></li>
</ul>
</li>
<li><a href="#_entwicklung">6. Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_übersetzungen">6.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.0</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_benutzung">1. Benutzung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Schön, dass Sie sich für Patroneo entschieden hast. Patroneo ist ein leicht zu bedienender
"Sequencer", also ein Programm, dass digitale "Noten" an Softwareinstrumente, wie Synthesizer und
Sampler, schickt.</p>
</div>
<div class="paragraph">
<p>"Patroneo" heißt "Muster" auf Esperanto. Das kommt daher, dass man hier nicht einzelne Noten
hintereinander setzt sondern ganze Takte baut, die man dann beliebig oft an beliebigen Stellen
wiederholen - oder auslassen - kann.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_bedienung">2. Bedienung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Im folgenden wird erklärt, wie Patroneo bedient wird.</p>
</div>
<div class="paragraph">
<p>Das Programm wird fast ausschließlich mit der Maus bedient. Sie benötigen zwingend drei Maustasten
und ein Mausrad. Meistens ist das Mausrad selbst die mittlere Maustaste, und man kann es
herunterdrücken.</p>
</div>
<div class="paragraph">
<p>Wir ermutigen Sie, viel zu experimentieren. Sehr oft ensteht gute Musik wenn Benutzer Programme
nicht nur so benutzen haben, wie es eigentlich angedacht war.</p>
</div>
<div class="sect2">
<h3 id="_schnellstart">2.1. Schnellstart</h3>
<div class="paragraph">
<p>Um die wichtigsten Funktionen und Arbeitsabläufe kennenzulernen ist dieses Video erstellt worden.</p>
</div>
<div class="videoblock">
<div class="content">
<video src="https://www.laborejo.org/documentation/patroneo/patroneo-quickstart-german.mp4" width="500" controls>
Your browser does not support the video tag.
</video>
</div>
</div>
<div class="paragraph">
<p>Oder auf Youtube</p>
</div>
<div class="videoblock">
<div class="content">
<iframe width="500" src="https://www.youtube.com/embed/mr-_d9gw0Xw?rel=0" frameborder="0" allowfullscreen></iframe>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_grundlagen">2.2. Grundlagen</h3>
<div class="paragraph">
<p>Patroneo organisiert seine Musik in Spuren, die Takte enthalten. Alle Takte einer Spur spielen das
selbe "Muster", dass durch eine Abfolge von "Schritten" Musik erzeugt.</p>
</div>
<div class="paragraph">
<p>Die Spur ist durch JACK mit einem Instrument verbunden, Patroneo selbst erzeugt also keine Klänge.</p>
</div>
<div class="paragraph">
<p>Drückt man Play läuft das Stück von links nach rechts durch. Immer wenn ein Takt im Formeditor
markiert ist wird das Muster gespielt.</p>
</div>
<div class="paragraph">
<p>Möchte man verschiedene Muster vom gleichen Instrument hören so erstellt man mehrere Spuren für das
gleiche Zielinstrument.</p>
</div>
<div class="paragraph">
<p>Die Auswahl der Töne pro Muster ist frei wählbar. Man kann normale Tonleitern / Skalen nehmen oder
auch beliebige Töne in belieber Reihenfolge setzen. Ändert man die Skala nachträglich, dann klingt
das Muster auch direkt anders, ohne das man Töne neu ein- und ausschalten muss.</p>
</div>
<div class="paragraph">
<p>Das Speichern und Laden ihres Projektes wird durch den New Session Manager (Agordejo) erledigt.
Dort befindet sich ein "Save" Knopf.</p>
</div>
</div>
<div class="sect2">
<h3 id="_tastatursteuerung">2.3. Tastatursteuerung</h3>
<div class="paragraph">
<p>Patroneo kann prinzipiell mit der Maus bedient werden. Die Tastatur ist nur für wenige Funktionen
dringend nötig, etwa um Spurnamen zu ändern oder um Halbtontransposition einzustellen. Allerdings
macht die Tastatur manche Arbeitsabläufe schneller und bequemer.</p>
</div>
<div class="ulist">
<div class="title">Shortcuts</div>
<ul>
<li>
<p>Leertaste: Start und Pause der Wiedergabe.</p>
</li>
<li>
<p>L: aktuelle Taktpositionen in Schleife spielen.</p>
</li>
<li>
<p>Pos1: Wiedergabe an den Anfang des Stückes setzen.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_beschreibung_der_grafischen_oberfläche_und_ihrer_funktionen">3. Beschreibung der grafischen Oberfläche und ihrer Funktionen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Benutzen Sie die Suchfunktion ihres Browsers um nach den einzelnen Buchstaben wie [B] und deren
Erläuterung zu suchen.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="overview-german.png"><img src="overview-german.png" alt="Screenshot mit Beschriftung"></a>
</div>
</div>
<div class="paragraph">
<p>Patroneo besteht aus drei Teilen: Der Werkzeugleiste, dem Form-Editor und dem Takt- oder
Mustereditor. Zwischen Form- und Mustereditor befindet sich ein <strong>[L] Verschiebegriff</strong>, den man mit
der linken Maustaste anklicken und bei gedrückter Taste hoch oder runter schieben kann um dem einen
oder anderen Bereich mehr Platz zu geben.</p>
</div>
<div class="sect2">
<h3 id="_werkzeugleiste">3.1. Werkzeugleiste</h3>
<div class="paragraph">
<p>Die <strong>[A] Werkzeugleiste</strong> kombiniert verschiedene Befehle mit Eigenschaften des gesamten Stückes.</p>
</div>
<div class="paragraph">
<p><strong>[D] Klon</strong> der ausgewählten Spur fügt eine neue Spur auf Grundlage der momentan ausgewählten hinzu.
Dies ist ein wichtiger und oft benutzer Befehl, der hauptsächlich benutzt wird um Varianten zu
ermöglichen. Die "Klonspur" ist zwar leer, erbt allerdings die Skala der Originals, seine
Durchschnittslautstärke, die Farbe sowie den Namen. Endet der Name auf einem Einzelbuchstaben wie
"A", "g" oder einer Zahl so wird diese automatisch erhöht, wie man am Bild gut sehen kann. Die neue
Spur verbindet sich darüberhinaus automatisch zum gleichen JACK-Instrument.</p>
</div>
<div class="paragraph">
<p><strong>[E] Neue Spur</strong> fügt eine leere Spur hinzu. Diese bekommt einen Zufallsnamen und ist noch nicht in
JACK verbunden. Skala, Notennamen usw. werden von der momentan aktivien Spur übernommen.</p>
</div>
<div class="paragraph">
<p><strong>[F] BPM / Tempo</strong>: Das Tempo kann zunächst durch setzen des Hakens komplett deaktiviert werden. In
diesem Fall übernimmt das "JACK Transport" System die Geschwindigkeit, erkennbar am Schriftzug
"JACK" im deaktivierten Eingabefeld. Somit können parallel laufende Programme komplexe
Tempoverläufe erstellen, was in Patroneo allein nicht möglich ist.</p>
</div>
<div class="paragraph">
<p>Aktiviert man den Haken so gilt das angegebene Tempo als Schläge pro Minute. Ein "Schlag" ist
hierbei der ausgewählte Notenwert der Liste ganz rechts, bei [H]. Dazu später mehr.</p>
</div>
<div class="paragraph">
<p><strong>[G] Takte pro Spur</strong> regelt die Gesamtlänge des Stückes, wobei sich die absolute Sekundenzahl
ändern kann, je nachdem wie das Tempo gewählt wird und wie lang ein Takt sein soll. Reduziert man
die Taktanzahl werden keine Takte gelöscht, sondern nur ignoriert. Setzt man später die Taktzahl
wieder höher bekommt man seine alte Auswahl wieder. Patroneo stoppt niemals Playback von alleine,
insbesondere in einer JACK-Transport Umgebung läuft diese weiter, auch wenn keine Takte mehr
"übrig" sind.</p>
</div>
<div class="paragraph">
<p><strong>[H] Schritte pro Takt, gruppiert in je &#8230;&#8203; und jede Gruppe ergibt eine &#8230;&#8203;</strong> Note. Hier kann
eingestellt werden wie lang die Muster sind und welche rhythmische Aufspaltung sie haben. Dies ist
der komplizierteste Teil in Patroneo und wird daher erst später in dieser Bedienungsanleitung
besprochen. Fürs erste empfiehlt es sich das "gruppiert"-Feld zu ignorieren. Schritte pro Takt ist
einfach die Anzahl an Tönen, die man ein- und ausschalten kann. Die Auswahlliste stellt ein wie
lang jeder dieser Schritte ist.</p>
</div>
<div class="paragraph">
<p><strong>[I] Wiedergabe</strong> sind drei Knöpfe zur Wiedergabe. Von links nach rechts:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Play / Pause. Drücken um die Musik abzuspielen oder an der momentanen Stelle anzuhalten. Man kann auch die Leertaste drücken.</p>
</li>
<li>
<p>Schleife (Loop) ein- und ausschalten. Der momentan abgespielte Takt (in allen Spuren) wird stetig wiederholt. Diese Funktion eignet sich um an einer bestimmten Stelle zu arbeiten indem man seine Veränderungen schnell zu hören bekommt. Die Schleife wird aufgelöst wenn man erneut auf den Knopf drückt oder in der Zeitleiste herumspringt (s.u. Buchstabe Z)</p>
</li>
<li>
<p>An den Anfang: Springt wieder an den Anfang, egal ob die Musik gerade läuft oder nicht.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_form_editor">3.2. Form-Editor</h3>
<div class="paragraph">
<p>Im <strong>[B] Form-Editor</strong> erstellt man die Stuktur eines Stückes. Dazu schaltet man die Takte in jeder
Spur beliebig ein und aus. Man kann sich z.B. ein Schlagzeug vorstellen, dass drei Takte gleich
spielt und jeden vierten Takt einen "Break" macht. In Patroneo braucht man dazu zwei Spuren. Dieses
"3+1" Muster kann man auf dem Bild z.B. im dritten Abschnitt (Takt 17 bis 24) in der orangen
Bassspur sehen.</p>
</div>
<div class="paragraph">
<p>Auch ganze Teile (z.B. Strophe und Refrain) werden durch verschiedene Spuren abgedeckt. Um das
Erschaffen von verwandten Spuren so bequem wie möglich zu machen existiert der "Klon" Befehl (s.
Buchstabe D).</p>
</div>
<div class="paragraph">
<p>Es ist möglich im Bereich der Takte zu zoomen. Hierzu hält man die <strong>STRG</strong> Taste gedrückt und dreht
das Mausrad hoch oder runter. Bitte darauf achten, dass der Mauszeiger tatsächlich über den Takten
steht, und nicht etwa bei den Spurnamen oder auf der Zeitleiste.</p>
</div>
<div class="paragraph">
<p><strong>[Z] Zeitleiste</strong>: ein Klick mit der linken Maustaste setzt die Wiedergabeposition, auch im
laufenden Betrieb. Außerdem kann man hier die Taktgruppen (nicht zu verwechseln mit Gruppierung im
Muster, s. Buchstabe H) sehen und einstellen. Hält man sich mit dem Mauszeiger im Bereich der
Zeitleiste auf kann man die Gruppen mit dem Mausrad verkleinern oder vergrößern. Die Taktgruppen
haben nicht nur organisatorische Funktion sondern werden auch als Maßeinheit benutzt, wenn man
ganze Taktbereiche löschen oder hinzufügen möchte (s. Buchstabe K).</p>
</div>
<div class="paragraph">
<p><strong>[J] Spurnamen</strong>. Hier kann man Spuren verschieben, umbennen, ihnen eine andere Farbe geben und mehr:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Ein einfacher Klick mit der linken Maustaste auf einen Namen wählt eine Spur aus, ohne etwas zu verändern. Dies ist die beste Möglichkeit um eine Spur einfach nur anzusehen. (Ein Klick auf den Taktbereich verändert sofort einen Takt!)</p>
</li>
<li>
<p>Der Doppelpfeil ganz links kann benutzt werden um Spuren hoch und runter zu schieben, um sie zu organisieren. Es hat keine Auswirkung auf den Klang oder die JACK Verbindung. Zum Verschieben mit der linken Maustaste auf den Pfeil klicken, gedrückt halten und die Maus hoch und runter bewegen.</p>
</li>
<li>
<p>Das farbige Quadrat zeigt die derzeitige Farbe. Ein linker Mausklick öffnet die Farbauswahl.</p>
</li>
<li>
<p>Spurnamen können jederzeit geändert werden indem man einen Doppelklick mit der linken Maustaste auf sie macht. Die Enter-Taste oder ein Mausklick in einen anderen Bereich des Programmes schließen das Umbennen ab. Die JACK Verbindung bleibt beim Umbenennen erhalten. Es ist eine gute Angewohnheit Spuren auf einem Einzelbuchstaben oder eine Zahl enden zu lassen. Diese werden beim "Klonen" benutzt um eine Variante des Namens zu bilden. Siehe dazu unser Bild oben.</p>
</li>
<li>
<p>Ein Klick mit der rechten Maustaste auf einen Namen öffnet das Kontextmenü einer Spur. Hier kann man</p>
<div class="ulist">
<ul>
<li>
<p>Alle Takte ein- oder ausschalten (gilt nur für die sichtbaren Takte)</p>
</li>
<li>
<p>Die sichtbaren Takte umkehren oder invertieren: Aus wird zu An und umgekehrt.</p>
</li>
<li>
<p>Die Spur klonen (gleiche Funktion wie in der Werkzeugleiste)</p>
</li>
<li>
<p>Die Spur endgültig und unwiederbringlich löschen</p>
</li>
<li>
<p>Die Taktabfolge einer anderen Spur auf die ausgewählte projizieren. Bereits gesetzte Takte bleiben hierbei erhalten. Benutzt man diese Funktion von einer leeren Spur aus erhält man praktisch "Spur kopieren".</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Nun endlich die <strong>[K] Spur</strong> selbst. Ein Linksklick auf einen Takt schaltet diesen ein oder wieder
aus. Mehrere Takte in Folge kann man ein- und ausschalten indem man die linke Maustaste nach dem
Klicken gedrückt hält und die Maus nach links oder rechts bewegt. Ein Rechtsklick auf einen
bestimmten Takt öffnet ein Kontextmenü: Neue Takte in allen Spuren(!) an dieser Position einfügen
oder Takte aus allen Spuren löschen. Die Anzahl der Takte ergibt sich aus der derzeitigen
Taktgruppeneinstellung aus der Zeitleiste (s. Buchstabe Z).</p>
</div>
<div class="paragraph">
<p>Diese Funktionen sind besonders nachvollziehbar wenn man sie auf den jeweils ersten Takt einer
Gruppe anwendet (nach dem weißen Strich). Man kann so neue "Teile" einfügen oder einen gesamten
Teil löschen.</p>
</div>
<div class="paragraph">
<p>Eine gute Methode ist es auch die Gruppengröße für diese Funktionen kurz zu verändern und
anschließend direkt wieder zurückzusetzen.</p>
</div>
<div class="paragraph">
<p><strong>[X] Halbtontransposition</strong> wird eingstellt indem man die SHIFT Taste gedrückt hält und dann das
Mausrad über einem aktivierten Takt hoch oder runter dreht. Im Takt selbst zeigt sich ein kleiner
Schriftzug, z.B. +5h. Fünf Halbtöne aufwärts; aus C wird F, aus Midinote 60 wird 65. Die
Transposition gilt nur für den jeweiligen Takt und ist im Muster selbst (s.u.) nicht zu sehen.
Schaltet man den Takt aus (und wieder ein) ist die Transposition gelöscht.</p>
</div>
<div class="paragraph">
<p><strong>[Y] Skalentransposition</strong>. Es wird empfohlen sich erst mit dem Muster und seiner Skala bzw.
Tonleiter vertraut zu machen (s. Buchstaben O bis R). Wieder da? Gut, so gehts:</p>
</div>
<div class="paragraph">
<p>Hält man den Mauszeiger über einen aktivierten Takt kann man mit dem Mausrad hoch oder runter die
Transposition, basierend auf der Skala, einstellen. Die Beschriftung zeigt an um wieviele Schritte
nach oben oder unten (-6s bis +6s) dieser Takt verschoben ist. Schaltet man den Takt aus
verschwindet auch die Transposition wieder. Im Muster selbst (s.u.) ist nicht zu sehen ob ein Takt
transponiert ist oder nicht.</p>
</div>
<div class="paragraph">
<p>Man kann sich das so vorstellen, dass die Schritte im Muster hinter den Kulissen in den Reihen hoch
oder runter geschoben werden. Welcher Ton auch immer in dieser Reihe eingestellt ist wird gespielt.
Bei einer normalen Tonleiter ist das musikalisch leicht nachvollziehbar: Die Töne werden in der
Tonleiter hoch- oder runtergeschoben.</p>
</div>
<div class="paragraph">
<p>Wenn die Skala allerdings frei eingestellt wurde ergeben sich unintuitive Möglichkeiten; "Hoch und
Runter" in Bezug auf Tonhöhen verlieren dann evtl. ihre Bedeutung. Denkbar ist, dass man zwei
verzahnte Tonleiter im Muster benutzt und durch Skalen-Transposition +1 zwischen diesen hin und
herschaltet. Oder gar völlig verschiedene Töne benutzt, so dass nur der Rhythmus gleich bleibt.</p>
</div>
<div class="paragraph">
<p>Skalen- und Halbtontransposition können kombiniert werden. Zuerst wird die Skala verändert, dann
erst der Halbton. Mit diesen Kombinationen ergeben sich viele kreative Möglichkeiten!</p>
</div>
</div>
<div class="sect2">
<h3 id="_muster_editor">3.3. Muster-Editor</h3>
<div class="paragraph">
<p>Der <strong>[C] Muster-Editor</strong> ermöglicht das eigentliche Komponieren. Dazu setzt man die Töne, auch
"Schritte" genannt, um einen Takt zu bilden. Das Muster ist genau so lang wie ein Takt und wird von
links nach rechts abgespielt. Man hat dabei einige Möglichkeiten zur klanglichen Gestaltung, die
nun erklärt werden.</p>
</div>
<div class="paragraph">
<p>Das Muster ist immer so lang wie man in der Werkzeugleiste (s. Buchstabe H) eingestellt hat. Es
werden niemals gesetzte Schritte gelöscht! Macht man die Takte kürzer werden Töne "zu weit rechts"
lediglich ignoriert. Sie sind wieder zu sehen sobald man die Takte wieder länger macht.</p>
</div>
<div class="paragraph">
<p>Ist das Muster größer als der Bildschirm anzuzeigen vermag kann man entweder die Scrollleisten
benutzen oder zoomen. Hierzu hält man die <strong>STRG</strong> Taste gedrückt und dreht das Mausrad hoch oder
runter.</p>
</div>
<div class="paragraph">
<p>Zu oberst sieht man die momentan <strong>[M] Aktivierte Spur</strong>, bzw. das zur Spur gehörige Muster.</p>
</div>
<div class="paragraph">
<p>Das Muster selbst ist in Reihen und Spalten angelegt. Die Reihen symbolisieren die (einstellbaren)
Tonhöhen, die Spalten zeigen deren rhythmische Abfolge und Position im Takt.</p>
</div>
<div class="sect3">
<h4 id="_kontext_menü_im_muster">3.3.1. Kontext Menü im Muster</h4>
<div class="paragraph">
<p>Ein Rechtsklick auf einen Schritt öffnet ein Kontext-Menü, das folgende exklusive Funktionen
bereitstellt. Bei allen Funktionen, die umkehren bzw. invertieren ("An" wird "Aus" und umgekehrt)
ist zu beachten, dass alle Lautstärke-Informationen (s.u.) verloren gehen.</p>
</div>
<div class="paragraph">
<p>"Reihen" bedeutet alle Schritte der gleichen Tonhöhe. Also von links nach rechts gesehen.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Reihe umkehren (eine leere Reihe wird komplett gefüllt)</p>
</li>
<li>
<p>Reihe löschen</p>
</li>
<li>
<p>Reihe mit Wiederholung bis hier befüllen (s.u.)</p>
</li>
<li>
<p>Alle Schritte umkehren (das gesamte Muster)</p>
</li>
<li>
<p>Alle Schritte an</p>
</li>
<li>
<p>Alle Schritte aus</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Die Funktion "Reihe mit Widerholung bis hier befüllen" eröffnet viele kreative Möglichkeiten: Alle
Schritte vom Anfang der Reihe bis zum Ausgewählten (inkl.) werden als "Untermuster" genommen und
damit der Rest der Reihe aufgefüllt. Alle vorhandenen Schritte werden dabei, mit ihren Lautstärken,
gelöscht.</p>
</div>
<div class="paragraph">
<p>Möchte man z.B. jeden vierten Schritt eine Note aktiviert man den ersten Schritt der Reihe, lässt
dann drei frei und klickt auf den vierten Schritt als Kontextmenü und wählt die Befüllen-Funktion
aus. Die gesamte Reihe wird nun ein wiederkehrendes Muster von "X o o o X o o o&#8230;&#8203;" sein.</p>
</div>
</div>
<div class="sect3">
<h4 id="_länge_und_lautstärke">3.3.2. Länge und Lautstärke</h4>
<div class="paragraph">
<p>Ein <strong>[S] Schritt</strong> ist ein graues bzw. farbiges Kästchen. Grau bedeutet Pause, farbig bedeutet <strong>[T]
Klingender Ton</strong>. Ein klick mit der linken Maustaste schaltet die Schritte an und aus.</p>
</div>
<div class="paragraph">
<p>Alle Schritte sind grundsätzlich gleich lang. <strong>[V] Besondere Tonlängen</strong> sind aber auch möglich:
Hält man die linke Maustaste gedrückt, nachdem man einen Schritt aktiviert hat kann man mit einer
Bewegung nach links oder rechts den Ton verkürzen oder verlängern. Es muss mindestens die Hälfte
der Länge sein. Ein Ton ist höchstens so lang wie der Takt selbst.</p>
</div>
<div class="paragraph">
<p>Man kann soviele Schritte hintereinander oder gleichzeitig einschalten wie man möchte. Somit lassen
sich auch <strong>[W] Akkorde</strong> bilden.</p>
</div>
<div class="paragraph">
<p>Schritte können unterschiedliche <strong>[U] Lautstärken</strong> haben. Dazu benutzt Patroneo die sogenannte Midi
Velocity. Hält man den Mauszeiger über einen aktivierten Schritt kann man durch Drehung des
Mausrades diesen Ton leiser oder lauter machen. Die Lautstärken werden als Zahlen zwischen 1 und
127 angezeigt. Möchte man alle Lautstärken auf einmal sehen kann man mit dem Mausrad (mittlere
Maustaste) in den freien Bereich links oder rechts des Musters klicken. Zusätzlich sieht ein
Schritt umso durchsichtiger aus je leiser er ist. Schaltet man den Schritt an und aus wird die
Lautstärke wieder auf den Normalwert gesetzt. Dieser ergibt sich aus der Durchschnittslautstärke
aller Töne dieses Musters.</p>
</div>
<div class="paragraph">
<p>Um alle Töne eines Musters leiser oder lauter zu machen kann man die <strong>[M] Velocity</strong> Knöpfe
benutzen. Klickt man diese an ändert sich die Lautstärke um je 1. Hält man allerdings den
Mauszeiger über einen Knopf und dreht das Mausrad ändert sich die Velocity um je 10! Dabei ist es
egal über welchem Velocity Knopf (plus oder minus) man schwebt.</p>
</div>
<div class="paragraph">
<p>Um alle Töne einer Reihe leiser oder lauter zu machen hält man die Alt-Taste (nicht AltGR !)
gedrückt und benutzt das Mausrad auf der jeweiligen Reihe.</p>
</div>
</div>
<div class="sect3">
<h4 id="_tonhöhen_skala_und_tonleiter">3.3.3. Tonhöhen, Skala und Tonleiter</h4>
<div class="paragraph">
<p>Klicken Sie mit der mittleren Maustaste auf einen Schritt um den Ton zu hören, den dieser abspielt.
Hiermit können Sie schonmal "vorhören", bevor Sie sich entscheidest einen Ton zu setzen. Tipp: Halten
die mittlere Maustaste gedrückt und fahren mit der Maus über die Schritte auf und ab.</p>
</div>
<div class="paragraph">
<p>Welche tatsächliche Tonhöhe abgespielt wird ("Midi Key") entscheidet die <strong>[R] Skala</strong>, teilweise
auch Tonleiter genannt. Patroneo arbeitet immer mit Achtstufigen Skalen. Im Normallfall handelt es
sich hierbei tatsächlich um eine Tonleiter: Sieben verschiedene Töne und oben drauf der oktavierte
Grundton.</p>
</div>
<div class="paragraph">
<p>Solche normalen <strong>[Q] Tonleitern</strong> kann man direkt auswählen. So z.B. etwa Dur, Moll, verschiedene
sogenannte "Kirchentonleitern", aber auch die Blues Töne oder chromatische Reihen (z.B. um
Schlagzeug-Software anzusteuern).</p>
</div>
<div class="paragraph">
<p>Wählt man aus der Liste eine Tonleiter aus so wird diese auf der untersten Reihe gebildet. In der
Regel ist dies auch der tiefste Ton. Auf unserem Bild ist dies Ton 60 / C4, links unten. Man muss
also zuerst den Grundton direkt auswählen und anschließend eine <strong>[Q] Tonleiter</strong> auswählen.</p>
</div>
<div class="paragraph">
<p>Um sowohl den Grundton als auch die gesamte Skala nachträglch in ihrer Tonhöhe zu verändern gibt es
vier Knöpfe:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>[O] Halbton</strong> Plus oder Minus verschiebt die ganze Skala nach oben oder unten um je einen Halbton. Dies ist nicht zu verwechseln mit der nur zeitweisen Transposition aus dem Spureditor (s. Buchstabe X). Man spricht hier auch von destruktiver Veränderung, da man die Werte selbst dauerhaft ändert.</p>
</li>
<li>
<p><strong>[P] Oktave</strong> Plus oder Minus verschiebt direkt um eine ganze Oktave. Man könnte auch 12 mal auf den Halbtonknopf drücken. Kann man aber auch lassen.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Wie in der Skalentransposition (s. Buchstabe Y) bereits beschrieben ist es aber auch möglich selbst
jeden beliebigen Wert zwischen 0 und 127 in die <strong>[R] Felder der Skala</strong> einzutragen. Die Töne müssen
weder musikalisch sinnvolle Abstände haben, noch müssen sie aufsteigend oder absteigend sortiert
sein.</p>
</div>
</div>
<div class="sect3">
<h4 id="_schatten">3.3.4. Schatten</h4>
<div class="paragraph">
<p>Oft möchte man zu einer existierenden Spur noch weitere Töne in einem anderen Muster setzen. Eine
zweite Stimme, Frage/Antwort-Technik etc. Als Hilfe gibt es die Möglichkeit sich andere Spuren als
<strong>[2] Schatten</strong> anzeigen zu lassen. Dazu einfach mit der mittleren Maustaste auf die Spur klicken,
die man sehen möchte. Das geht nur im Taktbereich, nicht auf den Spurnamen oder auf der
Zeitleiste.</p>
</div>
<div class="paragraph">
<p>Sie können so viele Schatten anzeigen, bist Sie die Übersicht verlieren. Alle Schatten verschwinden
sobald die ausgewählte Spur wechselt.</p>
</div>
<div class="paragraph">
<p>Schatten sind nur eine Hilfestellung und nicht wörtlich für die Tonhöhe zu nehmen: Sucht man sich
einen Track als Schatten aus, der eine andere Skala hat (was auch Transposition mit einschließt),
dann werden falsche Töne angezeigt. Schatten sind tatsächlich sehr simpel: Sie zeigen keine
Tonhöhen sondern nur die markierten Kästchen an, egal was diese als Töne bedeuten.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_gruppierung_im_muster">3.4. Gruppierung im Muster</h3>
<div class="paragraph">
<p>Die Gruppierung gehört zur Taktart.</p>
</div>
<div class="paragraph">
<p>Wie bereits oben beschrieben stellt <strong>Schritte pro Takt</strong> die Länge des Musters ein. Patroneo startet
mit 8 Schritten pro Takt bei einem neuen Projekt (s. Bild). Ganz rechts ist eine Auswahlliste, die
bei einem neuen Projekt auf "Viertel" steht. Man startet also mit einem traditionellen 8/4 Takt.</p>
</div>
<div class="paragraph">
<p>Durch das Feld <strong>gruppiert in je</strong> kann man nun die Schritte in Gruppen zusammenfassen, wobei jede
Gruppe so lang ist wie in der Auswahlliste angegeben. Damit kann man seine Taktart weiter
unterteilen. Der "Beat", also das Tempo, orientiert sich dabei an den Hauptschlägen, der jeweils
erste Schritt einer Gruppe.</p>
</div>
<div class="ulist">
<div class="title">Beispiele</div>
<ul>
<li>
<p>Ein 4/4 Takt mit Achtelnoten als kleinste Rhythmuseinheit</p>
<div class="ulist">
<ul>
<li>
<p>8 Schritte pro Takt / Gruppiert in je 2 / Jede Gruppe eine Viertel</p>
</li>
</ul>
</div>
</li>
<li>
<p>Ein 4/4 mit Triolen als kleinste Rhythmuseinheit ("Swing")</p>
<div class="ulist">
<ul>
<li>
<p>9 Schritte / Gruppiert zu 3 / Gruppe ergibt Viertel</p>
</li>
</ul>
</div>
</li>
<li>
<p>Ein 12/8 Takt</p>
<div class="ulist">
<ul>
<li>
<p>12 Schritte / Gruppiert zu 1 / Gruppe ergibt Achtel</p>
</li>
</ul>
</div>
</li>
<li>
<p>Ein 8/4 Takt mit Sechzehntelnoten</p>
<div class="ulist">
<ul>
<li>
<p>32 Schritte / Gruppiert zu 4 / Gruppe ergibt Viertel</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Normalesweise stellt man die Taktart relativ am Anfang eines neuen Kompositionsprozesses ein. Es
kommt jedoch immer mal wieder vor, dass man kleinere Rhythmuswerte braucht, als man anfangs dachte.
Wenn man einfach den Wert der Gruppierung erhöht erhält man zwar mehr Unterteilungen, die Anzahl
der Schritte bleibt jedoch gleich. Ebenso bleiben die Noten genau in der "Spalte" stehen, in der
sie vorher standen. In anderen Worten: die Musik wird anders klingen. Insgesamt wird auch der Takt
kürzer, da die gleiche Anzahl von Schritten nun auf kürzere Schritte verteilt wird.</p>
</div>
<div class="paragraph">
<p>Patroneo bietet deswegen die Funktion <strong>Gruppierung Umwandeln</strong> (im Bearbeiten Menü), um die
bestehende Taktstruktur zu verändern und bereits gesetzte Schritte so zu skalieren, dass die Musik
gleich klingt.</p>
</div>
<div class="paragraph">
<p>Klickt man auf den Knopf in der Werkzeugleiste öffnet sich ein kleines Dialogfenster, in dem man
die gewünschte Gruppierung eingeben kann. Außerdem ist es möglich einzustellen, was passieren soll,
wenn das Umwandeln aus musikalischen Gründen nicht komplett funktionieren würde (s.u.).</p>
</div>
<div class="paragraph">
<p>Oft ist ein Umwandeln problemlos möglich:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Wird die Gruppierung von <code>1</code> auf einen höheren Wert gesetzt funktioniert es immer</p>
</li>
<li>
<p>Wird die Gruppierung von <code>2</code> auf <code>4</code> gesetzt funktioniert es immer</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Bei allen anderen Umgruppierungen kommt es darauf an, ob die vorhandenen Töne nach dem Umwandeln
zwischen dem neuen Raster liegen oder nicht. Der erstere Fall ist nicht möglich und Sie müssen sich
entscheiden:</p>
</div>
<div class="ulist">
<div class="title">Reaktion auf Fehler. Falls unmöglich:</div>
<ul>
<li>
<p>Nichts machen (Voreinstellung)</p>
<div class="ulist">
<ul>
<li>
<p>Der Vorgang wird abgebrochen, alles bleibt wie vorher.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Falsche Schritte löschen</p>
<div class="ulist">
<ul>
<li>
<p>Alles was zwischen dem Raster herauskommen würde wird gelöscht bzw. verworfen.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Falsche Schritte mit einbinden</p>
<div class="ulist">
<ul>
<li>
<p>Unmögliche Positionen werden auf die nächstmögliche Position geschoben. Dies führt in jedem Fall dazu, dass die Musik nun anders klingt. Meist werden dadurch mehrere Noten übereinander geschoben und bilden Akkorde.</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Mit ein wenig Erfahrung wird man abschätzen können, was man braucht.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_und_start">4. Installation und Start</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Patroneo ist exklusiv für Linux. Am besten installieren Sie Patroneo über deinen Paketmanager.
Falls es dort nicht vorhanden ist, oder nur in einer veralteten Version, bitten sie ihre
Linuxdistribution Patroneo bereitzustellen.</p>
</div>
<div class="paragraph">
<p>Falls in den Paketquellen vorhanden bitte direkt bei "patroneo in Agordejo (New Session Manager)" weiterlesen.
Falls nicht kann man Patroneo 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/patroneo.git" class="bare">https://git.laborejo.org/lss/patroneo.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">patroneo im Agordejo (New Session Manager, NSM) starten</div>
<ul>
<li>
<p>Starten Sie <code>agordejo</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>patroneo</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 patroneo 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">5. Helfen und Entwicklung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Sie können Patroneo 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">5.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">6. 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">6.1. Übersetzungen</h3>
<div class="paragraph">
<p>Patroneo 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
patroneo 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 patroneo mit diesem Befehl, Sprachcode ändern, vom Terminal aus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>LANGUAGE=de_DE.UTF-8 ./patroneo -V</code></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2021-01-11 00:17:10 +0100
</div>
</div>
</body>
</html>