lilypond-user
[Top][All Lists]
Advanced

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

Re: Better Midi!


From: Trevor Daniels
Subject: Re: Better Midi!
Date: Thu, 7 Aug 2008 12:13:46 +0100


Hi Peter

Just tried your articulate.ly. Looks really promising! A couple of early comments. It may be obvious, but \articulate should only be used in a \score block with just \midi {} - it mucks up the printed output if used with \layout { }. And dynamics in the midi score block must be applied to all voices to be effective.

Should we consider including articulate.ly in the official releases?

Trevor

ps I like your clear well-commented code!

----- Original Message ----- From: "Peter Chubb" <address@hidden>
To: <address@hidden>; <address@hidden>
Cc: "Glenn Downey" <address@hidden>; "Diana Nguyen" <address@hidden>; <address@hidden>; "Dorothy Kennedy" <address@hidden>
Sent: Wednesday, August 06, 2008 4:38 AM
Subject: Better Midi!



Hi Folks,
I now have permission to release the articulation code
to improve MIDI output for lilypond.  I've attached it as a
tar.bz2 file here.  The code is copyright 2008 NICTA (my employer),
but released under GPL version 2.

The simple way to use it is to use the lilywrap script in the tarball:
 $ lilywrap inputfile.ly
 $ timidity inputfile.midi

Long version of how to use it:

 \include "articulate.ly"

 Insert \unfoldRepeats \articulate into the appropriate places.

Short Example:

\include "articulate.ly"
\score {
\unfoldRepeats \articulate <<
\context Staff {
\set Staff.midiInstrument="clarinet"
\relative c' {
\time 4/4 \tempo 4=100
c4-. c4( d e |
f\trill) g\turn a b |
c1-- }
}
>>
\midi {}
}

What it does:
* Any note not under a slur or phrasing mark, and not marked with an
  explicit articulation, is shortened by ac:normalFactor (default
  7/8)
* Any note marked staccato is shortened by ac:staccatoFactor (default
  1/2)
* Any note marked tenuto gets its full value.
* Appogiaturas are made to take half the value of the note following,
  without taking dots into account (so in \appoggiatura c8 d2. the c
  will take the time of a crotchet)
* Trills and turns are expanded.  The algorithm tries to choose notes
  within the time of the current tempo that lead to each twiddle
  being around 1/8 seconds; this can be adjusted with the
  ac:maxTwiddleTime variable.
* rall, poco rall and a tempo are observed.  It'd be fairly trivial
  to make accel. and stringendo work too.

There's a TODO list a mile long; unfortunately I'm no longer being
paid to work on this, but I'm happy to coordinate the attempts of
others to work on it.  Also, my scheme coding is appallingly bad (this
is the first serious work I've done in scheme) so there're probably
major improvements that can be made.




--------------------------------------------------------------------------------




--
Dr Peter Chubb http://www.gelato.unsw.edu.au peterc AT gelato.unsw.edu.au http://www.ertos.nicta.com.au ERTOS within National ICT Australia



--------------------------------------------------------------------------------


_______________________________________________
lilypond-user mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-user






reply via email to

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