「VexFlow タブ譜 コードフォーム」の版間の差分

提供:yonewiki
901行目: 901行目:
// 例としてここでIDを指定
// 例としてここでIDを指定
let autoUniqueIds = allUniqueIds.map(id => "vf-" + id);
let autoUniqueIds = allUniqueIds.map(id => "vf-" + id);
 
let Last_Stem_x = 0;
// 各IDに対して処理
// 各IDに対して処理
   autoUniqueIds.forEach(id => {
   autoUniqueIds.forEach(id => {
907行目: 907行目:
     let element = svgElement.getElementById(id);
     let element = svgElement.getElementById(id);
     if (element) {
     if (element) {
      let classValue = element.getAttribute("class");
       // 該当する要素があれば、描画内容を透明にする
       // 該当する要素があれば、描画内容を透明にする
       let paths = element.querySelectorAll("path");
       let paths = element.querySelectorAll("path");
925行目: 926行目:
                 var ydiff = coords[1] - coords[3]; // yの差を計算
                 var ydiff = coords[1] - coords[3]; // yの差を計算


                if (coords[0] - Last_Stem_x > 2){
                  if (coords[0] - Last_Stem_x < 10){
                    path.setAttribute("fill", "none");
                    path.setAttribute("stroke", "none");
                  }
                }
                 // xが0でyが0より大きい場合、描画内容を透明にします
                 // xが0でyが0より大きい場合、描画内容を透明にします
                 if (xdiff <= -3.590) {
                 if (xdiff <= -3.590) {
960行目: 967行目:
           }
           }
           else if (numberOfValues === 1) {
           else if (numberOfValues === 1) {
            if (dAttribute.startsWith('M')) {
              var AnumberOfValues = (dAttribute.match(/A/g) || []).length; // カンマの数 + 1 = 数値の数
              var LnumberOfValues = (dAttribute.match(/L/g) || []).length; // カンマの数 + 1 = 数値の数
                // 座標の差を計算します
              if(AnumberOfValues == 2){
                var coords = dAttribute.match(/[-+]?[0-9]*\.?[0-9]+/g).map(parseFloat);
                var circle_right = coords[0]; // xの差を計算
                var r_x = coords[2]; // xの差を計算
                var r_y = coords[3]; // xの差を計算
                var circle_left = coords[7]; // yの差を計算
                if (circle_right - Last_Stem_x > 7){//7.75
                  if (circle_right - Last_Stem_x < 8){
                  if (circle_left - Last_Stem_x > 3){//3.75
                  if (circle_left - Last_Stem_x < 4){
                  if (r_x == 2){
                  if (r_y == 2){
                    path.setAttribute("fill", "none");
                    path.setAttribute("stroke", "none");
                  }
                  }
                  }
                  }
                  }
                }
              }
            }
            if (classValue === "vf-stem"){
              var firstStemCoord = dAttribute;
              if (dAttribute.startsWith('M')) {
                var StemLnumberOfValues = (dAttribute.match(/L/g) || []).length; // カンマの数 + 1 = 数値の数
                  // 座標の差を計算します
                if(StemLnumberOfValues > 0){
                  var stem_coords = dAttribute.match(/[-+]?[0-9]*\.?[0-9]+/g).map(parseFloat);
                  Last_Stem_x = stem_coords[0]; // xの差を計算
                }
              }
            }
             var firstCoord = dAttribute;
             var firstCoord = dAttribute;
             if (dAttribute.startsWith('M')) {
             if (dAttribute.startsWith('M')) {

2024年4月11日 (木) 21:52時点における版

VexFlow 使い方に戻る。

概要

 コードフォームをタブ譜に載せるという手法もありまして、コードが一小節で2個種類くらいしか無いような曲で見られる描画方法です。その場合、五線譜には同一コード用の音符を使ってリズムだけをハタ棒とハタで表現します。

 

タブ譜 コードフォーム


 コードは以下のとおりです。


<div id="yonet202403Mid_Output01"></div>
<script>

</script>


 

 

VexFlow 使い方に戻る。