App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/res/abc/abc2svg/mdnn-1.js view on Meta::CPAN
} else if (nn < prev_oct) {
abc.dh_put('c', s, note)
prev_oct = nn
}
// half and whole notes
if (s.dur >= C.BLEN / 2)
abc.dh_put(s.dur >= C.BLEN ? 'w' : 'h', s, note)
// accidentals
a = note.acc
if (a) {
note.acc = 0
nn = abc2svg.mdnn.cde2fcg[(p + 5 + 16 * 7) % 7] - sf
if (a != 3)
nn += a * 7
nn = ((((nn + 1 + 21) / 7) | 0) + 2 - 3 + 32 * 5) % 5
abc.dh_put(abc2svg.mdnn.acc_tb[nn], s, note)
}
// set the slurs and ties up
if (s.sls) {
for (i = 0; i < s.sls.length; i++)
s.sls[i].ty = C.SL_ABOVE
}
if (note.sls) {
for (i = 0; i < note.sls.length; i++)
note.sls[i].ty = C.SL_ABOVE
}
if (note.tie_ty != undefined)
note.tie_ty = C.SL_ABOVE
}
of()
}, // output_music()
set_fmt: function(of, cmd, param) {
if (cmd == "mdnn")
this.cfmt().mdnn = param
else
of(cmd, param)
}, // set_fmt()
// don't display the key signature at start of staff
set_pitch: function(of, last_s) {
of(last_s)
if (!last_s // first time
|| !this.cfmt().mdnn)
return
var C = abc2svg.C,
s = this.get_tsfirst()
if (s && s.next && s.next.type == C.KEY)
//fixme:nsk
delete s.next.k_a_acc
// s.next.a_gch = null
}, // set_pitch()
set_hooks: function(abc) {
abc.output_music = abc2svg.mdnn.output_music.bind(abc, abc.output_music)
abc.set_format = abc2svg.mdnn.set_fmt.bind(abc, abc.set_format)
abc.set_pitch = abc2svg.mdnn.set_pitch.bind(abc, abc.set_pitch)
Object.assign(abc.get_glyphs(), abc2svg.mdnn.glyphs)
Object.assign(abc.get_decos(), abc2svg.mdnn.decos)
abc.add_style("\n.bn {font-family:sans-serif; font-size:15px}")
}
} // mdnn
if (!abc2svg.mhooks)
abc2svg.mhooks = {}
abc2svg.mhooks.mdnn = abc2svg.mdnn.set_hooks
( run in 1.667 second using v1.01-cache-2.11-cpan-2398b32b56e )