[Top][All Lists]
[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)
- MIDI restructuring,
Michael Welsh Duggan <=