2017-05-29 7:04 GMT+02:00 Carl Sorensen <c_soren...@byu.edu>: > On 5/28/17 5:53 PM, "Thomas Morley" <thomasmorle...@gmail.com> wrote: > >> >> >>Though, why adding a Œsemantics entry to the EventChord? >>I'd suggest to write such an interpreter as a procedure which works on >>the pitchlist ignatzek-chord-names currently has to work with >>(including bass/inversion-info). Then write a printing-function which >>works on the result of the interpreter. >>Both public in guile, so that users can write different interpreters >>and printing-functions as they like.
Hi Carl, many thanks for your words about _what_ is tackled and what not. This was not clear for me. I tried to reread the GSoC-projects-description for this, but I couldn't find it... There are still some details I'm not sure about. See below. > There are three different problems in the Chords construct. > > 1) How to input chords. We currently have two modes -- notemode and > chordmode. Notemode has no semantics. Chordmode has semantics, but > currently the semantics get largely tossed away (except for root, bass, > inversion, IIRC). As an example: \new ChordNames \chordmode { c:1.3.5 } I wouldn't agree we currently throw away semantics about this c-major-chord. We identify bass/inversion (none here) and keep them. Afaik, we don't _use_ anything else from this user input, even the root is determined in ignatzek-chord-names. > 2) How to determine a chord name. For this, we currently have > ignatzek-chord-names which interprets the pitches plus root, bass, > inversion into a chord name. See above for root. > 3) How to display a chord name. This is currently mixed up with the > determination of a chord name in ignatzek-chord-names. > > Charles's project is not to solve all three of these. In fact, his > project is not to completely solve any one of them. Rather, his problem > is to determine how best to save the semantics, so that assuming the > semantics are properly entered in chordmode (probably including some > extensions to the current chordmode, or maybe even a start from scratch > rewrite, but that's out of scope for this project), the semantics will be > kept as part of the chord, and thus be available for the > chord_name_engraver to use when generating a chord name. > > When Charles is done, I hope that we will have a good internal > representation for both the notes and the semantics. The user will have > the ability to define the semantics (at first, maybe only with Scheme, but > eventually through good input). And those semantics will lead to the > desired output. > > Right now, we don't have control of the semantics; they're inferred from > the pitches. And that causes problems. > > Of course, we'll need to get good display routines (printing functions). > And we'll need to get good input routines (for both chordmode and note > mode). And we'll need to get good infer-semantics-from-pitches routines > (which Harm calls interpreters, I believe). But if each of these can be > separated from the others (which I hope Charles's project will do by > capturing semantics properly in the EventChord structure), then I believe > it will be easier to tackle all of the problems. > > Thanks, > > Carl > Do I understand correctly: (1) Problems with entering chords in note-mode is not really on the agenda (in this case I'll not longer give such examples) (2) Finally something like the terminal-output of the fake below is aimed at: chrd-test-III = \chordmode { \displayMusic \withMusicProperty semantics #`((root . ,#{ c #}) ;; or? (root . "C") (third . minor) (fifth . pure) (extensions . #f) (additions . #f) (bass . #f) (inversion . #f) (suspensions . #f) ;; else? ) c } << \new ChordNames \chrd-test-III \new Staff \chrd-test-III >> --> (make-music 'EventChord 'semantics (list (cons (quote root) (ly:make-pitch -1 0)) (cons (quote root) "C") (cons (quote third) (quote minor)) (cons (quote fifth) (quote pure)) (cons (quote extensions) #f) (cons (quote additions) #f) (cons (quote bass) #f) (cons (quote inversion) #f) (cons (quote suspensions) #f)) 'elements (list (make-music 'NoteEvent 'pitch (ly:make-pitch 0 0) 'duration (ly:make-duration 2)) (make-music 'NoteEvent 'pitch (ly:make-pitch 0 2) 'duration (ly:make-duration 2)) (make-music 'NoteEvent 'pitch (ly:make-pitch 0 4) 'duration (ly:make-duration 2)))) And let the printing function work on the 'semantics? So far, best regards, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user