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.

1482 lines
69KB

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="generator" content="Asciidoctor 2.0.12">
  8. <meta name="author" content="Laborejo Software Suite">
  9. <title>Vico</title>
  10. <style>
  11. /* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
  12. /* Uncomment @import statement to use as custom stylesheet */
  13. /*@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";*/
  14. article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
  15. audio,video{display:inline-block}
  16. audio:not([controls]){display:none;height:0}
  17. html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
  18. a{background:none}
  19. a:focus{outline:thin dotted}
  20. a:active,a:hover{outline:0}
  21. h1{font-size:2em;margin:.67em 0}
  22. abbr[title]{border-bottom:1px dotted}
  23. b,strong{font-weight:bold}
  24. dfn{font-style:italic}
  25. hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
  26. mark{background:#ff0;color:#000}
  27. code,kbd,pre,samp{font-family:monospace;font-size:1em}
  28. pre{white-space:pre-wrap}
  29. q{quotes:"\201C" "\201D" "\2018" "\2019"}
  30. small{font-size:80%}
  31. sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
  32. sup{top:-.5em}
  33. sub{bottom:-.25em}
  34. img{border:0}
  35. svg:not(:root){overflow:hidden}
  36. figure{margin:0}
  37. fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
  38. legend{border:0;padding:0}
  39. button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
  40. button,input{line-height:normal}
  41. button,select{text-transform:none}
  42. button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
  43. button[disabled],html input[disabled]{cursor:default}
  44. input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
  45. button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
  46. textarea{overflow:auto;vertical-align:top}
  47. table{border-collapse:collapse;border-spacing:0}
  48. *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
  49. html,body{font-size:100%}
  50. 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}
  51. a:hover{cursor:pointer}
  52. img,object,embed{max-width:100%;height:auto}
  53. object,embed{height:100%}
  54. img{-ms-interpolation-mode:bicubic}
  55. .left{float:left!important}
  56. .right{float:right!important}
  57. .text-left{text-align:left!important}
  58. .text-right{text-align:right!important}
  59. .text-center{text-align:center!important}
  60. .text-justify{text-align:justify!important}
  61. .hide{display:none}
  62. img,object,svg{display:inline-block;vertical-align:middle}
  63. textarea{height:auto;min-height:50px}
  64. select{width:100%}
  65. .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}
  66. 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}
  67. a{color:#2156a5;text-decoration:underline;line-height:inherit}
  68. a:hover,a:focus{color:#1d4b8f}
  69. a img{border:0}
  70. p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
  71. p aside{font-size:.875em;line-height:1.35;font-style:italic}
  72. 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}
  73. 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}
  74. h1{font-size:2.125em}
  75. h2{font-size:1.6875em}
  76. h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
  77. h4,h5{font-size:1.125em}
  78. h6{font-size:1em}
  79. hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
  80. em,i{font-style:italic;line-height:inherit}
  81. strong,b{font-weight:bold;line-height:inherit}
  82. small{font-size:60%;line-height:inherit}
  83. code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
  84. ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
  85. ul,ol{margin-left:1.5em}
  86. ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
  87. ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
  88. ul.square{list-style-type:square}
  89. ul.circle{list-style-type:circle}
  90. ul.disc{list-style-type:disc}
  91. ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
  92. dl dt{margin-bottom:.3125em;font-weight:bold}
  93. dl dd{margin-bottom:1.25em}
  94. abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
  95. abbr{text-transform:none}
  96. blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
  97. blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
  98. blockquote cite::before{content:"\2014 \0020"}
  99. blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
  100. blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
  101. @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
  102. h1{font-size:2.75em}
  103. h2{font-size:2.3125em}
  104. h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
  105. h4{font-size:1.4375em}}
  106. table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
  107. table thead,table tfoot{background:#f7f8f7}
  108. 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}
  109. table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
  110. table tr.even,table tr.alt{background:#f8f8f7}
  111. table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
  112. h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
  113. h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
  114. .center{margin-left:auto;margin-right:auto}
  115. .stretch{width:100%}
  116. .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
  117. .clearfix::after,.float-group::after{clear:both}
  118. :not(pre).nobreak{word-wrap:normal}
  119. :not(pre).nowrap{white-space:nowrap}
  120. :not(pre).pre-wrap{white-space:pre-wrap}
  121. :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}
  122. pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
  123. pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
  124. pre>code{display:block}
  125. pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
  126. em em{font-style:normal}
  127. strong strong{font-weight:400}
  128. .keyseq{color:rgba(51,51,51,.8)}
  129. 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}
  130. .keyseq kbd:first-child{margin-left:0}
  131. .keyseq kbd:last-child{margin-right:0}
  132. .menuseq,.menuref{color:#000}
  133. .menuseq b:not(.caret),.menuref{font-weight:inherit}
  134. .menuseq{word-spacing:-.02em}
  135. .menuseq b.caret{font-size:1.25em;line-height:.8}
  136. .menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
  137. b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
  138. b.button::before{content:"[";padding:0 3px 0 2px}
  139. b.button::after{content:"]";padding:0 2px 0 3px}
  140. p a>code:hover{color:rgba(0,0,0,.9)}
  141. #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}
  142. #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
  143. #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
  144. #content{margin-top:1.25em}
  145. #content::before{content:none}
  146. #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
  147. #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
  148. #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
  149. #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}
  150. #header .details span:first-child{margin-left:-.125em}
  151. #header .details span.email a{color:rgba(0,0,0,.85)}
  152. #header .details br{display:none}
  153. #header .details br+span::before{content:"\00a0\2013\00a0"}
  154. #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
  155. #header .details br+span#revremark::before{content:"\00a0|\00a0"}
  156. #header #revnumber{text-transform:capitalize}
  157. #header #revnumber::after{content:"\00a0"}
  158. #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}
  159. #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
  160. #toc>ul{margin-left:.125em}
  161. #toc ul.sectlevel0>li>a{font-style:italic}
  162. #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
  163. #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
  164. #toc li{line-height:1.3334;margin-top:.3334em}
  165. #toc a{text-decoration:none}
  166. #toc a:active{text-decoration:underline}
  167. #toctitle{color:#7a2518;font-size:1.2em}
  168. @media screen and (min-width:768px){#toctitle{font-size:1.375em}
  169. body.toc2{padding-left:15em;padding-right:0}
  170. #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}
  171. #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
  172. #toc.toc2>ul{font-size:.9em;margin-bottom:0}
  173. #toc.toc2 ul ul{margin-left:0;padding-left:1em}
  174. #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
  175. body.toc2.toc-right{padding-left:0;padding-right:15em}
  176. body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
  177. @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
  178. #toc.toc2{width:20em}
  179. #toc.toc2 #toctitle{font-size:1.375em}
  180. #toc.toc2>ul{font-size:.95em}
  181. #toc.toc2 ul ul{padding-left:1.25em}
  182. body.toc2.toc-right{padding-left:0;padding-right:20em}}
  183. #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}
  184. #content #toc>:first-child{margin-top:0}
  185. #content #toc>:last-child{margin-bottom:0}
  186. #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
  187. #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
  188. #content{margin-bottom:.625em}
  189. .sect1{padding-bottom:.625em}
  190. @media screen and (min-width:768px){#content{margin-bottom:1.25em}
  191. .sect1{padding-bottom:1.25em}}
  192. .sect1:last-child{padding-bottom:0}
  193. .sect1+.sect1{border-top:1px solid #e7e7e9}
  194. #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}
  195. #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}
  196. #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}
  197. #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}
  198. #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}
  199. details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
  200. details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
  201. .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}
  202. table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
  203. .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)}
  204. table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
  205. .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
  206. .admonitionblock>table td.icon{text-align:center;width:80px}
  207. .admonitionblock>table td.icon img{max-width:none}
  208. .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
  209. .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}
  210. .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
  211. .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}
  212. .exampleblock>.content>:first-child{margin-top:0}
  213. .exampleblock>.content>:last-child{margin-bottom:0}
  214. .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}
  215. .sidebarblock>:first-child{margin-top:0}
  216. .sidebarblock>:last-child{margin-bottom:0}
  217. .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
  218. .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}
  219. .literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
  220. @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
  221. @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
  222. .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
  223. .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
  224. .listingblock>.content{position:relative}
  225. .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}
  226. .listingblock:hover code[data-lang]::before{display:block}
  227. .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
  228. .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
  229. .listingblock pre.highlightjs{padding:0}
  230. .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
  231. .listingblock pre.prettyprint{border-width:0}
  232. .prettyprint{background:#f7f7f8}
  233. pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
  234. pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
  235. pre.prettyprint li code[data-lang]::before{opacity:1}
  236. pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
  237. table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
  238. table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
  239. table.linenotable td.code{padding-left:.75em}
  240. table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
  241. pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
  242. pre.pygments .lineno::before{content:"";margin-right:-.125em}
  243. .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
  244. .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
  245. .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}
  246. .quoteblock blockquote{margin:0;padding:0;border:0}
  247. .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)}
  248. .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
  249. .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
  250. .verseblock{margin:0 1em 1.25em}
  251. .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}
  252. .verseblock pre strong{font-weight:400}
  253. .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
  254. .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
  255. .quoteblock .attribution br,.verseblock .attribution br{display:none}
  256. .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
  257. .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
  258. .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}
  259. .quoteblock.abstract{margin:0 1em 1.25em;display:block}
  260. .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
  261. .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
  262. .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
  263. .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
  264. .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
  265. p.tableblock:last-child{margin-bottom:0}
  266. td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
  267. td.tableblock>.content>:last-child{margin-bottom:-1.25em}
  268. table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
  269. table.grid-all>*>tr>*{border-width:1px}
  270. table.grid-cols>*>tr>*{border-width:0 1px}
  271. table.grid-rows>*>tr>*{border-width:1px 0}
  272. table.frame-all{border-width:1px}
  273. table.frame-ends{border-width:1px 0}
  274. table.frame-sides{border-width:0 1px}
  275. table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
  276. table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
  277. table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
  278. table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
  279. 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}
  280. th.halign-left,td.halign-left{text-align:left}
  281. th.halign-right,td.halign-right{text-align:right}
  282. th.halign-center,td.halign-center{text-align:center}
  283. th.valign-top,td.valign-top{vertical-align:top}
  284. th.valign-bottom,td.valign-bottom{vertical-align:bottom}
  285. th.valign-middle,td.valign-middle{vertical-align:middle}
  286. table thead th,table tfoot th{font-weight:bold}
  287. tbody tr th{background:#f7f8f7}
  288. tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
  289. p.tableblock>code:only-child{background:none;padding:0}
  290. p.tableblock{font-size:1em}
  291. ol{margin-left:1.75em}
  292. ul li ol{margin-left:1.5em}
  293. dl dd{margin-left:1.125em}
  294. dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
  295. ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
  296. ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
  297. ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
  298. ul.unstyled,ol.unstyled{margin-left:0}
  299. ul.checklist{margin-left:.625em}
  300. 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}
  301. ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
  302. 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}
  303. ul.inline>li{margin-left:1.25em}
  304. .unstyled dl dt{font-weight:400;font-style:normal}
  305. ol.arabic{list-style-type:decimal}
  306. ol.decimal{list-style-type:decimal-leading-zero}
  307. ol.loweralpha{list-style-type:lower-alpha}
  308. ol.upperalpha{list-style-type:upper-alpha}
  309. ol.lowerroman{list-style-type:lower-roman}
  310. ol.upperroman{list-style-type:upper-roman}
  311. ol.lowergreek{list-style-type:lower-greek}
  312. .hdlist>table,.colist>table{border:0;background:none}
  313. .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
  314. td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
  315. td.hdlist1{font-weight:bold;padding-bottom:1.25em}
  316. td.hdlist2{word-wrap:anywhere}
  317. .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
  318. .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
  319. .colist td:not([class]):first-child img{max-width:none}
  320. .colist td:not([class]):last-child{padding:.25em 0}
  321. .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}
  322. .imageblock.left{margin:.25em .625em 1.25em 0}
  323. .imageblock.right{margin:.25em 0 1.25em .625em}
  324. .imageblock>.title{margin-bottom:0}
  325. .imageblock.thumb,.imageblock.th{border-width:6px}
  326. .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
  327. .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
  328. .image.left{margin-right:.625em}
  329. .image.right{margin-left:.625em}
  330. a.image{text-decoration:none;display:inline-block}
  331. a.image object{pointer-events:none}
  332. sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
  333. sup.footnote a,sup.footnoteref a{text-decoration:none}
  334. sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
  335. #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
  336. #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
  337. #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
  338. #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
  339. #footnotes .footnote:last-of-type{margin-bottom:0}
  340. #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
  341. .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
  342. .gist .file-data>table td.line-data{width:99%}
  343. div.unbreakable{page-break-inside:avoid}
  344. .big{font-size:larger}
  345. .small{font-size:smaller}
  346. .underline{text-decoration:underline}
  347. .overline{text-decoration:overline}
  348. .line-through{text-decoration:line-through}
  349. .aqua{color:#00bfbf}
  350. .aqua-background{background:#00fafa}
  351. .black{color:#000}
  352. .black-background{background:#000}
  353. .blue{color:#0000bf}
  354. .blue-background{background:#0000fa}
  355. .fuchsia{color:#bf00bf}
  356. .fuchsia-background{background:#fa00fa}
  357. .gray{color:#606060}
  358. .gray-background{background:#7d7d7d}
  359. .green{color:#006000}
  360. .green-background{background:#007d00}
  361. .lime{color:#00bf00}
  362. .lime-background{background:#00fa00}
  363. .maroon{color:#600000}
  364. .maroon-background{background:#7d0000}
  365. .navy{color:#000060}
  366. .navy-background{background:#00007d}
  367. .olive{color:#606000}
  368. .olive-background{background:#7d7d00}
  369. .purple{color:#600060}
  370. .purple-background{background:#7d007d}
  371. .red{color:#bf0000}
  372. .red-background{background:#fa0000}
  373. .silver{color:#909090}
  374. .silver-background{background:#bcbcbc}
  375. .teal{color:#006060}
  376. .teal-background{background:#007d7d}
  377. .white{color:#bfbfbf}
  378. .white-background{background:#fafafa}
  379. .yellow{color:#bfbf00}
  380. .yellow-background{background:#fafa00}
  381. span.icon>.fa{cursor:default}
  382. a span.icon>.fa{cursor:inherit}
  383. .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
  384. .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
  385. .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
  386. .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
  387. .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
  388. .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
  389. .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}
  390. .conum[data-value] *{color:#fff!important}
  391. .conum[data-value]+b{display:none}
  392. .conum[data-value]::after{content:attr(data-value)}
  393. pre .conum[data-value]{position:relative;top:-.125em}
  394. b.conum *{color:inherit!important}
  395. .conum:not([data-value]):empty{display:none}
  396. dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
  397. h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
  398. p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
  399. p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
  400. p{margin-bottom:1.25rem}
  401. .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
  402. .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
  403. .print-only{display:none!important}
  404. @page{margin:1.25cm .75cm}
  405. @media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
  406. html{font-size:80%}
  407. a{color:inherit!important;text-decoration:underline!important}
  408. a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
  409. a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
  410. abbr[title]::after{content:" (" attr(title) ")"}
  411. pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
  412. thead{display:table-header-group}
  413. svg{max-width:100%}
  414. p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
  415. h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
  416. #header,#content,#footnotes,#footer{max-width:none}
  417. #toc,.sidebarblock,.exampleblock>.content{background:none!important}
  418. #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
  419. body.book #header{text-align:center}
  420. body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
  421. body.book #header .details{border:0!important;display:block;padding:0!important}
  422. body.book #header .details span:first-child{margin-left:0!important}
  423. body.book #header .details br{display:block}
  424. body.book #header .details br+span::before{content:none!important}
  425. body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
  426. body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
  427. .listingblock code[data-lang]::before{display:block}
  428. #footer{padding:0 .9375em}
  429. .hide-on-print{display:none!important}
  430. .print-only{display:block!important}
  431. .hide-for-print{display:none!important}
  432. .show-for-print{display:inherit!important}}
  433. @media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
  434. .sect1{padding:0!important}
  435. .sect1+.sect1{border:0}
  436. #footer{background:none}
  437. #footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
  438. @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
  439. </style>
  440. </head>
  441. <body class="article toc2 toc-left">
  442. <div id="header">
  443. <h1>Vico</h1>
  444. <div class="details">
  445. <span id="author" class="author">Laborejo Software Suite</span><br>
  446. </div>
  447. <div id="toc" class="toc2">
  448. <div id="toctitle">Table of Contents</div>
  449. <ul class="sectlevel1">
  450. <li><a href="#_introduction">1. Introduction</a>
  451. <ul class="sectlevel2">
  452. <li><a href="#_basic_principles">1.1. Basic Principles</a></li>
  453. <li><a href="#_midi_support">1.2. MIDI support</a></li>
  454. <li><a href="#_mouse_and_keyboard_shortcuts">1.3. Mouse and keyboard shortcuts</a></li>
  455. </ul>
  456. </li>
  457. <li><a href="#_description_of_the_graphical_user_interface_and_its_functions">2. Description of the graphical user interface and its functions</a></li>
  458. <li><a href="#_piano_at_the_left_side">3. Piano at the left side</a></li>
  459. <li><a href="#_main_view">4. Main View</a>
  460. <ul class="sectlevel2">
  461. <li><a href="#_moving_and_navigation">4.1. Moving and Navigation</a></li>
  462. <li><a href="#_zoom_and_scaling">4.2. Zoom and Scaling</a></li>
  463. <li><a href="#_layers">4.3. Layers</a>
  464. <ul class="sectlevel3">
  465. <li><a href="#_shadows">4.3.1. Shadows</a></li>
  466. <li><a href="#_colors">4.3.2. Colors</a></li>
  467. <li><a href="#_midi_channels">4.3.3. Midi Channels</a></li>
  468. </ul>
  469. </li>
  470. </ul>
  471. </li>
  472. <li><a href="#_live_recording">5. Live Recording</a>
  473. <ul class="sectlevel2">
  474. <li><a href="#_layer_filter">5.1. Layer Filter</a></li>
  475. <li><a href="#_jack_transport_and_timebase_bar_lines">5.2. JACK Transport and Timebase: Bar lines</a></li>
  476. </ul>
  477. </li>
  478. <li><a href="#_notes_and_events">6. Notes and events</a>
  479. <ul class="sectlevel2">
  480. <li><a href="#_notes">6.1. Notes</a></li>
  481. <li><a href="#_other_events">6.2. Other Events</a>
  482. <ul class="sectlevel3">
  483. <li><a href="#_control_changes_0xb0">6.2.1. Control Changes (0xB0)</a></li>
  484. <li><a href="#_program_change_0xc0">6.2.2. Program Change (0xC0)</a></li>
  485. <li><a href="#_channel_pressure_monophonic_aftertouch_0xd0">6.2.3. Channel Pressure / "Monophonic Aftertouch" (0xD0)</a></li>
  486. <li><a href="#_pitch_bend_0xe0_only_7bit_msb">6.2.4. Pitch Bend (0xE0 - only 7bit MSB)</a></li>
  487. <li><a href="#_polyphonic_aftertouch_0xa0">6.2.5. Polyphonic Aftertouch (0xA0)</a></li>
  488. </ul>
  489. </li>
  490. </ul>
  491. </li>
  492. <li><a href="#_editing_and_moving_events">7. Editing and Moving Events</a>
  493. <ul class="sectlevel2">
  494. <li><a href="#_text_annotation">7.1. Text Annotation</a></li>
  495. <li><a href="#_selections">7.2. Selections</a>
  496. <ul class="sectlevel3">
  497. <li><a href="#_invert_selection">7.2.1. Invert selection</a></li>
  498. </ul>
  499. </li>
  500. <li><a href="#_change_event_position">7.3. Change event position</a></li>
  501. <li><a href="#_changing_note_durations">7.4. Changing Note Durations</a></li>
  502. <li><a href="#_snap_to_grid_and_positions">7.5. Snap to Grid and Positions</a></li>
  503. <li><a href="#_change_note_volume_velocity">7.6. Change Note Volume / Velocity</a></li>
  504. <li><a href="#_copy_cut_paste">7.7. Copy, Cut, Paste</a></li>
  505. <li><a href="#_undo_changes_undo_redo">7.8. Undo changes / Undo &amp; Redo</a></li>
  506. </ul>
  507. </li>
  508. <li><a href="#_velocity_view">8. Velocity View</a></li>
  509. <li><a href="#_miscellaneous_for_advanced_users">9. Miscellaneous for Advanced Users</a>
  510. <ul class="sectlevel2">
  511. <li><a href="#_parameters_and_settings_at_the_beginning_of_the_track">9.1. Parameters and Settings at the Beginning of the Track</a></li>
  512. <li><a href="#_high_resolution_midi_parameters_msb_and_lsb">9.2. High Resolution MIDI Parameters (MSB and LSB)</a></li>
  513. <li><a href="#_overlapping_notes">9.3. Overlapping Notes</a></li>
  514. <li><a href="#_control_changes_are_upside_down_in_vico">9.4. Control changes are upside down in Vico.</a></li>
  515. <li><a href="#_rounding_error_my_notes_are_at_the_wrong_position">9.5. Rounding Error: My Notes are at the Wrong Position</a></li>
  516. </ul>
  517. </li>
  518. <li><a href="#_installation_and_start">10. Installation and Start</a></li>
  519. <li><a href="#_help_and_development">11. Help and Development</a>
  520. <ul class="sectlevel2">
  521. <li><a href="#_testing_and_reporting_errors">11.1. Testing and Reporting Errors</a></li>
  522. <li><a href="#_programming">11.2. Programming</a></li>
  523. <li><a href="#_translations">11.3. Translations</a></li>
  524. </ul>
  525. </li>
  526. </ul>
  527. </div>
  528. </div>
  529. <div id="content">
  530. <div id="preamble">
  531. <div class="sectionbody">
  532. <div class="paragraph">
  533. <p>For program version 1.2.2</p>
  534. </div>
  535. </div>
  536. </div>
  537. <div class="sect1">
  538. <h2 id="_introduction">1. Introduction</h2>
  539. <div class="sectionbody">
  540. <div class="paragraph">
  541. <p>THIS PROGRAM IS NO LONGER IN DEVELOPMENT. NO FURTHER UPDATES!
  542. In August 2020 it became clear that the choice of programming languages and libraries lead to grave performance problems.
  543. Combined with the fact that this is hardly a unique program, a piano roll midi sequencer, it has been decided that
  544. no further development will happen. Here is the original description of the program:</p>
  545. </div>
  546. <div class="paragraph">
  547. <p>Vico is a minimalistic Midi sequencer that is intended to be used in parallel with other software.</p>
  548. </div>
  549. <div class="paragraph">
  550. <p>"Vico" (with c like ts in "bats") just means "sequence" or "order" in Esperanto for obvious reasons.</p>
  551. </div>
  552. <div class="paragraph">
  553. <p>In a loop- or pattern based environment you often want to have a 'free flowing' track in order to
  554. create an instrumental solo, for example. Sometimes you just want to record a sketch or an idea
  555. quickly and not open or create an entire DAW project.</p>
  556. </div>
  557. <div class="paragraph">
  558. <p>Vico fulfills these conditions by connecting exactly one source to one output, and records and
  559. plays back in between. Or to put it another way: you only get one track, intended
  560. for one instrument (but with convenient layers).</p>
  561. </div>
  562. <div class="paragraph">
  563. <p>Vico has been written primarily for users of Patroneo, but has no closer technical bond. Patroneo
  564. is a program characterized by strict repetitions and constant reuse of very short patterns. With
  565. this you can quickly create whole arrangements for drums, bass and accompaniment chords, but a
  566. beautiful, long melody is extremely cumbersome. Therefore Vico wants to solve this problem.</p>
  567. </div>
  568. <div class="paragraph">
  569. <p>However, all programs that run as JACK transport masters or JACK timebase masters are suitable as
  570. "remote control".</p>
  571. </div>
  572. <div class="sect2">
  573. <h3 id="_basic_principles">1.1. Basic Principles</h3>
  574. <div class="paragraph">
  575. <p>Vico itself doesn&#8217;t create sounds and offers only a single output for JACK midi and organizes all
  576. events on up to ten layers, similar to graphics programs.</p>
  577. </div>
  578. <div class="paragraph">
  579. <p>There is an input for JACK-Midi to which you can connect MIDI instruments or other programs.</p>
  580. </div>
  581. <div class="paragraph">
  582. <p>At the start you see an empty track. The playhead is always at the point where JACK Transport is
  583. located.</p>
  584. </div>
  585. <div class="paragraph">
  586. <p>The bar lines are also shown in the meter of the JACK master. If none present, there are no bars.</p>
  587. </div>
  588. <div class="paragraph">
  589. <p>A red playhead indicates that you are in recording mode.</p>
  590. </div>
  591. <div class="paragraph">
  592. <p>If transport is in progress, a midi keyboard or similar can be used to record events.</p>
  593. </div>
  594. <div class="paragraph">
  595. <p>With mouse and keyboard all events can be set by hand and changed afterwards. (see below). With the
  596. exception of Velocity, all events are displayed in the main track.</p>
  597. </div>
  598. <div class="paragraph">
  599. <p>To simplify things, you can switch a rhythm grid on and off as well as use a 'snap to grid'
  600. functionality.</p>
  601. </div>
  602. <div class="paragraph">
  603. <p>All editing requires the creation of a selection by using the Shift and the left mouse button to
  604. draws a rectangle. A click with the right mouse button ends the selection.</p>
  605. </div>
  606. <div class="paragraph">
  607. <p>Starting, saving, loading and closing your project is best done through the New Session Manager.</p>
  608. </div>
  609. </div>
  610. <div class="sect2">
  611. <h3 id="_midi_support">1.2. MIDI support</h3>
  612. <div class="paragraph">
  613. <p>Vico supports all MIDI channel messages:</p>
  614. </div>
  615. <div class="ulist">
  616. <ul>
  617. <li>
  618. <p>Notes (ON 0x80 and OFF 0x90 are combined to a rectangular note)</p>
  619. </li>
  620. <li>
  621. <p>Control Changes (0xB0)</p>
  622. </li>
  623. <li>
  624. <p>Program Change (0xC0)</p>
  625. </li>
  626. <li>
  627. <p>Channel Pressure / "Monophonic Aftertouch" (0xD0)</p>
  628. </li>
  629. <li>
  630. <p>Pitch Bend (0xE0 - only 7bit MSB)</p>
  631. </li>
  632. <li>
  633. <p>Polyphonic Aftertouch (0xA0)</p>
  634. </li>
  635. </ul>
  636. </div>
  637. <div class="paragraph">
  638. <p>All messages can either be recorded live or entered manually. Post-production is possible for all
  639. channel messages.</p>
  640. </div>
  641. <div class="paragraph">
  642. <p>The midi channel is discarded during recording. Instead, each layer has the option of setting a
  643. channel on which transmission takes place.</p>
  644. </div>
  645. <div class="paragraph">
  646. <p>All non-musical events (0xF&#8230;&#8203;) are ignored, including all MIDI transport messages (not JACK
  647. transport), tune requests, etc. The same applies to SystemExclusive events.</p>
  648. </div>
  649. </div>
  650. <div class="sect2">
  651. <h3 id="_mouse_and_keyboard_shortcuts">1.3. Mouse and keyboard shortcuts</h3>
  652. <div class="paragraph">
  653. <p>All keyboard shortcuts can be found in the menus, there are no "secret" keys.</p>
  654. </div>
  655. <div class="paragraph">
  656. <p>In contrast, mouse commands are not available in the graphical user interface and have to be
  657. learned here:</p>
  658. </div>
  659. <div class="paragraph">
  660. <p>(LM = Left mouse button, RM = Right mouse button, Wheel = Move mouse wheel, MM = Middle mouse button, usually by pressing the wheel itself)</p>
  661. </div>
  662. <div class="ulist">
  663. <ul>
  664. <li>
  665. <p>Shift + hold LM, move mouse: Draws a rectangle to select events.</p>
  666. </li>
  667. <li>
  668. <p>RM on the background: Resets the selection.</p>
  669. </li>
  670. <li>
  671. <p>LM on a selected event, then move mouse: Moves selected events up/down or left/right</p>
  672. </li>
  673. <li>
  674. <p>Keep control (Ctrl) pressed: Moves left / right only</p>
  675. </li>
  676. <li>
  677. <p>Hold down the Alt key: Moves only up / down</p>
  678. </li>
  679. <li>
  680. <p>MM: Plays the note under the mouse pointer. There does not have to be an actual note, the position alone is enough. This is also possible on the piano.</p>
  681. </li>
  682. <li>
  683. <p>RM on an event: Opens a menu with further commands.</p>
  684. </li>
  685. <li>
  686. <p>Wheel: Scrolls the note area up and down.</p>
  687. </li>
  688. <li>
  689. <p>Wheel, keep Alt pressed: Scrolls the note area left and right</p>
  690. </li>
  691. <li>
  692. <p>Wheel on Velocities in the lower area: Changes the volume of the individual note, independent of the current selection.</p>
  693. </li>
  694. <li>
  695. <p>Ctrl + Space: Starts playback at cursor position</p>
  696. </li>
  697. </ul>
  698. </div>
  699. </div>
  700. </div>
  701. </div>
  702. <div class="sect1">
  703. <h2 id="_description_of_the_graphical_user_interface_and_its_functions">2. Description of the graphical user interface and its functions</h2>
  704. <div class="sectionbody">
  705. <div class="imageblock">
  706. <div class="content">
  707. <a class="image" href="overview-english.png"><img src="overview-english.png" alt="Screenshot with Captions"></a>
  708. </div>
  709. </div>
  710. <div class="paragraph">
  711. <p>All points, and more, are discussed in detail below.</p>
  712. </div>
  713. <div class="ulist">
  714. <ul>
  715. <li>
  716. <p><strong>[A]</strong> Menu bar</p>
  717. </li>
  718. <li>
  719. <p><strong>[B]</strong> Main view (music and events)</p>
  720. </li>
  721. <li>
  722. <p><strong>[C]</strong> Piano</p>
  723. </li>
  724. <li>
  725. <p><strong>[D]</strong> Velocity View</p>
  726. </li>
  727. <li>
  728. <p><strong>[E]</strong> Some notes</p>
  729. </li>
  730. <li>
  731. <p><strong>[F]</strong> Another event, as an example</p>
  732. </li>
  733. <li>
  734. <p><strong>[G]</strong> Status bar with current layer and layers MIDI channel</p>
  735. </li>
  736. </ul>
  737. </div>
  738. <div class="paragraph">
  739. <p>Normally, when Vico is running in Agordejo (new-session manager), there is no internal way to <strong>exit</strong> the
  740. program. If you use options of your window manager like [X], Alt+F4 etc., the graphical user
  741. interface will only be hidden.</p>
  742. </div>
  743. <div class="paragraph">
  744. <p>To really close Vico you can use Agordejo (New Session Manager). Here you can also restore
  745. visibility.</p>
  746. </div>
  747. <div class="paragraph">
  748. <p>The current visibility setting will be saved.</p>
  749. </div>
  750. </div>
  751. </div>
  752. <div class="sect1">
  753. <h2 id="_piano_at_the_left_side">3. Piano at the left side</h2>
  754. <div class="sectionbody">
  755. <div class="paragraph">
  756. <p>At the left side of the program window is a rotated keyboard. It serves only as an orientation aid.</p>
  757. </div>
  758. <div class="paragraph">
  759. <p>The numbers between 0 and 127 written in the keys are MIDI pitches. 60 is the middle C in this system.</p>
  760. </div>
  761. <div class="paragraph">
  762. <p>If the middle mouse button is held down and the mouse is moved over the keyboard, the pitch sounds
  763. via the connected instrument.</p>
  764. </div>
  765. </div>
  766. </div>
  767. <div class="sect1">
  768. <h2 id="_main_view">4. Main View</h2>
  769. <div class="sectionbody">
  770. <div class="paragraph">
  771. <p>The main view uses rhythm as a linear dimension (technically: midi ticks). This means
  772. that a note with the same duration always looks the same.
  773. If the tempo (BPM) changes, the playhead moves faster or slower.
  774. Conversely, this means that there can be no timeline where you can see at which second an event
  775. takes place.</p>
  776. </div>
  777. <div class="sect2">
  778. <h3 id="_moving_and_navigation">4.1. Moving and Navigation</h3>
  779. <div class="paragraph">
  780. <p>The mouse wheel scrolls the main view up and down. Pressing the Alt key scrolls forwards or
  781. backwards (left / right) instead.</p>
  782. </div>
  783. <div class="paragraph">
  784. <p>The "Navigation" menu offers additional options.</p>
  785. </div>
  786. </div>
  787. <div class="sect2">
  788. <h3 id="_zoom_and_scaling">4.2. Zoom and Scaling</h3>
  789. <div class="paragraph">
  790. <p>If you hold down Ctrl and turn the mouse wheel, the main view becomes larger or smaller.</p>
  791. </div>
  792. <div class="paragraph">
  793. <p>If you hold down Shift while turning , only the time axis will be scaled. Notes are compressed or
  794. stretched so that you can either see more at once or set more precise start and end positions.</p>
  795. </div>
  796. <div class="paragraph">
  797. <p>Zooming and scaling is purely visual and has no effect on the music itself.</p>
  798. </div>
  799. </div>
  800. <div class="sect2">
  801. <h3 id="_layers">4.3. Layers</h3>
  802. <div class="paragraph">
  803. <p>Notes are not organized in tracks, but in layers. There are ten of them.
  804. In the "Layers" menu, or with the function keys F1 to F10, the current layer can be selected.</p>
  805. </div>
  806. <div class="sect3">
  807. <h4 id="_shadows">4.3.1. Shadows</h4>
  808. <div class="paragraph">
  809. <p>Layers lie on top of each other and obstruct each other. However, you can activate so-called
  810. shadows, which project another layer onto the current one. Shadows cannot be edited. All shadows
  811. disappear as soon as you change the active layer.</p>
  812. </div>
  813. <div class="paragraph">
  814. <p>Shift+function key, e.g. F3, shows the third layer as shadow. F12 shows all as shadows.</p>
  815. </div>
  816. </div>
  817. <div class="sect3">
  818. <h4 id="_colors">4.3.2. Colors</h4>
  819. <div class="paragraph">
  820. <p>Each layer can have a color, which can be selected in the layer menu. Mainly notes and events use
  821. this color. The mouse pointer is always in the inverted color.</p>
  822. </div>
  823. </div>
  824. <div class="sect3">
  825. <h4 id="_midi_channels">4.3.3. Midi Channels</h4>
  826. <div class="paragraph">
  827. <p>Channels are not properties of events. Each layer has its own midi channel, between 1 and 16, on
  828. which sending takes place. For a new project this is always channel 1.</p>
  829. </div>
  830. <div class="paragraph">
  831. <p>When recording, all incoming midi channels are listened to, but the channel gets discarded
  832. immediately and changed to the respective layer channel.</p>
  833. </div>
  834. </div>
  835. </div>
  836. </div>
  837. </div>
  838. <div class="sect1">
  839. <h2 id="_live_recording">5. Live Recording</h2>
  840. <div class="sectionbody">
  841. <div class="paragraph">
  842. <p>Vico has a MIDI-in jackport to which you can connect any software or hardware instruments.</p>
  843. </div>
  844. <div class="paragraph">
  845. <p>The input port will route everything immediately to the output port, regardless of Vicos internal
  846. state (recording or not), but with the channel of the current layer. Routing is done in real time.</p>
  847. </div>
  848. <div class="paragraph">
  849. <p>To record something, the recording mode must be activated (Edit&#8594;"Toggle recording mode"). This is
  850. already the case when the program starts. A red playhead shows recording mode, a black one is just
  851. playback. JACK Transport must also be running. If neither is the case, Vico reacts, e.g. to notes,
  852. by just marking the pitch in color.</p>
  853. </div>
  854. <div class="paragraph">
  855. <p>Since Vico always follows the JACK time-base (see below), the recording also takes place at this
  856. position. You can jump to the position in another program where you want to record a solo and press
  857. Play in this program. In principle Vico can be used like a program running in the background (which
  858. in fact works with NSM&#8217;s GUI hiding).</p>
  859. </div>
  860. <div class="sect2">
  861. <h3 id="_layer_filter">5.1. Layer Filter</h3>
  862. <div class="paragraph">
  863. <p>It quickly happens that you record a plethora of events that make further editing extremely
  864. tedious. Imagine, additionaly to a melody there is also MIDI aftertouch on every note, and the
  865. Modwheel (CC) is also used. The whole screen will be full of symbols.</p>
  866. </div>
  867. <div class="paragraph">
  868. <p>In the "Filter" menu are several ways to sort and move events.</p>
  869. </div>
  870. <div class="paragraph">
  871. <p>The simplest usage is to use a filter for all layers and only set the event type, e.g. aftertouch.
  872. Now all aftertouch events will be moved to the current layer.</p>
  873. </div>
  874. <div class="paragraph">
  875. <p>In addition, you can of course set the target layer yourself. It is also possible to define the
  876. respective MIDI bytes as upper and lower limits.</p>
  877. </div>
  878. <div class="paragraph">
  879. <p>Example: Event type "Note" with Byte1 Minimum 0 and Maximum 59 moves all low notes, e.g. the
  880. accompaniment of a piano piece, but all high notes remain on the target layer.</p>
  881. </div>
  882. <div class="paragraph">
  883. <p>The other menu commands in "Filter" offer variations, but work in the same way.</p>
  884. </div>
  885. </div>
  886. <div class="sect2">
  887. <h3 id="_jack_transport_and_timebase_bar_lines">5.2. JACK Transport and Timebase: Bar lines</h3>
  888. <div class="paragraph">
  889. <p>Vico was constructed with the declared goal of running as slave in a session. If you start it alone
  890. you can of course record and use all functions, but you cannot see barlines and it&#8217;s a little
  891. harder to find the right positions.</p>
  892. </div>
  893. <div class="paragraph">
  894. <p>If there is a program that acts as JACK timebase "master" Vico will follow its time signature and
  895. transport position.</p>
  896. </div>
  897. <div class="paragraph">
  898. <p>With "Edit"&#8594;"Show rhythm lines in grid" (key L) you can switch off bar lines completely.</p>
  899. </div>
  900. <div class="paragraph">
  901. <p>Vico has no predetermined duration. The main view has practically infinite dimensions, and you
  902. always work where all other programs are.</p>
  903. </div>
  904. <div class="paragraph">
  905. <p>As soon as Transport is running, the main view jumps to Playhead unless Edit&#8594;"Follow Playhead" is
  906. disabled.</p>
  907. </div>
  908. <div class="paragraph">
  909. <p>Starting and stopping the transport is possible from any running JACK program, including Vico
  910. itself. (space bar)</p>
  911. </div>
  912. </div>
  913. </div>
  914. </div>
  915. <div class="sect1">
  916. <h2 id="_notes_and_events">6. Notes and events</h2>
  917. <div class="sectionbody">
  918. <div class="paragraph">
  919. <p>If you want to insert notes and events with mouse and keyboard and not record them via MIDI
  920. instrument, the menus "Input" and "Grid" offer numerous ways.</p>
  921. </div>
  922. <div class="paragraph">
  923. <p>Events are always sent on the midi channel of their respective layer.</p>
  924. </div>
  925. <div class="sect2">
  926. <h3 id="_notes">6.1. Notes</h3>
  927. <div class="paragraph">
  928. <p>When the program starts, the mouse pointer is a small rectangle with a text indicating the pitch.
  929. This is the mode for entering notes of arbitrary length. By holding down and dragging the left
  930. mouse button you can draw notes. You must first move the mouse pointer to the correct pitch. and
  931. then start drawing.</p>
  932. </div>
  933. <div class="paragraph">
  934. <p>Fixed durations are available in the "Input" menu. These can be selected with the number keys.
  935. After key "1" a click with the left mouse button inserts a whole note, with key "2" a Half note
  936. etc. "0" selects the free mode again.</p>
  937. </div>
  938. <div class="paragraph">
  939. <p>Dotted note lengths can be switched on and off for all fixed durations.</p>
  940. </div>
  941. <div class="paragraph">
  942. <p>Inserted notes have an average velocity (median) of all previous notes.</p>
  943. </div>
  944. </div>
  945. <div class="sect2">
  946. <h3 id="_other_events">6.2. Other Events</h3>
  947. <div class="paragraph">
  948. <p>All other events can also be inserted with the mouse. This may not be very convenient or fast due
  949. to large amounts of data, but it is at least possible. A live recording is probably preferable.</p>
  950. </div>
  951. <div class="sect3">
  952. <h4 id="_control_changes_0xb0">6.2.1. Control Changes (0xB0)</h4>
  953. <div class="paragraph">
  954. <p>First you have to select the CC type in a submenu, e.g. "Volume (CC7)".</p>
  955. </div>
  956. <div class="paragraph">
  957. <p>The height in the main view determines intensity from 0 to 127.</p>
  958. </div>
  959. <div class="paragraph">
  960. <p>If you want to set control changes of another type you have to select the menu entry again (or
  961. press the shortcut).</p>
  962. </div>
  963. <div class="paragraph">
  964. <p>Control Changes cannot later change their type, e.g. from Modwheel to Volume. They would have to be
  965. deleted and recreated.</p>
  966. </div>
  967. </div>
  968. <div class="sect3">
  969. <h4 id="_program_change_0xc0">6.2.2. Program Change (0xC0)</h4>
  970. <div class="paragraph">
  971. <p>To change the program to select another instrument, simply set the event to a position. The label
  972. indicates the program number and the General MIDI instrument. If the connected JACK-instrument does
  973. not follow MIDI-naming, you can ignore the names.</p>
  974. </div>
  975. </div>
  976. <div class="sect3">
  977. <h4 id="_channel_pressure_monophonic_aftertouch_0xd0">6.2.3. Channel Pressure / "Monophonic Aftertouch" (0xD0)</h4>
  978. <div class="paragraph">
  979. <p>Channel Pressure presents itself as a simple X without further labeling or selection.
  980. The "higher" its position, the more intense.</p>
  981. </div>
  982. </div>
  983. <div class="sect3">
  984. <h4 id="_pitch_bend_0xe0_only_7bit_msb">6.2.4. Pitch Bend (0xE0 - only 7bit MSB)</h4>
  985. <div class="paragraph">
  986. <p>Pitch Bend presents itself as a small circle without further labeling or choices. The
  987. "higher", the more intensive.</p>
  988. </div>
  989. </div>
  990. <div class="sect3">
  991. <h4 id="_polyphonic_aftertouch_0xa0">6.2.5. Polyphonic Aftertouch (0xA0)</h4>
  992. <div class="paragraph">
  993. <p>First you have to select, in a submenu, the note for which you want Aftertouch to apply. Then you
  994. can insert the event. Intensity is, again, the "pitch". If you want to set Polyphonic Aftertouch
  995. for another note you have to select the menu entry again (or press the shortcut).</p>
  996. </div>
  997. <div class="paragraph">
  998. <p>Polyphonic Aftertouch cannot later change their relation to a pitch.
  999. They would have to be deleted and recreated.</p>
  1000. </div>
  1001. </div>
  1002. </div>
  1003. </div>
  1004. </div>
  1005. <div class="sect1">
  1006. <h2 id="_editing_and_moving_events">7. Editing and Moving Events</h2>
  1007. <div class="sectionbody">
  1008. <div class="paragraph">
  1009. <p>All events can be edited after inserting. If tidiness has been established by using layers, maybe
  1010. through filters, editing becomes much easier.</p>
  1011. </div>
  1012. <div class="paragraph">
  1013. <p>Writing text annotations is the only function in the main view that does not require creating a
  1014. selection.</p>
  1015. </div>
  1016. <div class="paragraph">
  1017. <p>Everything else requires selected events, even if it is only one.</p>
  1018. </div>
  1019. <div class="sect2">
  1020. <h3 id="_text_annotation">7.1. Text Annotation</h3>
  1021. <div class="paragraph">
  1022. <p>If no selection exists at the moment, the right mouse button can be used to write a text annotation
  1023. on an event. It has no effect on the music.</p>
  1024. </div>
  1025. </div>
  1026. <div class="sect2">
  1027. <h3 id="_selections">7.2. Selections</h3>
  1028. <div class="paragraph">
  1029. <p>First of all, right-clicking is the best way to deselect your selection.</p>
  1030. </div>
  1031. <div class="paragraph">
  1032. <p>If you hold down the Shift key, the input-event symbols disappear from the mouse pointer. Instead,
  1033. you get the normal pointer and can press, hold and drag a rectangle to select events.</p>
  1034. </div>
  1035. <div class="paragraph">
  1036. <p>Additionally marked events will be added to the existing selection.</p>
  1037. </div>
  1038. <div class="paragraph">
  1039. <p>The selection can extend over several layers.</p>
  1040. </div>
  1041. <div class="paragraph">
  1042. <p>The main view scrolls automatically when you move the mouse pointer to the left or right edge. But
  1043. often zooming out is the better way to mark many events at once.</p>
  1044. </div>
  1045. <div class="paragraph">
  1046. <p>The "Edit" menu offers the possibility to select the whole layer (Ctrl+A) or even all layers
  1047. (Ctrl+Shift+A)</p>
  1048. </div>
  1049. <div class="sect3">
  1050. <h4 id="_invert_selection">7.2.1. Invert selection</h4>
  1051. <div class="paragraph">
  1052. <p>If you use the Ctrl key instead of Shift, the selection is inverted: Selected notes are deselected,
  1053. all others become marked.</p>
  1054. </div>
  1055. <div class="paragraph">
  1056. <p>This is especially useful if you want to remove single notes from a selection, for example after
  1057. Ctrl+A.</p>
  1058. </div>
  1059. </div>
  1060. </div>
  1061. <div class="sect2">
  1062. <h3 id="_change_event_position">7.3. Change event position</h3>
  1063. <div class="paragraph">
  1064. <p>By pressing / holding / dragging with the left mouse button, all events can be moved both in their
  1065. timeline position (left/right) as well as their pitch or event intensity (up/down).</p>
  1066. </div>
  1067. <div class="paragraph">
  1068. <p>If you hold down the Alt key, events only move to the left/right, no matter if the mouse also moves
  1069. up and down. This increases control and prevents slips in pitch.</p>
  1070. </div>
  1071. <div class="paragraph">
  1072. <p>If you hold down the Ctrl key, events only move up/down, no matter if the mouse also moves to the
  1073. left or right. This increases control and prevents slippage in the Position in time.</p>
  1074. </div>
  1075. <div class="paragraph">
  1076. <p>You can also use the arrow keys to move events step by step in all directions. This method is
  1077. sometimes the fastest and most accurate.</p>
  1078. </div>
  1079. </div>
  1080. <div class="sect2">
  1081. <h3 id="_changing_note_durations">7.4. Changing Note Durations</h3>
  1082. <div class="paragraph">
  1083. <p>The duration of notes in the selection can be changed both to forward and backward. To do this, you
  1084. can move the mouse to the left or right edge of a note with the left mouse button (push/hold/pull).
  1085. All selected notes are changed by the same amount.</p>
  1086. </div>
  1087. <div class="paragraph">
  1088. <p>There is a minimum duration that cannot be shortened. Only one of the selected notes has to meet
  1089. this minimum duration in order to stop the entire process.</p>
  1090. </div>
  1091. <div class="paragraph">
  1092. <p>If non-notes are selected at the same time, they are ignored during the process.</p>
  1093. </div>
  1094. </div>
  1095. <div class="sect2">
  1096. <h3 id="_snap_to_grid_and_positions">7.5. Snap to Grid and Positions</h3>
  1097. <div class="paragraph">
  1098. <p>The "Snap to Grid" menu allows you to place events on a fixed position. When the program is
  1099. started, the grid is initially switched off: free positioning at any time position is possible.</p>
  1100. </div>
  1101. <div class="paragraph">
  1102. <p>Like the number keys set note duration, Shift+numbers set the grid-rhythm for snapping. A quarter
  1103. note grid allows only events and notes on quarter note positions.</p>
  1104. </div>
  1105. <div class="paragraph">
  1106. <p>Setting Snap To Grid to eighths or sixteenths notes is usually a good compromise between robust
  1107. input and rhythmic flexibility.</p>
  1108. </div>
  1109. <div class="paragraph">
  1110. <p>With free note duration (Shift+0), the beginning is bound to the grid, but the end is free.</p>
  1111. </div>
  1112. <div class="paragraph">
  1113. <p>When modifying note durations, the grid is active.</p>
  1114. </div>
  1115. </div>
  1116. <div class="sect2">
  1117. <h3 id="_change_note_volume_velocity">7.6. Change Note Volume / Velocity</h3>
  1118. <div class="paragraph">
  1119. <p>In the main view, you can only change the volume of notes using menu commands. Another option is
  1120. the Velocity View (see below).</p>
  1121. </div>
  1122. <div class="paragraph">
  1123. <p>The "Edit" menu offers several options: You can increase or decrease velocities step by step. The
  1124. keyboard shortcuts are + and -.</p>
  1125. </div>
  1126. <div class="paragraph">
  1127. <p>There is also a command that allows you either to change all notes relatively or to set all notes
  1128. to a fixed value. If you write a "+" or "-" in front of the value in the input line the change is
  1129. considered relative.</p>
  1130. </div>
  1131. <div class="paragraph">
  1132. <p>Example: "+23" increases all velocities by 23, "23" sets all to 23, "-42" decreases all by 42.</p>
  1133. </div>
  1134. <div class="paragraph">
  1135. <p>Caution! It is technically allowed to have velocities smaller than 0 and larger than 127. This is
  1136. not musically possible and must be observed and corrected by hand.</p>
  1137. </div>
  1138. <div class="paragraph">
  1139. <p>A further command is to "compress" velocities. All velocities are compressed proportionally into a
  1140. new boundary. For example: Velocities 0 (lowest), 64 (middle) and 127 (highest) are compressed to
  1141. value between 70 and 90. We get: 70 (lowest), 80 (middle), and 90 (highest).</p>
  1142. </div>
  1143. <div class="paragraph">
  1144. <p>All these commands ignore non-notes.</p>
  1145. </div>
  1146. </div>
  1147. <div class="sect2">
  1148. <h3 id="_copy_cut_paste">7.7. Copy, Cut, Paste</h3>
  1149. <div class="paragraph">
  1150. <p>As in almost all programs there are copy, cut and paste.
  1151. The usual shortcuts are used: Ctrl+C, Ctrl+X, Ctrl+V.</p>
  1152. </div>
  1153. <div class="paragraph">
  1154. <p>Selected notes are copied to a background buffer with Ctrl+C; Ctrl+X deletes the original
  1155. selection. Since the selection can span several layers, one can also copy from multiple layers.</p>
  1156. </div>
  1157. <div class="paragraph">
  1158. <p>Ctrl+V inserts a copy <strong>at the same place</strong>.
  1159. It is possible to change the layer to insert a copy.</p>
  1160. </div>
  1161. <div class="paragraph">
  1162. <p>If you insert notes on the same layer, the notes overlap initially, so they are "invisible"! But
  1163. only one set of notes is selected! This means that you can move notes immediately.</p>
  1164. </div>
  1165. </div>
  1166. <div class="sect2">
  1167. <h3 id="_undo_changes_undo_redo">7.8. Undo changes / Undo &amp; Redo</h3>
  1168. <div class="paragraph">
  1169. <p>Ctrl+Z ("Undo") reverts the last change.</p>
  1170. </div>
  1171. <div class="paragraph">
  1172. <p>Ctrl+Shift+Z ("Redo") cancels the last undo, i.e. goes back one step (&#8230;&#8203;forward?). If you have
  1173. changed something in the meantime, Redo is no longer possible.</p>
  1174. </div>
  1175. <div class="paragraph">
  1176. <p>Undo is only possible to the state of the program start.</p>
  1177. </div>
  1178. </div>
  1179. </div>
  1180. </div>
  1181. <div class="sect1">
  1182. <h2 id="_velocity_view">8. Velocity View</h2>
  1183. <div class="sectionbody">
  1184. <div class="paragraph">
  1185. <p>The velocity view is located at the bottom of the program window. It serves as an overview of
  1186. volume and also allows you to change individual notes.</p>
  1187. </div>
  1188. <div class="paragraph">
  1189. <p>The special characteristic of this view is that it only displays notes and no other events, and
  1190. secondly only selected notes are displayed. Even individual chord members can be reviewed without
  1191. obstruction from other notes.</p>
  1192. </div>
  1193. <div class="paragraph">
  1194. <p>The velocity view shows all notes below their starting position in the main view, i.e. scrolls at
  1195. the same rate. Each column is a note. The rhythm is not displayed; all columns have the same width.</p>
  1196. </div>
  1197. <div class="paragraph">
  1198. <p>If the mouse cursor hovers over a column, the mouse wheel will change velocity in steps of two for
  1199. exactly that one note. To change the velocities of all selected notes at once, you must use the
  1200. menu commands in the Use "Edit" menu (see above)</p>
  1201. </div>
  1202. </div>
  1203. </div>
  1204. <div class="sect1">
  1205. <h2 id="_miscellaneous_for_advanced_users">9. Miscellaneous for Advanced Users</h2>
  1206. <div class="sectionbody">
  1207. <div class="sect2">
  1208. <h3 id="_parameters_and_settings_at_the_beginning_of_the_track">9.1. Parameters and Settings at the Beginning of the Track</h3>
  1209. <div class="paragraph">
  1210. <p>There is no hidden data or settings. Everything Vico sends is also visible to the user. This means
  1211. above all that there are no default values for a songs beginning.</p>
  1212. </div>
  1213. <div class="paragraph">
  1214. <p>For example: In a piece for Violin you change the instrument to a Viola (Program Change) at the end
  1215. of the piece. If played back from the start it will still be the Viola, because the connected
  1216. JACK-instrument did not receive a message to switch to a Violin.</p>
  1217. </div>
  1218. <div class="paragraph">
  1219. <p>Therefore you have to set the violin explicitly at the start.
  1220. The same applies to pitch bend or control changes such as piano pedal, modwheel, expression etc..</p>
  1221. </div>
  1222. </div>
  1223. <div class="sect2">
  1224. <h3 id="_high_resolution_midi_parameters_msb_and_lsb">9.2. High Resolution MIDI Parameters (MSB and LSB)</h3>
  1225. <div class="paragraph">
  1226. <p>Some MIDI parameters are 14bit instead of the usual 7bit. They are built from two values. This is
  1227. standard midi practice and must be learned from another source.
  1228. For Vico, these values must also be set as two separate 7bit entries.</p>
  1229. </div>
  1230. </div>
  1231. <div class="sect2">
  1232. <h3 id="_overlapping_notes">9.3. Overlapping Notes</h3>
  1233. <div class="paragraph">
  1234. <p>The MIDI format does not forbid a Note-On to be followed by another Note-On of the same pitch
  1235. without a Note-Off having occurred beforehand. It does not make much musical sense in most cases,
  1236. but it is permitted by the MIDI standard and therefore supported by Vico. In general you should try
  1237. to avoid overlapping notes of the same pitch (even on multiple layers if they share the same midi
  1238. channel).</p>
  1239. </div>
  1240. </div>
  1241. <div class="sect2">
  1242. <h3 id="_control_changes_are_upside_down_in_vico">9.4. Control changes are upside down in Vico.</h3>
  1243. <div class="paragraph">
  1244. <p>Wise MIDI-owls know: MIDI messages have two parameters (Byte1 and Byte2). For notes, byte1 is pitch
  1245. and byte2 velocity. For control changes byte1 is the type (e.g. volume) and byte2 the intensity.
  1246. But in Vico, CCs show Byte2 as pitch, so you can actually shift them up and down.</p>
  1247. </div>
  1248. </div>
  1249. <div class="sect2">
  1250. <h3 id="_rounding_error_my_notes_are_at_the_wrong_position">9.5. Rounding Error: My Notes are at the Wrong Position</h3>
  1251. <div class="paragraph">
  1252. <p>Mathematics and computing cannot be cheated anymore at some point. With extreme scaling
  1253. (Ctrl+Shift+Mouse wheel), when notes are very strongly compressed and 64th notes get placed on a
  1254. 64th grid, rounding errors may occur and thus mispositioning will happen by a few pixels or midi
  1255. ticks.</p>
  1256. </div>
  1257. <div class="paragraph">
  1258. <p>Solution: Change the scaling, display notes more stretched.</p>
  1259. </div>
  1260. </div>
  1261. </div>
  1262. </div>
  1263. <div class="sect1">
  1264. <h2 id="_installation_and_start">10. Installation and Start</h2>
  1265. <div class="sectionbody">
  1266. <div class="paragraph">
  1267. <p>Vico is exclusive for Linux. The best way to install is to use your package manager.
  1268. If it is not there, or only in an outdated version, please ask your Linux distribution to provide a recent version.</p>
  1269. </div>
  1270. <div class="paragraph">
  1271. <p>If available in the package repository, please continue reading directly at "Start vico from Agordejo / New Session Manager".
  1272. If not, you can build Vico yourself.</p>
  1273. </div>
  1274. <div class="ulist">
  1275. <div class="title">Build and Install</div>
  1276. <ul>
  1277. <li>
  1278. <p>Please check the supplied README.md for dependencies.</p>
  1279. </li>
  1280. <li>
  1281. <p>You can download a release or clone the git version</p>
  1282. <div class="ulist">
  1283. <ul>
  1284. <li>
  1285. <p>Download the latest version from <a href="https://www.laborejo.org/downloads" class="bare">https://www.laborejo.org/downloads</a> and extract it.</p>
  1286. </li>
  1287. <li>
  1288. <p>git clone <a href="https://git.laborejo.org/lss/vico.git" class="bare">https://git.laborejo.org/lss/vico.git</a></p>
  1289. </li>
  1290. </ul>
  1291. </div>
  1292. </li>
  1293. <li>
  1294. <p>Change into the new directory and use these commands:</p>
  1295. </li>
  1296. <li>
  1297. <p><code>./configure --prefix=/usr</code></p>
  1298. <div class="ulist">
  1299. <ul>
  1300. <li>
  1301. <p>The default prefix is /usr/local</p>
  1302. </li>
  1303. </ul>
  1304. </div>
  1305. </li>
  1306. <li>
  1307. <p><code>make</code></p>
  1308. </li>
  1309. <li>
  1310. <p><code>sudo make install</code></p>
  1311. </li>
  1312. </ul>
  1313. </div>
  1314. <div class="ulist">
  1315. <div class="title">Start vico from Agordejo (New Session Manager, NSM)</div>
  1316. <ul>
  1317. <li>
  1318. <p>Run <code>agordejo</code></p>
  1319. </li>
  1320. <li>
  1321. <p>Press the <code>New</code> button, and enter a name for your piece of music.</p>
  1322. </li>
  1323. <li>
  1324. <p>Use the launcher to add <code>vico</code> to the session.</p>
  1325. </li>
  1326. <li>
  1327. <p>Add any compatible programs, e.g. synthesizers.</p>
  1328. </li>
  1329. </ul>
  1330. </div>
  1331. <div class="paragraph">
  1332. <p>Please read README.md for other ways of starting vico, which are impractical for actual use but can
  1333. be helpful for testing and development.</p>
  1334. </div>
  1335. </div>
  1336. </div>
  1337. <div class="sect1">
  1338. <h2 id="_help_and_development">11. Help and Development</h2>
  1339. <div class="sectionbody">
  1340. <div class="paragraph">
  1341. <p>You can help Vico in several ways: Testing and reporting errors, translating, marketing, support, programming and more.</p>
  1342. </div>
  1343. <div class="sect2">
  1344. <h3 id="_testing_and_reporting_errors">11.1. Testing and Reporting Errors</h3>
  1345. <div class="paragraph">
  1346. <p>If you find a bug in the program (or it runs too slow) please contact us in a way that suits you best.
  1347. We are thankful for any help.</p>
  1348. </div>
  1349. <div class="ulist">
  1350. <div class="title">How to contact us</div>
  1351. <ul>
  1352. <li>
  1353. <p>Report bugs and issues: <a href="https://www.laborejo.org/bugs" class="bare">https://www.laborejo.org/bugs</a></p>
  1354. </li>
  1355. <li>
  1356. <p>Website: <a href="https://www.laborejo.org" class="bare">https://www.laborejo.org</a></p>
  1357. </li>
  1358. <li>
  1359. <p>E-Mail: <a href="mailto:info@laborejo.org">info@laborejo.org</a></p>
  1360. </li>
  1361. <li>
  1362. <p>If you see the opportunity and know that a developer will read it also forums, social media etc..</p>
  1363. </li>
  1364. </ul>
  1365. </div>
  1366. </div>
  1367. <div class="sect2">
  1368. <h3 id="_programming">11.2. Programming</h3>
  1369. <div class="paragraph">
  1370. <p>If you want to do some programming and don&#8217;t know where to start please get in contact with us directly.
  1371. The short version is: clone the git, change the code, create a git patch or point me to your public git.</p>
  1372. </div>
  1373. </div>
  1374. <div class="sect2">
  1375. <h3 id="_translations">11.3. Translations</h3>
  1376. <div class="paragraph">
  1377. <p>Vico is very easy to translate with the help of the Qt-Toolchain, without any need for programming.
  1378. The easiest way is to contact the developers and they will setup the new language.</p>
  1379. </div>
  1380. <div class="paragraph">
  1381. <p>However, here are the complete instructions for doing a translation completely on your own and integrating it into the program.
  1382. The program is split in two parts. A shared "template" between the Laborejo Software Suite and the actual program.</p>
  1383. </div>
  1384. <div class="paragraph">
  1385. <p>The process is the same for both parts, but needs to be done in different directories:
  1386. <code>template/qtgui</code> and plain <code>/qtgui</code>, relative to the root directory, where the vico executable is.</p>
  1387. </div>
  1388. <div class="paragraph">
  1389. <p>Everytime you see "template/qtgui" below you can substitute that with just "qtgui" to translate the other part of Vico.</p>
  1390. </div>
  1391. <div class="paragraph">
  1392. <p>You can add a new language like this:</p>
  1393. </div>
  1394. <div class="ulist">
  1395. <ul>
  1396. <li>
  1397. <p>Open a terminal and navigate to template/qtgui/resources/translations</p>
  1398. </li>
  1399. <li>
  1400. <p>Edit the file <code>config.pro</code> with a text editor</p>
  1401. <div class="ulist">
  1402. <ul>
  1403. <li>
  1404. <p>Append the name of your language in the last line, in the form <code>XY.ts</code>, where XY is the language code.</p>
  1405. </li>
  1406. <li>
  1407. <p>Make sure to leave a space between the individual languages entries.</p>
  1408. </li>
  1409. </ul>
  1410. </div>
  1411. </li>
  1412. <li>
  1413. <p>Run <code>sh update.sh</code> in the same directory</p>
  1414. <div class="ulist">
  1415. <ul>
  1416. <li>
  1417. <p>The program has now generated a new <code>.ts</code> file in the same directory.</p>
  1418. </li>
  1419. </ul>
  1420. </div>
  1421. </li>
  1422. <li>
  1423. <p>Start Qt Linguist with <code>linguist-qt5</code> (may be named differently) and open your newly generated file</p>
  1424. </li>
  1425. <li>
  1426. <p>Select your "Target Language" and use the program to create a translation</p>
  1427. </li>
  1428. <li>
  1429. <p>Send us the <code>.ts</code> file, such as by e-mail to <a href="mailto:info@laborejo.org">info@laborejo.org</a></p>
  1430. </li>
  1431. </ul>
  1432. </div>
  1433. <div class="paragraph">
  1434. <p>You can also incorporate the translation into Vico for testing purposes. This requires rudimentary Python knowledge.</p>
  1435. </div>
  1436. <div class="ulist">
  1437. <ul>
  1438. <li>
  1439. <p>Run the "Release" option in QtLinguists "File" menu. It creates a <code>.qm</code> file in the same directory as your <code>.ts</code> file.</p>
  1440. </li>
  1441. <li>
  1442. <p>Edit <code>template/qtgui/resources/resources.qrc</code> and duplicate the line <code>&lt;file&gt;translations/de.qm&lt;/file&gt;</code> but change it to your new .qm file.</p>
  1443. </li>
  1444. <li>
  1445. <p>run <code>sh buildresources.sh</code></p>
  1446. </li>
  1447. <li>
  1448. <p>Edit <code>engine/config.py</code>: add your language to the line that begins with "supportedLanguages" like this: <code>{"German": "de.qm", "Esperanto: "eo.qm"}</code></p>
  1449. <div class="ulist">
  1450. <ul>
  1451. <li>
  1452. <p>To find out your language string (German, Esperanto etc.) open the <code>python3</code> interpreter in a terminal and run the following command:</p>
  1453. </li>
  1454. <li>
  1455. <p><code>from PyQt5 import QtCore;QtCore.QLocale().languageToString(QtCore.QLocale().language())</code></p>
  1456. </li>
  1457. </ul>
  1458. </div>
  1459. </li>
  1460. </ul>
  1461. </div>
  1462. <div class="paragraph">
  1463. <p>To test the new translation you can either run the program normally, if your system is set to that language. Alternatively start vico via the terminal:</p>
  1464. </div>
  1465. <div class="ulist">
  1466. <ul>
  1467. <li>
  1468. <p><code>LANGUAGE=de_DE.UTF-8 ./vico -V --save /dev/null</code></p>
  1469. </li>
  1470. </ul>
  1471. </div>
  1472. </div>
  1473. </div>
  1474. </div>
  1475. </div>
  1476. <div id="footer">
  1477. <div id="footer-text">
  1478. Last updated 2021-01-18 00:43:11 +0100
  1479. </div>
  1480. </div>
  1481. </body>
  1482. </html>