bewelge / midiano Goto Github PK
View Code? Open in Web Editor NEW:musical_note: A JavaScript MIDI-Player/ Piano-learning webapp
Home Page: https://midiano.com
:musical_note: A JavaScript MIDI-Player/ Piano-learning webapp
Home Page: https://midiano.com
Good work and thanks making this application
Add Record button to record MIDI and add Indian Music Key Notes name in Punjabi and Hindi . so that Indian people can learn piano in their own language.
Thanks
Harminder Singh
Clef changes should just happen when notes in a measure are above/below a certain threshold.
Time signature changes are defined in the MIDI file itself
<link>
and <img>
are unclosed tags.type
attribute on main <script> : type="javascript"
should be remove<script>
for vertex & fragment should have the right type "x-shader/x-vertex" & "x-shader/x-fragment" therefore you could use vscode ext on it<head></head>
contains content page<div>
is unclosed index.html | 339 ++++++++++++++++++++++++++---------------------------
1 file changed, 167 insertions(+), 172 deletions(-)
diff --git a/index.html b/index.html
index 6db1787..dba1372 100644
--- a/index.html
+++ b/index.html
@@ -41,21 +41,16 @@
<link rel="preload" href="./css/bootstrap.min.css" as="style" onload="this.rel='stylesheet'">
- <link rel="stylesheet" type="text/css" href='./css/landingPage.css'>
- </link>
- <link rel="stylesheet" type="text/css" href='./css/Interface.css'>
- </link>
- <link rel="stylesheet" type="text/css" href='./css/Inputs.css'>
- </link>
- <link rel="stylesheet" type="text/css" href='./css/Settings.css'>
- </link>
+ <link rel="stylesheet" type="text/css" href="./css/landingPage.css">
+ <link rel="stylesheet" type="text/css" href="./css/Interface.css">
+ <link rel="stylesheet" type="text/css" href="./css/Inputs.css">
+ <link rel="stylesheet" type="text/css" href="./css/Settings.css">
<!-- lib -->
<link rel="stylesheet" href="./css/nano.min.css" />
<!-- "https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/themes/nano.min.css"/> -->
- <link rel="stylesheet" type="text/css" href='./css/bootstrap.min.css'>
- </link>
+ <link rel="stylesheet" type="text/css" href="./css/bootstrap.min.css">
<link rel="stylesheet" href="./css/bootstrap-theme.min.css" />
<!--"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">-->
@@ -69,167 +64,14 @@
<script src="lib/three.min.js" type="text/javascript"></script>
- <div id="landingPage">
-
- <div id="lpTopPlaceholder"></div>
- <div id="lpBurgerMenu" class="burgerMenu"></div>
- <div id="lpTop">
- <div id="logoWrapper" class="lpTopDiv">
- <a href="https://midiano.com"><img id="logoImg" src="./images/logo3.svg"></img></a>
- </div>
- <div id="lpTopStartWrap" class="lpTopDiv">
-
- <button id="lpTopStartButton" class="lpStartButton">Start</button>
- </div>
-
- <div class="subtleBorder"></div>
- </div>
- <div id="lpMainWrapper">
-
- <div id="firstSection" class="lpSection">
-
- <div id="lpHeaderText">
- Free Interactive Piano-App in your Browser!
- </div>
- <button class="lpStartButton">Start</button>
- <div id="screenshotWrapper">
- <img src="images/screenShotNew.png" id="screenshot" />
-
- </div>
- </div>
-
- <div id="secondSection" class="lpSection">
- <!-- <div class="lpSectionHeader"></div> -->
-
-
- <div id="features">
- <!-- <p>Features</p> -->
- <div class="featureBox"><span class="glyphicon glyphicon-play"></span>
- <div>Play any MIDI-File or choose one of the sample songs</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-play"></span>
- <div>Pause, Skip Forward or Backward, Adjust the Speed - Intuitive controls allow quick navigation through
- the song</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-random"></span>
- <div>Automatic Sheet generation.</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-random"></span>
- <div>MIDI-Keyboard support - Input & Output</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-time"></span>
- <div>Play-along-mode - Midiano waits for you to hit the correct notes</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-time"></span>
- <div>Sustain-info - View sustain-pedal events and sustained notes</div>
- </div>
- <!-- <div class="featureBox"><span class="glyphicon glyphicon-fast-forward"></span><div>Play at any speed</div></div> -->
- <div class="featureBox"><span class="glyphicon glyphicon-wrench"></span>
- <div>Track-control - Customize and only display or play the tracks you want</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-wrench"></span>
- <div>Customize colors, effects, instruments and much more</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-music"></span>
- <div>3 different Soundfonts to choose from</div>
- </div>
- <div class="featureBox"><span class="glyphicon glyphicon-music"></span>
- <div>Works on any device with a modern browser (Firefox, Chrome, Edge, Safari, iOS or Android. It doesn't
- work in IE.)</div>
- </div>
- <!-- <div class="featureBox"><span class="glyphicon glyphicon-list"></span><div>Customize individual Tracks - Change instrument, color, volume etc.</div></div> -->
- </div>
- </div>
-
- <!--
- <footer></footer> -->
-
-
- </div>
- <div id="startPage">
- <div style="flex:3"></div>
- <a href="https://midiano.com">
- <img class="logo" src="./images/logo3.svg"></img>
- </a>
-
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
- <svg width="25%" viewBox="0 0 510.82775 47.823437">
-
- <g id="layer1" transform="translate(-215.73443,0.60585199)">
- <path
- d="m 215.73443,34.641608 0.29766,-1.339453 q 2.60449,-0.496093 3.47266,-1.141015 0.89296,-0.644922 1.5875,-2.282032 0.71933,-1.661914 1.93476,-6.821288 1.61231,-6.821289 2.92695,-9.822657 2.00918,-4.5144526 4.98575,-6.6972651 3.00136,-2.1828125 6.05234,-2.1828125 1.95957,0 3.29902,0.9921875 1.33946,0.9921875 1.33946,2.0587891 0,0.5953124 -0.42168,1.0169921 -0.39688,0.4216797 -0.96739,0.4216797 -0.74414,0 -1.81074,-0.9673828 -1.19062,-1.0417968 -1.86035,-1.3642578 -0.64492,-0.3224609 -1.26504,-0.3224609 -0.71933,0 -1.41387,0.396875 -0.96738,0.5457031 -2.08359,2.0835937 -1.09141,1.513086 -2.28203,4.514453 -0.76895,2.033984 -1.95957,6.697266 -1.86035,7.416601 -2.82774,9.84746 -0.69453,1.736328 -1.68671,2.877344 3.54707,-0.79375 5.65546,-0.79375 1.31465,0 2.43086,0.173633 1.11621,0.148828 3.89434,0.79375 2.40605,0.570508 3.37344,0.570508 0.94258,0 1.5875,-0.570508 0.66972,-0.595313 0.66972,-1.339453 0,-0.471289 -0.34726,-1.314649 -0.32246,-0.79375 -0.32246,-1.265039 0,-0.669726 0.39687,-1.041797 0.39688,-0.396875 1.0418,-0.396875 0.74414,0 1.26504,0.669727 0.5209,0.644922 0.5209,1.785937 0,2.158008 -1.78594,3.720704 -1.78594,1.562695 -4.83692,1.562695 -1.51308,0 -3.89433,-0.223242 -8.03672,-0.719336 -10.51719,-0.719336 -3.64629,0 -6.44922,0.421679 z" />
- <path
- d="m 260.08521,27.993952 0.81856,1.091407 q -6.07715,5.779492 -10.41797,5.779492 -1.76113,0 -2.70371,-1.190625 -0.91778,-1.190625 -0.91778,-3.819922 0,-5.308203 3.22461,-10.566797 3.62149,-5.97793 8.65684,-5.97793 1.76113,0 2.67891,0.892969 0.94257,0.868164 0.94257,2.406055 0,1.612305 -1.11621,3.175 -1.11621,1.562695 -3.99355,3.249414 -1.43867,0.818555 -6.15156,2.951758 -0.22325,1.339453 -0.22325,2.554882 0,1.761133 0.54571,2.455664 0.57051,0.694532 1.63711,0.694532 1.01699,0 2.23242,-0.570508 1.63711,-0.768945 4.7873,-3.125391 z m -8.68164,-3.596679 q 3.99356,-1.785938 6.00274,-3.844727 1.36425,-1.438672 1.36425,-2.852539 0,-1.066601 -0.5705,-1.686719 -0.54571,-0.644921 -1.43867,-0.644921 -0.91778,0 -1.78594,0.694531 -1.16582,0.917773 -1.95957,2.778125 -1.14102,2.728515 -1.61231,5.55625 z" />
- <path
- d="m 281.26842,12.937507 1.63711,-0.347265 -1.86035,6.275585 q -1.11621,3.745508 -2.1084,8.632032 -0.54571,2.654101 -0.54571,3.423046 0,0.768946 0.62012,0.768946 0.39688,0 1.26504,-0.520899 1.53789,-0.917773 2.95176,-2.282031 l 0.79375,0.967383 q -2.82774,2.579687 -3.62149,3.12539 -1.5875,1.091407 -3.02617,1.612305 -0.94258,0.347266 -1.83554,0.347266 -0.64493,0 -0.96739,-0.297657 -0.32246,-0.297656 -0.32246,-0.868164 0,-0.37207 0.19844,-1.016992 l 0.99219,-3.373437 q -2.13321,2.554883 -5.08496,4.390429 -1.81075,1.141016 -3.32383,1.141016 -1.43867,0 -2.20762,-1.016992 -1.0418,-1.364258 -1.0418,-3.571875 0,-2.629297 1.38907,-5.853906 1.41386,-3.22461 3.77031,-5.853906 2.35644,-2.629297 4.96094,-3.869532 2.00918,-0.942578 5.15937,-0.942578 0.79375,0 1.61231,0.09922 z m -3.07578,3.795117 q -1.33946,-0.272851 -2.25723,-0.272851 -2.23242,0 -3.89434,1.240234 -1.66191,1.21543 -3.10058,4.415234 -1.41387,3.175 -1.41387,6.35 0,1.686719 0.57051,2.43086 0.57051,0.74414 1.48828,0.74414 1.71152,0 3.67109,-1.835547 1.95957,-1.860351 2.87735,-5.333007 z" />
- <path
- d="m 290.27252,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64628,-1.289844 0.44649,0 0.69454,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.06661,4.440039 q 2.50528,-3.943946 5.65547,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83555,0.620117 -3.00137,1.488281 -1.14101,0.868164 -2.53007,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
- <path
- d="m 301.70748,19.163484 -0.84336,-0.868164 q 3.175,-3.026172 5.06016,-4.01836 1.88515,-0.992187 3.22461,-0.992187 0.52089,0 0.81855,0.223242 0.29766,0.223242 0.29766,0.520898 0,0.223243 -0.12403,0.79375 l -1.11621,4.985743 q 2.53008,-2.80293 6.35,-5.233789 2.03399,-1.26504 3.34864,-1.26504 0.96738,0 1.51308,0.620118 0.5457,0.620117 0.5457,1.785937 0,0.768945 -0.22324,1.736328 -0.39687,1.612305 -2.08359,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14882,0.248046 0.42168,0.248046 0.71933,0 2.25722,-1.389062 1.09141,-0.992188 2.18282,-1.835547 l 0.62011,0.892969 q -2.28203,2.530078 -4.73769,4.067968 -1.5627,0.992188 -2.57969,0.992188 -0.94258,0 -1.46348,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91777,-0.768945 -0.99219,0 -2.55488,1.041797 -2.33164,1.53789 -3.89434,3.621484 -0.99219,1.339453 -1.66191,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81074,-7.118945 l 2.20762,-9.425781 q 0.12402,-0.570508 0.12402,-0.818555 0,-0.669726 -0.49609,-0.669726 -0.39688,0 -1.14102,0.520898 -1.53789,1.016992 -2.87734,2.480469 z" />
- <path
- d="m 335.96275,19.510749 -0.96738,-0.992187 q 2.25723,-2.703711 4.48965,-3.993555 2.23242,-1.289844 3.86953,-1.289844 0.62012,0 0.96738,0.322461 0.37207,0.297657 0.37207,0.892969 0,0.719336 -0.17363,1.488281 -0.14883,0.744141 -0.99219,3.571875 3.79512,-3.795117 5.18418,-4.688086 2.33164,-1.513086 4.26641,-1.513086 1.26504,0 2.1332,1.190625 0.86816,1.190625 0.86816,3.59668 0,6.002734 -3.7455,11.410156 -3.74551,5.407422 -8.28477,5.407422 -1.78594,0 -3.57187,-0.967383 l -2.1084,8.185547 q -0.19844,0.744141 -0.19844,1.21543 0,0.917773 0.69453,1.314648 1.0666,0.620117 4.48965,1.016992 l -0.32246,1.240235 q -3.99356,-0.322461 -6.27559,-0.322461 -2.35644,0 -6.10195,0.322461 l 0.32246,-1.240235 q 1.88516,-0.198437 2.72852,-1.041797 0.86816,-0.843359 1.38906,-3.001367 l 4.48965,-18.826757 q 1.26504,-5.258594 1.26504,-5.853906 0,-0.644922 -0.62012,-0.644922 -1.09141,0 -4.16719,3.199804 z m 5.01055,11.707813 q 1.95957,1.95957 4.01836,1.95957 2.97656,0 5.20898,-4.638477 2.25723,-4.638476 2.25723,-9.05371 0,-1.413868 -0.64492,-2.133204 -0.62012,-0.74414 -1.68672,-0.74414 -1.19063,0 -2.67891,1.16582 -2.30683,1.810742 -3.52226,3.59668 -0.86817,1.289844 -1.63711,4.464843 z" />
- <path
- d="m 368.4817,2.6931714 q 0.76895,0 1.26504,0.5208984 0.4961,0.4960938 0.4961,1.2898438 0,1.0914062 -0.76895,1.9347656 -0.74414,0.8185546 -1.68672,0.8185546 -0.74414,0 -1.24023,-0.5208984 -0.49609,-0.5208984 -0.49609,-1.3642578 0,-1.1162109 0.71933,-1.8851562 0.71934,-0.79375 1.71152,-0.79375 z m -9.77304,16.4207026 -1.09141,-0.843359 q 2.48047,-2.728516 4.51445,-3.869531 2.05879,-1.165821 3.49747,-1.165821 0.79375,0 1.21543,0.347266 0.42167,0.347266 0.42167,0.942578 0,0.719336 -1.6123,6.101953 -2.6293,8.805664 -2.6293,10.616406 0,0.347266 0.17364,0.595313 0.17363,0.223242 0.37207,0.223242 0.79375,0 4.06797,-3.075781 l 0.96738,0.942578 q -3.39824,3.199805 -4.96094,4.092773 -1.56269,0.892969 -2.55488,0.892969 -0.86817,0 -1.38906,-0.545703 -0.4961,-0.545703 -0.4961,-1.513086 0,-3.100586 3.7207,-15.155664 0.17364,-0.570508 0.17364,-1.016992 0,-0.496094 -0.44649,-0.496094 -0.49609,0 -1.14101,0.396875 -0.62012,0.396875 -2.80293,2.530078 z" />
- <path
- d="m 387.03561,12.937507 1.63711,-0.347265 -1.86035,6.275585 q -1.11622,3.745508 -2.1084,8.632032 -0.54571,2.654101 -0.54571,3.423046 0,0.768946 0.62012,0.768946 0.39688,0 1.26504,-0.520899 1.53789,-0.917773 2.95176,-2.282031 l 0.79375,0.967383 q -2.82774,2.579687 -3.62149,3.12539 -1.5875,1.091407 -3.02617,1.612305 -0.94258,0.347266 -1.83555,0.347266 -0.64492,0 -0.96738,-0.297657 -0.32246,-0.297656 -0.32246,-0.868164 0,-0.37207 0.19844,-1.016992 l 0.99219,-3.373437 q -2.13321,2.554883 -5.08496,4.390429 -1.81075,1.141016 -3.32383,1.141016 -1.43867,0 -2.20762,-1.016992 -1.0418,-1.364258 -1.0418,-3.571875 0,-2.629297 1.38907,-5.853906 1.41386,-3.22461 3.77031,-5.853906 2.35644,-2.629297 4.96094,-3.869532 2.00918,-0.942578 5.15937,-0.942578 0.79375,0 1.61231,0.09922 z m -3.07578,3.795117 q -1.33946,-0.272851 -2.25723,-0.272851 -2.23242,0 -3.89434,1.240234 -1.66191,1.21543 -3.10058,4.415234 -1.41387,3.175 -1.41387,6.35 0,1.686719 0.57051,2.43086 0.57051,0.74414 1.48828,0.74414 1.71152,0 3.67109,-1.835547 1.95957,-1.860351 2.87735,-5.333007 z" />
- <path
- d="m 392.19498,19.163484 -0.84336,-0.868164 q 3.175,-3.026172 5.06016,-4.01836 1.88516,-0.992187 3.22461,-0.992187 0.5209,0 0.81855,0.223242 0.29766,0.223242 0.29766,0.520898 0,0.223243 -0.12402,0.79375 l -1.11621,4.985743 q 2.53007,-2.80293 6.35,-5.233789 2.03398,-1.26504 3.34863,-1.26504 0.96738,0 1.51308,0.620118 0.54571,0.620117 0.54571,1.785937 0,0.768945 -0.22324,1.736328 -0.39688,1.612305 -2.0836,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14883,0.248046 0.42168,0.248046 0.71934,0 2.25723,-1.389062 1.0914,-0.992188 2.18281,-1.835547 l 0.62012,0.892969 q -2.28204,2.530078 -4.7377,4.067968 -1.5627,0.992188 -2.57969,0.992188 -0.94258,0 -1.46347,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91778,-0.768945 -0.99218,0 -2.55488,1.041797 -2.33164,1.53789 -3.89433,3.621484 -0.99219,1.339453 -1.66192,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81075,-7.118945 l 2.20761,-9.425781 q 0.12403,-0.570508 0.12403,-0.818555 0,-0.669726 -0.4961,-0.669726 -0.39687,0 -1.14101,0.520898 -1.53789,1.016992 -2.87735,2.480469 z" />
- <path
- d="m 427.16959,13.359187 q 2.43086,0 4.04316,1.934765 1.6123,1.934766 1.6123,5.382618 0,5.50664 -3.86953,9.89707 -3.86953,4.365625 -8.18554,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97656,-9.624218 3.74551,-5.481836 9.32657,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09278,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89297,1.364258 2.38125,1.364258 2.0836,0 3.79512,-2.579687 2.18281,-3.348633 2.18281,-8.309571 0,-3.720703 -1.01699,-5.308203 -0.99219,-1.5875 -2.50527,-1.5875 z" />
- <path
- d="m 456.98482,2.6931714 q 0.76894,0 1.26504,0.5208984 0.49609,0.4960938 0.49609,1.2898438 0,1.0914062 -0.76895,1.9347656 -0.74414,0.8185546 -1.68671,0.8185546 -0.74414,0 -1.24024,-0.5208984 -0.49609,-0.5208984 -0.49609,-1.3642578 0,-1.1162109 0.71933,-1.8851562 0.71934,-0.79375 1.71153,-0.79375 z m -9.77305,16.4207026 -1.09141,-0.843359 q 2.48047,-2.728516 4.51446,-3.869531 2.05879,-1.165821 3.49746,-1.165821 0.79375,0 1.21543,0.347266 0.42168,0.347266 0.42168,0.942578 0,0.719336 -1.61231,6.101953 -2.62929,8.805664 -2.62929,10.616406 0,0.347266 0.17363,0.595313 0.17363,0.223242 0.37207,0.223242 0.79375,0 4.06797,-3.075781 l 0.96738,0.942578 q -3.39824,3.199805 -4.96094,4.092773 -1.56269,0.892969 -2.55488,0.892969 -0.86816,0 -1.38906,-0.545703 -0.4961,-0.545703 -0.4961,-1.513086 0,-3.100586 3.72071,-15.155664 0.17363,-0.570508 0.17363,-1.016992 0,-0.496094 -0.44648,-0.496094 -0.4961,0 -1.14102,0.396875 -0.62012,0.396875 -2.80293,2.530078 z" />
- <path
- d="m 459.36606,19.163484 -0.84335,-0.868164 q 3.17499,-3.026172 5.06015,-4.01836 1.88516,-0.992187 3.22461,-0.992187 0.5209,0 0.81856,0.223242 0.29765,0.223242 0.29765,0.520898 0,0.223243 -0.12402,0.79375 l -1.11621,4.985743 q 2.53008,-2.80293 6.35,-5.233789 2.03398,-1.26504 3.34863,-1.26504 0.96738,0 1.51309,0.620118 0.5457,0.620117 0.5457,1.785937 0,0.768945 -0.22324,1.736328 -0.39688,1.612305 -2.0836,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14883,0.248046 0.42168,0.248046 0.71934,0 2.25723,-1.389062 1.0914,-0.992188 2.18281,-1.835547 l 0.62012,0.892969 q -2.28203,2.530078 -4.7377,4.067968 -1.56269,0.992188 -2.57969,0.992188 -0.94257,0 -1.46347,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91777,-0.768945 -0.99219,0 -2.55489,1.041797 -2.33164,1.53789 -3.89433,3.621484 -0.99219,1.339453 -1.66192,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81075,-7.118945 l 2.20761,-9.425781 q 0.12403,-0.570508 0.12403,-0.818555 0,-0.669726 -0.4961,-0.669726 -0.39687,0 -1.14101,0.520898 -1.53789,1.016992 -2.87735,2.480469 z" />
- <path
- d="m 493.17487,18.394538 -0.79375,-1.16582 1.83555,-1.240234 q 2.67891,-1.835547 3.77031,-2.356446 0.62012,-0.297656 1.14102,-0.297656 0.5209,0 0.99219,0.595313 2.18281,2.75332 3.67109,7.441406 1.48828,4.663281 1.48828,9.053711 0,0.570507 -0.0496,1.736328 4.19199,-7.714258 4.19199,-12.253516 0,-0.942578 -0.42167,-2.505273 -0.44649,-1.736328 -0.44649,-2.480469 0,-0.719336 0.44649,-1.190625 0.47128,-0.471289 1.16582,-0.471289 0.86816,0 1.38906,0.669727 0.5457,0.669726 0.5457,1.909961 0,3.199804 -1.46348,7.987109 -1.46347,4.7625 -4.61367,10.26914 -3.12539,5.481836 -5.72988,8.135938 -2.57969,2.678906 -5.01055,3.819922 -2.40605,1.16582 -4.56406,1.16582 -1.63711,0 -2.45566,-0.620117 -0.84336,-0.595313 -0.84336,-1.438672 0,-0.744141 0.64492,-1.289844 0.64492,-0.520898 1.73633,-0.520898 0.84336,0 2.30683,0.322461 1.5627,0.347265 2.13321,0.347265 1.51308,0 3.1998,-1.265039 2.30684,-1.736328 3.64629,-4.142383 1.36426,-2.406054 1.36426,-4.861718 0,-3.447852 -1.01699,-8.284766 -0.99219,-4.836914 -2.82774,-7.391797 -0.91777,-1.314648 -1.95957,-1.314648 -1.21543,0 -3.47266,1.637109 z" />
- <path
- d="m 525.89226,13.359187 q 2.43086,0 4.04316,1.934765 1.61231,1.934766 1.61231,5.382618 0,5.50664 -3.86954,9.89707 -3.86953,4.365625 -8.18554,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97657,-9.624218 3.7455,-5.481836 9.32656,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09277,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89296,1.364258 2.38125,1.364258 2.08359,0 3.79511,-2.579687 2.18281,-3.348633 2.18281,-8.309571 0,-3.720703 -1.01699,-5.308203 -0.99219,-1.5875 -2.50527,-1.5875 z" />
- <path
- d="m 550.69694,14.028913 h 3.52227 l -2.33164,8.656836 q -2.05879,7.540625 -2.05879,8.582422 0,0.471289 0.22324,0.719336 0.22325,0.248047 0.4961,0.248047 0.42168,0 0.99218,-0.372071 0.81856,-0.570507 3.10059,-2.877343 l 0.81855,0.917773 q -4.98574,5.18418 -7.34218,5.18418 -0.79375,0 -1.36426,-0.620117 -0.5457,-0.595313 -0.5457,-1.711524 0,-1.289844 0.5457,-3.447851 -2.20762,2.530078 -5.45703,4.440039 -2.15801,1.265039 -3.74551,1.265039 -0.86816,0 -1.36426,-0.570508 -0.49609,-0.570508 -0.49609,-1.810742 0,-0.967383 0.22324,-2.083594 0.32246,-1.562695 1.63711,-6.275586 1.66191,-5.977929 1.66191,-7.168554 0,-0.694532 -0.49609,-0.694532 -0.44648,0 -1.21543,0.471289 -0.76894,0.446485 -2.6293,2.207618 l -1.0914,-0.868164 q 3.32383,-2.976563 5.06015,-3.894336 1.76114,-0.942578 2.82774,-0.942578 0.59531,0 0.96738,0.446484 0.37207,0.42168 0.37207,1.339453 0,1.711523 -1.78594,8.408789 -1.5875,6.027539 -1.5875,6.870898 0,0.520899 0.32247,0.892969 0.34726,0.37207 0.74414,0.37207 1.38906,0 3.94394,-2.282031 2.55488,-2.306836 3.34863,-5.233789 z" />
- <path
- d="m 561.93346,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44648,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50527,-3.943946 5.65547,-6.746875 1.51308,-1.339453 2.53007,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83554,0.620117 -3.00136,1.488281 -1.14102,0.868164 -2.53008,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
- <path
- d="m 591.37661,17.700007 q 2.00918,-2.207617 3.94395,-3.224609 1.95957,-1.041797 3.44785,-1.041797 1.73633,0 2.77813,1.389062 1.04179,1.389063 1.04179,4.191993 0,4.067968 -1.90996,7.962304 -1.90996,3.894336 -4.73769,5.92832 -2.80293,2.033985 -5.48184,2.033985 -2.28203,0 -3.64629,-1.339453 -1.36426,-1.339454 -1.36426,-3.472657 0,-1.711523 0.66973,-4.7625 l 2.92695,-13.121679 q 1.06661,-4.8121094 2.67891,-7.3173828 1.6123,-2.530078 4.2416,-4.01835927 2.6293,-1.51308592 4.98574,-1.51308592 1.41387,0 2.05879,0.49609375 0.66973,0.47128905 0.66973,1.28984374 0,0.7441406 -0.59531,1.2402343 -0.59532,0.4960938 -1.68672,0.4960938 -0.81856,0 -2.82774,-0.3720703 -0.89297,-0.1736328 -1.5875,-0.1736328 -1.24023,0 -2.00918,1.3394531 -0.5705,1.0417968 -1.56269,5.2833983 z m 4.88653,-1.513086 q -1.21543,0 -2.90215,1.463477 -1.66191,1.463476 -3.1502,5.184179 -1.48828,3.695899 -1.48828,7.267774 0,1.339453 0.84336,2.257226 0.86817,0.892969 2.00918,0.892969 2.75332,0 4.91133,-4.34082 2.15801,-4.365625 2.15801,-8.681641 0,-1.95957 -0.81856,-3.199804 -0.5705,-0.84336 -1.56269,-0.84336 z" />
- <path
- d="m 609.75689,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20761,-9.326562 0.22325,-1.091407 0.22325,-1.364258 0,-0.595313 -0.54571,-0.595313 -0.37207,0 -1.14101,0.520899 -0.76895,0.496093 -2.77813,2.505273 l -0.76894,-0.868164 q 2.38125,-2.554883 4.73769,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44649,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50528,-3.943946 5.65547,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24023,0.496093 0.4961,0.471289 0.4961,1.116211 0,0.669727 -0.4961,1.141016 -0.47129,0.471289 -2.40605,1.116211 -1.83555,0.620117 -3.00137,1.488281 -1.14101,0.868164 -2.53008,2.654101 -1.36425,1.785938 -1.90996,3.125391 -0.5457,1.314648 -1.66191,6.151562 z" />
- <path
- d="m 632.75084,13.359187 q 2.43086,0 4.04316,1.934765 1.61231,1.934766 1.61231,5.382618 0,5.50664 -3.86953,9.89707 -3.86953,4.365625 -8.18555,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97657,-9.624218 3.7455,-5.481836 9.32656,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09277,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89297,1.364258 2.38125,1.364258 2.08359,0 3.79511,-2.579687 2.18282,-3.348633 2.18282,-8.309571 0,-3.720703 -1.017,-5.308203 -0.99218,-1.5875 -2.50527,-1.5875 z" />
- <path
- d="m 651.03189,14.053718 q 1.14102,-0.79375 1.73633,-0.79375 0.47129,0 0.76895,0.322461 0.29765,0.297656 0.29765,0.744141 0,0.967382 -1.46347,1.339453 l -1.90996,3.745508 q -0.71934,1.562695 -1.09141,3.12539 -0.34727,1.562695 -0.34727,3.199805 0,2.058789 0.99219,6.598047 3.81992,-2.530079 7.11895,-6.77168 -0.0248,-1.066602 -0.0248,-1.562695 0,-5.457032 1.61231,-8.607227 1.0666,-2.083594 2.35644,-2.083594 0.76895,0 1.26504,0.669727 0.5209,0.644922 0.5209,1.934766 0,1.041797 -0.39688,2.406054 -0.66972,2.232422 -1.5875,4.092774 0,6.250781 0.94258,9.921875 2.97657,-2.033985 5.77949,-5.109766 2.05879,-2.257227 3.1254,-4.688086 1.0666,-2.455664 1.0666,-4.018359 0,-0.768946 -0.54571,-1.984375 -0.62011,-1.413867 -0.62011,-2.058789 0,-0.644922 0.47129,-1.091406 0.47128,-0.47129 1.14101,-0.47129 0.81856,0 1.28984,0.79375 0.4961,0.768946 0.4961,2.778125 0,5.109766 -4.44004,10.715625 -4.44004,5.60586 -10.83965,8.656836 -0.79375,-2.703711 -1.46348,-8.036719 -3.37343,3.373438 -4.19199,4.043164 -1.63711,1.364258 -3.175,2.331641 -1.51308,0.942578 -3.24941,1.661914 -0.17363,-1.413867 -0.79375,-4.564062 -0.86817,-4.440039 -0.86817,-6.35 0,-2.579688 1.24024,-5.060156 1.26504,-2.505274 3.77031,-4.39043 -4.48965,0.124023 -6.39961,1.041797 -1.28984,0.620117 -1.28984,1.488281 0,0.322461 0.29765,1.041797 0.27286,0.669726 0.27286,0.992187 0,0.446485 -0.32246,0.768946 -0.32247,0.322461 -0.81856,0.322461 -0.64492,0 -1.09141,-0.570508 -0.44648,-0.570508 -0.44648,-1.612305 0,-1.984375 1.78594,-3.224609 2.57969,-1.810742 9.0289,-1.686719 z" />
- <path
- d="m 686.20492,13.334382 q 2.20762,0 3.39824,0.868164 1.21543,0.84336 1.21543,1.959571 0,0.669726 -0.52089,1.16582 -0.4961,0.496094 -1.21543,0.496094 -0.47129,0 -0.81856,-0.198438 -0.34726,-0.223242 -0.99219,-1.066601 -1.21543,-1.612305 -2.40605,-1.612305 -1.01699,0 -1.81074,0.79375 -0.76895,0.768945 -0.76895,1.934765 0,1.016993 0.4961,1.984375 0.49609,0.942579 2.50527,3.075782 2.75332,2.926953 2.75332,5.55625 0,2.629296 -2.23242,4.613671 -2.23242,1.959571 -5.75469,1.959571 -2.95176,0 -4.39043,-1.190625 -1.43867,-1.21543 -1.43867,-2.976563 0,-0.868164 0.5457,-1.438672 0.5457,-0.570507 1.33945,-0.570507 0.69454,0 1.19063,0.471289 0.49609,0.446484 0.49609,1.066601 0,0.248047 -0.0496,0.644922 -0.0248,0.322461 -0.0248,0.545703 0,0.818555 0.69453,1.389063 0.66973,0.570507 1.83555,0.570507 1.33945,0 2.35644,-0.446484 1.01699,-0.471289 1.5875,-1.389062 0.57051,-0.942579 0.57051,-1.860352 0,-0.892969 -0.5457,-1.785937 -0.5209,-0.892969 -2.38125,-2.951758 -2.57969,-2.877344 -2.57969,-5.531445 0,-2.43086 1.95957,-4.241602 1.95957,-1.835547 4.98574,-1.835547 z" />
- <path
- d="m 704.5852,27.993952 0.81856,1.091407 q -6.07715,5.779492 -10.41797,5.779492 -1.76113,0 -2.70371,-1.190625 -0.91778,-1.190625 -0.91778,-3.819922 0,-5.308203 3.22461,-10.566797 3.62149,-5.97793 8.65684,-5.97793 1.76113,0 2.6789,0.892969 0.94258,0.868164 0.94258,2.406055 0,1.612305 -1.11621,3.175 -1.11621,1.562695 -3.99355,3.249414 -1.43867,0.818555 -6.15156,2.951758 -0.22325,1.339453 -0.22325,2.554882 0,1.761133 0.54571,2.455664 0.5705,0.694532 1.63711,0.694532 1.01699,0 2.23242,-0.570508 1.63711,-0.768945 4.7873,-3.125391 z m -8.68164,-3.596679 q 3.99356,-1.785938 6.00274,-3.844727 1.36425,-1.438672 1.36425,-2.852539 0,-1.066601 -0.5705,-1.686719 -0.54571,-0.644921 -1.43868,-0.644921 -0.91777,0 -1.78593,0.694531 -1.16582,0.917773 -1.95957,2.778125 -1.14102,2.728515 -1.61231,5.55625 z" />
- <path
- d="m 713.44048,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44648,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50527,-3.943946 5.65546,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83554,0.620117 -3.00136,1.488281 -1.14102,0.868164 -2.53008,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
- </g>
- </svg>
-
-
-
- <!-- <div style="flex:0"></div> -->
- <div style="flex:1" class="btn-group">
- <button class="btn" id="startButton">Start</button>
- <button class="btn" id="aboutButton">About</button>
- </div>
- <div style="flex:2"></div>
- </div>
-
-
- <script type="module" src="js/main.js" type="text/javascript"></script>
-
- <style data="dynSliderStyle" type="text/css"></style>
-
- <script data-goatcounter="https://midiano.goatcounter.com/count" async src="./lib/goatCounter.js"></script>
-
+
</head>
<body>
<!-- Jumpy when friction low and initialy speed positive -->
- <!-- <script type = 'x-shader/x-vertex' id = 'vertexShaderJumpy'>
+ <!-- <script type="x-shader/x-vertex" id = "vertexShaderJumpy">
uniform float time;
uniform float duration;
uniform float shrink;
@@ -253,7 +95,7 @@
}
</script> -->
- <script type='x-shader/x-vertex' id='simpleVertex'>
+ <script type="x-shader/x-vertex" id="simpleVertex">
uniform float screenWidth;
uniform float screenHeight;
varying vec2 pos;
@@ -264,7 +106,7 @@
}
</script>
- <script type='x-shader/x-vertex' id='vertexShader'>
+ <script type="x-shader/x-vertex" id="vertexShader">
uniform float time;
uniform float particleLife;
uniform float particlesShrink;
@@ -330,7 +172,7 @@
}
</script>
- <script type='x-shader-x-fragment' id='fragmentShader'>
+ <script type="x-shader/x-fragment" id="fragmentShader">
uniform float particleLife;
uniform float screenWidth;
@@ -367,7 +209,7 @@
</script>
- <!-- <script type = 'x-shader-x-fragment' id = 'fragmentShaderPianoLineFire'>
+ <!-- <script type="x-shader/x-fragment" id="fragmentShaderPianoLineFire">
// I started working a bit on the colors of Remix 2, ended up with something like this. :)
// Remix 2 here: https://www.shadertoy.com/view/MtcGD7
// Remix 1 here: https://www.shadertoy.com/view/llc3DM
@@ -452,7 +294,7 @@
gl_FragColor = vec4(col*color, alpha * opacity * dot(col,vec3(1.)));
}
</script> -->
- <script type='x-shader-x-fragment' id='fragmentShaderPianoLine2'>
+ <script type="x-shader/x-fragment" id="fragmentShaderPianoLine2">
#define M_PI 3.1415926535897932384626433832795
#define M_TWO_PI (2.0 * M_PI)
@@ -540,7 +382,7 @@
gl_FragColor= vec4( (c1.x+c2.x )* color , alpha * opacity);
}
</script>
- <script type='x-shader-x-fragment' id='fragmentShaderPianoLine'>
+ <script type="x-shader/x-fragment" id="fragmentShaderPianoLine">
uniform float screenWidth;
uniform float screenHeight;
uniform float time;
@@ -597,7 +439,160 @@
gl_FragColor = vec4(col,1);
}
</script>
-
+ <div id="landingPage">
+
+ <div id="lpTopPlaceholder"></div>
+ <div id="lpBurgerMenu" class="burgerMenu"></div>
+ <div id="lpTop">
+ <div id="logoWrapper" class="lpTopDiv">
+ <a href="https://midiano.com"><img id="logoImg" src="./images/logo3.svg"></a>
+ </div>
+ <div id="lpTopStartWrap" class="lpTopDiv">
+
+ <button id="lpTopStartButton" class="lpStartButton">Start</button>
+ </div>
+
+ <div class="subtleBorder"></div>
+ </div>
+ <div id="lpMainWrapper">
+
+ <div id="firstSection" class="lpSection">
+
+ <div id="lpHeaderText">
+ Free Interactive Piano-App in your Browser!
+ </div>
+ <button class="lpStartButton">Start</button>
+ <div id="screenshotWrapper">
+ <img src="images/screenShotNew.png" id="screenshot" />
+
+ </div>
+ </div>
+
+ <div id="secondSection" class="lpSection">
+ <!-- <div class="lpSectionHeader"></div> -->
+
+
+ <div id="features">
+ <!-- <p>Features</p> -->
+ <div class="featureBox"><span class="glyphicon glyphicon-play"></span>
+ <div>Play any MIDI-File or choose one of the sample songs</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-play"></span>
+ <div>Pause, Skip Forward or Backward, Adjust the Speed - Intuitive controls allow quick navigation through
+ the song</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-random"></span>
+ <div>Automatic Sheet generation.</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-random"></span>
+ <div>MIDI-Keyboard support - Input & Output</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-time"></span>
+ <div>Play-along-mode - Midiano waits for you to hit the correct notes</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-time"></span>
+ <div>Sustain-info - View sustain-pedal events and sustained notes</div>
+ </div>
+ <!-- <div class="featureBox"><span class="glyphicon glyphicon-fast-forward"></span><div>Play at any speed</div></div> -->
+ <div class="featureBox"><span class="glyphicon glyphicon-wrench"></span>
+ <div>Track-control - Customize and only display or play the tracks you want</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-wrench"></span>
+ <div>Customize colors, effects, instruments and much more</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-music"></span>
+ <div>3 different Soundfonts to choose from</div>
+ </div>
+ <div class="featureBox"><span class="glyphicon glyphicon-music"></span>
+ <div>Works on any device with a modern browser (Firefox, Chrome, Edge, Safari, iOS or Android. It doesn't
+ work in IE.)</div>
+ </div>
+ <!-- <div class="featureBox"><span class="glyphicon glyphicon-list"></span><div>Customize individual Tracks - Change instrument, color, volume etc.</div></div> -->
+ </div>
+ </div>
+
+ <!--
+ <footer></footer> -->
+
+
+ </div>
+ <div id="startPage">
+ <div style="flex:3"></div>
+ <a href="https://midiano.com">
+ <img class="logo" src="./images/logo3.svg">
+ </a>
+
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+ <svg width="25%" viewBox="0 0 510.82775 47.823437">
+
+ <g id="layer1" transform="translate(-215.73443,0.60585199)">
+ <path
+ d="m 215.73443,34.641608 0.29766,-1.339453 q 2.60449,-0.496093 3.47266,-1.141015 0.89296,-0.644922 1.5875,-2.282032 0.71933,-1.661914 1.93476,-6.821288 1.61231,-6.821289 2.92695,-9.822657 2.00918,-4.5144526 4.98575,-6.6972651 3.00136,-2.1828125 6.05234,-2.1828125 1.95957,0 3.29902,0.9921875 1.33946,0.9921875 1.33946,2.0587891 0,0.5953124 -0.42168,1.0169921 -0.39688,0.4216797 -0.96739,0.4216797 -0.74414,0 -1.81074,-0.9673828 -1.19062,-1.0417968 -1.86035,-1.3642578 -0.64492,-0.3224609 -1.26504,-0.3224609 -0.71933,0 -1.41387,0.396875 -0.96738,0.5457031 -2.08359,2.0835937 -1.09141,1.513086 -2.28203,4.514453 -0.76895,2.033984 -1.95957,6.697266 -1.86035,7.416601 -2.82774,9.84746 -0.69453,1.736328 -1.68671,2.877344 3.54707,-0.79375 5.65546,-0.79375 1.31465,0 2.43086,0.173633 1.11621,0.148828 3.89434,0.79375 2.40605,0.570508 3.37344,0.570508 0.94258,0 1.5875,-0.570508 0.66972,-0.595313 0.66972,-1.339453 0,-0.471289 -0.34726,-1.314649 -0.32246,-0.79375 -0.32246,-1.265039 0,-0.669726 0.39687,-1.041797 0.39688,-0.396875 1.0418,-0.396875 0.74414,0 1.26504,0.669727 0.5209,0.644922 0.5209,1.785937 0,2.158008 -1.78594,3.720704 -1.78594,1.562695 -4.83692,1.562695 -1.51308,0 -3.89433,-0.223242 -8.03672,-0.719336 -10.51719,-0.719336 -3.64629,0 -6.44922,0.421679 z" />
+ <path
+ d="m 260.08521,27.993952 0.81856,1.091407 q -6.07715,5.779492 -10.41797,5.779492 -1.76113,0 -2.70371,-1.190625 -0.91778,-1.190625 -0.91778,-3.819922 0,-5.308203 3.22461,-10.566797 3.62149,-5.97793 8.65684,-5.97793 1.76113,0 2.67891,0.892969 0.94257,0.868164 0.94257,2.406055 0,1.612305 -1.11621,3.175 -1.11621,1.562695 -3.99355,3.249414 -1.43867,0.818555 -6.15156,2.951758 -0.22325,1.339453 -0.22325,2.554882 0,1.761133 0.54571,2.455664 0.57051,0.694532 1.63711,0.694532 1.01699,0 2.23242,-0.570508 1.63711,-0.768945 4.7873,-3.125391 z m -8.68164,-3.596679 q 3.99356,-1.785938 6.00274,-3.844727 1.36425,-1.438672 1.36425,-2.852539 0,-1.066601 -0.5705,-1.686719 -0.54571,-0.644921 -1.43867,-0.644921 -0.91778,0 -1.78594,0.694531 -1.16582,0.917773 -1.95957,2.778125 -1.14102,2.728515 -1.61231,5.55625 z" />
+ <path
+ d="m 281.26842,12.937507 1.63711,-0.347265 -1.86035,6.275585 q -1.11621,3.745508 -2.1084,8.632032 -0.54571,2.654101 -0.54571,3.423046 0,0.768946 0.62012,0.768946 0.39688,0 1.26504,-0.520899 1.53789,-0.917773 2.95176,-2.282031 l 0.79375,0.967383 q -2.82774,2.579687 -3.62149,3.12539 -1.5875,1.091407 -3.02617,1.612305 -0.94258,0.347266 -1.83554,0.347266 -0.64493,0 -0.96739,-0.297657 -0.32246,-0.297656 -0.32246,-0.868164 0,-0.37207 0.19844,-1.016992 l 0.99219,-3.373437 q -2.13321,2.554883 -5.08496,4.390429 -1.81075,1.141016 -3.32383,1.141016 -1.43867,0 -2.20762,-1.016992 -1.0418,-1.364258 -1.0418,-3.571875 0,-2.629297 1.38907,-5.853906 1.41386,-3.22461 3.77031,-5.853906 2.35644,-2.629297 4.96094,-3.869532 2.00918,-0.942578 5.15937,-0.942578 0.79375,0 1.61231,0.09922 z m -3.07578,3.795117 q -1.33946,-0.272851 -2.25723,-0.272851 -2.23242,0 -3.89434,1.240234 -1.66191,1.21543 -3.10058,4.415234 -1.41387,3.175 -1.41387,6.35 0,1.686719 0.57051,2.43086 0.57051,0.74414 1.48828,0.74414 1.71152,0 3.67109,-1.835547 1.95957,-1.860351 2.87735,-5.333007 z" />
+ <path
+ d="m 290.27252,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64628,-1.289844 0.44649,0 0.69454,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.06661,4.440039 q 2.50528,-3.943946 5.65547,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83555,0.620117 -3.00137,1.488281 -1.14101,0.868164 -2.53007,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
+ <path
+ d="m 301.70748,19.163484 -0.84336,-0.868164 q 3.175,-3.026172 5.06016,-4.01836 1.88515,-0.992187 3.22461,-0.992187 0.52089,0 0.81855,0.223242 0.29766,0.223242 0.29766,0.520898 0,0.223243 -0.12403,0.79375 l -1.11621,4.985743 q 2.53008,-2.80293 6.35,-5.233789 2.03399,-1.26504 3.34864,-1.26504 0.96738,0 1.51308,0.620118 0.5457,0.620117 0.5457,1.785937 0,0.768945 -0.22324,1.736328 -0.39687,1.612305 -2.08359,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14882,0.248046 0.42168,0.248046 0.71933,0 2.25722,-1.389062 1.09141,-0.992188 2.18282,-1.835547 l 0.62011,0.892969 q -2.28203,2.530078 -4.73769,4.067968 -1.5627,0.992188 -2.57969,0.992188 -0.94258,0 -1.46348,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91777,-0.768945 -0.99219,0 -2.55488,1.041797 -2.33164,1.53789 -3.89434,3.621484 -0.99219,1.339453 -1.66191,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81074,-7.118945 l 2.20762,-9.425781 q 0.12402,-0.570508 0.12402,-0.818555 0,-0.669726 -0.49609,-0.669726 -0.39688,0 -1.14102,0.520898 -1.53789,1.016992 -2.87734,2.480469 z" />
+ <path
+ d="m 335.96275,19.510749 -0.96738,-0.992187 q 2.25723,-2.703711 4.48965,-3.993555 2.23242,-1.289844 3.86953,-1.289844 0.62012,0 0.96738,0.322461 0.37207,0.297657 0.37207,0.892969 0,0.719336 -0.17363,1.488281 -0.14883,0.744141 -0.99219,3.571875 3.79512,-3.795117 5.18418,-4.688086 2.33164,-1.513086 4.26641,-1.513086 1.26504,0 2.1332,1.190625 0.86816,1.190625 0.86816,3.59668 0,6.002734 -3.7455,11.410156 -3.74551,5.407422 -8.28477,5.407422 -1.78594,0 -3.57187,-0.967383 l -2.1084,8.185547 q -0.19844,0.744141 -0.19844,1.21543 0,0.917773 0.69453,1.314648 1.0666,0.620117 4.48965,1.016992 l -0.32246,1.240235 q -3.99356,-0.322461 -6.27559,-0.322461 -2.35644,0 -6.10195,0.322461 l 0.32246,-1.240235 q 1.88516,-0.198437 2.72852,-1.041797 0.86816,-0.843359 1.38906,-3.001367 l 4.48965,-18.826757 q 1.26504,-5.258594 1.26504,-5.853906 0,-0.644922 -0.62012,-0.644922 -1.09141,0 -4.16719,3.199804 z m 5.01055,11.707813 q 1.95957,1.95957 4.01836,1.95957 2.97656,0 5.20898,-4.638477 2.25723,-4.638476 2.25723,-9.05371 0,-1.413868 -0.64492,-2.133204 -0.62012,-0.74414 -1.68672,-0.74414 -1.19063,0 -2.67891,1.16582 -2.30683,1.810742 -3.52226,3.59668 -0.86817,1.289844 -1.63711,4.464843 z" />
+ <path
+ d="m 368.4817,2.6931714 q 0.76895,0 1.26504,0.5208984 0.4961,0.4960938 0.4961,1.2898438 0,1.0914062 -0.76895,1.9347656 -0.74414,0.8185546 -1.68672,0.8185546 -0.74414,0 -1.24023,-0.5208984 -0.49609,-0.5208984 -0.49609,-1.3642578 0,-1.1162109 0.71933,-1.8851562 0.71934,-0.79375 1.71152,-0.79375 z m -9.77304,16.4207026 -1.09141,-0.843359 q 2.48047,-2.728516 4.51445,-3.869531 2.05879,-1.165821 3.49747,-1.165821 0.79375,0 1.21543,0.347266 0.42167,0.347266 0.42167,0.942578 0,0.719336 -1.6123,6.101953 -2.6293,8.805664 -2.6293,10.616406 0,0.347266 0.17364,0.595313 0.17363,0.223242 0.37207,0.223242 0.79375,0 4.06797,-3.075781 l 0.96738,0.942578 q -3.39824,3.199805 -4.96094,4.092773 -1.56269,0.892969 -2.55488,0.892969 -0.86817,0 -1.38906,-0.545703 -0.4961,-0.545703 -0.4961,-1.513086 0,-3.100586 3.7207,-15.155664 0.17364,-0.570508 0.17364,-1.016992 0,-0.496094 -0.44649,-0.496094 -0.49609,0 -1.14101,0.396875 -0.62012,0.396875 -2.80293,2.530078 z" />
+ <path
+ d="m 387.03561,12.937507 1.63711,-0.347265 -1.86035,6.275585 q -1.11622,3.745508 -2.1084,8.632032 -0.54571,2.654101 -0.54571,3.423046 0,0.768946 0.62012,0.768946 0.39688,0 1.26504,-0.520899 1.53789,-0.917773 2.95176,-2.282031 l 0.79375,0.967383 q -2.82774,2.579687 -3.62149,3.12539 -1.5875,1.091407 -3.02617,1.612305 -0.94258,0.347266 -1.83555,0.347266 -0.64492,0 -0.96738,-0.297657 -0.32246,-0.297656 -0.32246,-0.868164 0,-0.37207 0.19844,-1.016992 l 0.99219,-3.373437 q -2.13321,2.554883 -5.08496,4.390429 -1.81075,1.141016 -3.32383,1.141016 -1.43867,0 -2.20762,-1.016992 -1.0418,-1.364258 -1.0418,-3.571875 0,-2.629297 1.38907,-5.853906 1.41386,-3.22461 3.77031,-5.853906 2.35644,-2.629297 4.96094,-3.869532 2.00918,-0.942578 5.15937,-0.942578 0.79375,0 1.61231,0.09922 z m -3.07578,3.795117 q -1.33946,-0.272851 -2.25723,-0.272851 -2.23242,0 -3.89434,1.240234 -1.66191,1.21543 -3.10058,4.415234 -1.41387,3.175 -1.41387,6.35 0,1.686719 0.57051,2.43086 0.57051,0.74414 1.48828,0.74414 1.71152,0 3.67109,-1.835547 1.95957,-1.860351 2.87735,-5.333007 z" />
+ <path
+ d="m 392.19498,19.163484 -0.84336,-0.868164 q 3.175,-3.026172 5.06016,-4.01836 1.88516,-0.992187 3.22461,-0.992187 0.5209,0 0.81855,0.223242 0.29766,0.223242 0.29766,0.520898 0,0.223243 -0.12402,0.79375 l -1.11621,4.985743 q 2.53007,-2.80293 6.35,-5.233789 2.03398,-1.26504 3.34863,-1.26504 0.96738,0 1.51308,0.620118 0.54571,0.620117 0.54571,1.785937 0,0.768945 -0.22324,1.736328 -0.39688,1.612305 -2.0836,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14883,0.248046 0.42168,0.248046 0.71934,0 2.25723,-1.389062 1.0914,-0.992188 2.18281,-1.835547 l 0.62012,0.892969 q -2.28204,2.530078 -4.7377,4.067968 -1.5627,0.992188 -2.57969,0.992188 -0.94258,0 -1.46347,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91778,-0.768945 -0.99218,0 -2.55488,1.041797 -2.33164,1.53789 -3.89433,3.621484 -0.99219,1.339453 -1.66192,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81075,-7.118945 l 2.20761,-9.425781 q 0.12403,-0.570508 0.12403,-0.818555 0,-0.669726 -0.4961,-0.669726 -0.39687,0 -1.14101,0.520898 -1.53789,1.016992 -2.87735,2.480469 z" />
+ <path
+ d="m 427.16959,13.359187 q 2.43086,0 4.04316,1.934765 1.6123,1.934766 1.6123,5.382618 0,5.50664 -3.86953,9.89707 -3.86953,4.365625 -8.18554,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97656,-9.624218 3.74551,-5.481836 9.32657,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09278,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89297,1.364258 2.38125,1.364258 2.0836,0 3.79512,-2.579687 2.18281,-3.348633 2.18281,-8.309571 0,-3.720703 -1.01699,-5.308203 -0.99219,-1.5875 -2.50527,-1.5875 z" />
+ <path
+ d="m 456.98482,2.6931714 q 0.76894,0 1.26504,0.5208984 0.49609,0.4960938 0.49609,1.2898438 0,1.0914062 -0.76895,1.9347656 -0.74414,0.8185546 -1.68671,0.8185546 -0.74414,0 -1.24024,-0.5208984 -0.49609,-0.5208984 -0.49609,-1.3642578 0,-1.1162109 0.71933,-1.8851562 0.71934,-0.79375 1.71153,-0.79375 z m -9.77305,16.4207026 -1.09141,-0.843359 q 2.48047,-2.728516 4.51446,-3.869531 2.05879,-1.165821 3.49746,-1.165821 0.79375,0 1.21543,0.347266 0.42168,0.347266 0.42168,0.942578 0,0.719336 -1.61231,6.101953 -2.62929,8.805664 -2.62929,10.616406 0,0.347266 0.17363,0.595313 0.17363,0.223242 0.37207,0.223242 0.79375,0 4.06797,-3.075781 l 0.96738,0.942578 q -3.39824,3.199805 -4.96094,4.092773 -1.56269,0.892969 -2.55488,0.892969 -0.86816,0 -1.38906,-0.545703 -0.4961,-0.545703 -0.4961,-1.513086 0,-3.100586 3.72071,-15.155664 0.17363,-0.570508 0.17363,-1.016992 0,-0.496094 -0.44648,-0.496094 -0.4961,0 -1.14102,0.396875 -0.62012,0.396875 -2.80293,2.530078 z" />
+ <path
+ d="m 459.36606,19.163484 -0.84335,-0.868164 q 3.17499,-3.026172 5.06015,-4.01836 1.88516,-0.992187 3.22461,-0.992187 0.5209,0 0.81856,0.223242 0.29765,0.223242 0.29765,0.520898 0,0.223243 -0.12402,0.79375 l -1.11621,4.985743 q 2.53008,-2.80293 6.35,-5.233789 2.03398,-1.26504 3.34863,-1.26504 0.96738,0 1.51309,0.620118 0.5457,0.620117 0.5457,1.785937 0,0.768945 -0.22324,1.736328 -0.39688,1.612305 -2.0836,7.019727 -1.5875,5.060156 -1.5875,6.72207 0,0.496094 0.14883,0.744141 0.14883,0.248046 0.42168,0.248046 0.71934,0 2.25723,-1.389062 1.0914,-0.992188 2.18281,-1.835547 l 0.62012,0.892969 q -2.28203,2.530078 -4.7377,4.067968 -1.56269,0.992188 -2.57969,0.992188 -0.94257,0 -1.46347,-0.694531 -0.5209,-0.669727 -0.5209,-2.207617 0,-2.207618 2.75332,-10.988477 0.84336,-3.12539 0.84336,-3.646289 0,-0.768945 -0.91777,-0.768945 -0.99219,0 -2.55489,1.041797 -2.33164,1.53789 -3.89433,3.621484 -0.99219,1.339453 -1.66192,4.266406 l -2.00918,8.656836 h -3.6959 q 1.0418,-3.720703 1.81075,-7.118945 l 2.20761,-9.425781 q 0.12403,-0.570508 0.12403,-0.818555 0,-0.669726 -0.4961,-0.669726 -0.39687,0 -1.14101,0.520898 -1.53789,1.016992 -2.87735,2.480469 z" />
+ <path
+ d="m 493.17487,18.394538 -0.79375,-1.16582 1.83555,-1.240234 q 2.67891,-1.835547 3.77031,-2.356446 0.62012,-0.297656 1.14102,-0.297656 0.5209,0 0.99219,0.595313 2.18281,2.75332 3.67109,7.441406 1.48828,4.663281 1.48828,9.053711 0,0.570507 -0.0496,1.736328 4.19199,-7.714258 4.19199,-12.253516 0,-0.942578 -0.42167,-2.505273 -0.44649,-1.736328 -0.44649,-2.480469 0,-0.719336 0.44649,-1.190625 0.47128,-0.471289 1.16582,-0.471289 0.86816,0 1.38906,0.669727 0.5457,0.669726 0.5457,1.909961 0,3.199804 -1.46348,7.987109 -1.46347,4.7625 -4.61367,10.26914 -3.12539,5.481836 -5.72988,8.135938 -2.57969,2.678906 -5.01055,3.819922 -2.40605,1.16582 -4.56406,1.16582 -1.63711,0 -2.45566,-0.620117 -0.84336,-0.595313 -0.84336,-1.438672 0,-0.744141 0.64492,-1.289844 0.64492,-0.520898 1.73633,-0.520898 0.84336,0 2.30683,0.322461 1.5627,0.347265 2.13321,0.347265 1.51308,0 3.1998,-1.265039 2.30684,-1.736328 3.64629,-4.142383 1.36426,-2.406054 1.36426,-4.861718 0,-3.447852 -1.01699,-8.284766 -0.99219,-4.836914 -2.82774,-7.391797 -0.91777,-1.314648 -1.95957,-1.314648 -1.21543,0 -3.47266,1.637109 z" />
+ <path
+ d="m 525.89226,13.359187 q 2.43086,0 4.04316,1.934765 1.61231,1.934766 1.61231,5.382618 0,5.50664 -3.86954,9.89707 -3.86953,4.365625 -8.18554,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97657,-9.624218 3.7455,-5.481836 9.32656,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09277,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89296,1.364258 2.38125,1.364258 2.08359,0 3.79511,-2.579687 2.18281,-3.348633 2.18281,-8.309571 0,-3.720703 -1.01699,-5.308203 -0.99219,-1.5875 -2.50527,-1.5875 z" />
+ <path
+ d="m 550.69694,14.028913 h 3.52227 l -2.33164,8.656836 q -2.05879,7.540625 -2.05879,8.582422 0,0.471289 0.22324,0.719336 0.22325,0.248047 0.4961,0.248047 0.42168,0 0.99218,-0.372071 0.81856,-0.570507 3.10059,-2.877343 l 0.81855,0.917773 q -4.98574,5.18418 -7.34218,5.18418 -0.79375,0 -1.36426,-0.620117 -0.5457,-0.595313 -0.5457,-1.711524 0,-1.289844 0.5457,-3.447851 -2.20762,2.530078 -5.45703,4.440039 -2.15801,1.265039 -3.74551,1.265039 -0.86816,0 -1.36426,-0.570508 -0.49609,-0.570508 -0.49609,-1.810742 0,-0.967383 0.22324,-2.083594 0.32246,-1.562695 1.63711,-6.275586 1.66191,-5.977929 1.66191,-7.168554 0,-0.694532 -0.49609,-0.694532 -0.44648,0 -1.21543,0.471289 -0.76894,0.446485 -2.6293,2.207618 l -1.0914,-0.868164 q 3.32383,-2.976563 5.06015,-3.894336 1.76114,-0.942578 2.82774,-0.942578 0.59531,0 0.96738,0.446484 0.37207,0.42168 0.37207,1.339453 0,1.711523 -1.78594,8.408789 -1.5875,6.027539 -1.5875,6.870898 0,0.520899 0.32247,0.892969 0.34726,0.37207 0.74414,0.37207 1.38906,0 3.94394,-2.282031 2.55488,-2.306836 3.34863,-5.233789 z" />
+ <path
+ d="m 561.93346,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44648,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50527,-3.943946 5.65547,-6.746875 1.51308,-1.339453 2.53007,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83554,0.620117 -3.00136,1.488281 -1.14102,0.868164 -2.53008,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
+ <path
+ d="m 591.37661,17.700007 q 2.00918,-2.207617 3.94395,-3.224609 1.95957,-1.041797 3.44785,-1.041797 1.73633,0 2.77813,1.389062 1.04179,1.389063 1.04179,4.191993 0,4.067968 -1.90996,7.962304 -1.90996,3.894336 -4.73769,5.92832 -2.80293,2.033985 -5.48184,2.033985 -2.28203,0 -3.64629,-1.339453 -1.36426,-1.339454 -1.36426,-3.472657 0,-1.711523 0.66973,-4.7625 l 2.92695,-13.121679 q 1.06661,-4.8121094 2.67891,-7.3173828 1.6123,-2.530078 4.2416,-4.01835927 2.6293,-1.51308592 4.98574,-1.51308592 1.41387,0 2.05879,0.49609375 0.66973,0.47128905 0.66973,1.28984374 0,0.7441406 -0.59531,1.2402343 -0.59532,0.4960938 -1.68672,0.4960938 -0.81856,0 -2.82774,-0.3720703 -0.89297,-0.1736328 -1.5875,-0.1736328 -1.24023,0 -2.00918,1.3394531 -0.5705,1.0417968 -1.56269,5.2833983 z m 4.88653,-1.513086 q -1.21543,0 -2.90215,1.463477 -1.66191,1.463476 -3.1502,5.184179 -1.48828,3.695899 -1.48828,7.267774 0,1.339453 0.84336,2.257226 0.86817,0.892969 2.00918,0.892969 2.75332,0 4.91133,-4.34082 2.15801,-4.365625 2.15801,-8.681641 0,-1.95957 -0.81856,-3.199804 -0.5705,-0.84336 -1.56269,-0.84336 z" />
+ <path
+ d="m 609.75689,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20761,-9.326562 0.22325,-1.091407 0.22325,-1.364258 0,-0.595313 -0.54571,-0.595313 -0.37207,0 -1.14101,0.520899 -0.76895,0.496093 -2.77813,2.505273 l -0.76894,-0.868164 q 2.38125,-2.554883 4.73769,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44649,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50528,-3.943946 5.65547,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24023,0.496093 0.4961,0.471289 0.4961,1.116211 0,0.669727 -0.4961,1.141016 -0.47129,0.471289 -2.40605,1.116211 -1.83555,0.620117 -3.00137,1.488281 -1.14101,0.868164 -2.53008,2.654101 -1.36425,1.785938 -1.90996,3.125391 -0.5457,1.314648 -1.66191,6.151562 z" />
+ <path
+ d="m 632.75084,13.359187 q 2.43086,0 4.04316,1.934765 1.61231,1.934766 1.61231,5.382618 0,5.50664 -3.86953,9.89707 -3.86953,4.365625 -8.18555,4.365625 -2.6541,0 -4.29121,-1.736328 -1.61231,-1.736329 -1.61231,-4.737696 0,-5.208984 2.97657,-9.624218 3.7455,-5.481836 9.32656,-5.481836 z m -2.1084,1.860351 q -2.1084,0 -4.09277,3.026172 -1.95957,3.001367 -1.95957,8.30957 0,3.22461 1.21543,5.084961 0.89297,1.364258 2.38125,1.364258 2.08359,0 3.79511,-2.579687 2.18282,-3.348633 2.18282,-8.309571 0,-3.720703 -1.017,-5.308203 -0.99218,-1.5875 -2.50527,-1.5875 z" />
+ <path
+ d="m 651.03189,14.053718 q 1.14102,-0.79375 1.73633,-0.79375 0.47129,0 0.76895,0.322461 0.29765,0.297656 0.29765,0.744141 0,0.967382 -1.46347,1.339453 l -1.90996,3.745508 q -0.71934,1.562695 -1.09141,3.12539 -0.34727,1.562695 -0.34727,3.199805 0,2.058789 0.99219,6.598047 3.81992,-2.530079 7.11895,-6.77168 -0.0248,-1.066602 -0.0248,-1.562695 0,-5.457032 1.61231,-8.607227 1.0666,-2.083594 2.35644,-2.083594 0.76895,0 1.26504,0.669727 0.5209,0.644922 0.5209,1.934766 0,1.041797 -0.39688,2.406054 -0.66972,2.232422 -1.5875,4.092774 0,6.250781 0.94258,9.921875 2.97657,-2.033985 5.77949,-5.109766 2.05879,-2.257227 3.1254,-4.688086 1.0666,-2.455664 1.0666,-4.018359 0,-0.768946 -0.54571,-1.984375 -0.62011,-1.413867 -0.62011,-2.058789 0,-0.644922 0.47129,-1.091406 0.47128,-0.47129 1.14101,-0.47129 0.81856,0 1.28984,0.79375 0.4961,0.768946 0.4961,2.778125 0,5.109766 -4.44004,10.715625 -4.44004,5.60586 -10.83965,8.656836 -0.79375,-2.703711 -1.46348,-8.036719 -3.37343,3.373438 -4.19199,4.043164 -1.63711,1.364258 -3.175,2.331641 -1.51308,0.942578 -3.24941,1.661914 -0.17363,-1.413867 -0.79375,-4.564062 -0.86817,-4.440039 -0.86817,-6.35 0,-2.579688 1.24024,-5.060156 1.26504,-2.505274 3.77031,-4.39043 -4.48965,0.124023 -6.39961,1.041797 -1.28984,0.620117 -1.28984,1.488281 0,0.322461 0.29765,1.041797 0.27286,0.669726 0.27286,0.992187 0,0.446485 -0.32246,0.768946 -0.32247,0.322461 -0.81856,0.322461 -0.64492,0 -1.09141,-0.570508 -0.44648,-0.570508 -0.44648,-1.612305 0,-1.984375 1.78594,-3.224609 2.57969,-1.810742 9.0289,-1.686719 z" />
+ <path
+ d="m 686.20492,13.334382 q 2.20762,0 3.39824,0.868164 1.21543,0.84336 1.21543,1.959571 0,0.669726 -0.52089,1.16582 -0.4961,0.496094 -1.21543,0.496094 -0.47129,0 -0.81856,-0.198438 -0.34726,-0.223242 -0.99219,-1.066601 -1.21543,-1.612305 -2.40605,-1.612305 -1.01699,0 -1.81074,0.79375 -0.76895,0.768945 -0.76895,1.934765 0,1.016993 0.4961,1.984375 0.49609,0.942579 2.50527,3.075782 2.75332,2.926953 2.75332,5.55625 0,2.629296 -2.23242,4.613671 -2.23242,1.959571 -5.75469,1.959571 -2.95176,0 -4.39043,-1.190625 -1.43867,-1.21543 -1.43867,-2.976563 0,-0.868164 0.5457,-1.438672 0.5457,-0.570507 1.33945,-0.570507 0.69454,0 1.19063,0.471289 0.49609,0.446484 0.49609,1.066601 0,0.248047 -0.0496,0.644922 -0.0248,0.322461 -0.0248,0.545703 0,0.818555 0.69453,1.389063 0.66973,0.570507 1.83555,0.570507 1.33945,0 2.35644,-0.446484 1.01699,-0.471289 1.5875,-1.389062 0.57051,-0.942579 0.57051,-1.860352 0,-0.892969 -0.5457,-1.785937 -0.5209,-0.892969 -2.38125,-2.951758 -2.57969,-2.877344 -2.57969,-5.531445 0,-2.43086 1.95957,-4.241602 1.95957,-1.835547 4.98574,-1.835547 z" />
+ <path
+ d="m 704.5852,27.993952 0.81856,1.091407 q -6.07715,5.779492 -10.41797,5.779492 -1.76113,0 -2.70371,-1.190625 -0.91778,-1.190625 -0.91778,-3.819922 0,-5.308203 3.22461,-10.566797 3.62149,-5.97793 8.65684,-5.97793 1.76113,0 2.6789,0.892969 0.94258,0.868164 0.94258,2.406055 0,1.612305 -1.11621,3.175 -1.11621,1.562695 -3.99355,3.249414 -1.43867,0.818555 -6.15156,2.951758 -0.22325,1.339453 -0.22325,2.554882 0,1.761133 0.54571,2.455664 0.5705,0.694532 1.63711,0.694532 1.01699,0 2.23242,-0.570508 1.63711,-0.768945 4.7873,-3.125391 z m -8.68164,-3.596679 q 3.99356,-1.785938 6.00274,-3.844727 1.36425,-1.438672 1.36425,-2.852539 0,-1.066601 -0.5705,-1.686719 -0.54571,-0.644921 -1.43868,-0.644921 -0.91777,0 -1.78593,0.694531 -1.16582,0.917773 -1.95957,2.778125 -1.14102,2.728515 -1.61231,5.55625 z" />
+ <path
+ d="m 713.44048,34.219929 h -3.6959 l 1.73633,-6.672461 q 1.26504,-4.911328 2.20762,-9.326562 0.22324,-1.091407 0.22324,-1.364258 0,-0.595313 -0.5457,-0.595313 -0.37207,0 -1.14102,0.520899 -0.76894,0.496093 -2.77812,2.505273 l -0.76895,-0.868164 q 2.38125,-2.554883 4.7377,-3.819922 2.38125,-1.289844 3.64629,-1.289844 0.44648,0 0.69453,0.223243 0.27285,0.198437 0.27285,0.520898 0,0.322461 -0.32246,1.711524 l -1.0666,4.440039 q 2.50527,-3.943946 5.65546,-6.746875 1.51309,-1.339453 2.53008,-1.339453 0.74414,0 1.24024,0.496093 0.49609,0.471289 0.49609,1.116211 0,0.669727 -0.49609,1.141016 -0.47129,0.471289 -2.40606,1.116211 -1.83554,0.620117 -3.00136,1.488281 -1.14102,0.868164 -2.53008,2.654101 -1.36426,1.785938 -1.90996,3.125391 -0.54571,1.314648 -1.66192,6.151562 z" />
+ </g>
+ </svg>
+
+
+
+ <!-- <div style="flex:0"></div> -->
+ <div style="flex:1" class="btn-group">
+ <button class="btn" id="startButton">Start</button>
+ <button class="btn" id="aboutButton">About</button>
+ </div>
+ <div style="flex:2"></div>
+ </div>
+
+ <script type="module" src="js/main.js"></script>
+
+ <style data="dynSliderStyle" type="text/css"></style>
+
+ <script data-goatcounter="https://midiano.goatcounter.com/count" async src="./lib/goatCounter.js"></script>
+</div>
</body>
As you modify html, you could add a open graph section to ease users sharing Midiano :
<head>
...
<!-- OPEN GRAPH PROTOCOL START -->
<meta property="og:title" content="Midiano - Learn piano in your browser">
<meta property="og:description" content="Free Interactive Piano-App in your Browser!">
<meta property="og:type" content="image/png">
<meta property="og:url" content="https://midiano.com">
<meta property="og:image" content="http://midiano.com/images/logo3.svg">
<meta property="og:image:secure_url" content="https://midiano.com/images/logo3.svg">
<meta property="og:site_name" content="Midiano">
<meta property="og:image:width" content="360">
<meta property="og:image:height" content="77">
<meta name="description" content="Midiano is an interactive Piano-learning webapp that runs on any device with a modern browser.
Open any MIDI-File and Midiano shows you the notes as falling bars over a piano as well as the corresponding sheet music.
Connect a MIDI-Keyboard to get instant feedback if you hit the correct notes.
You can also use the keyboard as output device to play the MIDI-Files on your keyboard.
It runs on any browser (and device) that supports the WebAudioAPI (Full support apart from Internet Explorer).
To connect a MIDI-Keyboard the browser also needs to support the WebMIDIAPI (Currently only Chrome and Edge).">
<meta property="og:image:alt" content="midiano logo">
<meta name="keywords" content="piano learning, score reading, computer music, javascript">
<!-- OPEN GRAPH PROTOCOL END -->
...
</head>
I think it would be very beneficial to add an option of wait mode, so that the music pauses at every note/chord until the user plays the right keys.
Hello, I'm one of those people who study midi related sheet music. I looked at the project code to see how the midi of the current project was transformed into sheet music, but I found out that there is currently no sheet music related code. I'd like to ask if it's possible to update the project with sheet music.
First of all great job with the app. It's really cool and overall works very well. ๐
I just have the issue that I can't get the app to wait for me to play the correct key before continuing the song. According to the Readme that is supposed to be possible by enabling the midi input. However, when I do that the app only starts highlighting the key I press but does wait for me to play the right key to progress the song. I also didn't find any other setting that enables that.
Do I have to enable that feature in some other way?
Hi there. Could you please add a license / copyright statement to the repo? Thanks!
At least in Firefox 121 on Win10 1809, the HQ piano soundfont is only applied to the MIDI file being played, not to the MIDI instrument nor the virtual piano (the one you can play with the mouse)
Hi,
I'm currently looking for a way to use this tools for Kalimba. I see in the online version that a option exist for choose Instrument and it's also contains Kalimba but when I change that I can't see any diffrence.
How can I use this for Kalimba (with 17 keys for example) Is it possible currently?
User creative common music score.
another site playalongpiano.com uses musescore's creative common score to get music on the fly. If its there and its un-copyrighted it can be played in the site. This will bump up your library without adding in extra score all the time
Explore if feasible. Might be too large / resource intensive
it's not possible to expand menu button after a minimize.
there is a typo in js/ui/UI.js
, l. 25 and l. 234 in refreshMenuHeight()
this.isMobile = window.matchMedia(
"only screen and (max-width: 1600px)"
).matches
1600px should be 600 to define a mobile display
if piano line settings isn't checked, piano line is displayed.
to fix this, in js/Rendering/ThreeJs/ThreeJsPianoLine.js
:
if (getSetting('pianoLineEnabled')) {
const material = new THREE.ShaderMaterial({
uniforms: this.uniforms,
transparent: true,
opacity: 1,
vertexShader: document.getElementById('simpleVertex').textContent,
fragmentShader: document.getElementById('fragmentShaderPianoLine2')
.textContent,
})
Great application.
Is it possible to add bookmarks at time line so specific parts can be easily repeated for learning? It could be quite simple, option for user to put mark on time line and on specific key restarts play from that mark.
I would like to have the possibility to add a shortcut to a specific timestamp. Especially for learning certain sections of a piece it would be nice to just tap on the 'shortcut' inside the progress bar and then just jump towards that timestamp.
Would be even more awesome if you could also specify if you want to 'infinitly loop' between two points.
I really liked MIDIano. It is perfect and sounds really good.
I was wondering if you would be interested in adapting your project for Music AI?
I desperately need someone to help with the front-end for my Music AI implementations and I was wondering if you would like to try it.
Here is my Music AI project that I would love to make front-end to:
https://github.com/asigalov61/GIGA-Piano
I am able to host the model and do everything except the front end so if you are interested, please let me know.
Sincerely,
Alex
being able to loop a specific block over and over again (that would help a lot on the practicing).
Originally posted by @Gtosta96 in #26 (comment)
It looks like in my piano, the velocity (i.e. the intensity of each note) is kept constant. I've seen that it is not (at least that I can see) my instrument, since in other MIDI apps the velocity is properly recognized.
Is it possible to implement that?
to ease shader & vert dev, you could use this little loader :
const glsl = [
// { name: 'vertexShaderJumpy', extension: 'vert', type: 'vertex' },
{ name: 'simpleVertex', extension: 'vert', type: 'vertex' },
{ name: 'vertexShader', extension: 'vert', type: 'vertex' },
{ name: 'fragmentShader', extension: 'frag', type: 'fragment' },
// { name: 'fragmentShaderPianoLine', extension: 'frag', type: 'fragment' },
{ name: 'fragmentShaderPianoLine2', extension: 'frag', type: 'fragment' },
// { name: 'fragmentShaderPianoLineFire', extension: 'frag', type: 'fragment' },
]
export function GLSLLoader() {
glsl.forEach(async (file) => {
const response = await fetch(`./glsl/${file.name}.${file.extension}`)
const scriptContent = await response.text()
const script = document.createElement('script')
script.id = file.name
script.type = `x-shader/x-${file.type}`
script.innerHTML = scriptContent
document.body.prepend(script)
})
}
and call it in main.js
so you could have splitted files and dev real .vert & .frag files with syntax color, etc.
in glsl
folder
It's also possible to preload glsl files with a
<link rel="preload" href="./glsl/vertexShaderJumpy.vert" as="fetch">
<link rel="preload" href="./glsl/simpleVertex.vert" as="fetch">
<link rel="preload" href="./glsl/vertexShader.vert" as="fetch">
<link rel="preload" href="./glsl/fragmentShader.frag" as="fetch">
<link rel="preload" href="./glsl/fragmentShaderPianoLine.frag" as="fetch">
<link rel="preload" href="./glsl/fragmentShaderPianoLine2.frag" as="fetch">
<link rel="preload" href="./glsl/fragmentShaderPianoLineFire.frag" as="fetch">
These two are pretty minor.
One thing that keeps catching me out. The loop start/end measures are offset by 1, If i choose start at 20, it starts from 21 etc...(zero-indexed array?) It would be nice if the numbers matched the visuals.
I feel like it would be easier if there was the option to type measure numbers in instead of just a range slider.
Is it possible to run application and pass midi that should be played as parameter, like url to midi file?
Do you hear the "clicking" sound when notes are turned off? Even in Mozart's Rondo alla Turka that is happening. Maybe the exponential ramp needs to go to a lower value before turning off possibly?
Originally posted by @e7mac in #2 (comment)
I haven't noticed that actually. Can you point to an exact moment when it's happening? Then I can take a closer look.
Maybe try adjusting the lookAhead time in Player.isNextNoteReached(time). The value decides how much in advance the note will be scheduled in the audio-context.
Basically need to add a couple of empty/hidden notes in the sheet music.
Steps to reproduce:
The animation plays to the first note and crashes before it starts.
This behavior only seems to happen for custom songs that try to output to midi device.
Once a custom song has crashed the app, all other types of song no longer work until the app is refreshed.
The following error logs as it crashes:
main.min.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'timestamp')
at t.playSustain (main.min.js:1:821556)
at t.playNotesTick (main.min.js:1:819037)
at t.playTick (main.min.js:1:818129)
at main.min.js:1:820196
Hi,
Debug Info indicated the note name with a minor third too high (ex: Eb for C).
Only on midiano.com. It's OK for bewelge.github.io/MIDIano/ .
I run on iphone safari is having no sound. although the device has sound on and plays .mp3 streaming music sites, there is sound. Can someone help explain this to me please. I really need help. Thank you
Scrolling timeline to beginning is not easy with mouse, and gets harder with longer songs. Simple button that reverts to beginning would be helpful.
L.327, css/Interface.css
:
.innerMenuContDiv.songList.collapsable:not(.collapsed) span.glyphicon-info-sign {
transform: rotate(0);
}
L.20, js/ui/SongUI.js
:
createSongGroupDiv(categoryName, songsList, isFirstSong) {
const cont = DomHelper.createDivWithClass(
'settingsGroupContainer innerMenuContDiv songList collapsable',
)
if (categoryName !== 'default') {
if (!isFirstSong) { cont.classList.add('collapsed') }
const label = DomHelper.createElementWithClass(
'settingsGroupLabel clickableTitle',
'div',
{},
{},
)
cont.appendChild(label)
let collapsed = true
const glyph = DomHelper.getGlyphicon('menu-right')
glyph.classList.add('rightGlyphSpan')
const txt = DomHelper.createElement('div')
txt.innerHTML = `${categoryName}:`
label.appendChild(txt)
label.appendChild(glyph)
label.onclick = (e) => {
e.stopPropagation()
if (collapsed === true) {
collapsed = false
cont.classList.remove('collapsed')
} else {
collapsed = true
cont.classList.add('collapsed')
}
}
}
songsList.forEach((song, index) => {
const songDivObj = createSongDiv(song, false, false);
(isFirstSong && index === 0) ? songDivObj.button.click() : null
// this.wrapper = DomHelper.createDiv()
this.songDivs[song.fileName] = songDivObj
cont.appendChild(songDivObj.wrapper)
this.wrapper.appendChild(cont)
})
return this.wrapper
}
setExampleSongs(jsonSongs, loadFirstSongWhenReady) {
jsonSongs.forEach((exampleSongJson, index) => {
let songDivObj
if (exampleSongJson.children) {
songDivObj = this.createSongGroupDiv(
exampleSongJson.name,
exampleSongJson.children,
(index === 0), // need to click on first song
)
} else {
songDivObj = createSongDiv(exampleSongJson, false, false);
(index === 0) ? songDivObj.button.click() : null
this.songDivs[exampleSongJson.fileName] = songDivObj
this.wrapper.appendChild(songDivObj.wrapper)
}
})
}
DefaultSong.json
:
[
{
"name": "Mozart",
"children": [
{
"name": "First mouvement",
"fileName": "mz_279_01-1.mid",
"copyright": "http://kern.ccarh.org/browse?l=mozart/sonatas",
"url": "/midi/mozart/mz_279_01-1.mid"
},
...
]
},
{
"name": "Liszt - La Campanella",
"fileName": "liz_et3.mid",
"url": "https://bewelge.github.io/piano-midi.de-Files/midi/liz_et3.mid?raw=true"
},
{
"name": "Bach - Prelude and Fugue BWV 846",
"fileName": "bach_846.mid",
"url": "https://bewelge.github.io/piano-midi.de-Files/midi/bach_846.mid?raw=true"
}
]
Allow saving and switching between presets for entire settings
Scrolling note sheet is quite hard to follow. It would be helpful if there is option to page instead.
That means notes would not scroll but cursor is moved and when it gets to the end of "page" it flips to new page and starts over.
Hi,
There is a loss of metronome sync when changing the speed.
Hey @Bewelge, first of all, amazing job with MIDIano, I am really impressed!
I would like to propose a new feature to help beginners (just like me) practice reading music notation.
My idea is very similar to what we have on the website below, the only difference is that you can connect your can play the notes from your keyboard.
https://www.musictheory.net/exercises/note
Thanks, and again, amazing job! ๐
A setting that enables a 'count in' feature that does a 1-2-3 tick count before a track starts/resumes.
In loop mode I've tried the delay between loops option but i struggle to get the timing right with it being silent. It's also not clear where the delay starts from as there is a delay at the end of the loop, a visual rewind, then a pause before starting.
My current workaround is starting a measure or two early as a cue to the bit I actually want to start at.
Hello,
First, thank you for this great piece of application !
I'm facing an issue with it when this application is installed onto android devices (like mobile phone or tablet).
When I'm using the application from a web browser, if I rotate the device to use it in landscape mode, so that the keyboard becomes bigger, then it works.
But if I install the application on the device (as it is a progressive web app, it is proposed to be installed directly onto the device, more comfortable when no internet connexion), when I rotate it, the landscape mode does not work, it remains in portrait mode and thus the keyboard remains tiny and it is difficult to play.
Can you have a look at this issue ?
Thank you.
I'm used to a metronome where the first beat is a high note and the others are low, here it seems reversed. Almost everything can be set, but perhaps not the velocity and pitch for the metronome. Perfect application, great that it works without registration.
Recent bug since last update I think.
The app only detects midi device for the first session.
When the browser is closed and the app loaded later, no MIDI devices are detected.
To fix: go into dev tools > application > storage > clear site data, then reload the app and it works again.
(But only for the first session, then it needs fixing every time which loses settings/song imports)
Windows 11 chrome 119 yamaha p125
(Killer app by the way, really well done its great)
replace in SheetRender.js L.190 :
enabledTracks.forEach((track) => {
->
enabledTracks.forEach((track, trackId) => {
and L. 213 :
drawPath(ctx, path, activeNoteColor, activeNoteColor)
->
const color = getSetting('ColorFromTrack') ? getTrackColor(trackId).white : activeNoteColor
drawPath(ctx, path, color, color)
Hi,
Thanks for this awesome WebApp.
I would like to remember the keyboard input, the song and track preferences like "requiere playalong" or sound level for each track.
Thanks :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.