lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Staff customization question.


From: Paul Morris
Subject: Re: Staff customization question.
Date: Tue, 5 Jan 2016 11:13:52 -0500

> On Jan 5, 2016, at 11:03 AM, Hwaen Ch'uqi <address@hidden> wrote:
> 
> Yes, I had seen this snippet before. It appears though that this
> function assumes a certain regularity - i.e., by semitones, whole
> tones, etc. In this case, the intervals between pitches are not
> uniform, varying from minor seconds to major thirds. Will this take a
> list of numbers to define each line and space? If so, can I simply
> plug in a series of numbers, or must they be surrounded by parentheses
> and a hash or something? I am quite nervous with Scheme!

For your use-case I would just use a lookup-table (alist) that maps semitones 
to staff positions, as shown in the snippet below.

HTH,
-Paul


\version "2.18"

#(define (my-procedure pitch)
   (let
    ;; get the semitone of the pitch
    ((semitone (ly:pitch-semitones pitch))
     ;; lookup-alist maps semitones to positions on the staff
     (lookup-alist
      '((0 . 0)
        (2 . 3)
        (4 . 6)
        (5 . 9)
        ;; ...edit and add more here as needed
        )))
    ;; for development / debugging to see what semitones you are working with
    (display semitone)(newline)
    ;; lookup the position and return the position that goes with it
    (assoc-ref lookup-alist semitone)))

\new Staff \with {
  staffLineLayoutFunction = #my-procedure
} {
  c'4 d' e' f’
}







reply via email to

[Prev in Thread] Current Thread [Next in Thread]