On 20 November 2017 at 15:18, David Kastrup <d...@gnu.org> wrote:

> Gianmaria Lari <gianmarial...@gmail.com> writes:
>
> > On 20 November 2017 at 12:00, David Kastrup <d...@gnu.org> wrote:
> >
> >> Gianmaria Lari <gianmarial...@gmail.com> writes:
>
> >> > Is there any (simple) way to rewrite it in a more concise way like
> >> > this for example?
> >> >
> >> >   \repeat unfold 7 {
> >> >     \modalTranspose c "c+index" \scale \pattern
> >> >   }
> >>
> >> What is simple?
> >>
> >> \version "2.18.0"
> >>
> >> scale = {c d e f g a b}
> >> pattern = {c d e f}
> >>
> >> \fixed c' {
> >>   #@(map
> >>       (lambda (p)
> >>         #{ \modalTranspose c #(ly:make-pitch -1 p) \scale \pattern #})
> >>       (iota 8))
> >> }
> >
> > Thank you David, it works perfectly!
> >
> > Is there any way to encapsulate it in a function to avoid to write all
> the
> > code any time I need it?
>
> What is "all the code"?  I really have no idea what makes you consider
> something simple (and your "explanation" below does not help at all
> since it is tantamount to "simple depends on the viewer's metrics").
> I also have no idea what part of the above you consider "it" to be
> encapsulated and what you consider variable.
>
> > Regarding "simple". Never think seriously about what I mean with
> "simple".
> > Maybe:
> >
> > Suppose that you know well how to informally solve a problem.  Now
> > suppose you have to describe your solution in a formal and algorithmic
> > way.
> >
> > Between many formal solution I would say that the simplest one is that
> one
> > that better overlap the informal solution.
> > g.
>
> --
> David Kastrup
>

I'm sorry I have not been clear. If you have a look to the following source
you'll see that the same code is repeated three times (only the variable
'pattern' changes).

\version "2.18.0"
scale = {c d e f g a b}

pattern = {c d e f}
\fixed c' {
  #@(map
      (lambda (p)
        #{ \modalTranspose c #(ly:make-pitch -1 p) \scale \pattern #})
      (iota 8))
}

pattern = {f e d c}
\fixed c' {
  #@(map
      (lambda (p)
        #{ \modalTranspose c #(ly:make-pitch -1 p) \scale \pattern #})
      (iota 8))
}

pattern = {a c e g}
\fixed c' {
  #@(map
      (lambda (p)
        #{ \modalTranspose c #(ly:make-pitch -1 p) \scale \pattern #})
      (iota 8))
}


I was wondering if it was possible to to avoid this redundancy.

And yes, forgot what I tried to define as simpler. In this case it only
makes things more complicated...
Thank you, g.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to