「VexFlow タブ譜 カッティング」の版間の差分
1,365行目: | 1,365行目: | ||
const Guitar2_Tab2 = new Stave(Guitar2_Tab1.width + Guitar2_Tab1.x, Guitar2_Tab1.y, nStaveWidth).setContext(ctx); | const Guitar2_Tab2 = new Stave(Guitar2_Tab1.width + Guitar2_Tab1.x, Guitar2_Tab1.y, nStaveWidth).setContext(ctx); | ||
Guitar2_Tab2.draw(); | Guitar2_Tab2.draw(); | ||
const Guitar2_Tab2_1 = new Stave(Guitar2_Tab1.width + Guitar2_Tab1.x, Guitar2_Tab1.y, 0).setContext(ctx); | |||
Guitar2_Tab2_1.setBegBarType(VF.Barline.type.NONE); | |||
Guitar2_Tab2_1.setEndBarType(VF.Barline.type.NONE); | |||
Guitar2_Tab2_1.draw(); | |||
const Guitar2_tab_notes2_1 = [ | |||
dotted(new VF.StaveNote({ keys: ["g/4"], duration: "8d" })), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "8" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "16" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "8" }), | |||
new VF.StaveNote({ keys: ["g/4"], duration: "8" }), | |||
]; | |||
const Guitar2_tab_notes1_2 = [ | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
new VF.GhostNote({ keys: ["f/4"], duration: "16"}), | |||
]; | |||
const Guitar2_tab_St2_beam1_1 = new VF.Beam([Guitar2_tab_notes2_1[0], Guitar2_tab_notes2_1[1]]); | |||
const Guitar2_tab_St2_beam1_2 = new VF.Beam([Guitar2_tab_notes2_1[2], Guitar2_tab_notes2_1[3], Guitar2_tab_notes2_1[4]]); | |||
const Guitar2_tab_St2_beam1_3 = new VF.Beam([Guitar2_tab_notes2_1[5], Guitar2_tab_notes2_1[6], Guitar2_tab_notes2_1[7], Guitar2_tab_notes2_1[8]]); | |||
const Guitar2_tab_St2_beam1_4 = new VF.Beam([Guitar2_tab_notes2_1[9], Guitar2_tab_notes2_1[10]]); | |||
UniqueIds = getUniqueNoteheadIds(Guitar2_tab_notes2_1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); | |||
allUniqueIds = updateAllUniqueIds(UniqueIds); | |||
var Guitar2_tab_St2_1Voice = new Vex.Flow.Voice({ num_beats: 4, beat_value: 4 }); | |||
Guitar2_tab_St2_1Voice.setStrict(true); | |||
Guitar2_tab_St2_1Voice.addTickables(Guitar2_tab_notes2_1); | |||
var Guitar2_tab_St2_2Voice = new Vex.Flow.Voice({ num_beats: 4, beat_value: 4 }); | |||
Guitar2_tab_St2_2Voice.setStrict(true); | |||
Guitar2_tab_St2_2Voice.addTickables(Guitar2_tab_notes2_2); | |||
var formatterGuitar2_tab_St2_1 = new Vex.Flow.Formatter().joinVoices([Guitar2_tab_St2_2Voice, Guitar2_tab_St2_1Voice]); | |||
formatterGuitar2_tab_St2_1.format([Guitar2_tab_St2_2Voice, Guitar2_tab_St2_1Voice], nStaveWidth - 40 - 10); | |||
Guitar2_tab_St2_1Voice.draw(ctx, Guitar2_Tab2_1); | |||
Guitar2_tab_St2_2Voice.draw(ctx, Guitar2_Tab2_1); | |||
Guitar2_tab_St2_beam1_1.setContext(ctx).draw(); | |||
Guitar2_tab_St2_beam1_2.setContext(ctx).draw(); | |||
Guitar2_tab_St2_beam1_3.setContext(ctx).draw(); | |||
Guitar2_tab_St2_beam1_4.setContext(ctx).draw(); | |||
shiftGuitar2_Tab2 = addShift( | |||
Guitar2_tab_notes2_1, | |||
[0, 1, 2, 3, 4, 6, 7, 8, 9, 10], | |||
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4] | |||
); | |||
const Guitar2_Tab3 = new Stave(Guitar2_Tab2.width + Guitar2_Tab2.x, Guitar2_Tab2.y, nStaveWidth).setContext(ctx); | const Guitar2_Tab3 = new Stave(Guitar2_Tab2.width + Guitar2_Tab2.x, Guitar2_Tab2.y, nStaveWidth).setContext(ctx); |
2024年4月9日 (火) 23:42時点における版
VexFlow 使い方に戻る。
概要
カッティングには一弦カッティングと複数弦カッティングがあります。奏法としては、弦の上に指を触れた状態で弦をピッキングするものです。カチャカチャとした音ですが、エフェクターを使うとさらに表現の幅が広がる音でもあります。タブ譜では、複数弦カッティングのときには大きなバツ印と符棒と符旗でリズムを指定します。一弦カッティングのときはカッティングするべき弦にバツ印をつけ、リズムは符棒と符旗で指定します。指の触れるポジションで多少、音の響きが違うのですが、ポジションの指定は通常ありません。前後のコードフォームを維持する場合もあれば、ギューンというような感じのカッティングでは、スライドしながらであったり、一瞬ポジションを低くしたり高くするカッティングもあります。音の指定はありませんので、実際に作曲者が演奏しているものをまねるのが正しいということになります。
ちなみに「散歩道」のギターソロの裏でやってるGuitar2とかDrumとかとはまったく無関係の採譜です。こんな楽譜だったら、Guitar2は邪魔でしかない。
タブ譜 カッティング
コードは以下のとおりです。
<div id="yonet202403Mid_Output01"></div>
<script>
</script>
VexFlow 使い方に戻る。