lilypond-user
[Top][All Lists]
Advanced

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

Re: Harmonic reduction


From: Urs Liska
Subject: Re: Harmonic reduction
Date: Sun, 21 Jun 2020 12:20:47 +0200
User-agent: Evolution 3.36.3-1

Hi Kevin,

thank you for this recommendation. Actually I will talk about Humdrum
(a little bit) in a presentation on Wednesday ;-) but it is definitely
not what I'm looking for here. (BTW it (at least some of the tools?)
also consumes MIDI files, so there's a direct path from LilyPond to
Humdrum.

The use case is the following: The example I attached shows a few ways
to visualize the harmonic structure of (dodecaphonic) polyphonic music.
But I would like to have this as a kind of live preview when working
out counterpoints (with students). Therefore I don't need an analysis
toolkit like Humdrum. Although: There actually might be tools to
analyze the resulting MIDI files from a LilyPond compilation, and it
would be possible to write a script that takes the Humdrum output to
generate some LilyPond code that is then compiled. Hm, while writing
the previous sentence this looks like an intriguing idea, but it's way
too short for being able to use that on Wednesday :-(

BestUrs

Am Sonntag, den 21.06.2020, 09:46 +0100 schrieb Kevin Barry:
> Hi Urs,
> 
> I'm not aware of any such tools for LilyPond, but there is a format,
> "**kern", that is used in music analysis and research. I don't know
> if
> it can do what you want, but it is designed to be friendly to any
> tools
> that can process plain text. You can find out more about it here:
> https://www.humdrum.org/index.html
> There is a whole toolkit for analysing files in that format.
> 
> Kevin
> 
> On Tue, Jun 16, 2020 at 11:42:01AM +0200, Urs Liska wrote:
> > Hi all,
> > 
> > did anyone so far create a tool for an automatic harmonic reduction
> > of
> > polyphonic music?
> > 
> > Attached you'll find one way how that could look like done
> > manually.
> > 
> > The task would be to
> > 
> >  * read an arbitrary number of voices (music expressions)
> >  * determine the moments where "something" happens (note/rest)
> >  * calculate the chords for each of these steps
> >  * construct the corresponding music
> >     * a) at the absolute pitches
> >     * b) squashed into one of two ranges (all notes within one
> > octave /
> >       "closest" setting but in order (this is not in the example)) 
> > 
> > I'm not fixated in *exactly* the output of the example but would
> > like
> > to know if there's something existing in that direction.
> > 
> > Thanks
> > Urs
> > \version "2.20.0"
> > 
> > %\include "oll-core/package.ily"
> > %\loadPackage notation-fonts
> > %\useNotationFont \with {
> > %  extensions = ##t
> > %} arnold
> > 
> > \paper {
> >   indent = 3\cm
> >   system-count = 1
> > }
> > 
> > \layout {
> >   \context {
> >     \Score
> >     \accidentalStyle dodecaphonic
> >     \override InstrumentName.font-size = #-1
> >   }
> > }
> > 
> > voice = \relative {
> >   r4 r8 cis'4 d c8
> > 
> >   |
> > 
> >   c ( fis4. ~ fis8 ) es es f
> > }
> > 
> > pianoUp = \relative {
> >   \clef bass
> >   r8 b, ( a'4 -> ) r8 b, ( g'4 -> )
> > 
> >   |
> > 
> >   r8 g ( as,4 g'16-. ) r a,4 ( gis'8 )
> > }
> > 
> > pianoDown = \relative {
> >   \clef bass
> >   r8 g,4 ( gis,16-. ) r r8 a4 ( gis'16-. ) r
> > 
> >   |
> > 
> >   r8 a,-. [ a
> >   %-\arnoldStrongbeat
> >   ( b'16 )]  r r4 b
> > }
> > 
> > combOneUp = \relative {
> >   r4 r8 cis'16 ~ cis ~ cis8 d8 ~ d c16 ~ c
> > 
> >   |
> > 
> >   c8 fis ~ fis ~ fis16 ~ fis ~ fis ~ fis es8 ~ es f
> > }
> > 
> > combOneDown = \relative {
> >   \clef bass
> >   r8 <g, ~ b>8 <g a'~ > <gis, a''~ >16 a'' r8 <a,, b'>8 ~ <a g''> ~
> > <gis' g'>16 ~ g'
> > 
> >   |
> > 
> >   r8 <a,, g''>8 <a as'> ~ <as' b>16 ~ as g' r a,8 ~ <a b> ~ <b
> > gis'>
> > }
> > 
> > combTwo = \relative {
> >   r8 <g' b>8 ~ <g a> ^~ <cis, gis' a>16 ~ <cis a'> ~ cis8
> >   <d a' b>8 ~ <d g a> ~ <c g'! gis>16 ~ <c g'!>
> > 
> >   |
> > 
> >   c8 <fis g a> ~ <fis as a!> <fis as b>16 ~ <fis as> ~
> >   <fis g> ~ fis <es a>8 ~ <es a b> ~ <f gis b>
> > }
> > 
> > rhythm = \relative {
> >   r8 d'' d d16 d d8 d d d16 d
> > 
> >   |
> > 
> >   d8 d d d16 d d d d8 d d
> > }
> > 
> > \score {
> >   <<
> >     \new Staff \with {
> >       instrumentName = "Voice, orig."
> >     } \voice
> >     \new PianoStaff \with {
> >       instrumentName = "Piano, orig."
> >     } <<
> >       \new Staff \pianoUp
> >       \new Staff \pianoDown
> >     >>
> >     \new PianoStaff \with {
> >       instrumentName = "Comb. 1"
> >       \omit Stem
> >       \omit Flag
> >       \omit Beam
> >       \omit Rest
> >       \omit Dots
> >     }
> >     <<
> >       \new Staff \combOneUp
> >       \new Staff \combOneDown
> >     >>
> > 
> >     \new Staff \with {
> >        \override StaffSymbol.line-count = 1
> >        \autoBeamOff
> >        \omit Clef
> >        \omit NoteHead
> >        \omit Accidental
> >     } \rhythm
> >     \new Staff \with {
> >       instrumentName = "Comb. squashed"
> >       \omit Stem
> >       \omit Flag
> >       \omit Beam
> >       \omit Rest
> >       \omit Dots
> >     } \combTwo
> >   >>
> > }
> > 
> > 
> > 
> 
> 




reply via email to

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