lilypond-devel
[Top][All Lists]
Advanced

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

MIDI restructuring


From: Michael Welsh Duggan
Subject: MIDI restructuring
Date: Sun, 18 Apr 2004 23:35:50 -0400
User-agent: Gnus/5.110002 (No Gnus v0.2) Emacs/21.3.50 (gnu/linux)

I am looking at restructuring some of the MIDI code, in the hopes of
letting the user have a little more control over the output.  I have
looked carefully at the way things are currently done, and have a few
ideas how to go about doing this.  But I have several questions first:

1) How tied is the performer abstraction to MIDI?  For example, we
   currently have Audio_staffs, which are mapped to channels.  I want
   to be able to be able to tweak (as a user) the definitions as to
   whether a particular voice, staff, staffgroup or score gets its
   own channel.  If performers are tied tightly to midi, I could
   rename these Audio_channels or Audio_tracks.  If not, maybe
   something more generic can be considered.  Ideas?

2) It is friendlier, in many ways, for fundamental object in LilyPond
   to be scheme objects, when possible.  But how specific should these
   objects be?  For example, I am thinking about having a generic MIDI
   Controller event, which represents the midi controller, and value
   for a controller value change.  Should the object be structured
   like this,

   (controller . value)

   or like this:

   ('midi-controller-object controller . value)

   The former is a little more terse, while the latter makes it clear
   what type of object this is.  Personally, I lean toward the
   former, because I don't think there is enough structure to warrent
   labelling, but I really want your opinions.

3) Where is the best place to put generic defaults?  For example, I
   want to have a place to specify a default velocity for MIDI
   notes.  Should this be done at the score level, or done at
   whatever is considered to be the "channel" level.

My current intention is to implement some of the articulations and
better dynamics.  For example, I want to use the velocity parameter of
Note On wvents to implement accents.  Dynamics (which are currently
implemented using velocity), I want to handle using expression
controller events.  My primary purpose is to handle piano music a
little better, but may deal with other things as they seem
interesting to me.

-- 
Michael Welsh Duggan
(address@hidden)




reply via email to

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