Re: [frogs] Enhancement: string bends (issue216051) |
[ Thread Index |
Date Index
| More lilynet.net/frogs Archives
]
- To: Neil Puttock <n.puttock@xxxxxxxxx>
- Subject: Re: [frogs] Enhancement: string bends (issue216051)
- From: Marc Hohl <marc@xxxxxxxxxx>
- Date: Sun, 21 Feb 2010 10:47:15 +0100
- Cc: frogs@xxxxxxxxxxx, reply@xxxxxxxxxxxxxxxxxxxxxxxxxx
- Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1266745638; l=4196; s=domk; d=hohlart.de; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References: Subject:CC:To:MIME-Version:From:Date:X-RZG-CLASS-ID:X-RZG-AUTH; bh=VPXwfcvrH7GOdff62eqoX6YaiyQ=; b=TapSYgHFX7qsr6wg2XIWEeTKREOxyA597eBTbtkqK9+N3WCvJUG24qOhwbwVPrCSSxu 3NS1+1Rn423iJdgI5UB6KA4sCiIBy/ECx6NayqVKCkEPHugoepmPLv1IFn46DBYRC4DCM 4g0BT0n0wYtBt6HAsTDciQ2iMa3D0OylnSk=
Neil Puttock schrieb:
On 20 February 2010 18:34, Marc Hohl <marc@xxxxxxxxxx> wrote:
I don't know whether you followed the discussion between Carl and me
closely,
I tried to, though it was difficult keeping up. :)
Yes, for me too.
but we ended up making \bend an *articulation* of a note (I wanted to use
\bend
as a spanner, but Carl convinced me not to do so). The main advantage is
- as far as I can see - that it is possible to play intermediate notes
between two
bent notes by using the string information without explicitly creating
spanners
which would mean to use separate voices for each separate string involved.
But you're bending (sorry :) the implementation of the (much simpler)
String_bend_engraver to suit features you require for a TabStaff,
which seems to me an unnecessary complication.
I don't think so.
First, the String_bend_engraver will mostly be used in guitar-like
situations
and in combination with a Tab Staff. Second, since it is important for
the player to know
which string (s)he should bend, this information has to be in the input
file as well.
I definitely think you'd be better off using a music function to
delimit the start and end points, then you can send individual
string-bend-events as required (either directly in the music function,
or via an iterator).
Carl and I went through the whole story by trying to code some of
David Stocker's examples in the (not yet implemented) bend input
method, and the "articulation way" seemed to be the best solution.
At first sight, I thought about bends as simple spanners between two notes,
but as you can hold one string in a bent state, play another string,
then pluck the
still bent string and do some more complicated stuff, we'll have to separate
different bend situations (which may happen simultaneously) by the string
on which they happen.
Then, semantically, a bend is some information about the style in which the
the note is played, therefore an articulation. You can pre-bend a string,
pluck it and dampen it again, so it will sound like a normal tone, but it is
handled in a special way, therefore articulated differently.
Another point is the simplicity of the usage. If you don't have chord
constructs,
you can type c4 d\bend and get a bend from c to d. In cases where more
than one string
is affected, the syntax is the same:
< c\2 e\1 >4 f\1\bend
e4\1 <c\2 f\1\bend>
or even
<c\2 e\1 >4 < d\2\bend f\1\bend>
(note that the bend amounts differ for the two strings!)
And coding hold-bend situations is easy:
c8\2 d\1 d\2\bend d\1 d\2\bend d1 \d2\bend
Here, the engraver should take care of the different strings for drawing the
spanners, so it needs the detailed information.
Does this influence the performance very much? The engraver looks for a
bend-event and saves a pitch information when there is none, otherwise
he draws the bend.
Probably not.
I pushed the patch as a discussion platform and furthermore, I want to
archieve consensus before going further - I don't want to write an engraver
if it is
then told I should do it the other way.
What other way?
You'll definitely have to write an engraver in C++, since it won't be
possible using a scheme engraver (you can't set spanner bounds in
scheme).
I didn't mean doing it in scheme, but as I am very unsure about and slow in
writing stuff in C++, I want to be sure I am on the right track, i.e.
got the
right structures and algorithms before I start coding. For smaller projects
or in cases where I am familiar with the language, I can work the other way
though: hacking some lines, test it, dump it and start from scratch etc.,
but in bigger projects, I like to know (nearly) exactly what to do
before I start.
So I want to get the input structure ready before starting on the
engraver, so I didn't
have to rewrite everything from scratch because I missed something
essential.
I know this slows things down, but that's the way I feel most comfortable.
Thanks,
Marc
Regards,
Neil
---
----
Join the Frogs!