デフォルトでカポ設定がなされている楽譜について、現状の仕様では、内部でカポなしに変更してから、ICNに変換しているのだと思いますが、その仕様について質問です。
例:
マリーゴールド / あいみょん ギターコード/ウクレレコード/ピアノコード - U-フレット (ufret.jp)
はカポ2の設定がデフォルトで、歌い始めがCになっていますが、toICNで変換すると、
コードDの歌い始めが1になります。
(内部でカポ0にしてからICNに変換していると思われます)
これ自体は問題ないのですが、この状態で、toICNメニューのKey[Auto]を特定のキーに変更すると、その場合、カポ設定が有効になっている状態での変換になってしまっているようです。
上記のマリーゴールドの場合、明示的にKeyを[D/Bm]に変更すると、歌い始めが6#になってしまいます。
これ意図された挙動でしょうか?
個人的には、toICNのメニューでKeyを変更した際もカポ設定を無視して変換していただけると使いやすいと思うのですがいかがでしょう?
#自身でカポ設定を0にしてからtoICNかければ問題ないのですが。
途中でキーが変わる曲などで、その部分のキーを探したりするときに、カポ設定がある場合うまく探せなかったりしたので、気になりました。
toICN開発者のinajobです。 toICNへのご要望ありがとうございます。
カポ機能についてあまり意識していませんでした。
https://github.com/inajob/toICN/issues/139 で検討します。
進捗があればまたこちらにも連絡します。
※toICNに関しては個人の趣味の範疇での成果物ということで、私のベストエフォートでの対応となってしまうことをご承知おきください。
(内部でカポ0にしてからICNに変換していると思われます)
@inajob 返信ありがとうございます。
そのあとソース眺めてみたところ、ちょっと上の部分、全然違ったので、その部分は無視してください。
上にいろいろ書きましたが、実際に「こうなってほしい」ことは
「キー変更部分のプルダウンを選択した際にカポ設定分コードをずらしてほしい」ってことだけなので、
toICN-core.js 381行目
else{
→ココ settings.key = new exports.Key(scale[document.querySelector('.selectedkey').value]);
document.getElementById('toicnmessage').innerText = "toICNのキー変更機能は、キーが正しく認識されなかったときなどに使用するためのものです。\n演奏するキーを変えたい場合は、インスタコード本体のキー設定かカポ機能を利用してください。";
document.getElementById('majorlabel').innerText = "1=" + settings.key.majorScaleName + "(maj)";
document.getElementById('minorlabel').innerText = "1=" + settings.key.minorScaleName + "(min)";
}
「→ココの部分」でも以下の初期表示時のオリジナルキー設定時に行っているdocument.getElementsByName("keyselect")を加味してコードを設定しただけたらよいのかな、と思ってます。
#ただしコード名決める箇所とは符号が逆になるのかな?
164行目(ufletの場合)
if(webSiteName == "ufret"){
originalKey = new exports.Key(scale[(detectedKey.keyNo - Number(document.getElementsByName("keyselect")[0].value)+12)%12]);
}
のような。
ご検討いただけたら。