Position fingerings for diatonic accordion that include button name (not just finger)

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Position fingerings for diatonic accordion that include button name (not just finger)

Mojca Miklavec
Hello,

I'm relatively new to lilypond (and new to diatonic accordion).

I would eventually like to add more automation to write scores for accordion, but I need to start somewhere where I can at least get the desired output.

I would like to make a "fingering" sign above every single pitch, but I want to include the marking of the button that has to be pressed, not just the finger number.

Here's an example[1] of the type of scores I would want to typeset (except that these only mention the button name without the finger number):
 


Lilypond seems to support fingering with an easy syntax:

\version "2.18.2"
\relative c' {
  \key f \major
  { f4-2 a-3 c-4 e-5 |
    <<f,1-2 a-3>> |
    <<f2-2 a-3>>
    <<f2\finger\markup{"2/B5"} a\finger\markup{"3/B6"}>>
  }
}

but the problem is that adding the button name seems non-trivial (I would probably have to figure out how to properly change the font) and might shift the label.

I want to keep all fingering marks (and button names) in the same row / at the same height. There might of course be a different number of fingers required in which case the bottom ones should remain in the same line and the others should stack on top.

Here's my first naive attempt:

\version "2.18.2"
\relative c' {
  \textLengthOn
  \key f \major
  { f4^\markup { "2.B4" }
    a^\markup { "3.B5" }
    c^\markup{ "4.B6" }
    e^\markup { "5.B7" } |
    <<f,1^\markup { \dir-column { "2.B4" "3.B5" } } a>> |
    <<f2^\markup { \dir-column { "3.B5" "2.B4" } } a>>
  }
}

but it looks awful because the marking are jumping up and down (at least it's slightly better with \textLenghtOn than without it) when I would actually want to have them nicely aligned.

It would certainly be better to have a clear separation between the finger number and button name, like a different font or colour for finger number (current font for finger number is perfect, but button name probably needs a different one). But that is secondary, I first need to figure out how to align them properly. I would like to keep the two (finger number, button number) next to each other, possibly separated with a dash/dot/slash or something similar.

Maybe I could add those markings as some kind of a "separate voice", similar to lyrics, only on top?

I saw
    http://lilypond.org/doc/v2.18/Documentation/learning/moving-objects
but I'm too fresh to understand what it's suggesting me to do.

I would be grateful for any hints about how to achieve best results for what I want to do.

Thank you very much,
    Mojca

PS: Please CC me.

[1] from L. Slak: Čebelar


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

David Kastrup
Mojca Miklavec <[hidden email]> writes:

> I'm relatively new to lilypond (and new to diatonic accordion).

Slovenia is a nice area to be in for diatonic accordion, though.

> I would eventually like to add more automation to write scores for
> accordion, but I need to start somewhere where I can at least get the
> desired output.

The automation currently available for diatonic accordion sucks (not
even sucks and blows).

There is a quasi-ancient example in the manual at
<URL:http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-score-for-diatonic-accordion>.
The input to use with that template is dissatisfactory, but you were
asking about the output first.  And while Guile/Scheme is not the same
as Lua, it's certainly a good tool to program input transformations in.

> Here's an example[1] of the type of scores I would want to typeset (except
> that these only mention the button name without the finger number):

Your example is not present in the plain text rendition of the mail,
consequently few people on the list will see it.  Try doing a proper
Mime attachment, preferably as an in-line part.  In general, avoid HTML
mails to the list: many people will not be able to read them and the
list archives will usually not archive them well.

I'd have extracted the image for the sake of other readers but cannot
really figure out how to do this from in-buffer rendered HTML inside of
Emacs.

If you are willing to invest some time (and prod the list for help for
individual problems: there are a lot of very helpful people and capable
around here) I am pretty sure that LilyPond can get a lot better for
diatonics than it is now.  I never got around to investing more time
here myself (and play exclusively chromatic button accordion these
days), but there is quite a lot of potential for good return on moderate
investment of time.

As an initial keyword to look for: you'll want to go with a ChordNames
context or Lyrics for aligned material I think.  I'd suggest taking a
look at the example in the manual I gave first and see whether its
approach is suitable for adapting to your needs.

Nice to see you here!

David

--
David Kastrup

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Mojca Miklavec
On 9 July 2016 at 13:25, David Kastrup wrote:

