[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lilypond-user
Subject:    Re: Expanding bowed arpeggios
From:       Olivier Biot <olivier.biot () gmail ! com>
Date:       2013-01-28 21:10:10
Message-ID: CAHz1FzL0hdy18kycoucoPE_OdhuzxiKUVpq6mWLdnffHDZDt9Q () mail ! gmail ! com
[Download RAW message or body]

On Mon, Jan 28, 2013 at 10:03 AM, David Kastrup <dak@gnu.org> wrote:

> Olivier Biot <olivier.biot@gmail.com> writes:
>
> > Many thanks for your help David!
> >
> > Having used it I realize that it works perfectly for my purpose, but
> > maybe others may want to add e.g. fingerings, cautionary accidentals,
> > articulations and dynamics to the arpeggiated output. That of course
> > won't work with the current code for "arpeggiate" since I only look at
> > the notes.
> >
> > Imagine the following naive (not functional) snippet:
> >
> > \arpeggiate 16 c-< g'-1 b'!-3 f'-4-\!
> >
> > Ideally it would render the fingering either to the far left of the
> > arpeggio, or e.g. above each single note of the arpeggiated chord in
> > the first half (avoiding fingering repetitions).
> >
> > How could that be addressed?
>
> That involves, apart from the \relative aspect, deconstructing the above
> expression and synthesizing a new one from it.  There are no convincing
> user-level tools for deconstruction of a music expression short of
> picking everything apart in Scheme via ly:music-property and its ilk.
>
> There is some half-Scheme approach called with-music-match in the
> display-lily code.  Turning this into a proper and usefully powerful
> method working with LilyPond syntax templates, possibly combining it
> with the pattern-matching module available for GUILE would be an
> interesting task.
>
> But without a well-accessible more general transformation tool, I don't
> really see a real user-accessible solution that would not start from
> single pitches, thus not needing to deconstruct anything.
>

Thank you for explaining the complexity of my naive request. I apparently
managed to write a challenging trick question :-)

I suppose that, to get such a construct to work, one needs to:
1. change the argument type in 'arpeggiate' from 'ly:pitch' to something
else (maybe ly:music?)
2. separate "notes" (pitch & duration maybe) from their "extra"
(articulations, dynamics, fingerings, script etc).
3. do the relative / absolute pitch magic with 'make-relative'
4. reattach the "extra" bits to the right notes in 'arpeggiate'

Another approach could be to overlay the "extra" on the output of the
'arpeggiate' macro, similar to the 'changePitch' macro from LSR (
http://lsr.dsi.unimi.it/LSR/Item?id=654).

Thirdly, these "extra" bits could be provided as arguments of the
'arpeggiate' macro.

I don't think I can make any of the above work though :)

Best regards,

Olivier

[Attachment #3 (text/html)]

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 28, 2013 \
at 10:03 AM, David Kastrup <span dir="ltr">&lt;<a href="mailto:dak@gnu.org" \
target="_blank">dak@gnu.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" \
style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex">

<div class="im">Olivier Biot &lt;<a \
href="mailto:olivier.biot@gmail.com">olivier.biot@gmail.com</a>&gt; writes:<br> <br>
&gt; Many thanks for your help David!<br>
&gt;<br>
&gt; Having used it I realize that it works perfectly for my purpose, but<br>
&gt; maybe others may want to add e.g. fingerings, cautionary accidentals,<br>
&gt; articulations and dynamics to the arpeggiated output. That of course<br>
&gt; won&#39;t work with the current code for &quot;arpeggiate&quot; since I only \
look at<br> &gt; the notes.<br>
&gt;<br>
&gt; Imagine the following naive (not functional) snippet:<br>
&gt;<br>
&gt; \arpeggiate 16 c-&lt; g&#39;-1 b&#39;!-3 f&#39;-4-\!<br>
&gt;<br>
&gt; Ideally it would render the fingering either to the far left of the<br>
&gt; arpeggio, or e.g. above each single note of the arpeggiated chord in<br>
&gt; the first half (avoiding fingering repetitions).<br>
&gt;<br>
&gt; How could that be addressed?<br>
<br>
</div>That involves, apart from the \relative aspect, deconstructing the above<br>
expression and synthesizing a new one from it.  There are no convincing<br>
user-level tools for deconstruction of a music expression short of<br>
picking everything apart in Scheme via ly:music-property and its ilk.<br>
<br>
There is some half-Scheme approach called with-music-match in the<br>
display-lily code.  Turning this into a proper and usefully powerful<br>
method working with LilyPond syntax templates, possibly combining it<br>
with the pattern-matching module available for GUILE would be an<br>
interesting task.<br>
<br>
But without a well-accessible more general transformation tool, I don&#39;t<br>
really see a real user-accessible solution that would not start from<br>
single pitches, thus not needing to deconstruct \
anything.<br></blockquote><div><br></div></div>Thank you for explaining the \
complexity of my naive request. I apparently managed to write a challenging trick \
question :-)<br>

<br>I suppose that, to get such a construct to work, one needs to:<br></div><div \
class="gmail_extra">1. change the argument type in &#39;arpeggiate&#39; from \
&#39;ly:pitch&#39; to something else (maybe ly:music?)<br></div>

<div class="gmail_extra">2. separate &quot;notes&quot; (pitch &amp; duration maybe) \
from their &quot;extra&quot; (articulations, dynamics, fingerings, script etc).<br>3. \
do the relative / absolute pitch magic with &#39;make-relative&#39;<br>

4. reattach the &quot;extra&quot; bits to the right notes in \
&#39;arpeggiate&#39;<br><br></div><div class="gmail_extra">Another approach could be \
to overlay the &quot;extra&quot; on the output of the &#39;arpeggiate&#39; macro, \
similar to the &#39;changePitch&#39; macro from LSR (<a \
href="http://lsr.dsi.unimi.it/LSR/Item?id=654">http://lsr.dsi.unimi.it/LSR/Item?id=654</a>).<br>


<br></div><div class="gmail_extra">Thirdly, these &quot;extra&quot; bits could be \
provided as arguments of the &#39;arpeggiate&#39; macro.<br><br></div><div \
class="gmail_extra">I don&#39;t think I can make any of the above work though :)<br>

<br></div><div class="gmail_extra">Best regards,<br><br>Olivier<br></div></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic