lilypond-devel
[Top][All Lists]
Advanced

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

Plan for GSoC Chords project


From: Charles Winston
Subject: Plan for GSoC Chords project
Date: Thu, 1 Jun 2017 12:09:37 -0400

Hi developers,

I want to run my project plan for by you all for updating the structure of 
EventChord to include semantic information. I believe the better way to do it 
now (rather than adding a new ‘semantics entry to EventChord) is to add a new 
property, chord-degree, to the NoteEvents, which can have a value corresponding 
to the note’s relation to the root, and therefore to the chord itself. This way 
we can keep the semantic information attached to the note information. This is 
still a rough idea in progress, of course. Here is my plan with milestones:


- Tuesday May 30 - Friday June 9:
    Determine the semantics of chords to be captured in the data structure and 
design the data structure itself. (Do research on more complex chord structures 
that I am not totally familiar with):
    - Provide a list of specific semantics to be implemented discussed on the 
-user list and approved by some of the developers.
    - Discuss the possible representations on -devel and provide an 
implementation plan.

- Friday June 9 - Friday June 23
    Implement the data structure as part of EventChord.
    - Provide unit test files that employ the use of \displayMusic, which 
provides console output to demonstrate that each semantic aspect is being 
captured. The specific output depends on the representation which is yet to be 
decided. Here is an example of what output might look like if we implement 
semantics using a new “chord-degree” property of NoteEvents:

For a C minor 7 chord:

(make-music
    ‘EventChord 
    ‘elements
    (list  (make-music
                ‘NoteEvent
                ‘pitch (ly:make-pitch 0 0 0)
                ‘duration (ly:make-duration 0 0 1)
                ‘chord-degree ‘root)
            (make-music
                ‘NoteEvent
                ‘pitch (ly:make-pitch 0 2 -1/2)
                ‘duration (ly:make-duration 0 0 1)
                ‘chord-degree ‘third-minor)
            (make-music
                ‘NoteEvent
                ‘pitch (ly:make-pitch 0 4 0)
                ‘duration (ly:make-duration 0 0 1)
                ‘chord-degree ‘fifth-perfect)
            (make-music
                ‘NoteEvent
                ‘pitch (ly:make-pitch 0 6 -1/2)
                ‘duration (ly:make-duration 0 0 1)
                ‘chord-degree ‘seventh-minor)))


- Friday June 23 - Friday July 7
    If necessary, edit the EventChord iterator to iterate over the new data 
structure, creating stream events which will contain both semantic and note 
information.
    - Provide a demonstration that shows that the stream events created by the 
iterator are accepted by the Chord_name_engraver.

- Friday July 7 - Friday July 21
    Create a new chord name engraver, New_chord_name_engraver, which creates 
grobs based on semantic information.
    - Provide unit test files that produce chord name output (on the typeset 
pdf file) which cover every semantic aspect.

- Friday July 21 - Friday August 4
    Modify chordmode to work with the new internal representation
    - Provide unit test files that use \displayMusic on chords entered using 
chordmode, demonstrating functionality for each semantic aspect:

    \displayMusic \newchordmode {c:m7} should produce the same structure from 
output of period 2.


- Friday August 4 - Monday August 21
    Create a method allowing the user to easily control the chord name display. 
Work out the details of the specifics after we have a better sense of the chord 
data structure we're going with.
    - Provide test files that use this mode to produce chord name output based 
on the new mode:

    Lilypond files like this:

    \newchordmode {
    g1:maj9 g1:6.9
    % some mode allowing user to customize chord name output
    g1:maj9 g1:6.9
    }

    Where we enter the chords without the new method, then with the new method, 
and produce output like this:



- Monday August 21 - Tuesday August 29
    Final Evaluations.

- If I end up being ahead of schedule, I will:
    Create a way to interpret semantics from a list of pitches. This should be 
based on the way the ignatzek chord namer decides chord names.



Let me know what you think about this plan, and voice any concerns you have! 
I’d love to hear feedback.


Thanks,
Charles

reply via email to

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