> Mojca Miklavec writes:
>
>> I'm relatively new to lilypond (and new to diatonic accordion).
>
> Slovenia is a nice area to be in for diatonic accordion, though.
>
>> I would eventually like to add more automation to write scores for
>> accordion, but I need to start somewhere where I can at least get the
>> desired output.
>
> The automation currently available for diatonic accordion sucks (not
> even sucks and blows).
:)

> There is a quasi-ancient example in the manual at
> <URL:http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-score-for-diatonic-accordion>.

Thank you. This is a super complex example that I'm unable to
interpret (I would have no idea how to play it before studying it for
a while), but it might become clearer what I want to achieve with the
attachment. I hope that the attached PNG will be OK now. (I never put
images inline and initially wanted to provide an URL to some scores,
but the image on the URL might disappear and the notes for beginners
suggested to add an image next to the minimal example.)

>> Here's an example[1] of the type of scores I would want to typeset (except
>> that these only mention the button name without the finger number):
>
> Your example is not present in the plain text rendition of the mail,
> consequently few people on the list will see it.  Try doing a proper
> Mime attachment, preferably as an in-line part.

I'm really sorry, see above. I'm attaching it now. I'm not sure what
an "in-line part" means though.

> In general, avoid HTML
> mails to the list: many people will not be able to read them and the
> list archives will usually not archive them well.

I always use plain text, but here I screwed up when trying to add an
inline image.

> If you are willing to invest some time (and prod the list for help for
> individual problems: there are a lot of very helpful people and capable
> around here) I am pretty sure that LilyPond can get a lot better for
> diatonics than it is now.

I also have an impression that there are as many different writing
notations as there are teachers :) :) :)

But the example in attachment is a good compromise that allows piano
players as well as either type of accordion player (those who prefer
reading the usual score and those who prefer just counting buttons) to
follow and I see it used here pretty often.

> but there is quite a lot of potential for good return on moderate
> investment of time.

I hope so :)

> As an initial keyword to look for: you'll want to go with a ChordNames
> context or Lyrics for aligned material I think.

OK, ChordNames might work.

It won't allow for the super intuitive writing because then durations
have to be specified twice. It would be more sensible to combine the
"Chord" with the "pitch", but the Chords might be a good start.

I'm still a bit confused though about how Chords work.

Yes, I will need signs for directions (push/pull) etc., but the
following snippet could be a better minimal starting point for me:

http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-single-staff-template-with-notes-lyrics-chords-and-frets

But the example requires specifying real chords. How could I write
   B3 (with finger 1)
without any real meaning or something like
   1.B3
instead of "C"? Or a "stacked" example
    3.B5
    2.B4
in place of another chord?

> Nice to see you here!

Yes, we miss you a lot too at the Polish bonfires :)

Mojca

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user

cebelice.png (50K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

David Kastrup
Mojca Miklavec <[hidden email]> writes:

> On 9 July 2016 at 13:25, David Kastrup wrote:
>> Mojca Miklavec writes:
>>
>>> I'm relatively new to lilypond (and new to diatonic accordion).
>>
>> Slovenia is a nice area to be in for diatonic accordion, though.
>>
>>> I would eventually like to add more automation to write scores for
>>> accordion, but I need to start somewhere where I can at least get the
>>> desired output.
>>
>> The automation currently available for diatonic accordion sucks (not
>> even sucks and blows).
>
> :)
>
>> There is a quasi-ancient example in the manual at
>> <URL:http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-score-for-diatonic-accordion>.
>
> Thank you. This is a super complex example that I'm unable to
> interpret (I would have no idea how to play it before studying it for
> a while), but it might become clearer what I want to achieve with the
> attachment. I hope that the attached PNG will be OK now. (I never put
> images inline and initially wanted to provide an URL to some scores,
> but the image on the URL might disappear and the notes for beginners
> suggested to add an image next to the minimal example.)
Ok, the example is in a manner of "Griffschrift" which means that notes
between lines are in first row, notes on the lines are in second row,
notes with an x accidental before them are in third or fourth row when
written between/on lines respectively.  The middle line corresponds to
the "Gleichton" in second row.  The pull/draw convention seems similar
to your notation.

>> If you are willing to invest some time (and prod the list for help
>> for individual problems: there are a lot of very helpful people and
>> capable around here) I am pretty sure that LilyPond can get a lot
>> better for diatonics than it is now.
>
> I also have an impression that there are as many different writing
> notations as there are teachers :) :) :)

