luis jure wrote:
... chords with some non-standard notation ... i'd be very grateful for any pointers.

This an old annoyance [1]. You could try using my besideCN and replaceCN. See stencilCN.ly for recent code and a demo. Make sure you update it to your lilypond version. [2]

Two examples:
\besideCN #RIGHT "[6-7]" bes2 \replaceCN \markup "c]" c1

You can try appending dashes as in ".9/[a - -" , but these overrides can't make them spread out automatically as a proper spanner would do it.

Cheers, Robin

[1] http://lists.gnu.org/archive/html/lilypond-user/2009-03/msg00016.html [2] http://lists.gnu.org/archive/html/lilypond-user/2012-05/msg00857.html
\version "2.12.0"

%schemeIndentOn
besideCN = #(define-music-function (parser location where what) (integer? string?) 
  #{\once \override ChordNames.ChordName #'stencil = #(lambda (grob) 
      (let* (
        (whatlen (string-length $what))
        (clamped (lambda (index) (cond ((< index 0) 0) 
          ((> index whatlen) whatlen) (else index))))
        (split (clamped (cond 
          ((negative? $where) (+ $where whatlen 1)) 
          ((positive? $where) (- $where 1))
          (else (quotient whatlen 2)))))
        (insert (lambda (i-side i-text) ; (integer? string?) 
          (if (> (string-length i-text) 0)
            (ly:grob-set-property! grob 'text 
              (markup #:put-adjacent 0 i-side 
                (ly:grob-property grob 'text) i-text))))))
        (if (and (= $where CENTER) (odd? whatlen)) 
          (insert -1 (substring $what split (+ split 1))))
        (insert -1 (substring $what 0     split   )) 
        (insert  1 (substring $what split whatlen )))
      (ly:text-interface::print grob)) 
  #}) 

replaceCN =  #(define-music-function (parser location new) (markup?) 
  #{\once \override ChordNames.ChordName #'stencil = 
  #(lambda (grob) (grob-interpret-markup grob $new)) #}) 
%
%schemeIndentOff

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


sharpadj = \markup { \translate #'(0.0 . 0.5) \fontsize #-1 \sharp }
flatadj = \markup { \translate #'(0.2 . 0.2) \fontsize #-1 \flat }

nullCN = \replaceCN \markup \null

slash = \markup { \bold \fontsize #1 \char ##x2044 } % fraction
slashCN = \replaceCN \slash

percent = \markup { \bold \fontsize #1 \char ##x066A } % arabic
percentCN = \replaceCN \percent
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

harmonies = \chordmode { 
  f1:maj 
  \besideCN #LEFT "(  " e2:m5-.7  
  \besideCN #RIGHT "  )" a2:7 
  d1:m 
  \besideCN #CENTER "( )" gis1:7 % a middle character is used twice
  \bar "||" \break
  \besideCN #-1 "beside" a1 % i.e. #LEFT
  \besideCN #-2 "beside" a1 
  \besideCN #-3 "beside" a1 
  \besideCN #-4 "beside" a1 
  \bar "||" \break
  bes2:m 
  \replaceCN \markup \line { "/A" \flatadj } bes2:m/aes % elide root as LSR776
  \replaceCN \markup { "F" \small "phryg" } bes4:m/f % rename
  \nullCN bes4:m/f \slashCN bes4:m/f \slashCN bes4:m/f % strum beats
  \nullCN bes2:m/f \percentCN bes2:m/f % simile
  \bar "||" 
}

<<
  \new ChordNames { \set chordChanges = ##f \harmonies }
  \new Staff { \repeat unfold 22 r2 }
>>

\paper {
  indent = 0\mm
  line-width = 160\mm - 2.0 * 0.4\in
  line-width = #(- line-width (* mm  3.000000))
}

\layout {  }

% chordnames can collide: 
% http://lists.gnu.org/archive/html/lilypond-user/2011-06/msg00232.html

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to