Class FeldmanProjection_n

java.lang.Object
eu.bandm.music.applications.feldproj.FeldmanProjection_n

public class FeldmanProjection_n extends Object
This class realizes a score model of Morton Feldman's "Projection 1" to "5". Copyright of the original score data is with (c) Edition Peters 1951,

See https://www.cnvill.net/mfgriff.htm}
See https://github.com/DigiScore/neoscore/tree/main/examples/feldman_projection_2 for the supported "Neoscore" back-end.

  • Field Details

    • timelessTag_sameStaff

      public static final String timelessTag_sameStaff
      Marks "second voices" needed by tscore to model overlapping events in piano voices.
      See Also:
    • timelessTag_subordinated

      public static final String timelessTag_subordinated
      Makrs the lower staff of the two in the same piano staff.
      See Also:
    • timelessTag_shortName

      public static final String timelessTag_shortName
      Name printed on the subsequent pages
      See Also:
    • timelessTag_longName

      public static final String timelessTag_longName
      Name printed on the first page
      See Also:
    • timelessTag_measuresPerPage

      public static final String timelessTag_measuresPerPage
      Given as a timeless value iff it is a constant. If number of measures per page is constant, use pageVoice instead.
      See Also:
    • timelessTag_interStaffGap

      public static final String timelessTag_interStaffGap
      Graphical gaps between staffs. Given in Rational multiples of the event height. Differing from the original, only one distance is supported.
      See Also:
    • timelessTag_endMark

      public static final String timelessTag_endMark
      The text (= a calendaric datum) which marks the end of the score
      See Also:
    • timelessTag_opusName

      public static final String timelessTag_opusName
      The name of the piece, as printed in the footer
      See Also:
    • timelessTag_author

      public static final String timelessTag_author
      The name of the author of the piece, as printed in the footer
      See Also:
    • msgr

      final MessageReceiver<SimpleMessage<eu.bandm.tools.util.xml.XMLDocumentIdentifier>> msgr
      The drain for all messags.
    • msgCount

      final MessageCounter msgCount
      Monitors all error messages.
    • msg

      final SimpleMessage.Sender<eu.bandm.tools.util.xml.XMLDocumentIdentifier> msg
      Only for conveniently construction messages and sending them to msgr
    • part

      protected final Part part
      The score data as parsed by tscore.
    • modifiers

      public static final Modifiers modifiers
      Modifiers controlling the parsing process.
    • voxAddenda

      protected static Map<Vox,FeldmanProjection_n.addenda> voxAddenda
      Evident.
    • parse_barNumber

      public static final Translet.Parser<Integer> parse_barNumber
      Parser for measure numbers.
    • numericName2tpTop

      public final SortedMap<Integer,TpTop> numericName2tpTop
      Maps bar numbers / measure numbers to tscore top-level time points.
    • tpTop2numericName

      protected final Map<TpTop,Integer> tpTop2numericName
      Inverse of numericName2tpTop.
    • tp2rat

      protected final Map<Tp,Rational> tp2rat
      Maps all tscore time points to rational numbers which correspond to the musical time relative to the start of the very first event. One measure is assumed to have the lenght 1/1 = 4/4 .
    • firstTp

      protected TpTop firstTp
      The very first time point object of the score. (Must be a toplevel time point due to the syntax of the general tscore format.)
    • lastTp

      protected TpTop lastTp
      The very last time point object of the score. This must not carry an event but mark the end-time of the very last event in any voice. (Must be a toplevel time point due to the syntax of the general tscore format.)
    • lastTpTop_rat

      @Opt protected @Opt Rational lastTpTop_rat
      The rational time value of the very last top level tscore time point. See tp2rat.
    • rat2tp

      protected final Multimap<Rational,Tp> rat2tp
      Inverse of tp2rat.
    • normalizedEvents

      protected final Map<Vox,List<Event>> normalizedEvents
      Events after collapsing "hold" events and repeated pauses, in temporal order.
    • event2endTp

      protected final Map<Event,Tp> event2endTp
      End point of any event (sound or pause) is the start point of the subsequent event (pause or sound) in the same voice.
    • voicename_page

      public static final String voicename_page
      Reserved name in the tscore input for a voice which indicates the page turning points. If number of measures per page is constant, use timelessTag_measuresPerPage instead.
      See Also:
    • pageVoice

      @Opt protected @Opt Vox pageVoice
      Voice for the "new page starts here" indication of the copied historic original. If number of measures per page is constant, use timelessTag_measuresPerPage instead.
    • tpTopInterpretation

      public final Function<TpTop,Rational> tpTopInterpretation
      Central translation from measure numbers (1-based) to rational time stamps (0-based)
    • pause

      public final Map<Event,String> pause
      Marks voice events as being a pause.
    • holds

      public final Map<Event,String> holds
      Marks voice events as being a "hold", which is not more than an unaltered prolongation of the preceding event's duration.
    • registerH

      protected final Map<Event,String> registerH
      Whether an event is in the high register.
    • registerM

      protected final Map<Event,String> registerM
      Whether an event is in the middle register.
    • registerL

      protected final Map<Event,String> registerL
      Whether an event is in the low register.
    • harmonics

      protected final Map<Event,String> harmonics
      Whether an event has an additionl "harmonic" modifier. (Ths must not be mixed up with "harmonic staves": all events in there are harmonics and do not carry such a modifier.)
    • pizzicato

      protected final Map<Event,String> pizzicato
      Whether an event is marked as pizzicato
    • ponticello

      protected final Map<Event,String> ponticello
      Whether an event is marked as "sul ponticello"
    • chordSize

      protected final Map<Event,Integer> chordSize
      The (optional) number of simultaneously played pitches.
    • adjunctLabel

      protected final Map<Event,String> adjunctLabel
      A free text which will be printed with the event when rendering it.
    • p_register

      protected final Translet.Parser<?> p_register
      Parser for the register.
    • p_string

      protected final Translet.Parser<?> p_string
      Parser for events of the string instruments, with modifiers and no multistops.
    • p_stringMult

      protected final Translet.Parser<?> p_stringMult
      Parser for events of the string instruments with multi-stops and no modifiers.
    • p_piano

      protected final Translet.Parser<?> p_piano
      Parser for events in the piano.
    • pageStarts

      final SortedSet<Integer> pageStarts
      Measure numbers when a new page starts. Contains "numeric names" of measure bars, ie. it is 1-based. The first page is also contained herein, i.e. the data always starts with "1"
    • maxMeasuresPerPage

      int maxMeasuresPerPage
      Determined by the constant timelessTag_measuresPerPage by the maximum of pageVoice. Needed for graphic x-allocation.
  • Constructor Details

    • FeldmanProjection_n

      public FeldmanProjection_n(Part part, MessageReceiver<SimpleMessage<eu.bandm.tools.util.xml.XMLDocumentIdentifier>> msgr)
      Construct data for one particular Part of a tscore TimeScape. In the score source text this is marked by "PART".
  • Method Details

    • p_event

      protected final Translet.Parser<?> p_event(Translet.Parser<?> parser)
      Generic parser for pauses and "hold" events.
    • update

      public void update()
      Translate untyped tscore data into semantically sensible data, indexed by events.
    • getVoiceAddenda

      protected void getVoiceAddenda(Vox v)
      Read the optional addenda specification of the given voice.
    • update_topTps

      protected void update_topTps()
      First step of interpreting syntactic to semantic contents: Parse the TpTop text to bar numbers, constructing an ordered sequence of TpTops:
    • update_pageStarts

      public void update_pageStarts()
    • update_voice_durations

      public void update_voice_durations(Vox voice)
      Normalize all events, sort them by start point, and memorize their duration. Include sounds but also normalized (=maximal) pauses in the normalized event list. GLO OUT normalizedEvents
    • exportToNeoscore

      protected void exportToNeoscore(PrintStream ps)
      Generate a Python source file with the main data for to import it into Neoscore. Currently only the core event data. Missing esp. export of list of voice names "nomenVisibile.longum" and "nomenVisibile.breve".
    • fromStream

      @Opt public static @Opt FeldmanProjection_n fromStream(InputStream inputstream, String sourceIndication, MessageReceiver<SimpleMessage<eu.bandm.tools.util.xml.XMLDocumentIdentifier>> msg)
    • fromFile

      @Opt public static @Opt FeldmanProjection_n fromFile(File inputfile, MessageReceiver<SimpleMessage<eu.bandm.tools.util.xml.XMLDocumentIdentifier>> msg)
    • main

      public static void main(String[] args)
      Stand-alone application, translates input file "arg[0]" into neoScore python data with extension ".data".