Yes.

> But the example in attachment is a good compromise that allows piano
> players as well as either type of accordion player (those who prefer
> reading the usual score and those who prefer just counting buttons) to
> follow and I see it used here pretty often.

Since it isn't actually a Griffschrift but rather a normal score plus
additional information, it should actually be easier to target than most
other diatonic accordion notations.

>> but there is quite a lot of potential for good return on moderate
>> investment of time.
>
> I hope so :)
>
>> As an initial keyword to look for: you'll want to go with a ChordNames
>> context or Lyrics for aligned material I think.
>
> OK, ChordNames might work.
>
> It won't allow for the super intuitive writing because then durations
> have to be specified twice. It would be more sensible to combine the
> "Chord" with the "pitch", but the Chords might be a good start.
Ok.  It is correct that right now the \lyricsto mechanism is only
available for Lyrics.  It does not make much sense to combine it with
straightforward music since it basically just controls when notation
elements appear on the page but not what it looks like.  So when you'd
use this mechanism with normal music, the notes would be arranged in the
correct visual distance but would look like before the rearrangement.

However, it is true that ChordNames and NoteNames contexts (and a few
other less likely candidates) could reasonably make use of the same
mechanism.

A quick check turns out


\version "2.19.44"

\layout {
  \context {
    \NoteNames
    \alias "Lyrics"
  }
}

<<
  \new Voice = "melody" \fixed c'
  {
    c4. g,8 c b,16 c cis d dis e f4. e8 d
  }
  \new NoteNames \lyricsto "melody" {
    \notemode {
      c g c b s cis s dis s f s d
    }
  }
>>


so there are manners of cheating even the current code base into doing
synchronization work for non-lyrics.

> I'm still a bit confused though about how Chords work.

Welcome to the club.  The basic operation of LilyPond is "iterating"
music expressions within some "context".  "iteration" means converting
the elements of the music expression into "stream events" which are sent
to all contexts in a context hierarchy in the order and under control of
music timing.  Every context has a number of "engravers" listening for
specific events and reacting by creating graphical objects, "grobs",
which in turn can be listened for by engravers, given a graphical
appearance ("stencil") that is positioned on the page in relation to
other objects.

So a ChordNames context has a specific engraver that listens to note
events, collects all events at one point of time, figures out an
appropriate chord name for the collection of notes, creates a ChordName
grob that is placed in the proper place in the line of chords.

This mechanism for pulling pitches and making graphics for them can be
changed into something specific for your task.  However, we need
additional information because the assignment of buttons to notes is not
unique and also depends on push/pull.  So the question is how to get the
information there.

> Yes, I will need signs for directions (push/pull) etc., but the
> following snippet could be a better minimal starting point for me:
>
> http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-single-staff-template-with-notes-lyrics-chords-and-frets
>
> But the example requires specifying real chords. How could I write
>    B3 (with finger 1)
> without any real meaning or something like
>    1.B3
> instead of "C"? Or a "stacked" example
>     3.B5
>     2.B4
> in place of another chord?
Well, one can cheat by writing any old chord and then override the text,
like

    \tweak text "D2" c1

but writing code that does that would only make sense once one has
determined that chords are the best vehicle for faking this kind of
functionality on.

>> Nice to see you here!
>
> Yes, we miss you a lot too at the Polish bonfires :)

I have to make my visits at one time again.  It's just not a trivial
expense for me...

--
David Kastrup

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Werner LEMBERG
In reply to this post by Mojca Miklavec
>> Nice to see you here!
>
> Yes, we miss you a lot too at the Polish bonfires :)

Obviously, it's always the same folks lurking arond at the same
places...


   Werner

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Mojca Miklavec
In reply to this post by David Kastrup
On 9 July 2016 at 17:07, David Kastrup wrote:
> Mojca Miklavec writes:
>
> This mechanism for pulling pitches and making graphics for them can be
> changed into something specific for your task.  However, we need
> additional information because the assignment of buttons to notes is not
> unique and also depends on push/pull.  So the question is how to get the
> information there.

I wanted to leave that for later, but since you started asking in that
direction, let me explain how I imagine to do this (for now with an
external script because I don't understand enough of that weird
programming language used in Lilypond :).

I'm not sure whether there are any substantially different accordions
around the world (not that the instrument is really common elsewhere),
but here most accordions follow more or less the same pattern.

