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.
 
 
 
 
 
 

1511 lines
73 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>Vico</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>Vico</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="#_bedienung">1. Bedienung</a>
<ul class="sectlevel2">
<li><a href="#_anwendungszweck_und_zielgruppe">1.1. Anwendungszweck und Zielgruppe</a></li>
<li><a href="#_grundlagen">1.2. Grundlagen</a></li>
<li><a href="#_midi_unterstützung">1.3. MIDI-Unterstützung</a></li>
<li><a href="#_maus_und_tastaturkürzel">1.4. Maus und Tastaturkürzel</a></li>
</ul>
</li>
<li><a href="#_beschreibung_der_grafischen_oberfläche_und_ihrer_funktionen">2. Beschreibung der grafischen Oberfläche und ihrer Funktionen</a></li>
<li><a href="#_klavier_am_linken_rand">3. Klavier am linken Rand</a></li>
<li><a href="#_hauptansicht">4. Hauptansicht</a>
<ul class="sectlevel2">
<li><a href="#_bewegen_und_navigation">4.1. Bewegen und Navigation</a></li>
<li><a href="#_zoom_und_skalierung">4.2. Zoom und Skalierung</a></li>
<li><a href="#_ebenen">4.3. Ebenen</a>
<ul class="sectlevel3">
<li><a href="#_schatten">4.3.1. Schatten</a></li>
<li><a href="#_farben">4.3.2. Farben</a></li>
<li><a href="#_midi_kanal">4.3.3. Midi-Kanal</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_live_aufnahmen">5. Live Aufnahmen</a>
<ul class="sectlevel2">
<li><a href="#_ebenen_filter">5.1. Ebenen-Filter</a></li>
<li><a href="#_jack_transport_und_timebase_taktstriche">5.2. JACK Transport und Timebase: Taktstriche</a></li>
</ul>
</li>
<li><a href="#_noten_und_events">6. Noten und Events</a>
<ul class="sectlevel2">
<li><a href="#_events_löschen">6.1. Events löschen</a></li>
<li><a href="#_noten">6.2. Noten</a></li>
<li><a href="#_weitere_events">6.3. Weitere Events</a>
<ul class="sectlevel3">
<li><a href="#_control_changes_0xb0">6.3.1. Control Changes (0xB0)</a></li>
<li><a href="#_program_change_0xc0">6.3.2. Program Change (0xC0)</a></li>
<li><a href="#_channel_pressure_monophonic_aftertouch_0xd0">6.3.3. Channel Pressure / "Monophonic Aftertouch" (0xD0)</a></li>
<li><a href="#_pitch_bend_0xe0_nur_7bit_msb">6.3.4. Pitch Bend (0xE0 - nur 7bit MSB)</a></li>
<li><a href="#_polyphonic_aftertouch_0xa0">6.3.5. Polyphonic Aftertouch (0xA0)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#_events_bearbeiten_und_verschieben">7. Events bearbeiten und verschieben</a>
<ul class="sectlevel2">
<li><a href="#_textanmerkung">7.1. Textanmerkung</a></li>
<li><a href="#_auswahl">7.2. Auswahl</a>
<ul class="sectlevel3">
<li><a href="#_auswahl_umkehren">7.2.1. Auswahl umkehren</a></li>
</ul>
</li>
<li><a href="#_event_position_verändern">7.3. Event-Position verändern</a></li>
<li><a href="#_notenlängen_verändern">7.4. Notenlängen verändern</a></li>
<li><a href="#_raster_und_positionen_einrasten">7.5. Raster und Positionen einrasten</a></li>
<li><a href="#_notenlautstärke_velocity_verändern">7.6. Notenlautstärke / Velocity verändern</a></li>
<li><a href="#_kopieren_ausschneiden_einfügen">7.7. Kopieren, Ausschneiden, Einfügen</a></li>
<li><a href="#_änderungen_rückgängig_machen_undo_redo">7.8. Änderungen rückgängig machen / Undo &amp; Redo</a></li>
</ul>
</li>
<li><a href="#_velocityansicht">8. Velocityansicht</a></li>
<li><a href="#_verschiedenes_für_fortgeschrittene_benutzer">9. Verschiedenes für fortgeschrittene Benutzer</a>
<ul class="sectlevel2">
<li><a href="#_parameter_und_einstellungen_am_anfang_des_stückes">9.1. Parameter und Einstellungen am Anfang des Stückes</a></li>
<li><a href="#_midi_parameter_mit_hoher_auflösung_msb_und_lsb">9.2. MIDI Parameter mit hoher Auflösung (MSB und LSB)</a></li>
<li><a href="#_überlappende_noten">9.3. Überlappende Noten</a></li>
<li><a href="#_control_changes_sind_falsch_herum_in_vico">9.4. "Control Changes sind falsch herum in Vico!"</a></li>
<li><a href="#_rundungsfehler_meine_noten_sind_an_der_falschen_stelle">9.5. Rundungsfehler: Meine Noten sind an der Falschen Stelle</a></li>
</ul>
</li>
<li><a href="#_installation_und_start">10. Installation und Start</a></li>
<li><a href="#_helfen_und_entwicklung">11. Helfen und Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_testen_und_programmfehler">11.1. Testen und Programmfehler</a></li>
</ul>
</li>
<li><a href="#_entwicklung">12. Entwicklung</a>
<ul class="sectlevel2">
<li><a href="#_übersetzungen">12.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.2.2</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_bedienung">1. Bedienung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Schön, dass Sie sich für Vico entschieden hast. Es handelt sich um einen minimalistischen
Midi-Sequencer, der parallel zu anderer Software eingesetzt werden soll.</p>
</div>
<div class="paragraph">
<p>"Vico" (mit c als 'z'/'ts' wie in Zirkel) heißt Reihenfolge auf Esperanto, da es sich um einen
"Sequencer" handelt.</p>
</div>
<div class="sect2">
<h3 id="_anwendungszweck_und_zielgruppe">1.1. Anwendungszweck und Zielgruppe</h3>
<div class="paragraph">
<p>In einer loop- oder patternbasierten Umgebung möchte man oft einen 'freien' Track habe, um etwa ein
Instrumentalsolo umzusetzen.
Manchmal möchte man auch nur schnell eine Skizze oder Idee aufnehmen und dazu nicht gleich ein
ganzes DAW-Projekt öffnen oder erstellen.</p>
</div>
<div class="paragraph">
<p>Vico erfüllt diese Bedingungen indem es genau eine Aufnahmequelle mit einer Ausgabe verbindet und
dazwischen aufnehmen und bearbeiten kann. Oder anders gesagt: man bekommt nur einen Track, gedacht
für ein Instrument (dafür aber mit nützlichen Ebenen)</p>
</div>
<div class="paragraph">
<p>Vico ist in erster Linie für Benutzer von Patroneo geschrieben worden, hat dazu aber keine engere
technische Bindung. Patroneo ist ein Programm geprägt von strengen Wiederholungen und ständiger
Wiederverwendung von sehr kurzen Mustern. Damit kann man schnell ganze Arrangements für Schlagzeug,
Bass und Begleitakkorde aufbauen, aber eine schöne, lange Melodie ist extrem umständlich. Daher
hier das Programm für genau diesen Zweck.</p>
</div>
<div class="paragraph">
<p>Alle Programme, die als JACK-Transport-Master oder JACK-Timebase-Master laufen können Vico
fernsteuern.</p>
</div>
</div>
<div class="sect2">
<h3 id="_grundlagen">1.2. Grundlagen</h3>
<div class="paragraph">
<p>Vico erzeugt selbst keine Klänge und bietet nur einen einzigen Ausgang für JACK-Midi und ordnet alle
Events auf bis zu zehn Ebenen, ähnlich wie in Grafikprogrammen.</p>
</div>
<div class="paragraph">
<p>Es gibt einen Eingang für JACK-Midi, an dem man MIDI-Instrumente oder andere Programme anschließen
kann.</p>
</div>
<div class="paragraph">
<p>Beim Start sieht man einen leeren Track. Der Playhead befindet sich immer an der Stelle, an der
JACK Transport sich befindet.
Die Taktstriche werden ebenfalls im Metrum des JACK Masters gezeigt. Falls nicht vorhanden gibt es
keine.
Ein roter Playhead zeigt an, dass man sich im Aufnahmemodus befindet; Läuft Transport wird
aufgenommen, etwa von einen Midikeyboard.</p>
</div>
<div class="paragraph">
<p>Mit Maus und Tastatur können außerdem alle Events von Hand gesetzt und nachträglich verändert
werden (s.u.). Bis auf Velocity werden alle Events im Haupttrack dargestellt.</p>
</div>
<div class="paragraph">
<p>Zur Vereinfachung kann man ein Rhythmusraster ein- und ausschalten sowie einstellen in welchem
Raster Events erzeugt oder verschoben werden sollen.</p>
</div>
<div class="paragraph">
<p>Alles Bearbeiten erfordert das Erstellen einer Auswahl ("Selection") indem man mit Umschalten und
der linken Maustaste einen Rahmen zieht. Ein Klick mit der rechten Maustaste beendet die Auswahl.</p>
</div>
<div class="paragraph">
<p>Starten, speichern, laden und schließen ihres Projektes wird am besten durch den New Session
Manager (Agordejo) erledigt.</p>
</div>
</div>
<div class="sect2">
<h3 id="_midi_unterstützung">1.3. MIDI-Unterstützung</h3>
<div class="paragraph">
<p>Vico unterstützt alle MIDI Channel-Nachrichten:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Noten (ON 0x80 und OFF 0x90 sind als Rechtecknote zusammengefasst)</p>
</li>
<li>
<p>Control Changes (0xB0)</p>
</li>
<li>
<p>Program Change (0xC0)</p>
</li>
<li>
<p>Channel Pressure / "Monophonic Aftertouch" (0xD0)</p>
</li>
<li>
<p>Pitch Bend (0xE0 - nur 7bit MSB)</p>
</li>
<li>
<p>Polyphonic Aftertouch (0xA0)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Alle Nachrichten können entweder live aufgenommen werden oder mit der Hand eingetragen werden.
Nachbearbeitung ist für alle Channel-Nachrichten möglich.</p>
</div>
<div class="paragraph">
<p>Der Midikanal wird bei der Aufnahme verworfen. Statt dessen hat jede Ebene die Möglichkeit einen
Kanal einzustellen, auf dem gesendet wird.</p>
</div>
<div class="paragraph">
<p>Alle nichtmusikalischen Events (0xF&#8230;&#8203;) werden ignoriert, inkl. aller Nachrichten zu MIDI-Transport
(nicht JACK-Transport), Tune-Request usw. Gleiches gilt für SystemExclusive Events.</p>
</div>
</div>
<div class="sect2">
<h3 id="_maus_und_tastaturkürzel">1.4. Maus und Tastaturkürzel</h3>
<div class="paragraph">
<p>Alle Tastaturkürzel ("Shortcuts") sind in den Menüs zu finden, es gibt keine "geheimen" Tasten.</p>
</div>
<div class="paragraph">
<p>Im Gegensatz dazu sind Mausbefehle überhaupt nicht in der grafischen Oberfläche einzusehen und
müssen hier gelernt werden:</p>
</div>
<div class="paragraph">
<p>(LM = Linke Maustaste, RM = Rechte Maustaste, Rad = Mausrad bewegen, MM = Mittlere Maustaste, meistens das Rad selbst drücken)</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Umschalten + LM gedrückt halten, Maus bewegen: Zieht einen Rahmen um Events auszuwählen.</p>
</li>
<li>
<p>RM auf den Hintergrund: Löst die Auswahl wieder auf.</p>
</li>
<li>
<p>LM auf ein ausgewähltes Event, dann Maus bewegen: Verschiebt die ausgewählten Events nach oben/unten oder links/rechts</p>
</li>
<li>
<p>Steuerung (Strg) dabei gedrückt halten: Bewegt nur nach links / rechts</p>
</li>
<li>
<p>Alt dabei gedrückt halten: Bewegt nur nach oben / unten</p>
</li>
<li>
<p>MM: Spielt die Note unter dem Mauszeiger ab. Es muss keine tatsächliche Note dort sein, die Position alleine reicht. Dies geht auch auf dem Klavier am linken Rand.</p>
</li>
<li>
<p>RM auf ein Event: Öffnet ein Menü mit weiteren Funktionen.</p>
</li>
<li>
<p>Rad: Scrollt den Notenbereich hoch und runter</p>
</li>
<li>
<p>Rad, dabei Alt gedrückt halten: Scrollt den Notenbereich links und rechts</p>
</li>
<li>
<p>Rad auf Velocities im unteren Bereich: Ändert die Lautstärke der einzelnen Note, unabhängig der momentanen Auswahl</p>
</li>
<li>
<p>Strg + Leertaste: Startet Playback an der Mauszeigerposition</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_beschreibung_der_grafischen_oberfläche_und_ihrer_funktionen">2. Beschreibung der grafischen Oberfläche und ihrer Funktionen</h2>
<div class="sectionbody">
<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>Alle Punkte, und mehr, werden weiter unten ausführlich besprochen.</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>[A]</strong> Menüleiste</p>
</li>
<li>
<p><strong>[B]</strong> Hauptansicht (Noten und Events)</p>
</li>
<li>
<p><strong>[C]</strong> Klavier am linken Rand</p>
</li>
<li>
<p><strong>[D]</strong> Velocityansicht</p>
</li>
<li>
<p><strong>[E]</strong> Einige Noten</p>
</li>
<li>
<p><strong>[F]</strong> Ein weiteres Event, als Beispiel</p>
</li>
<li>
<p><strong>[G]</strong> Statusleiste mit aktueller Ebene und Ebenen-MIDI-Kanal</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Im Normalfall, wenn Vico im New-Session-Manager läuft, gibt keine interne Möglichkeit das Programm
zu <strong>beenden</strong>. Benutzt man die Funktion seinen Fenstermanagers wie [X], Alt+F4 etc. wird die
grafische Oberfläche lediglich versteckt.</p>
</div>
<div class="paragraph">
<p>Um Vico wirklich zu schließen kann man in Agordejo (New Session Manager) stoppen. Hier
kann man auch die Sichtbarkeit wieder herstellen.</p>
</div>
<div class="paragraph">
<p>Die momentane Sichtbarkeitseinstellung wird gespeichert.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_klavier_am_linken_rand">3. Klavier am linken Rand</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Am linken Rand des Programmfensters befindet sich eine gedrehte Klaviatur. Sie dient ausschließlich
als Orientierungshilfe.</p>
</div>
<div class="paragraph">
<p>Die Zahlen zwischen 0 und 127 in den Tasten sind MIDI-Tonhöhen. 60 ist in diesem System das mittlere
C.</p>
</div>
<div class="paragraph">
<p>Hält man die mittlere Maustaste gedrückt und fährt über die Tastatur erklingt der Ton über das
verbundene Instrument.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_hauptansicht">4. Hauptansicht</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Die Hauptansicht nutzt Rhythmus als lineare Ausdehnung (technisch: Midi-Ticks).
Das bedeutet, dass eine Note mit gleicher Dauer immer gleich lang aussieht.
Verändert sich das Tempo (BPM) dann bewegt sich der Playhead schneller oder langsamer.
Im Umkehrschluss bedeutet das, dass es keine Zeitleiste geben kann, an der man sieht bei welcher
Sekunde ein Event stattfindet.</p>
</div>
<div class="sect2">
<h3 id="_bewegen_und_navigation">4.1. Bewegen und Navigation</h3>
<div class="paragraph">
<p>Mit dem Mausrad scrollt man die Hauptansicht nach oben und unten. Mit gedrückter Alt-Taste scrollt
man stattdessen nach vorne oder hinten (links / rechts)</p>
</div>
<div class="paragraph">
<p>Das "Navigation"-Menü bietet weitere Möglichkeiten.</p>
</div>
</div>
<div class="sect2">
<h3 id="_zoom_und_skalierung">4.2. Zoom und Skalierung</h3>
<div class="paragraph">
<p>Hält man Strg gedrückt und dreht das Mausrad wird die Ansicht größer oder kleiner.</p>
</div>
<div class="paragraph">
<p>Hält man zusätzlich noch Umschalten gedrück wird nur die Zeitachse skaliert. Noten werden
zusammengedrückt oder auseinandergezogen, so dass man entweder mehr auf einmal sehen kann oder
genauere Anfangs- und Endpositionen setzen kann.</p>
</div>
<div class="paragraph">
<p>Zoom und Skalierung ist rein grafisch und hat keinerlei Auswirkung auf die Musik selbst.</p>
</div>
</div>
<div class="sect2">
<h3 id="_ebenen">4.3. Ebenen</h3>
<div class="paragraph">
<p>Noten werden nicht in Tracks, sondern in Ebenen organisiert. Es gibt derer zehn.
Im "Ebenen"-Menü, oder mit den Funktionstasten F1 bis F10, kann die momentane Ebene ausgewählt werden.</p>
</div>
<div class="sect3">
<h4 id="_schatten">4.3.1. Schatten</h4>
<div class="paragraph">
<p>Ebenen liegen hintereinander und verdecken sich gegenseitig. Man kann allerdings sogenannte Schatten
aktivieren,
die eine andere Ebene auf die momentane projizieren. Schatten können nicht bearbeitet werden.
Alle Schatten verschwinden,sobald man die aktive Ebene verändert.</p>
</div>
<div class="paragraph">
<p>Umschalten+Funktionstaste, z.B. F3, zeigt die dritte Ebene als Schatten. F12 zeigt alle als Schatten.</p>
</div>
</div>
<div class="sect3">
<h4 id="_farben">4.3.2. Farben</h4>
<div class="paragraph">
<p>Jede Ebene kann eine Farbe haben, diese ist im Ebenenmenü auswählbar. Hauptsächlich sind Noten und
Events in dieser Farbe. Der Mauszeiger ist immer in der gegenteiligen Farbe.</p>
</div>
</div>
<div class="sect3">
<h4 id="_midi_kanal">4.3.3. Midi-Kanal</h4>
<div class="paragraph">
<p>Kanäle sind keine Eigenschaften der Events. Jede Ebene hat einen eigenen Midikanal,
zwischen 1 und 16, auf dem gesendet wird. Bei einem neuen Projekt ist das immer Kanal 1.</p>
</div>
<div class="paragraph">
<p>Bei der Aufnahme wird zwar auf allen eigehenden Midikanälen zugehört, allerdings wird der Kanal
sofort verworfen und auf den jeweiligen Ebenenkanal geändert.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_live_aufnahmen">5. Live Aufnahmen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Vico hat einen MIDI-in Jackport, an dem man beliebige Programme oder Hardwareinstrumente anschließen
kann.</p>
</div>
<div class="paragraph">
<p>Der Eingangsport leitet, unabhängig von der Verarbeitung in Vico selbst (Aufnahme oder nicht), alles
sofort an den Ausgangsport durch, allerdings mit dem Kanal der jeweils aktuellen Ebene. Die
Weiterleitung geschieht in Echtzeit (Realtime).</p>
</div>
<div class="paragraph">
<p>Um etwas aufzunehmen muss der Aufnahmemodus aktiviert sein (Bearbeiten&#8594;"Aufnahmemodus
umschalten"). Dies ist bei Programmstart bereits der Fall. Ein roter Playhead zeigt
Aufnahmebereitschaft, ein schwarzer ist reines Abspielen. Zusätzlich muss Transport laufen. Ist
beides nicht der Fall reagiert Vico, z.B. auf Noten, indem es die Tonhöhe farbig markiert.</p>
</div>
<div class="paragraph">
<p>Da Vico immer der JACK Timebase folgt (s.u.) geschieht die Aufnahme auch an dieser Position.
Man kann also in einem anderen Programm genau an die Stelle springen zu der man etwa ein Solo
aufnehmen möchte und in diesem Programm auch auf Play drücken. Im Prinzip kann Vico wie ein im
Hintergrund laufendes Programm benutzt werden (was mit NSMs GUI-verstecken auch tatsächlich geht).</p>
</div>
<div class="sect2">
<h3 id="_ebenen_filter">5.1. Ebenen-Filter</h3>
<div class="paragraph">
<p>Es passiert schnell, dass man eine Fülle von Events aufzeichnet, die das weitere Bearbeiten extrem
erschweren können. Man stelle sich vor, dass zu einer Melodie auch noch MIDI Aftertouch auf jeder
Note aufgezeichnet wird und darüber hinaus das Modwheel (CC) benutzt wird. Schon ist der ganze
Bildschirm voller Symbole.</p>
</div>
<div class="paragraph">
<p>Im Menü "Filter" befinden sich mehrere Möglichkeiten um Events auf Ebenen umzusortieren.</p>
</div>
<div class="paragraph">
<p>Die einfachste Anwendung ist einen Filter für alle Ebenen zu benutzen und dort lediglich den
Event-Typ einzustellen, z.B. Aftertouch. Nun werden alle Aftertouch-Events auf die aktuelle Ebene
verschoben.</p>
</div>
<div class="paragraph">
<p>Darüber hinaus kann man die Zielebene natürlich selbst einstellen. Auch ist es möglich die jeweiligen
MIDI Bytes als Ober- und Untergrenze zu definieren.</p>
</div>
<div class="paragraph">
<p>Beispiel: Event-Typ "Note" mit Byte1 Minimum 0 und Maximum 59 verschiebt alle tiefen Noten, z.B.
die Begleitung eines Klavierstückes, auf die Zielebene aber lässt alle hohen Noten stehen.</p>
</div>
<div class="paragraph">
<p>Die weiteren Menübefehle in "Filter" bieten Variation, funktionieren aber nach dem gleichen Muster.</p>
</div>
</div>
<div class="sect2">
<h3 id="_jack_transport_und_timebase_taktstriche">5.2. JACK Transport und Timebase: Taktstriche</h3>
<div class="paragraph">
<p>Vico wurde mit dem erklärten Ziel konstruiert, untergeordnet in einer Session zu laufen.
Startet man es alleine kann man natürlich aufnehmen und alle Funktionen benutzen, aber man sieht
keine Taktstriche und es ist ein bischen schwieriger die richtige Stelle zu finden.</p>
</div>
<div class="paragraph">
<p>Gibt es hingegen ein Programm, dass als JACK Timebase "Master" fungiert folgt Vico dessen Taktart
und Position.</p>
</div>
<div class="paragraph">
<p>Mit "Bearbeiten"&#8594;"Zeige Rhythmus Raster" (Taste L) kann man Taktstriche auch komplett ausschalten.</p>
</div>
<div class="paragraph">
<p>Vico hat keine festgesetzte Länge. Die Hauptansicht hat praktisch unendliche Länge, und man arbeitet
stets an der Stelle, an der sich alle anderen Programme auch befinden.</p>
</div>
<div class="paragraph">
<p>Sobald Transport läuft springt die Hauptansicht zum Playhead, es sei denn
Bearbeiten&#8594;"Playhead stets zentrieren" ist ausgeschaltet.</p>
</div>
<div class="paragraph">
<p>Starten und Stoppen des Transports ist von jedem laufenden JACK-Programm möglich, inkl. Vico selbst.
(Leertaste)</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_noten_und_events">6. Noten und Events</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Möchte man Noten und Events mit Maus und Tastatur einfügen, und nicht per MIDI Instrument aufnehmen,
stehen in den Menüs "Eingabe" und "Raster" zahlreiche Möglichkeiten zur Verfügung.</p>
</div>
<div class="paragraph">
<p>Alle Events werden immer auf dem Midi-Kanal ihrer Ebene gesendet.</p>
</div>
<div class="sect2">
<h3 id="_events_löschen">6.1. Events löschen</h3>
<div class="paragraph">
<p>Momentan ausgewählte Events (s.u.), inkl. Noten, können mit der Entfernen Taste gelöscht werden.
Alternativ kann man im "Bearbeiten"-Menü löschen.</p>
</div>
</div>
<div class="sect2">
<h3 id="_noten">6.2. Noten</h3>
<div class="paragraph">
<p>Bei Programmstart ist der Mauszeiger ein kleines Rechteck mit einem Text zur Tonhöhe. Dies ist der
Modus zum eingeben von Noten mit beliebiger Länge. Durch gedrückt halten und ziehen der linken
Maustaste können Noten gezeichnet werden. Man muss zuerst den Mauszeiger auf die richtige Tonhöhe
bringen, dann anfangen zu zeichnen.</p>
</div>
<div class="paragraph">
<p>Im Eingabemenü stehen feste Tondauern zur Verfügung. Diese können durch die Zahlentasten ausgewählt
werden. Nach Taste "1" fügt ein Klick mit der linken Maustaste eine Ganze Note ein, mit "2" eine
Halbe Note usw. "0" wählt wieder den freien Modus aus.</p>
</div>
<div class="paragraph">
<p>Punktierte Notenlängen können hier für alle festen Dauern an und ausgeschaltet werden.</p>
</div>
<div class="paragraph">
<p>Eingefügte Noten haben eine Durchschnitts-Velocity (Median) aus allen bisherigen Noten.</p>
</div>
</div>
<div class="sect2">
<h3 id="_weitere_events">6.3. Weitere Events</h3>
<div class="paragraph">
<p>Alle anderen Events können ebenfalls mit der Maus eingefügt werden. Das ist aufgrund großer
Datenmengen evtl. nicht sehr bequem oder schnell, aber immerhin möglich. Eine Liveaufnahme ist
wahrscheinlich vorzuziehen.</p>
</div>
<div class="sect3">
<h4 id="_control_changes_0xb0">6.3.1. Control Changes (0xB0)</h4>
<div class="paragraph">
<p>Zunächst muss man in einem Submenü den CC Typ auswählen, etwa "Volume (CC7)".
Die Höhe in der Hauptansicht bestimmt nun die Intensität von 0 bis 127.</p>
</div>
<div class="paragraph">
<p>Möchte man Control Changes eines anderen Typs setzen muss man den Menüeintrag erneut auswählen
(oder das Tastenkürzel drücken).</p>
</div>
<div class="paragraph">
<p>Control Changes können nicht nachträglich ihren Typ ändern, z.B. von Modwheel zu Volume. Man müsste
sie löschen und neu erstellen.</p>
</div>
</div>
<div class="sect3">
<h4 id="_program_change_0xc0">6.3.2. Program Change (0xC0)</h4>
<div class="paragraph">
<p>Um das Programm zu wechseln, um ein anderes Instrument auszuwählen, muss man lediglich das
Event auf eine Position setzen. Die Beschriftung zeigt an um welche Programmnummer und
General-Midi-Instrument es sich handelt. Folgt das verbundene JACK-Intrument nicht der MIDI-Benennung
kann man die Namen natürlich ignorieren.</p>
</div>
</div>
<div class="sect3">
<h4 id="_channel_pressure_monophonic_aftertouch_0xd0">6.3.3. Channel Pressure / "Monophonic Aftertouch" (0xD0)</h4>
<div class="paragraph">
<p>Channel Pressure präsentiert sich als ein simples X ohne weitere Beschriftung oder Auswahlmöglichkeit.
Je "höher" die Position, desto intensiver.</p>
</div>
</div>
<div class="sect3">
<h4 id="_pitch_bend_0xe0_nur_7bit_msb">6.3.4. Pitch Bend (0xE0 - nur 7bit MSB)</h4>
<div class="paragraph">
<p>Pitch Bend präsentiert sich als kleiner Kreis ohne weitere Beschriftung
oder Auswahlmöglichkeit. Je "höher", desto intensiver.</p>
</div>
</div>
<div class="sect3">
<h4 id="_polyphonic_aftertouch_0xa0">6.3.5. Polyphonic Aftertouch (0xA0)</h4>
<div class="paragraph">
<p>Zunächst muss man in einem Submenü die Note auswählen, für die Aftertouch gelten
soll. Anschließend kann man das Event einfügen. Intensität ist auch hier wieder die "Tonhöhe".
Möchte man Polyphonic Aftertouch für eine andere Note setzen muss man den Menüeintrag erneut
auswählen (oder das Tastenkürzel drücken).</p>
</div>
<div class="paragraph">
<p>Polyphonic Aftertouch können nicht nachträglich ihren Bezug zur Tonhöhe ändern.
Man müsste sie löschen und neu erstellen.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_events_bearbeiten_und_verschieben">7. Events bearbeiten und verschieben</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Alle Events lassen sich nachträglich bearbeiten. Hat man Ordnung durch Ebenen hergestellt, etwa
durch Filter, gestaltet sich dies umso einfacher.</p>
</div>
<div class="paragraph">
<p>Schreiben von Textanmerkungung ist die einzige Funktion in der Hauptansicht,
die keine Auswahl benötigt.</p>
</div>
<div class="paragraph">
<p>Alles weitere benötigt zwingend ausgewählte Events, selbst wenn es nur ein einziges ist.</p>
</div>
<div class="sect2">
<h3 id="_textanmerkung">7.1. Textanmerkung</h3>
<div class="paragraph">
<p>Existiert gerade keine Auswahl ermöglicht es die rechte Maustaste auf ein Event eine Textanmerkung
zu schreiben. Sie hat keine Auswirkung auf die Musik.</p>
</div>
</div>
<div class="sect2">
<h3 id="_auswahl">7.2. Auswahl</h3>
<div class="paragraph">
<p>Das wichtigste zuerst: Ein Klick mit der rechten Maustaste ist die beste Möglichkeit die Auswahl
aufzuheben.</p>
</div>
<div class="paragraph">
<p>Hält man die Umschalten-Taste gedrückt verschwinden die Event-Symbole am Mauszeiger. Statt dessen
erhält man den normalen Zeiger und kann durch drücken, halten und ziehen ein Rechteck ziehen um
Events auszuwählen.</p>
</div>
<div class="paragraph">
<p>Zusätzliche markierte Events werden zur bestehenden Auswahl hinzugefügt.</p>
</div>
<div class="paragraph">
<p>Die Auswahl kann sich über mehrere Ebenen ausdehnen.</p>
</div>
<div class="paragraph">
<p>Die Hauptansicht scrollt automatisch wenn man mit dem Mauszeiger an den linken bzw. rechten Rand
kommt. Oft ist aber rauszoomen die bessere Methode um viele Events auf einmal zu markieren.</p>
</div>
<div class="paragraph">
<p>Das "Bearbeiten"-Menü bietet die Möglichkeit die ganze Ebene zu wählen (Strg+A) oder sogar alle
Ebenen (Strg+Umschalten+A)</p>
</div>
<div class="sect3">
<h4 id="_auswahl_umkehren">7.2.1. Auswahl umkehren</h4>
<div class="paragraph">
<p>Benutzt man die Strg-Taste, anstatt Umschalten, kehrt sich die Auswahl um: Ausgewählte Noten werden
aufgehoben, alle anderen werden markiert.</p>
</div>
<div class="paragraph">
<p>Das ist besonders nützlich wenn man einzelne Noten aus einer Auswahl herausnehmen möchte, etwa
nach Strg+A.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_event_position_verändern">7.3. Event-Position verändern</h3>
<div class="paragraph">
<p>Durch Drück/Halten/Ziehen mit der linken Maustaste können alle Events sowohl in ihrer zeitlichen
Position (links/rechts) als auch in ihrer Tonhöhe bzw. Event-Intensität (hoch/runter) verändert
werden.</p>
</div>
<div class="paragraph">
<p>Hält man dabei die Alt-Taste gedrückt bewegen sich Events nur noch nach links/rechts, egal ob die
Maus auch hoch und runter fährt. Das erhöht die Kontrolle und vermeidet Ausrutscher in der Tonhöhe.</p>
</div>
<div class="paragraph">
<p>Hält man dabei die Strg-Taste gedrückt bewegen sich Events nur noch nach oben/unten, egal ob die
Maus auch nach links oder rechts fährt. Das erhöht die Kontrolle und vermeidet Ausrutscher in der
Position in der Zeit.</p>
</div>
<div class="paragraph">
<p>Man kann auch die Pfeiltasten benutzen um Events Schrittweise in alle Richtungen zu verschieben.
Diese Methode ist mitunter am schnellsten und genauesten.</p>
</div>
</div>
<div class="sect2">
<h3 id="_notenlängen_verändern">7.4. Notenlängen verändern</h3>
<div class="paragraph">
<p>Noten in der Auswahl können sowohl in ihrer Dauer nach vorne, wie auch nach hinten verändert werden.
Dazu kann man mit der Maus am linken oder rechten Rand einer Note mit der linken Maustaste
drücken/halten/ziehen. Alle markierten Noten werden um das gleiche Maß verändert.</p>
</div>
<div class="paragraph">
<p>Es gibt eine Mindestdauer, die nicht unterschritten werden kann. Dabei muss nur eine der
ausgewählten Noten an diese Mindestdauer stoßen, damit der gesamte Prozess gestoppt wird.</p>
</div>
<div class="paragraph">
<p>Sind gleichzeitig Nicht-Noten markiert werden diese bei der Aktion ignoriert.</p>
</div>
</div>
<div class="sect2">
<h3 id="_raster_und_positionen_einrasten">7.5. Raster und Positionen einrasten</h3>
<div class="paragraph">
<p>Das "Raster"-Menü ermöglicht es Events auf feste Position zu setzen. Bei Programmstart ist das
Raster zunächst ausgeschaltet: freie Positionierung auf jeder Zeitposition ist möglich.</p>
</div>
<div class="paragraph">
<p>Wie die Zifferntasten Tondauern, so stellen Umschalten+Ziffern das Rhythmusraster ein.
Ein Viertelnotenraster lässt nur noch Events und Tonanfänge auf Viertelnotenpositionen zu.</p>
</div>
<div class="paragraph">
<p>Das Raster auf Achtel- oder Sechzehntelnoten zu stellen ist meistens ein guter Kompromiss zwischen
robuster Eingabe und rhythmischer Flexibilität.</p>
</div>
<div class="paragraph">
<p>Bei freier Notenlänge (Umschalten+0) ist der Anfang ans Raster gebunden, das Ende ist jedoch frei.</p>
</div>
<div class="paragraph">
<p>Beim Verändern von Notenlängen ist das Raster aktiv.</p>
</div>
</div>
<div class="sect2">
<h3 id="_notenlautstärke_velocity_verändern">7.6. Notenlautstärke / Velocity verändern</h3>
<div class="paragraph">
<p>In der Hauptansicht kann man die Lautstärken von Noten nur durch Menübefehle verändern. Eine weitere
Möglichkeit bietet die Velocityansicht (s.u.).</p>
</div>
<div class="paragraph">
<p>Das "Bearbeiten"-Menü bietet mehrere Optionen:
Man kann Velocities schrittweise erhöhen oder ernierigen. Die Tastenkürzel sind + und -.</p>
</div>
<div class="paragraph">
<p>Dazu gibt es einen Befehl, der es ermöglicht entweder relativ alle Noten zu verändern oder absolute
alle auf einen festen Wert zu setzen. Schreibt man ein "+" oder "-" vor den Wert in der Eingabezeile
wird die Änderung als relativ angesehen.</p>
</div>
<div class="paragraph">
<p>Beispiel: "+23" erhöht alle Velocities um 23. "23" setzt alle auf 23, "-42" verringert alles um
42.</p>
</div>
<div class="paragraph">
<p>Achtung! Es wird technisch zugelassen Velocities kleiner als 0 und größer als 127 zu haben. Das ist
musikalisch nicht möglich und muss von Hand beachtet und korrigiert werden.</p>
</div>
<div class="paragraph">
<p>Ein weiterer Befehl ist es Velocities zu "komprimieren". Hierbei werden alle proportional in einen
neuen Rahmen gepresst. Zum Beispiel: Velocities 0 (niedrigster), 64 (mitte) und 127 (höchster)
werden komprimiert in den Rahmen zwischen 70 und 90. Dann bekommen wir: 70 (niedrigster), 80 (mitte),
und 90 (höchster).</p>
</div>
<div class="paragraph">
<p>Bei all diesen Befehlen werden Nicht-Noten ignoriert.</p>
</div>
</div>
<div class="sect2">
<h3 id="_kopieren_ausschneiden_einfügen">7.7. Kopieren, Ausschneiden, Einfügen</h3>
<div class="paragraph">
<p>Wie in fast allen Programmen gibt es Kopieren, Ausschneiden und Einfügen bzw. Copy, Cut, Paste.
Die üblichen Tastenkürzel werden benutzt: Strg+C, Strg+X, Strg+V.</p>
</div>
<div class="paragraph">
<p>Ausgewählten Noten werden mit Strg+C in einen Hintergrundspeicher kopiert; mit Strg+X wird die
Originalauswahl zusätzlich gelöscht. Da die Auswahl mehrere Ebenen überspannen kann, kann man auch
von mehreren Ebenen kopieren.</p>
</div>
<div class="paragraph">
<p>Mit Strg+V wird nun <strong>an der selben Stelle</strong> eine Kopie eingefügt.
Es ist möglich die Ebene zu wechseln um dort eine Kopie einzufügen.</p>
</div>
<div class="paragraph">
<p>Fügt man auf der selben Ebene ein überlagern sich die Noten zunächst, sind also "unsichtbar"!
Es ist aber nur ein Satz an Noten ausgewählt! Das heißt man kann sofort verschieben.</p>
</div>
</div>
<div class="sect2">
<h3 id="_änderungen_rückgängig_machen_undo_redo">7.8. Änderungen rückgängig machen / Undo &amp; Redo</h3>
<div class="paragraph">
<p>Strg+Z ("Undo") macht die jeweils letzte Änderung rückgängig.</p>
</div>
<div class="paragraph">
<p>Strg+Umschalten+Z ("Redo") widerruft das letzte Undo, geht also wieder einen Schritt zurück
(&#8230;&#8203;nach vorne?). Hat man inzwischen selber wieder etwas geändert ist Redo nicht mehr möglich.</p>
</div>
<div class="paragraph">
<p>Undo ist nur bis zum Zustand des Programmstarts möglich.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_velocityansicht">8. Velocityansicht</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Am unteren Rand des Programmfensters befindet sich die Velocityansicht. Sie dient als Übersicht über
Lautstärken und ermöglicht außerdem das Verändern von Einzelnoten.</p>
</div>
<div class="paragraph">
<p>Das besondere an dieser Ansicht ist, dass sie erstens nur Noten anzeigt, und keine anderen Events,
und zweitens nur die ausgewählten Noten anzeigt. So können selbst Einzelnoten aus Akkorden genau
angesehen werden.</p>
</div>
<div class="paragraph">
<p>Die Velocityansicht zeigt alle Noten unterhalb ihrer Anfangsposition in der Hauptansicht, scrollt also mit.
Jeder Balken ist eine Note. Der Rhythmus wird nicht dargestellt; alle Balken sind gleich breit.</p>
</div>
<div class="paragraph">
<p>Zeigt der Mauszeiger auf einen Balken ändert das Mausrad die Velocity in Zweierschritten von genau
dieser einen Note.
Um Velocities aller ausgewählten Noten auf einmal zu veränden muss man jedoch die Menübefehle im
"Bearbeiten"-Menü benutzen (s.o.)</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_verschiedenes_für_fortgeschrittene_benutzer">9. Verschiedenes für fortgeschrittene Benutzer</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_parameter_und_einstellungen_am_anfang_des_stückes">9.1. Parameter und Einstellungen am Anfang des Stückes</h3>
<div class="paragraph">
<p>Es gibt keine verstecken Daten oder Einstellungen. Alles, was Vico sendet ist auch für den
Benutzer zu sehen. Das bedeutet vor allem, dass es keine Starteinstellungen gibt.</p>
</div>
<div class="paragraph">
<p>Zum Beispiel: Ändert man am Ende eines Stücks für z.B Geige das Instrument auf eine Bratsche
(Program Change) und spielt dann von vorne ab wird es immer noch die Bratsche sein, da das
verbundene JACK-Instrument keine Nachricht bekommen hat auf die Geige zu wechseln. Man muss also
ganz am Anfang die Geige explizit setzen. Ähnliches gilt für Pitchbend oder Control Changes wie
Klavierpedal, Modwheel, Expression etc.</p>
</div>
</div>
<div class="sect2">
<h3 id="_midi_parameter_mit_hoher_auflösung_msb_und_lsb">9.2. MIDI Parameter mit hoher Auflösung (MSB und LSB)</h3>
<div class="paragraph">
<p>Manche MIDI Parameter sind 14bit, statt der üblichen 7bit. Sie werden aus zwei Werten
zusammengesetzt. Das ist standard Midipraxis und muss an anderer Stelle gelernt werden.
Für Vico gilt, dass diese Werte auch als zwei getrennte 7bit-Einträge gesetzt werden müssen.</p>
</div>
</div>
<div class="sect2">
<h3 id="_überlappende_noten">9.3. Überlappende Noten</h3>
<div class="paragraph">
<p>Das MIDI Format verbietet nicht, dass auf ein Note-On ein weiteres Note-On der gleichen Tonhöhe
folgt, ohne dass vorher ein Note-Off kam. Ach wenn es das in den meisten Fällen wenig musikalischen
Sinn macht ist es erlaubt und von daher von Vico unterstützt. Im Allgemeinen sollte man versuchen
sich überlappende Noten der gleichen Tonhöe zu vermeiden (auch auf mehreren Ebenen, wenn diese den
selben Midikanal teilen).</p>
</div>
</div>
<div class="sect2">
<h3 id="_control_changes_sind_falsch_herum_in_vico">9.4. "Control Changes sind falsch herum in Vico!"</h3>
<div class="paragraph">
<p>Schlaue MIDI-Füchse wissen: MIDI Nachrichten haben zwei Parameter (Byte1 und Byte2). Bei Noten ist
Byte1 die Tonhöhe und Byte2 die Velocity. Bei Control Changes ist Byte1 der Typ (z.B. Volume) und
Byte2 die Intensität. Aber in Vico wird bei CCs Byte2 als Tonhöhe dargestellt, damit man diese
hoch und runter schieben kann.</p>
</div>
</div>
<div class="sect2">
<h3 id="_rundungsfehler_meine_noten_sind_an_der_falschen_stelle">9.5. Rundungsfehler: Meine Noten sind an der Falschen Stelle</h3>
<div class="paragraph">
<p>Mathematik und Computer lassen sich irgendwann nicht mehr austricksen.
Wenn bei extremer Skalierung (Strg+Umschalten+Mausrad), wenn Noten sehr stark zusammen gepresst
werden, 64tel Noten auf ein 64tel Raster gesetzt werden wollen kommt es evtl. zu Rundungsfehlern
und damit zu Fehlpositionierung um einige Pixel bzw. Midi-Ticks. Lösung: Skalierung verändern,
Noten "länger" darstellen lassen.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_und_start">10. Installation und Start</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Vico ist exklusiv für Linux. Am besten installieren Sie Vico über deinen Paketmanager.
Falls es dort nicht vorhanden ist, oder nur in einer veralteten Version, bitten sie ihre
Linuxdistribution Vico bereitzustellen.</p>
</div>
<div class="paragraph">
<p>Falls in den Paketquellen vorhanden bitte direkt bei "vico in Agordejo (New Session Manager)" weiterlesen.
Falls nicht kann man Vico 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/vico.git" class="bare">https://git.laborejo.org/lss/vico.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">vico 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>vico</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 vico 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">11. Helfen und Entwicklung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Sie können Vico 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">11.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">12. 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">12.1. Übersetzungen</h3>
<div class="paragraph">
<p>Vico 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
vico 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 vico mit diesem Befehl, Sprachcode ändern, vom Terminal aus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>LANGUAGE=de_DE.UTF-8 ./vico -V</code></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2021-01-01 23:55:37 +0100
</div>
</div>
</body>
</html>