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.

1181 lines
66 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>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;-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>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 1.3</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_benutzung">1. Benutzung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Schön, dass du dich 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. Du benötigst 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 dich, viel zu experimentieren. Sehr oft ensteht gute Musik wenn Benutzer Programme nicht nur so benutzt 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 deines Projektes wird durch den Non Session Manager 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>Backspace ("Rückwärts löschen"): 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>Benutze die Suchfunktion deines 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 nicht in JACK verbunden.</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.<br>
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.</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.<br>
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.<br>
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.<br>
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).<br>
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.<br>
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:<br>
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.<br>
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.<br></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.<br></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>Klicke mit der mittleren Maustaste auf einen Schritt um den Ton zu hören, den dieser abspielt. Hiermit kannst du schonmal "vorhören", bevor du dich entscheidest einen Ton zu setzen. Tipp: Halte die mittlere Maustaste gedrückt und fahre 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).<br>
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>Du kannst so viele Schatten anzeigen, bist du die Übersicht verlierst. Alle Schatten verschwinden sobald die ausgewählte Spur wechselt.</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 du musst dich 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">
5 years ago
<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 im Non Session Manager starten" 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>Lade von <a href="https://www.laborejo.org/downloads" class="bare">https://www.laborejo.org/downloads</a> die aktuelle Version herunter und entpacke sie.</p>
</li>
<li>
<p><code>git clone <a href="https://laborejo.org/patroneo.git" class="bare">https://laborejo.org/patroneo.git</a></code></p>
</li>
</ul>
</div>
</li>
<li>
5 years ago
<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 Non Session Manager (NSM) starten</div>
<ul>
<li>
5 years ago
<p>Starten Sie <code>non-session-manager</code></p>
</li>
<li>
5 years ago
<p>Knopf <code>New</code>, geben Sie einen Namen für das Musikstück ein.</p>
</li>
<li>
5 years ago
<p>Knopf <code>Add Client to Session</code>, geben Sie hier <code>patroneo</code> ein, kleingeschrieben.</p>
</li>
<li>
<p>Nochmal Add Client, diesmal <code>jackpatch</code>.</p>
</li>
<li>
5 years ago
<p>Fügen Sie beliebige kompatible Programme hinzu, z.B. Synthesizer.</p>
<div class="ulist">
<ul>
<li>
<p>Siehe auch das NSM Handbuch: <a href="http://non.tuxfamily.org/nsm/" class="bare">http://non.tuxfamily.org/nsm/</a></p>
</li>
<li>
<p>Und die Liste der NSM kompatiblen Programme: <a href="http://non.tuxfamily.org/wiki/ApplicationsSupportingNsm" class="bare">http://non.tuxfamily.org/wiki/ApplicationsSupportingNsm</a></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="paragraph">
5 years ago
<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">
5 years ago
<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">
5 years ago
<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>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>
5 years ago
<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">
5 years ago
<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">
5 years ago
<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">
5 years ago
<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>
5 years ago
<p>Öffnen Sie ein Terminal und navigieren zu template/qtgui/resources/translations</p>
</li>
<li>
5 years ago
<p>Bearbeiten Sie die Datei <code>config.pro</code> in einem Texteditor.</p>
<div class="ulist">
<ul>
<li>
5 years ago
<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>
5 years ago
<p>Achten Sie bitte darauf ein Leerzeichen zwischen den einzelnen Sprachen zu lassen</p>
</li>
</ul>
</div>
</li>
<li>
5 years ago
<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>
5 years ago
<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>
5 years ago
<p>Wählen Sie die "Target Language", also Zielsprache, aus und benutzen das Programm um eine Übersetzung anzufertigen.</p>
</li>
<li>
5 years ago
<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">
5 years ago
<p>Die Übersetzung können Sie auch selbst, zum Testen, in Patroneo einbinden. Dafür sind rudimentäre
Python Kentnisse nötig.</p>
</div>
<div class="ulist">
<ul>
<li>
5 years ago
<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>
5 years ago
<p>Führen Sie <code>sh buildresources.sh</code> aus</p>
</li>
<li>
5 years ago
<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>
5 years ago
<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">
5 years ago
<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>
5 years ago
<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 2019-10-06 00:43:02 +0200
</div>
</div>
</body>
</html>