You can check
    http://www.harmonika.com/de/lieferbare-tonarten
    http://www.harmonika.com/en/tone-types
and pick a 3-row C-F-B (B = Hes), the most commonly used one and the
one for which almost all the scores are written, so the "default"
output would follow that one. (Some basses seem wrong / different than
here and the layout / number of buttons is a bit weird on that
picture, but let's ignore that for a moment.)

The outer row (the top one on the picture) is usually labeled A, the
middle row is B, the bottom row is C, counting starts from head to
knee (on that figure that means from right to left). The three dark
orientation buttons are A6 (c''/h'), B6 (c''/c''), C6 (f''/f'').

I would start by defining all the pitches corresponding to individual
buttons in both directions, so something like:

push:
A0=c A1=e A2=g A3=c' A4=e' A5=g' A6=c'' A7=...
B0=c B1=f B2=a B3=c' B4=f' B5=a' B6=c'' B7=...
C0=f C1=b[es] C2=d' C3=f' C4=b[es]' C5=d'' C6=f'' C7=...

pull:
A0=f A1=g A2=h A3=d' A4=f' A5=a' A6=h' A7=...
B0=e B1=b B2=c' B3=e' B4=g' B5=b[es]' B6=c'' B7=...
C0=a C1=es' C2=f' C3=a' C4=c'' C5=es'' C6=f'' C7=...

All other accordions are just transpositions of these (for example the
next most common one, B-Es-As, is two half-tones lower), something
that Lilypond should be able to handle with ease. But anyone learning
on another type (different tuning) of accordion would normally use the
same learning material and would play the music pressing exactly the
same buttons as on the other types of accordions (some bands bring 4-5
accordions to the concert, so that they can play different songs).

The mapping from buttons to pitches is unique (it's some kind of a
surjective function), but pitches can have different buttons. So I
would prefer to enter buttons rather than pitches (it is of course
possible that two players would press different buttons to play the
same scores, but usually one button is easier to reach).

I would like to enter the music like in the following "pseudocode"
(comments are just for explanation):

\accordionPush
% <bes'4 d''> played with fingers 2 and 3 on buttons C4 and C5
<(C4)4-2 (C5)-3> |
% <a'2 c''> played with fingers 3 and 4 on buttons B5 and B6
% c' played with finger 1 on button B3
<(B5)2-3 (B6)-4> (B3)4-1 |
<(B4)2-2 (B5)-3> <(C4)-2 (C5)-3> |
\accordionPull
% <a'2 c''> played with fingers 1 and 2 on buttons C3 and C4
% <e'4 g'> played with fingers 1 and 2 on buttons B3 and B4
<(C3)2-1 (C4)-2> <(B3)-1 (B4)-2> |
<(B4)2-2 (B5)-3>
...

So from <(C4)4-2 (C5)-3>:
- (C4) would make a lookup in the accordion definition table => bes'
- (C5) would make a lookup in the accordion definition table => d''
- Lilypond would then draw <bes'4 d''> with the following label placed
above the pitch:
        3/C5
        2/C4

Also:
- The font / color / separator between the finger number and button
name would be configurable.
- Finger number would be optional and could be left out.
- Many teaching materials intentionally mark just the first pitch in
the song, so that the student gradually learns to interpret the scores
himself without the aid. Sometimes the button markings are left out
when changing from push to pull or vice versa because the buttons
should stay pressed, but the pitch changes. So there should be some
way to avoid printing the button names just for some scores.
- It should be easy to create a midi or print out the "proper" scores
for a differently tuned accordion by simply transposing the pitches,
but leaving all button markings the same.

>> Yes, I will need signs for directions (push/pull) etc., but the
>> following snippet could be a better minimal starting point for me:
>>
>> http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-single-staff-template-with-notes-lyrics-chords-and-frets
>>
>> But the example requires specifying real chords. How could I write
>>    B3 (with finger 1)
>> without any real meaning or something like
>>    1.B3
>> instead of "C"? Or a "stacked" example
>>     3.B5
>>     2.B4
>> in place of another chord?
>
> Well, one can cheat by writing any old chord and then override the text,
> like
>
>     \tweak text "D2" c1
>
> but writing code that does that would only make sense once one has
> determined that chords are the best vehicle for faking this kind of
> functionality on.

To me, using something like
    ^\markup { \dir-column { "2.B4" "3.B5" } }
next to the pitch to get the output would make a lot more sense than
putting "fake chords" in a separate "layer". (Of course providing that
I could convince/configure the \markup to keep a constant
distance/height.)

Mojca

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Mojca Miklavec
In reply to this post by David Kastrup
On 9 July 2016 at 17:07, David Kastrup wrote:

> Mojca Miklavec writes:
>
>> On 9 July 2016 at 13:25, David Kastrup wrote:
>>> Mojca Miklavec writes:
>>>
>>>> I'm relatively new to lilypond (and new to diatonic accordion).
>>>
>>> Slovenia is a nice area to be in for diatonic accordion, though.
>>>
>>>> I would eventually like to add more automation to write scores for
>>>> accordion, but I need to start somewhere where I can at least get the
>>>> desired output.
>>>
>>> The automation currently available for diatonic accordion sucks (not
>>> even sucks and blows).
>>
>> :)
>>
>>> There is a quasi-ancient example in the manual at
>>> <URL:http://lilypond.org/doc/v2.18/Documentation/snippets/templates#templates-score-for-diatonic-accordion>.
I tried to reproduce the bold line from the example, but I need to dig
a bit further and get a better understanding of the code to be able to
do it.

I want just a thick line below the lyrics spanning the area where push
is required, no thin line elsewhere or anything else

So for a moment I just used "bow up" and "bow down" notation which I
found in one of the books I just bought.

>> But the example in attachment is a good compromise that allows piano
>> players as well as either type of accordion player (those who prefer
>> reading the usual score and those who prefer just counting buttons) to
>> follow and I see it used here pretty often.
>
> Since it isn't actually a Griffschrift but rather a normal score plus
> additional information, it should actually be easier to target than most
> other diatonic accordion notations.

I'm attaching two examples of a simple song. It's not exactly a
"minimal" example because I wanted to give the impression of how the
complete scores would look like.

Here are some of the suggested approaches:

=== ^\markup{} ===

PRO:
- The button name is written next to the pitch: this makes most sense.
CONTRA:
- I don't know how to align it vertically properly.


I tried to "play" with lilypond a bit further. I went ahead and read
the gentle introduction to Scheme and came up with
"overtext-na-planincah" (in attachment).

AA = #(define-event-function (parser location aButton aFinger) (markup? markup?)
  #{ ^\markup{ \with-color #(rgb-color 0.5 0 0) #aFinger \with-color
#(rgb-color 0 0 0.5) #aButton } #}
)

