Longer musical compositions usually consist of several complex parts (sentences), which often differ in form and content. Being aware of this, we generally create multiple sections - "Blocks" - when loading a music file. Musical block (MusicalBlock) is part of a musical composition - internally with the same meter and tempo (within a certain tolerance).
A musical composition usually consists of one or more blocks. A music block is part of a music file with the same metre and tempo (within a certain tolerance). E.g. 3 blocks of one track (in parentheses is the length in bars):
Classes MidiBlock and MidiBlocksSolver are used to divide the song into blocks when loading MIDI files. We combine blocks into a “bundle” of blocks (MusicalBundle).
Each block has several basic properties - they are concentrated in the header (MusicalHeader). Placing in a special object then allows other objects to take over these properties (without reference to the entire block object).
A similar object is a musical context object (MusicalContext). Ten kromě vlastní hlavičky bloku obsahuje odkaz na objekt nastavení. This in addition to theblock header contains a reference to the settings object. This proposal is for the sake of certain generality, it is practically unnecessary, since the settings object is accessible in all objects, where it is needed (object according to Singleton design pattern).
This concept is likely to be changed (eg by converting the settings to MIF properties).
Custom block object (MusicalBlock) and object for a set of multiple blocks (MusicalBundle).
The music block can be viewed in two ways - like 1 / List of bars - (MusicalBody) or like 2 / Lise of lines (melodies, voices) - (MusicalStrip).
Both of these modes of view are equivalent (describing the same thing) and transferable (from one view to another). When working with a block, it is sometimes preferable to use the first view, another time the second view. E.g. the song is passsed through bars, while for transcribing the same song to file (eg MIDI) is advantageous passing through lines.
For the purpose of possible alternative block definitions, the general properties of the block have been converted into the class MusicalContent.
Individual sub-objects follow: MusicalBar as the main component of MusicalBody and MusicalLine as the main component of MusicalStrip.
A certain segment of subsequent bars is defined as MusicalSection, the selected section of the song represents MusicalArea.
In the process through bars (MusicalBar) the bars of individual lines are called musical elements (MusicalElement). For bulk operations with multiple elements, ElementMaster is intended.
When proceeding by lines, it is sometimes advantageous to combine several lines into one whole, which is a musical part (MusicalPart).
E.g. when both the left and right hands of the piano are recorded in one line, then we consider such a line as a musical part of MusicalPart and then divide it into several lines using the MusicalLinearizer object. Each line then includes only the tones that are adjacent to each other in a certain elevation - see FileSplit (None, Automatic, Total).
Lines (tracks, voices) are of two types - melodic and rhythmic (MusicalLineType). The current properties of each line are maintained in state objects (LineStatus).
Rhythmic lines are determined by instrument, rhythm and loudness (volume), melodic lines by the octave position, by type (function) of tones, they contain (MelodicFunction) and by the course (shape) of melody (MelodicShape). MelodicFunction contains: (MelodicMotion, MelodicFilling, HarmonicMotion, HarmonicFilling, HarmonicBass, MelodicBass) MelodicShape contains: (MinimumMotion, Scales, Sinusoids, BreakingLine, Original). Certain sections of a melodic line may be melodic or harmonic in nature (MelodicGenus).
In the following overview, the first set of properties refers to rhythmic lines, the second is an extension for melodic lines:
Melodic lines are sometimes broken down into several voices (MusicalVoice). The voices have the same progression, only they differ by instrument (eg oboe + violin) or duplicate instrument (violin + violin).