Hello Omid, Of course this can also be done. Cheers, Valentin Am Dienstag, 25. Jänner 2022, 18:45:54 CET schrieb Omid Mo'menzadeh: > Wow! Although I'd want to have the two dots vertically aligned, this great > help! I really wanted to know how to use expression marks on text, and the > Ttablature format code is nice to have as an example for similar situations. > Thank you so much. > > On Tue, Jan 25, 2022 at 1:31 PM Valentin Petzel <[email protected]> wrote: > > Hello Omid, > > > > Maybe something like this could work. > > > > Cheers, > > Valentin > > > > Am Montag, 24. Jänner 2022, 20:56:11 CET schrieb Omid Mo'menzadeh: > > > Hello all. > > > I am trying to create some sort of tablature for Kalimba, treating it > > > > like > > > > > a one-string instrument with fret-labels. I want to use letters like c, > > > > ċ, > > > > > ċ̇ (or c𐽉), etc. I figured there are Unicode characters to do exactly > > > that, "combining dot above" and "combining two dots above", etc. > > > However, > > > LilyPond does not seem to be able to render "combining two dots above", > > > > and > > > > > two "combining dot above" characters (rendered correctly by my browser, > > > > as > > > > > well as Emacs) result in the two dots to be rendered almost on top of > > > > each > > > > > other in LilyPond. I have attached a rather minimal example. > > > > > > I would appreciate any other solutions to this problem, or a way to fix > > > > the > > > > > rendering issue. > > > > > > Thanks everyone.
%%% minimal example start \version "2.22.1"
notes = \relative c' {
\time 3/4
c c' c' |
}
#(define (normalize-pitch pitch)
(let* ((octave-r (ly:pitch-octave pitch))
(nn-r (ly:pitch-notename pitch))
(octave (+ octave-r (quotient nn-r 7)))
(nn (modulo nn-r 7))
(alt (ly:pitch-alteration pitch)))
(if (< alt -1/2)
(normalize-pitch (ly:pitch-transpose pitch (ly:make-pitch 0 -1 1/2)))
(if (> alt 1/2)
(normalize-pitch (ly:pitch-transpose pitch (ly:make-pitch 0 1 -1)))
(if (= alt 1/2)
(if (or (= nn 2) (= nn 6))
(normalize-pitch (ly:pitch-transpose pitch (ly:make-pitch 0 1 -1)))
(ly:make-pitch octave nn alt))
(if (= alt -1/2)
(if (or (= nn 3) (= nn 0))
(normalize-pitch (ly:pitch-transpose pitch (ly:make-pitch 0 -1 1/2)))
(ly:make-pitch octave nn alt))
(ly:make-pitch octave nn alt)))))))
#(define (transpose-by-semitone pitch st)
(normalize-pitch (ly:pitch-transpose pitch (ly:make-pitch 0 0 (/ st 2)))))
#(define (fret-letter-tablature-format-kalimba context string-number fret-number)
(let* ((string-tuning (list-ref (ly:context-property context 'stringTunings) (1- string-number)))
(pitch (transpose-by-semitone string-tuning fret-number))
(root (make-translate-scaled-markup '(0 . -0.5) (note-name->markup pitch #t)))
(dotc (quotient fret-number 12))
(dotm (markup #:with-dimensions '(0 . 0) '(0 . 0) #:center-align #:pattern dotc Y 0.02 #:musicglyph "scripts.staccato"))
(comb-mu (markup #:override '(direction . 1) #:override '(baseline-skip . 0.8) #:dir-column (#:center-align root dotm))))
comb-mu))
\score {
<<
\new StaffGroup = "tab with traditional" <<
\new Staff = "standard" \with {
midiInstrument = "kalimba"
instrumentName = "Kalimba"
} <<
\clef "treble"
\context Voice = "music" \notes
>>
\new TabStaff = "tab" \with {
stringTunings = \stringTuning <c'>
tablatureFormat = #fret-letter-tablature-format-kalimba
} <<
\tabFullNotation
\context TabVoice = "tab" \notes
>>
>>
>>
}
%%% minimal example end
signature.asc
Description: This is a digitally signed message part.