- I would like to use the function as '\AA{C3 1}' rather than '\AA
"C3" "1"', but don't know how to do it.
- The finger number should be optional and should be a number rather
than markup.

I can now use
    <<f4\AA "B4" "2" a\AA "B5" "3" >>
(the idea would be to "auto-generate" the "f" and "a" at some point,
but not just yet as I need to get the proper layout first).

This illustrates the same problem as I mentioned at the beginning
though: I'm unable to align the text vertically.

I saw references to "Voice.Fingering.padding" (section 5.2 Explaining
the Internals Reference) and "self-alignment-Y . 0", but I don't know
how to apply these or whether it makes any difference.


=== lyrics ===

In "na-planincah" I (mis)used the lyrics to typset button names.

PRO:
- nicely aligned vertically
CONTRA:
- super weird to enter when the song contains a mixture of one, two
and three fingers (the third finger in a single pitch would require
the third line of "lyrics", pontentially just for a single pitch)
- it would need some further tweaking of course

Ideally I should figure out how to make a horizontal line to denote a
push/pull, but if current marking stay, they should probably be
printed below finger notation / button names.

=== fingering ===

(adding "-<number>" to the pitch)

PRO:
- allows specifying the finger number (half of the task I want to achieve)
- nice default font :)
CONTRA:
- doesn't let me specify anything else but the finger number alone (or
at least I don't know how to add anything else)
- I don't know how to align it vertically

=== accords ===

I still didn't understand how to apply
    \tweak text "D2" c1

I also wasn't able to modify your attachment to suit my needs. In
particular, my attempts screwed up the lyrics (the lyrics was only
applied to pitch names; where names were missing, the lyrics would
skip the pitch).

I can imagine though that it might at some point be useful to support
output similar to
    http://sola-diatonicne-harmonike.com/wp-content/uploads/2015/05/IMEJ-ME-RADA-1-ex.jpg

Basically something similar to woodwind diagrams, drawing all the
buttons and coloring the buttons being pressed.

