lilypond-devel
[Top][All Lists]
Advanced

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

Re: MIDI rendition of things like rall./acc./rit./fermata


From: Flaming Hakama by Elaine
Subject: Re: MIDI rendition of things like rall./acc./rit./fermata
Date: Mon, 14 Jun 2021 17:55:15 -0700

>
> ---------- Forwarded message ----------
> From: David Kastrup <dak@gnu.org>
> To: lilypond-devel@gnu.org
> Cc:
> Bcc:
> Date: Sun, 13 Jun 2021 00:48:34 +0200
> Subject: MIDI rendition of things like rall./acc./rit./fermata
>
> Hi,
>
> I am currently working on creating MIDI tracks for percussion (for many
> accordion orchestra scores, there is sort of a discretionary percussion
> part), sort of a glorified metronome substitute (considerably more fun).
>
> What the articulate script does with rit/rall/a tempo is a disgrace (it
> switches the tempo down at the point of rit/rall and picks it up again
> at a tempo) and only moderately robust because it works on music input
> rather than at the translation stage.  I presume that the relation of
> all voices according to their notated time should stay the same even in
> polyrhythmic situations; this makes the problem boil down to one of
> translating common-time to MIDI time.
>
> \tempo changes that translation but only for increments, and with a
> constant factor.
>
> So how robust (or not) would be the following approach?  Make it
> possible to write in the timing track something like
>
> \rit 2/3 { \skip 1*2 }
>

In general, I think there are too many things (fermata, ceasura, rit/accel,
trills, repeats with dual dynamics) that need to be dealt with in midi,
such that you will always need dedicated tag sets for MIDI/PDF or some such.

That is, if you want the MIDI to sound good.

I would suspect that, for a rit for example, you will not always want
linear tempo changes, and will want to tweak them.

The longhand way of doing it is to just create a new tempo on each beat or
so ( within the MIDI tag).  I think that your suggestion for a shorthand
would be more useful as a function used within the MIDI tagged content,
rather than after the fact inside the articulate script, where you will be
guessing.

I'd like to see the function take these arguments:
* duration of the section (or provide a music expression that can be
evaluated to determine the duration)
* starting tempo (default to current tempo?)
* ending tempo
* either the rhythmic distance between tempi changes, as you suggest, or I
think it would be better to be an integer representing the number of steps
desired
* some kind of representation of the curve to be used, such as a keyword
for an algo known by the function (linear, log, etc.) and if it were more
fancy, also take arguments for parameters of the known functions, or it it
were really fancy, you could supply your own function to do the calculation.

This function would output a series of spaces and tempi.

Usage would be like:
{
    \tempo 4=100
    \tag #'PDF { <>_{accel.} s1*3 }
    \tag #"MIDI {
        \createAccel s1*3 4=100 4=120 6 "linear"
    }
    \tempo 4=120
}

And this would turn into something like:
{
    \tempo 4=100
    \tag #'PDF { <>_{accel.} s1*3 }
    \tag #"MIDI {
        s2
        \tempo 4=104
        s2
        \tempo 4=108 |
        s2
        \tempo 4=112
        s2
        \tempo 4=116 |
        s2
        \tempo 4=120
        s2
        \tempo 4=124 | % not sure if we want/need this final one
  }
  \tempo 4=124
}


> with the effect that some run-always translator keeps adjusting
> tempoWholesPerMinute during the \skip (in proportion to where the time
> is) until it is at 2/3 the speed at the end when it gets reset.  That's
> somewhat sloppy since the tempo is not adjusted during long notes, so in
> particular a long first note would not get slowed down at all.
>
> If I get the run-always semantics right.  But if I don't (and if one
> does not care about the inconsistency of long notes), one can always
> write
>
> \rit 2/3 { \repeat unfold 32 \skip 32 }
>
> It would not really need to be written in a separate timing track, you
> could just write ordinary music inside.
>
> Does this sound feasible?
>
> In a similar vein, one could do a fermata by just switching
> tempoWholesPerMinute to 2/3 of its value for a single note.  Though this
> does not necessarily need to be the same mechanism, though it likely
> could.
>
> --
> David Kastrup
>



Elaine Alt
415 . 341 .4954                                           "*Confusion is
highly underrated*"
elaine@flaminghakama.com
Producer ~ Composer ~ Instrumentalist ~ Educator
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


reply via email to

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