===

I'm open to suggestions for improvements.

(I will soon have to figure out how to automate the input, but that's
for another topic.)

Mojca

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user

na-planincah.ly (6K) Download Attachment
overtext-na-planincah.ly (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

David Kastrup
In reply to this post by Mojca Miklavec

Ok, I'm starting to get backlogged on my replies so I'll finish this one
first.

Mojca Miklavec <[hidden email]> writes:

> On 9 July 2016 at 17:07, David Kastrup wrote:
>> Mojca Miklavec writes:
>>
>> This mechanism for pulling pitches and making graphics for them can be
>> changed into something specific for your task.  However, we need
>> additional information because the assignment of buttons to notes is not
>> unique and also depends on push/pull.  So the question is how to get the
>> information there.
>
> I wanted to leave that for later, but since you started asking in that
> direction, let me explain how I imagine to do this (for now with an
> external script because I don't understand enough of that weird
> programming language used in Lilypond :).
>
> I'm not sure whether there are any substantially different accordions
> around the world (not that the instrument is really common elsewhere),

With regard to diatonic accordions, we only have the garmoshka in
Russia, the Basque trikitixa, the Swiss schwyzerörgeli, the Austrian
Styrian harmonica (three to five rows), the one-row German harmonica
also used for Cajun music in Louisiana and vicinity, the two-row Wiener
Harmonika, the three-row GCF diatonic played in Texmex music
(incidentally, the best-selling Hohner accordion model currently), the
2½ row club harmonica, the Irish C/B diatonic model (with its variant
Shand Morino), the Italian organetto, and I likely forgot a dozen other
common types and systems in current use (other systems like the
Schrammelharmonika are only played by few players focused on historic
music).

And that's just accordions, namely with chord buttons for the left hand.
You get quite more when relaxing that requirement, adding a large
variety of concertinas, bandonions, and others.

> but here most accordions follow more or less the same pattern.
>
> You can check
>     http://www.harmonika.com/de/lieferbare-tonarten
>     http://www.harmonika.com/en/tone-types
> and pick a 3-row C-F-B (B = Hes), the most commonly used one and the
> one for which almost all the scores are written, so the "default"
> output would follow that one. (Some basses seem wrong / different than
> here and the layout / number of buttons is a bit weird on that
> picture, but let's ignore that for a moment.)
>
> The outer row (the top one on the picture) is usually labeled A, the
> middle row is B, the bottom row is C, counting starts from head to
> knee (on that figure that means from right to left). The three dark
> orientation buttons are A6 (c''/h'), B6 (c''/c''), C6 (f''/f'').
>
> I would start by defining all the pitches corresponding to individual
> buttons in both directions, so something like:
>
> push:
> A0=c A1=e A2=g A3=c' A4=e' A5=g' A6=c'' A7=...
> B0=c B1=f B2=a B3=c' B4=f' B5=a' B6=c'' B7=...
> C0=f C1=b[es] C2=d' C3=f' C4=b[es]' C5=d'' C6=f'' C7=...
>
> pull:
> A0=f A1=g A2=h A3=d' A4=f' A5=a' A6=h' A7=...
> B0=e B1=b B2=c' B3=e' B4=g' B5=b[es]' B6=c'' B7=...
> C0=a C1=es' C2=f' C3=a' C4=c'' C5=es'' C6=f'' C7=...

I think the fundamental question is how to provide the information.

We have a similar choice to make with tablature: enter the musical
information, or enter the playing instructions.

With tablature, the choice ended up being notes, occasionally helped
with string numbers.  Where this "occasionally helped" is not present,
you have the advantage of being able to _transpose_ and a new tablature
falls out.  You can change the string tuning, and a new tablature falls
out.  This would be the same with diatonic accordions: you could change
your instrument to one with a different tuning or transpose the melody,
and you'd get a new score.  And/or you could change your choice of when
to push or pull (assuming notes are available) and you'd get a new score
appropriately changed.

Now make no mistake: we had people complain that they cannot enter stuff
in tablature rather than notes.  Obviously, there is a market for that.

> The mapping from buttons to pitches is unique (it's some kind of a
> surjective function), but pitches can have different buttons. So I
> would prefer to enter buttons rather than pitches (it is of course
> possible that two players would press different buttons to play the
> same scores, but usually one button is easier to reach).

Uh yes.  You were getting to that.

> I would like to enter the music like in the following "pseudocode"
> (comments are just for explanation):
>
> \accordionPush
> % <bes'4 d''> played with fingers 2 and 3 on buttons C4 and C5
> <(C4)4-2 (C5)-3> |

On offer right now would be something like

<\C4-2 \C5-3>4

However, this still does not jibe with \B3 4-1 since the concept of
"optional note duration" does not combine with a music function.

So integrating note-like functions into LilyPond's input is not (yet)
really supported.

I'll think about this and see whether I can come up with something that
can be wired up here.

However, since our basic turnaround time for developer releases is
2 weeks, you might want to see whether you can get a Lilydev virtual
Ubuntu running on your system (if getting the dependencies to work is
unrealistic): otherwise the feedback loop for getting your stuff up is
going to be rather tedious whenever recompilation is required for
testing.

>> Well, one can cheat by writing any old chord and then override the text,
>> like
>>
>>     \tweak text "D2" c1

That was intended in \chordmode, like when having

\new ChordNames \chordmode { \tweak ChordName.text "D2" c1 }

or so (untested, maybe I'm completely wrong here).

>> but writing code that does that would only make sense once one has
>> determined that chords are the best vehicle for faking this kind of
>> functionality on.
>
> To me, using something like
>     ^\markup { \dir-column { "2.B4" "3.B5" } }
> next to the pitch to get the output would make a lot more sense than
> putting "fake chords" in a separate "layer". (Of course providing that
> I could convince/configure the \markup to keep a constant
> distance/height.)

Most of the "fake" suggestions are just proof-of-concept for seeing that
the basic mechanisms should be available already, even though not yet
tied into something working properly.

Some things are suggestions about what it's worth looking at already
while I try thinking about how to best molest LilyPond's parser into
supporting reasonably natural input here without having to create a
whole hard-coded parser mode in Bison/C++ like \figuremode .

--
David Kastrup

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Carl Sorensen-3


On 7/11/16 12:06 PM, "David Kastrup" <[hidden email]> wrote:

>
>I think the fundamental question is how to provide the information.
>
>We have a similar choice to make with tablature: enter the musical
>information, or enter the playing instructions.
>
>With tablature, the choice ended up being notes, occasionally helped
>with string numbers.  Where this "occasionally helped" is not present,
>you have the advantage of being able to _transpose_ and a new tablature
>falls out.  You can change the string tuning, and a new tablature falls
>out.  This would be the same with diatonic accordions: you could change
>your instrument to one with a different tuning or transpose the melody,
>and you'd get a new score.  And/or you could change your choice of when
>to push or pull (assuming notes are available) and you'd get a new score
>appropriately changed.
>
>Now make no mistake: we had people complain that they cannot enter stuff
>in tablature rather than notes.  Obviously, there is a market for that.

I know nothing about diatonic accordions, but given your comment on this
it seems that the best approach would be to define an diatonic accordion
engraver that could take a note together with an accordion description
(the equivalent of a StringTuning) and automatically spit out the symbol.
It could be consisted in a new context that is an alias for ChordNames,
but with the chord-namer function changed to an accordion namer function.
And if you need the push/pull information to help decide the button you
could use \downbow and \upbow (at least in the beginning).

I think such an approach would require no changes to the parser, and could
actually be done in Scheme (using Scheme engravers) as an initial approach.

Thanks,

Carl



_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

Re: Position fingerings for diatonic accordion that include button name (not just finger)

Mojca Miklavec
On 11 July 2016 at 22:44, Carl Sorensen wrote:

> On 7/11/16 12:06 PM, "David Kastrup" wrote:
>
>>I think the fundamental question is how to provide the information.
>>
>>We have a similar choice to make with tablature: enter the musical
>>information, or enter the playing instructions.
>>
>>With tablature, the choice ended up being notes, occasionally helped
>>with string numbers.  Where this "occasionally helped" is not present,
>>you have the advantage of being able to _transpose_ and a new tablature
>>falls out.

Except that this doesn't work with diatonic accordions at all. Except
for some rare occasions it's impossible to get a tablature for a
differently tuned accordion (and differently tuned ones cannot play
together at all).

Here's it's actually the reverse. I would say that it would be
desirable to be able to get proper scores (so that for example a piano
can accompany the accordion player) for a differently tuned accordion
playing on the same buttons. And in this case entering the music with
"buttons" rather than pitches helps.

Anyway, if the user would decide to enter pitches, like <f' a'>, then
this could be played with either <"A4" "A5"> or <"C2" "C3">. Since
LilyPond doesn't have the capability to offer interactive help to the
writer, the lilypond could at best write "either A4 or C2" for <f'> or
the user would have to manually enter the button label. And once the
button label is required, asking to do both becomes very error-prone.

I probably wouldn't mind a mode where I would type <f' a'>, then
LilyPond would provide me both alternatives and write the complete
score for me in "button notation" with alternatives (that would
probably help a lot in the beginning when one doesn't know which
button is which and if one gets the usual scores from somewhere), but
eventually one would have to enter the button names to create
unambiguous tablatures. The best I could do would be something like
    <f'\useA a'\useA>
or
   <f'\useFirst a'\useFirst>
to give a hint to LilyPond that the outermost row should be used for
that particular pitch and it would then use "A4" and "A5" instead of
"C2" and "C3".


Also: entering the usual pitches is already supported. Maybe the only
thing that's missing is the ability to effortlessly add nicely aligned
tablatures at some places only. But entering button names is not yet
supported and it would be great if there was a way to do it.

>>  You can change the string tuning, and a new tablature falls
>>out.  This would be the same with diatonic accordions: you could change
>>your instrument to one with a different tuning or transpose the melody,
>>and you'd get a new score.  And/or you could change your choice of when
>>to push or pull (assuming notes are available) and you'd get a new score
>>appropriately changed.

I'm a total beginner, but I'm afraid that you think too much from a
perspective of a player of a chromatic accordion :) :) :).

What you are proposing is impossible (or at least very hard) to do
most of the time. Or at least the one doing this must know very well
what he or she is doing. And even then: what prevents LilyPond from
checking whether the song is "transposable" to a differently tuned
accordion even if the input stays in "button names"?

(But yes, I agree, being able to spit the button name suggestions
automatically would be a nice feature in any case.)

> I know nothing about diatonic accordions, but given your comment on this
> it seems that the best approach would be to define an diatonic accordion
> engraver that could take a note together with an accordion description
> (the equivalent of a StringTuning) and automatically spit out the symbol.
> It could be consisted in a new context that is an alias for ChordNames,
> but with the chord-namer function changed to an accordion namer function.
> And if you need the push/pull information to help decide the button you
> could use \downbow and \upbow (at least in the beginning).

I looked at
    http://lilypond.org/doc/v2.19/Documentation/notation/displaying-chords
and I like the syntax
    \chordmode { c d e }
that automatically generates the whole chord and this seems nice. (I
don't like the fact that one cannot easily do things like {c
\chordmode {c} c d}, but that's ok.)

I made some short "summary" of my type of accordion at
    https://github.com/mojca/frajtonarca/tree/master/uglasitve
    https://github.com/mojca/frajtonarca/blob/master/uglasitve/basi-crop.pdf
and the same song that I already posted yesterday at
    https://github.com/mojca/frajtonarca/blob/master/tablature/ljudske/na-planincah.pdf

(The question mark means that I'm not sure whether this is how the
chord is properly written / how it actually sounds. I was just
blind-guessing.)

It might be easiest to start with the basses than with the melody basses though.

If this feature gets properly supported, it would make sense to
provide some defaults, but it should be straightforward to provide a
definition for the tuning somewhere and then to be able to enter the
basses either as numbers (1-11) or as names (see the files linked
above).

I can also imagine that some people would want to use different
positions of chords (like <d f a> instead of <f a d'>), but once
defined, they should hopefully(?) remain consistent for the song.

If the basses are entered as numbers, they could easily be
"transposed" to a differently tuned accordion (please note that two
differently tuned accordions cannot play together at all, except
perhaps C-F-B playing with B-Es-As in B major, but many bands simply
bring four accordions with them to the concert).

So similar to
    \chordmode { c d e }
I would like to be able to enter the basses like perhaps
    \someothercommand { <4> <9> <7> <3 4> }
and then be able to draw both chords and chord numbers from
potentially the same list (copy-paste is also fine :) without having
to manually specify the chords each time. I don't know how well such a
syntax combines with durations. How could I specify that <3 4> should
last for three quarters (2.)?.

> I think such an approach would require no changes to the parser, and could
> actually be done in Scheme (using Scheme engravers) as an initial approach.

Thank you,
    Mojca

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user