|
@@ -1,1313 +0,0 @@
|
|
|
-"use strict";
|
|
|
-var GraphicalMusicSheet_1 = require("./GraphicalMusicSheet");
|
|
|
-var fraction_1 = require("../../Common/DataObjects/fraction");
|
|
|
-var Note_1 = require("../VoiceData/Note");
|
|
|
-var ClefInstruction_1 = require("../VoiceData/Instructions/ClefInstruction");
|
|
|
-var octaveShift_1 = require("../VoiceData/Expressions/ContinuousExpressions/octaveShift");
|
|
|
-var VoiceEntry_1 = require("../VoiceData/VoiceEntry");
|
|
|
-var MusicSystemBuilder_1 = require("./MusicSystemBuilder");
|
|
|
-var PointF2D_1 = require("../../Common/DataObjects/PointF2D");
|
|
|
-var SourceStaffEntry_1 = require("../VoiceData/SourceStaffEntry");
|
|
|
-var GraphicalLabel_1 = require("./GraphicalLabel");
|
|
|
-var TextAlignment_1 = require("../../Common/Enums/TextAlignment");
|
|
|
-var KeyInstruction_1 = require("../VoiceData/Instructions/KeyInstruction");
|
|
|
-var ClefInstruction_2 = require("../VoiceData/Instructions/ClefInstruction");
|
|
|
-var LinkedVoice_1 = require("../VoiceData/LinkedVoice");
|
|
|
-var BoundingBox_1 = require("./BoundingBox");
|
|
|
-var OctaveShiftParams_1 = require("./OctaveShiftParams");
|
|
|
-var AccidentalCalculator_1 = require("./AccidentalCalculator");
|
|
|
-var ClefInstruction_3 = require("../VoiceData/Instructions/ClefInstruction");
|
|
|
-var Logging_1 = require("../../Common/Logging");
|
|
|
-var Dictionary_1 = require("typescript-collections/dist/lib/Dictionary");
|
|
|
-var collectionUtil_1 = require("../../Util/collectionUtil");
|
|
|
-var MusicSheetCalculator = (function () {
|
|
|
- function MusicSheetCalculator(symbolFactory) {
|
|
|
- this.staffEntriesWithGraphicalTies = [];
|
|
|
- this.staffEntriesWithOrnaments = [];
|
|
|
- this.staffEntriesWithChordSymbols = [];
|
|
|
- this.staffLinesWithLyricWords = [];
|
|
|
- this.staffLinesWithGraphicalExpressions = [];
|
|
|
- this.symbolFactory = symbolFactory;
|
|
|
- }
|
|
|
- Object.defineProperty(MusicSheetCalculator, "TextMeasurer", {
|
|
|
- get: function () {
|
|
|
- return MusicSheetCalculator.textMeasurer;
|
|
|
- },
|
|
|
- set: function (value) {
|
|
|
- MusicSheetCalculator.textMeasurer = value;
|
|
|
- },
|
|
|
- enumerable: true,
|
|
|
- configurable: true
|
|
|
- });
|
|
|
- Object.defineProperty(MusicSheetCalculator.prototype, "leadSheet", {
|
|
|
- get: function () {
|
|
|
- return this.graphicalMusicSheet.LeadSheet;
|
|
|
- },
|
|
|
- enumerable: true,
|
|
|
- configurable: true
|
|
|
- });
|
|
|
- MusicSheetCalculator.addTieToTieTimestampsDict = function (tieTimestampListDict, note) {
|
|
|
- note.NoteTie.initializeBoolList();
|
|
|
- var tieTimestampList = [];
|
|
|
- for (var m = 0; m < note.NoteTie.Fractions.length; m++) {
|
|
|
- var musicTimestamp = void 0;
|
|
|
- if (m === 0) {
|
|
|
- musicTimestamp = fraction_1.Fraction.plus(note.calculateNoteLengthWithoutTie(), note.getAbsoluteTimestamp());
|
|
|
- }
|
|
|
- else {
|
|
|
- musicTimestamp = fraction_1.Fraction.plus(tieTimestampList[m - 1], note.NoteTie.Fractions[m - 1]);
|
|
|
- }
|
|
|
- tieTimestampList.push(musicTimestamp);
|
|
|
- }
|
|
|
- tieTimestampListDict.setValue(note.NoteTie, tieTimestampList);
|
|
|
- };
|
|
|
- MusicSheetCalculator.setMeasuresMinStaffEntriesWidth = function (measures, minimumStaffEntriesWidth) {
|
|
|
- for (var idx = 0, len = measures.length; idx < len; ++idx) {
|
|
|
- var measure = measures[idx];
|
|
|
- measure.minimumStaffEntriesWidth = minimumStaffEntriesWidth;
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.initialize = function (graphicalMusicSheet) {
|
|
|
- this.graphicalMusicSheet = graphicalMusicSheet;
|
|
|
- this.rules = graphicalMusicSheet.ParentMusicSheet.rules;
|
|
|
- this.prepareGraphicalMusicSheet();
|
|
|
- this.calculate();
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.prepareGraphicalMusicSheet = function () {
|
|
|
- //this.graphicalMusicSheet.SystemImages.length = 0;
|
|
|
- var musicSheet = this.graphicalMusicSheet.ParentMusicSheet;
|
|
|
- this.staffEntriesWithGraphicalTies = [];
|
|
|
- this.staffEntriesWithOrnaments = [];
|
|
|
- this.staffEntriesWithChordSymbols = [];
|
|
|
- this.staffLinesWithLyricWords = [];
|
|
|
- this.staffLinesWithGraphicalExpressions = [];
|
|
|
- this.graphicalMusicSheet.Initialize();
|
|
|
- var measureList = this.graphicalMusicSheet.MeasureList;
|
|
|
- var accidentalCalculators = this.createAccidentalCalculators();
|
|
|
- var activeClefs = this.graphicalMusicSheet.initializeActiveClefs();
|
|
|
- var lyricWords = [];
|
|
|
- var completeNumberOfStaves = musicSheet.getCompleteNumberOfStaves();
|
|
|
- var openOctaveShifts = [];
|
|
|
- var tieTimestampListDictList = [];
|
|
|
- for (var i = 0; i < completeNumberOfStaves; i++) {
|
|
|
- var tieTimestampListDict = new Dictionary_1.default();
|
|
|
- tieTimestampListDictList.push(tieTimestampListDict);
|
|
|
- openOctaveShifts.push(undefined);
|
|
|
- }
|
|
|
- for (var idx = 0, len = musicSheet.SourceMeasures.length; idx < len; ++idx) {
|
|
|
- var sourceMeasure = musicSheet.SourceMeasures[idx];
|
|
|
- var graphicalMeasures = this.createGraphicalMeasuresForSourceMeasure(sourceMeasure, accidentalCalculators, lyricWords, tieTimestampListDictList, openOctaveShifts, activeClefs);
|
|
|
- measureList.push(graphicalMeasures);
|
|
|
- }
|
|
|
- this.handleStaffEntries();
|
|
|
- this.calculateVerticalContainersList();
|
|
|
- this.setIndecesToVerticalGraphicalContainers();
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculate = function () {
|
|
|
- this.clearSystemsAndMeasures();
|
|
|
- this.clearRecreatedObjects();
|
|
|
- this.createGraphicalTies();
|
|
|
- this.calculateSheetLabelBoundingBoxes();
|
|
|
- this.calculateXLayout(this.graphicalMusicSheet, this.maxInstrNameLabelLength());
|
|
|
- this.graphicalMusicSheet.MusicPages.length = 0;
|
|
|
- this.calculateMusicSystems();
|
|
|
- this.graphicalMusicSheet.MusicPages[0].PositionAndShape.BorderMarginBottom += 9;
|
|
|
- GraphicalMusicSheet_1.GraphicalMusicSheet.transformRelativeToAbsolutePosition(this.graphicalMusicSheet);
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateXLayout = function (graphicalMusicSheet, maxInstrNameLabelLength) {
|
|
|
- var minLength = 0;
|
|
|
- var maxInstructionsLength = this.rules.MaxInstructionsConstValue;
|
|
|
- if (this.graphicalMusicSheet.MeasureList.length > 0) {
|
|
|
- var measures = this.graphicalMusicSheet.MeasureList[0];
|
|
|
- var minimumStaffEntriesWidth = this.calculateMeasureXLayout(measures);
|
|
|
- MusicSheetCalculator.setMeasuresMinStaffEntriesWidth(measures, minimumStaffEntriesWidth);
|
|
|
- minLength = minimumStaffEntriesWidth * 1.2 + maxInstrNameLabelLength + maxInstructionsLength;
|
|
|
- for (var i = 1; i < this.graphicalMusicSheet.MeasureList.length; i++) {
|
|
|
- measures = this.graphicalMusicSheet.MeasureList[i];
|
|
|
- minimumStaffEntriesWidth = this.calculateMeasureXLayout(measures);
|
|
|
- MusicSheetCalculator.setMeasuresMinStaffEntriesWidth(measures, minimumStaffEntriesWidth);
|
|
|
- minLength = Math.max(minLength, minimumStaffEntriesWidth * 1.2 + maxInstructionsLength);
|
|
|
- }
|
|
|
- }
|
|
|
- this.graphicalMusicSheet.MinAllowedSystemWidth = minLength;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMeasureXLayout = function (measures) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSystemYLayout = function () {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.initStaffMeasuresCreation = function () {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleBeam = function (graphicalNote, beam, openBeams) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.createGraphicalTieNote = function (beams, activeClef, octaveShiftValue, graphicalStaffEntry, duration, numberOfDots, openTie, isLastTieNote) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleVoiceEntryLyrics = function (lyricsEntries, voiceEntry, graphicalStaffEntry, openLyricWords) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleVoiceEntryOrnaments = function (ornamentContainer, voiceEntry, graphicalStaffEntry) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleVoiceEntryArticulations = function (articulations, voiceEntry, graphicalStaffEntry) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleTuplet = function (graphicalNote, tuplet, openTuplets) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutVoiceEntry = function (voiceEntry, graphicalNotes, graphicalStaffEntry, hasPitchedNote, isGraceStaffEntry) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutStaffEntry = function (graphicalStaffEntry) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleTie = function (tie, startGraphicalStaffEntry, staffIndex, measureIndex) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.updateStaffLineBorders = function (staffLine) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMeasureNumberPlacement = function (musicSystem) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutGraphicalTie = function (tie, tieIsAtSystemBreak) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSingleStaffLineLyricsPosition = function (staffLine, lyricVersesNumber) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSingleOctaveShift = function (sourceMeasure, multiExpression, measureIndex, staffIndex) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateWordRepetitionInstruction = function (repetitionInstruction, measureIndex) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMoodAndUnknownExpression = function (multiExpression, measureIndex, staffIndex) {
|
|
|
- throw new Error("abstract, not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.clearRecreatedObjects = function () {
|
|
|
- Logging_1.Logging.debug("clearRecreatedObjects not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleStaffEntryLink = function (graphicalStaffEntry, staffEntryLinks) {
|
|
|
- Logging_1.Logging.debug("handleStaffEntryLink not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMusicSystems = function () {
|
|
|
- if (this.graphicalMusicSheet.MeasureList === undefined) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var allMeasures = this.graphicalMusicSheet.MeasureList;
|
|
|
- if (allMeasures === undefined) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var visibleMeasureList = [];
|
|
|
- for (var idx = 0, len = allMeasures.length; idx < len; ++idx) {
|
|
|
- var staffMeasures = allMeasures[idx];
|
|
|
- var visibleStaffMeasures = [];
|
|
|
- for (var idx2 = 0, len2 = staffMeasures.length; idx2 < len2; ++idx2) {
|
|
|
- var staffMeasure = allMeasures[idx][idx2];
|
|
|
- if (staffMeasure.isVisible()) {
|
|
|
- visibleStaffMeasures.push(staffMeasure);
|
|
|
- }
|
|
|
- }
|
|
|
- visibleMeasureList.push(visibleStaffMeasures);
|
|
|
- }
|
|
|
- var numberOfStaffLines = 0;
|
|
|
- for (var idx = 0, len = visibleMeasureList.length; idx < len; ++idx) {
|
|
|
- var gmlist = visibleMeasureList[idx];
|
|
|
- numberOfStaffLines = Math.max(gmlist.length, numberOfStaffLines);
|
|
|
- break;
|
|
|
- }
|
|
|
- if (numberOfStaffLines === 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var musicSystemBuilder = new MusicSystemBuilder_1.MusicSystemBuilder();
|
|
|
- musicSystemBuilder.initialize(this.graphicalMusicSheet, visibleMeasureList, numberOfStaffLines, this.symbolFactory);
|
|
|
- musicSystemBuilder.buildMusicSystems();
|
|
|
- this.checkMeasuresForWholeRestNotes();
|
|
|
- if (!this.leadSheet) {
|
|
|
- this.calculateBeams();
|
|
|
- this.optimizeRestPlacement();
|
|
|
- this.calculateStaffEntryArticulationMarks();
|
|
|
- this.calculateTieCurves();
|
|
|
- }
|
|
|
- this.calculateSkyBottomLines();
|
|
|
- this.calculateTupletNumbers();
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- this.calculateMeasureNumberPlacement(musicSystem);
|
|
|
- }
|
|
|
- }
|
|
|
- if (!this.leadSheet) {
|
|
|
- this.calculateSlurs();
|
|
|
- }
|
|
|
- if (!this.leadSheet) {
|
|
|
- this.calculateOrnaments();
|
|
|
- }
|
|
|
- this.updateSkyBottomLines();
|
|
|
- this.calculateChordSymbols();
|
|
|
- if (!this.leadSheet) {
|
|
|
- this.calculateDynamicExpressions();
|
|
|
- this.optimizeStaffLineDynamicExpressionsPositions();
|
|
|
- this.calculateMoodAndUnknownExpressions();
|
|
|
- this.calculateOctaveShifts();
|
|
|
- this.calculateWordRepetitionInstructions();
|
|
|
- }
|
|
|
- this.calculateRepetitionEndings();
|
|
|
- if (!this.leadSheet) {
|
|
|
- this.calculateTempoExpressions();
|
|
|
- }
|
|
|
- this.calculateLyricsPosition();
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- this.updateStaffLineBorders(staffLine);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- this.calculateComments();
|
|
|
- this.calculateSystemYLayout();
|
|
|
- this.calculateMarkedAreas();
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- musicSystem.setMusicSystemLabelsYPosition();
|
|
|
- if (!this.leadSheet) {
|
|
|
- musicSystem.setYPositionsToVerticalLineObjectsAndCreateLines(this.rules);
|
|
|
- musicSystem.createSystemLeftLine(this.rules.SystemThinLineWidth, this.rules.SystemLabelsRightMargin);
|
|
|
- musicSystem.createInstrumentBrackets(this.graphicalMusicSheet.ParentMusicSheet.Instruments, this.rules.StaffHeight);
|
|
|
- musicSystem.createGroupBrackets(this.graphicalMusicSheet.ParentMusicSheet.InstrumentalGroups, this.rules.StaffHeight, 0);
|
|
|
- musicSystem.alignBeginInstructions();
|
|
|
- }
|
|
|
- else if (musicSystem === musicSystem.Parent.MusicSystems[0]) {
|
|
|
- musicSystem.createSystemLeftLine(this.rules.SystemThinLineWidth, this.rules.SystemLabelsRightMargin);
|
|
|
- }
|
|
|
- musicSystem.calculateBorders(this.rules);
|
|
|
- }
|
|
|
- var distance = graphicalMusicPage.MusicSystems[0].PositionAndShape.BorderTop;
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- // let newPosition: PointF2D = new PointF2D(musicSystem.PositionAndShape.RelativePosition.x,
|
|
|
- // musicSystem.PositionAndShape.RelativePosition.y - distance);
|
|
|
- musicSystem.PositionAndShape.RelativePosition =
|
|
|
- new PointF2D_1.PointF2D(musicSystem.PositionAndShape.RelativePosition.x, musicSystem.PositionAndShape.RelativePosition.y - distance);
|
|
|
- }
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- staffLine.addActivitySymbolClickArea();
|
|
|
- }
|
|
|
- }
|
|
|
- if (graphicalMusicPage === this.graphicalMusicSheet.MusicPages[0]) {
|
|
|
- this.calculatePageLabels(graphicalMusicPage);
|
|
|
- }
|
|
|
- graphicalMusicPage.PositionAndShape.calculateTopBottomBorders();
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.updateSkyBottomLine = function (staffLine) {
|
|
|
- Logging_1.Logging.debug("updateSkyBottomLine not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSkyBottomLine = function (staffLine) {
|
|
|
- Logging_1.Logging.debug("calculateSkyBottomLine not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMarkedAreas = function () {
|
|
|
- Logging_1.Logging.debug("calculateMarkedAreas not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateComments = function () {
|
|
|
- Logging_1.Logging.debug("calculateComments not implemented");
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.optimizeStaffLineDynamicExpressionsPositions = function () {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateChordSymbols = function () {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutMeasureWithWholeRest = function (rest, gse, measure) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutBeams = function (staffEntry) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutArticulationMarks = function (articulations, voiceEntry, graphicalStaffEntry) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutOrnament = function (ornaments, voiceEntry, graphicalStaffEntry) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateRestNotePlacementWithinGraphicalBeam = function (graphicalStaffEntry, restNote, previousNote, nextStaffEntry, nextNote) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateTupletNumbers = function () {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSlurs = function () {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateDynamicExpressionsForSingleMultiExpression = function (multiExpression, measureIndex, staffIndex) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calcGraphicalRepetitionEndingsRecursively = function (repetition) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutSingleRepetitionEnding = function (start, end, numberText, offset, leftOpen, rightOpen) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateTempoExpressionsForSingleMultiTempoExpression = function (sourceMeasure, multiTempoExpression, measureIndex) {
|
|
|
- return;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.clearSystemsAndMeasures = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = staffLine.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var graphicalMeasure = staffLine.Measures[idx4];
|
|
|
- if (graphicalMeasure.FirstInstructionStaffEntry !== undefined) {
|
|
|
- var index = graphicalMeasure.PositionAndShape.ChildElements.indexOf(graphicalMeasure.FirstInstructionStaffEntry.PositionAndShape);
|
|
|
- if (index > -1) {
|
|
|
- graphicalMeasure.PositionAndShape.ChildElements.splice(index, 1);
|
|
|
- }
|
|
|
- graphicalMeasure.FirstInstructionStaffEntry = undefined;
|
|
|
- graphicalMeasure.beginInstructionsWidth = 0.0;
|
|
|
- }
|
|
|
- if (graphicalMeasure.LastInstructionStaffEntry !== undefined) {
|
|
|
- var index = graphicalMeasure.PositionAndShape.ChildElements.indexOf(graphicalMeasure.LastInstructionStaffEntry.PositionAndShape);
|
|
|
- if (index > -1) {
|
|
|
- graphicalMeasure.PositionAndShape.ChildElements.splice(index, 1);
|
|
|
- }
|
|
|
- graphicalMeasure.LastInstructionStaffEntry = undefined;
|
|
|
- graphicalMeasure.endInstructionsWidth = 0.0;
|
|
|
- }
|
|
|
- }
|
|
|
- staffLine.Measures = [];
|
|
|
- staffLine.PositionAndShape.ChildElements = [];
|
|
|
- }
|
|
|
- musicSystem.StaffLines.length = 0;
|
|
|
- musicSystem.PositionAndShape.ChildElements = [];
|
|
|
- }
|
|
|
- graphicalMusicPage.MusicSystems = [];
|
|
|
- graphicalMusicPage.PositionAndShape.ChildElements = [];
|
|
|
- }
|
|
|
- this.graphicalMusicSheet.MusicPages = [];
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleVoiceEntry = function (voiceEntry, graphicalStaffEntry, accidentalCalculator, openLyricWords, tieTimestampListDict, activeClef, openTuplets, openBeams, octaveShiftValue, grace, linkedNotes, sourceStaffEntry) {
|
|
|
- if (grace === void 0) { grace = false; }
|
|
|
- if (linkedNotes === void 0) { linkedNotes = undefined; }
|
|
|
- if (sourceStaffEntry === void 0) { sourceStaffEntry = undefined; }
|
|
|
- var graphicalNotes = graphicalStaffEntry.findOrCreateGraphicalNotesListFromVoiceEntry(voiceEntry);
|
|
|
- for (var idx = 0, len = voiceEntry.Notes.length; idx < len; ++idx) {
|
|
|
- var note = voiceEntry.Notes[idx];
|
|
|
- if (sourceStaffEntry !== undefined && sourceStaffEntry.Link !== undefined && linkedNotes !== undefined && linkedNotes.indexOf(note) > -1) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- var graphicalNote = void 0;
|
|
|
- var numberOfDots = note.calculateNumberOfNeededDots();
|
|
|
- if (grace) {
|
|
|
- graphicalNote = this.symbolFactory.createGraceNote(note, numberOfDots, graphicalStaffEntry, activeClef, octaveShiftValue);
|
|
|
- }
|
|
|
- else {
|
|
|
- graphicalNote = this.symbolFactory.createNote(note, numberOfDots, graphicalStaffEntry, activeClef, octaveShiftValue);
|
|
|
- }
|
|
|
- if (note.NoteTie !== undefined) {
|
|
|
- MusicSheetCalculator.addTieToTieTimestampsDict(tieTimestampListDict, note);
|
|
|
- }
|
|
|
- if (note.Pitch !== undefined) {
|
|
|
- this.checkNoteForAccidental(graphicalNote, accidentalCalculator, activeClef, octaveShiftValue, grace);
|
|
|
- }
|
|
|
- this.resetYPositionForLeadSheet(graphicalNote.PositionAndShape);
|
|
|
- graphicalStaffEntry.addGraphicalNoteToListAtCorrectYPosition(graphicalNotes, graphicalNote);
|
|
|
- graphicalStaffEntry.PositionAndShape.ChildElements.push(graphicalNote.PositionAndShape);
|
|
|
- graphicalNote.PositionAndShape.calculateBoundingBox();
|
|
|
- if (!this.leadSheet) {
|
|
|
- if (note.NoteBeam !== undefined) {
|
|
|
- this.handleBeam(graphicalNote, note.NoteBeam, openBeams);
|
|
|
- }
|
|
|
- if (note.NoteTuplet !== undefined) {
|
|
|
- this.handleTuplet(graphicalNote, note.NoteTuplet, openTuplets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (voiceEntry.Articulations.length > 0) {
|
|
|
- this.handleVoiceEntryArticulations(voiceEntry.Articulations, voiceEntry, graphicalStaffEntry);
|
|
|
- }
|
|
|
- if (voiceEntry.TechnicalInstructions.length > 0) {
|
|
|
- this.checkVoiceEntriesForTechnicalInstructions(voiceEntry, graphicalStaffEntry);
|
|
|
- }
|
|
|
- if (voiceEntry.LyricsEntries.size() > 0) {
|
|
|
- this.handleVoiceEntryLyrics(voiceEntry.LyricsEntries, voiceEntry, graphicalStaffEntry, openLyricWords);
|
|
|
- }
|
|
|
- if (voiceEntry.OrnamentContainer !== undefined) {
|
|
|
- this.handleVoiceEntryOrnaments(voiceEntry.OrnamentContainer, voiceEntry, graphicalStaffEntry);
|
|
|
- }
|
|
|
- return octaveShiftValue;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleVoiceEntryGraceNotes = function (graceEntries, graphicalGraceEntries, graphicalStaffEntry, accidentalCalculator, activeClef, octaveShiftValue, lyricWords, tieTimestampListDict, tuplets, beams) {
|
|
|
- if (graceEntries !== undefined) {
|
|
|
- for (var idx = 0, len = graceEntries.length; idx < len; ++idx) {
|
|
|
- var graceVoiceEntry = graceEntries[idx];
|
|
|
- var graceStaffEntry = this.symbolFactory.createGraceStaffEntry(graphicalStaffEntry, graphicalStaffEntry.parentMeasure);
|
|
|
- graphicalGraceEntries.push(graceStaffEntry);
|
|
|
- graphicalStaffEntry.PositionAndShape.ChildElements.push(graceStaffEntry.PositionAndShape);
|
|
|
- this.handleVoiceEntry(graceVoiceEntry, graceStaffEntry, accidentalCalculator, lyricWords, tieTimestampListDict, activeClef, tuplets, beams, octaveShiftValue, true);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleOpenTies = function (measure, beams, tieTimestampListDict, activeClef, octaveShiftParams) {
|
|
|
- collectionUtil_1.CollectionUtil.removeDictElementIfTrue(tieTimestampListDict, function (openTie, tieTimestamps) {
|
|
|
- // for (let m: number = tieTimestampListDict.size() - 1; m >= 0; m--) {
|
|
|
- // let keyValuePair: KeyValuePair<Tie, Fraction[]> = tieTimestampListDict.ElementAt(m);
|
|
|
- // let openTie: Tie = keyValuePair.Key;
|
|
|
- // let tieTimestamps: Fraction[] = keyValuePair.Value;
|
|
|
- var absoluteTimestamp = undefined;
|
|
|
- var k;
|
|
|
- var removeTie = false;
|
|
|
- for (; k < tieTimestamps.length; k++) {
|
|
|
- if (!openTie.NoteHasBeenCreated[k]) {
|
|
|
- absoluteTimestamp = tieTimestamps[k];
|
|
|
- if (absoluteTimestamp >= fraction_1.Fraction.plus(measure.parentSourceMeasure.AbsoluteTimestamp, measure.parentSourceMeasure.Duration)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- var graphicalStaffEntry = undefined;
|
|
|
- if (absoluteTimestamp !== undefined) {
|
|
|
- for (var idx = 0, len = measure.staffEntries.length; idx < len; ++idx) {
|
|
|
- var gse = measure.staffEntries[idx];
|
|
|
- if (gse.getAbsoluteTimestamp() === absoluteTimestamp) {
|
|
|
- graphicalStaffEntry = gse;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (graphicalStaffEntry === undefined) {
|
|
|
- graphicalStaffEntry = this.createStaffEntryForTieNote(measure, absoluteTimestamp, openTie);
|
|
|
- }
|
|
|
- }
|
|
|
- if (graphicalStaffEntry !== undefined) {
|
|
|
- var octaveShiftValue = octaveShift_1.OctaveEnum.NONE;
|
|
|
- if (octaveShiftParams !== undefined) {
|
|
|
- if (graphicalStaffEntry.getAbsoluteTimestamp() >= octaveShiftParams.getAbsoluteStartTimestamp &&
|
|
|
- graphicalStaffEntry.getAbsoluteTimestamp() <= octaveShiftParams.getAbsoluteEndTimestamp) {
|
|
|
- octaveShiftValue = octaveShiftParams.getOpenOctaveShift.Type;
|
|
|
- }
|
|
|
- }
|
|
|
- var isLastTieNote = k === tieTimestamps.length - 1;
|
|
|
- var tieFraction = openTie.Fractions[k];
|
|
|
- var numberOfDots = openTie.Start.calculateNumberOfNeededDots();
|
|
|
- this.createGraphicalTieNote(beams, activeClef, octaveShiftValue, graphicalStaffEntry, tieFraction, numberOfDots, openTie, isLastTieNote);
|
|
|
- var tieStartNote = openTie.Start;
|
|
|
- if (isLastTieNote && tieStartNote.ParentVoiceEntry.Articulations.length === 1 &&
|
|
|
- tieStartNote.ParentVoiceEntry.Articulations[0] === VoiceEntry_1.ArticulationEnum.fermata) {
|
|
|
- this.symbolFactory.addFermataAtTiedEndNote(tieStartNote, graphicalStaffEntry);
|
|
|
- }
|
|
|
- openTie.NoteHasBeenCreated[k] = true;
|
|
|
- if (openTie.allGraphicalNotesHaveBeenCreated()) {
|
|
|
- removeTie = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return removeTie;
|
|
|
- });
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.resetYPositionForLeadSheet = function (psi) {
|
|
|
- if (this.leadSheet) {
|
|
|
- psi.RelativePosition = new PointF2D_1.PointF2D(psi.RelativePosition.x, 0.0);
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.layoutVoiceEntries = function (graphicalStaffEntry) {
|
|
|
- graphicalStaffEntry.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, 0.0);
|
|
|
- var isGraceStaffEntry = graphicalStaffEntry.staffEntryParent !== undefined;
|
|
|
- if (!this.leadSheet) {
|
|
|
- var graphicalStaffEntryNotes = graphicalStaffEntry.notes;
|
|
|
- for (var idx4 = 0, len4 = graphicalStaffEntryNotes.length; idx4 < len4; ++idx4) {
|
|
|
- var graphicalNotes = graphicalStaffEntryNotes[idx4];
|
|
|
- if (graphicalNotes.length === 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- var voiceEntry = graphicalNotes[0].sourceNote.ParentVoiceEntry;
|
|
|
- var hasPitchedNote = graphicalNotes[0].sourceNote.Pitch !== undefined;
|
|
|
- this.layoutVoiceEntry(voiceEntry, graphicalNotes, graphicalStaffEntry, hasPitchedNote, isGraceStaffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.maxInstrNameLabelLength = function () {
|
|
|
- var maxLabelLength = 0.0;
|
|
|
- for (var _i = 0, _a = this.graphicalMusicSheet.ParentMusicSheet.Instruments; _i < _a.length; _i++) {
|
|
|
- var instrument = _a[_i];
|
|
|
- if (instrument.Voices.length > 0 && instrument.Voices[0].Visible) {
|
|
|
- var graphicalLabel = new GraphicalLabel_1.GraphicalLabel(instrument.NameLabel, this.rules.InstrumentLabelTextHeight, TextAlignment_1.TextAlignment.LeftCenter);
|
|
|
- graphicalLabel.setLabelPositionAndShapeBorders();
|
|
|
- maxLabelLength = Math.max(maxLabelLength, graphicalLabel.PositionAndShape.MarginSize.width);
|
|
|
- }
|
|
|
- }
|
|
|
- return maxLabelLength;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSheetLabelBoundingBoxes = function () {
|
|
|
- var musicSheet = this.graphicalMusicSheet.ParentMusicSheet;
|
|
|
- if (musicSheet.Title !== undefined) {
|
|
|
- var title = new GraphicalLabel_1.GraphicalLabel(musicSheet.Title, this.rules.SheetTitleHeight, TextAlignment_1.TextAlignment.CenterBottom);
|
|
|
- this.graphicalMusicSheet.Title = title;
|
|
|
- title.setLabelPositionAndShapeBorders();
|
|
|
- }
|
|
|
- if (musicSheet.Subtitle !== undefined) {
|
|
|
- var subtitle = new GraphicalLabel_1.GraphicalLabel(musicSheet.Subtitle, this.rules.SheetSubtitleHeight, TextAlignment_1.TextAlignment.CenterCenter);
|
|
|
- this.graphicalMusicSheet.Subtitle = subtitle;
|
|
|
- subtitle.setLabelPositionAndShapeBorders();
|
|
|
- }
|
|
|
- if (musicSheet.Composer !== undefined) {
|
|
|
- var composer = new GraphicalLabel_1.GraphicalLabel(musicSheet.Composer, this.rules.SheetComposerHeight, TextAlignment_1.TextAlignment.RightCenter);
|
|
|
- this.graphicalMusicSheet.Composer = composer;
|
|
|
- composer.setLabelPositionAndShapeBorders();
|
|
|
- }
|
|
|
- if (musicSheet.Lyricist !== undefined) {
|
|
|
- var lyricist = new GraphicalLabel_1.GraphicalLabel(musicSheet.Lyricist, this.rules.SheetAuthorHeight, TextAlignment_1.TextAlignment.LeftCenter);
|
|
|
- this.graphicalMusicSheet.Lyricist = lyricist;
|
|
|
- lyricist.setLabelPositionAndShapeBorders();
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.checkMeasuresForWholeRestNotes = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var musicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = musicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = musicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = staffLine.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var measure = staffLine.Measures[idx4];
|
|
|
- if (measure.staffEntries.length === 1) {
|
|
|
- var gse = measure.staffEntries[0];
|
|
|
- if (gse.notes.length > 0 && gse.notes[0].length > 0) {
|
|
|
- var graphicalNote = gse.notes[0][0];
|
|
|
- if (graphicalNote.sourceNote.Pitch === undefined && (new fraction_1.Fraction(1, 2)).lt(graphicalNote.sourceNote.Length)) {
|
|
|
- this.layoutMeasureWithWholeRest(graphicalNote, gse, measure);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.optimizeRestNotePlacement = function (graphicalStaffEntry, measure) {
|
|
|
- if (graphicalStaffEntry.notes.length === 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var voice1Notes = graphicalStaffEntry.notes[0];
|
|
|
- if (voice1Notes.length === 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var voice1Note1 = voice1Notes[0];
|
|
|
- var voice1Note1IsRest = voice1Note1.sourceNote.Pitch === undefined;
|
|
|
- if (graphicalStaffEntry.notes.length === 2) {
|
|
|
- var voice2Note1IsRest = false;
|
|
|
- var voice2Notes = graphicalStaffEntry.notes[1];
|
|
|
- if (voice2Notes.length > 0) {
|
|
|
- var voice2Note1 = voice1Notes[0];
|
|
|
- voice2Note1IsRest = voice2Note1.sourceNote.Pitch === undefined;
|
|
|
- }
|
|
|
- if (voice1Note1IsRest && voice2Note1IsRest) {
|
|
|
- this.calculateTwoRestNotesPlacementWithCollisionDetection(graphicalStaffEntry);
|
|
|
- }
|
|
|
- else if (voice1Note1IsRest || voice2Note1IsRest) {
|
|
|
- this.calculateRestNotePlacementWithCollisionDetectionFromGraphicalNote(graphicalStaffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- else if (voice1Note1IsRest && graphicalStaffEntry !== measure.staffEntries[0] &&
|
|
|
- graphicalStaffEntry !== measure.staffEntries[measure.staffEntries.length - 1]) {
|
|
|
- var staffEntryIndex = measure.staffEntries.indexOf(graphicalStaffEntry);
|
|
|
- var previousStaffEntry = measure.staffEntries[staffEntryIndex - 1];
|
|
|
- var nextStaffEntry = measure.staffEntries[staffEntryIndex + 1];
|
|
|
- if (previousStaffEntry.notes.length === 1) {
|
|
|
- var previousNote = previousStaffEntry.notes[0][0];
|
|
|
- if (previousNote.sourceNote.NoteBeam !== undefined && nextStaffEntry.notes.length === 1) {
|
|
|
- var nextNote = nextStaffEntry.notes[0][0];
|
|
|
- if (nextNote.sourceNote.NoteBeam !== undefined && previousNote.sourceNote.NoteBeam === nextNote.sourceNote.NoteBeam) {
|
|
|
- this.calculateRestNotePlacementWithinGraphicalBeam(graphicalStaffEntry, voice1Note1, previousNote, nextStaffEntry, nextNote);
|
|
|
- graphicalStaffEntry.PositionAndShape.calculateBoundingBox();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.getRelativePositionInStaffLineFromTimestamp = function (timestamp, verticalIndex, staffLine, multiStaffInstrument, firstVisibleMeasureRelativeX) {
|
|
|
- if (firstVisibleMeasureRelativeX === void 0) { firstVisibleMeasureRelativeX = 0.0; }
|
|
|
- var relative = new PointF2D_1.PointF2D();
|
|
|
- var leftStaffEntry = undefined;
|
|
|
- var rightStaffEntry = undefined;
|
|
|
- var numEntries = this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length;
|
|
|
- var index = this.graphicalMusicSheet.GetInterpolatedIndexInVerticalContainers(timestamp);
|
|
|
- var leftIndex = Math.min(Math.floor(index), numEntries - 1);
|
|
|
- var rightIndex = Math.min(Math.ceil(index), numEntries - 1);
|
|
|
- if (leftIndex < 0 || verticalIndex < 0) {
|
|
|
- return relative;
|
|
|
- }
|
|
|
- leftStaffEntry = this.getFirstLeftNotNullStaffEntryFromContainer(leftIndex, verticalIndex, multiStaffInstrument);
|
|
|
- rightStaffEntry = this.getFirstRightNotNullStaffEntryFromContainer(rightIndex, verticalIndex, multiStaffInstrument);
|
|
|
- if (leftStaffEntry !== undefined && rightStaffEntry !== undefined) {
|
|
|
- var measureRelativeX = leftStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
|
|
|
- if (firstVisibleMeasureRelativeX > 0) {
|
|
|
- measureRelativeX = firstVisibleMeasureRelativeX;
|
|
|
- }
|
|
|
- var leftX = leftStaffEntry.PositionAndShape.RelativePosition.x + measureRelativeX;
|
|
|
- var rightX = rightStaffEntry.PositionAndShape.RelativePosition.x + rightStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
|
|
|
- if (firstVisibleMeasureRelativeX > 0) {
|
|
|
- rightX = rightStaffEntry.PositionAndShape.RelativePosition.x + measureRelativeX;
|
|
|
- }
|
|
|
- var timestampQuotient = 0.0;
|
|
|
- if (leftStaffEntry !== rightStaffEntry) {
|
|
|
- var leftTimestamp = leftStaffEntry.getAbsoluteTimestamp();
|
|
|
- var rightTimestamp = rightStaffEntry.getAbsoluteTimestamp();
|
|
|
- var leftDifference = fraction_1.Fraction.minus(timestamp, leftTimestamp);
|
|
|
- timestampQuotient = leftDifference.RealValue / fraction_1.Fraction.minus(rightTimestamp, leftTimestamp).RealValue;
|
|
|
- }
|
|
|
- if (leftStaffEntry.parentMeasure.ParentStaffLine !== rightStaffEntry.parentMeasure.ParentStaffLine) {
|
|
|
- if (leftStaffEntry.parentMeasure.ParentStaffLine === staffLine) {
|
|
|
- rightX = staffLine.PositionAndShape.Size.width;
|
|
|
- }
|
|
|
- else {
|
|
|
- leftX = staffLine.PositionAndShape.RelativePosition.x;
|
|
|
- }
|
|
|
- }
|
|
|
- relative = new PointF2D_1.PointF2D(leftX + (rightX - leftX) * timestampQuotient, 0.0);
|
|
|
- }
|
|
|
- return relative;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.getRelativeXPositionFromTimestamp = function (timestamp) {
|
|
|
- var numEntries = this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length;
|
|
|
- var index = this.graphicalMusicSheet.GetInterpolatedIndexInVerticalContainers(timestamp);
|
|
|
- var discreteIndex = Math.max(0, Math.min(Math.round(index), numEntries - 1));
|
|
|
- var gse = this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[discreteIndex].getFirstNonNullStaffEntry();
|
|
|
- var posX = gse.PositionAndShape.RelativePosition.x + gse.parentMeasure.PositionAndShape.RelativePosition.x;
|
|
|
- return posX;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculatePageLabels = function (page) {
|
|
|
- var relative = new PointF2D_1.PointF2D();
|
|
|
- var firstSystemAbsoluteTopMargin = 10;
|
|
|
- if (page.MusicSystems.length > 0) {
|
|
|
- var firstMusicSystem = page.MusicSystems[0];
|
|
|
- firstSystemAbsoluteTopMargin = firstMusicSystem.PositionAndShape.RelativePosition.y + firstMusicSystem.PositionAndShape.BorderTop;
|
|
|
- }
|
|
|
- if (this.graphicalMusicSheet.Title !== undefined) {
|
|
|
- var title = this.graphicalMusicSheet.Title;
|
|
|
- title.PositionAndShape.Parent = page.PositionAndShape;
|
|
|
- page.PositionAndShape.ChildElements.push(title.PositionAndShape);
|
|
|
- relative.x = this.graphicalMusicSheet.ParentMusicSheet.pageWidth / 2;
|
|
|
- relative.y = this.rules.TitleTopDistance + this.rules.SheetTitleHeight;
|
|
|
- title.PositionAndShape.RelativePosition = relative;
|
|
|
- page.Labels.push(title);
|
|
|
- }
|
|
|
- if (this.graphicalMusicSheet.Subtitle !== undefined) {
|
|
|
- var subtitle = this.graphicalMusicSheet.Subtitle;
|
|
|
- subtitle.PositionAndShape.Parent = page.PositionAndShape;
|
|
|
- page.PositionAndShape.ChildElements.push(subtitle.PositionAndShape);
|
|
|
- relative.x = this.graphicalMusicSheet.ParentMusicSheet.pageWidth / 2;
|
|
|
- relative.y = this.rules.TitleTopDistance + this.rules.SheetTitleHeight + this.rules.SheetMinimumDistanceBetweenTitleAndSubtitle;
|
|
|
- subtitle.PositionAndShape.RelativePosition = relative;
|
|
|
- page.Labels.push(subtitle);
|
|
|
- }
|
|
|
- if (this.graphicalMusicSheet.Composer !== undefined) {
|
|
|
- var composer = this.graphicalMusicSheet.Composer;
|
|
|
- composer.PositionAndShape.Parent = page.PositionAndShape;
|
|
|
- page.PositionAndShape.ChildElements.push(composer.PositionAndShape);
|
|
|
- composer.setLabelPositionAndShapeBorders();
|
|
|
- relative.x = this.graphicalMusicSheet.ParentMusicSheet.pageWidth - this.rules.PageRightMargin;
|
|
|
- relative.y = firstSystemAbsoluteTopMargin - this.rules.SystemComposerDistance;
|
|
|
- composer.PositionAndShape.RelativePosition = relative;
|
|
|
- page.Labels.push(composer);
|
|
|
- }
|
|
|
- if (this.graphicalMusicSheet.Lyricist !== undefined) {
|
|
|
- var lyricist = this.graphicalMusicSheet.Lyricist;
|
|
|
- lyricist.PositionAndShape.Parent = page.PositionAndShape;
|
|
|
- page.PositionAndShape.ChildElements.push(lyricist.PositionAndShape);
|
|
|
- lyricist.setLabelPositionAndShapeBorders();
|
|
|
- relative.x = this.rules.PageLeftMargin;
|
|
|
- relative.y = firstSystemAbsoluteTopMargin - this.rules.SystemComposerDistance;
|
|
|
- lyricist.PositionAndShape.RelativePosition = relative;
|
|
|
- page.Labels.push(lyricist);
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.createGraphicalTies = function () {
|
|
|
- for (var measureIndex = 0; measureIndex < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; measureIndex++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[measureIndex];
|
|
|
- for (var staffIndex = 0; staffIndex < sourceMeasure.CompleteNumberOfStaves; staffIndex++) {
|
|
|
- for (var j = 0; j < sourceMeasure.VerticalSourceStaffEntryContainers.length; j++) {
|
|
|
- var sourceStaffEntry = sourceMeasure.VerticalSourceStaffEntryContainers[j].StaffEntries[staffIndex];
|
|
|
- if (sourceStaffEntry !== undefined) {
|
|
|
- var startStaffEntry = this.graphicalMusicSheet.findGraphicalStaffEntryFromMeasureList(staffIndex, measureIndex, sourceStaffEntry);
|
|
|
- for (var idx = 0, len = sourceStaffEntry.VoiceEntries.length; idx < len; ++idx) {
|
|
|
- var voiceEntry = sourceStaffEntry.VoiceEntries[idx];
|
|
|
- for (var idx2 = 0, len2 = voiceEntry.Notes.length; idx2 < len2; ++idx2) {
|
|
|
- var note = voiceEntry.Notes[idx2];
|
|
|
- if (note.NoteTie !== undefined) {
|
|
|
- var tie = note.NoteTie;
|
|
|
- this.handleTie(tie, startStaffEntry, staffIndex, measureIndex);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.createAccidentalCalculators = function () {
|
|
|
- var accidentalCalculators = [];
|
|
|
- var firstSourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.getFirstSourceMeasure();
|
|
|
- if (firstSourceMeasure !== undefined) {
|
|
|
- for (var i = 0; i < firstSourceMeasure.CompleteNumberOfStaves; i++) {
|
|
|
- var accidentalCalculator = new AccidentalCalculator_1.AccidentalCalculator(this.symbolFactory);
|
|
|
- accidentalCalculators.push(accidentalCalculator);
|
|
|
- if (firstSourceMeasure.FirstInstructionsStaffEntries[i] !== undefined) {
|
|
|
- for (var idx = 0, len = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions.length; idx < len; ++idx) {
|
|
|
- var abstractNotationInstruction = firstSourceMeasure.FirstInstructionsStaffEntries[i].Instructions[idx];
|
|
|
- if (abstractNotationInstruction instanceof KeyInstruction_1.KeyInstruction) {
|
|
|
- var keyInstruction = abstractNotationInstruction;
|
|
|
- accidentalCalculator.ActiveKeyInstruction = keyInstruction;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return accidentalCalculators;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateVerticalContainersList = function () {
|
|
|
- var numberOfEntries = this.graphicalMusicSheet.MeasureList[0].length;
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.MeasureList.length; i++) {
|
|
|
- for (var j = 0; j < numberOfEntries; j++) {
|
|
|
- var measure = this.graphicalMusicSheet.MeasureList[i][j];
|
|
|
- for (var idx = 0, len = measure.staffEntries.length; idx < len; ++idx) {
|
|
|
- var graphicalStaffEntry = measure.staffEntries[idx];
|
|
|
- var verticalContainer = this.graphicalMusicSheet.getOrCreateVerticalContainer(graphicalStaffEntry.getAbsoluteTimestamp());
|
|
|
- if (verticalContainer !== undefined) {
|
|
|
- verticalContainer.StaffEntries[j] = graphicalStaffEntry;
|
|
|
- graphicalStaffEntry.parentVerticalContainer = verticalContainer;
|
|
|
- }
|
|
|
- else {
|
|
|
- ;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.setIndecesToVerticalGraphicalContainers = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length; i++) {
|
|
|
- this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[i].Index = i;
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.createGraphicalMeasuresForSourceMeasure = function (sourceMeasure, accidentalCalculators, openLyricWords, tieTimestampListDictList, openOctaveShifts, activeClefs) {
|
|
|
- this.initStaffMeasuresCreation();
|
|
|
- var verticalMeasureList = [];
|
|
|
- var openBeams = [];
|
|
|
- var openTuplets = [];
|
|
|
- var staffEntryLinks = [];
|
|
|
- for (var staffIndex = 0; staffIndex < sourceMeasure.CompleteNumberOfStaves; staffIndex++) {
|
|
|
- var measure = this.createGraphicalMeasure(sourceMeasure, tieTimestampListDictList[staffIndex], openTuplets, openBeams, accidentalCalculators[staffIndex], activeClefs, openOctaveShifts, openLyricWords, staffIndex, staffEntryLinks);
|
|
|
- verticalMeasureList.push(measure);
|
|
|
- }
|
|
|
- this.graphicalMusicSheet.sourceToGraphicalMeasureLinks.setValue(sourceMeasure, verticalMeasureList);
|
|
|
- return verticalMeasureList;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.createGraphicalMeasure = function (sourceMeasure, tieTimestampListDict, openTuplets, openBeams, accidentalCalculator, activeClefs, openOctaveShifts, openLyricWords, staffIndex, staffEntryLinks) {
|
|
|
- var staff = this.graphicalMusicSheet.ParentMusicSheet.getStaffFromIndex(staffIndex);
|
|
|
- var measure = this.symbolFactory.createStaffMeasure(sourceMeasure, staff);
|
|
|
- measure.hasError = sourceMeasure.getErrorInMeasure(staffIndex);
|
|
|
- if (sourceMeasure.FirstInstructionsStaffEntries[staffIndex] !== undefined) {
|
|
|
- for (var idx = 0, len = sourceMeasure.FirstInstructionsStaffEntries[staffIndex].Instructions.length; idx < len; ++idx) {
|
|
|
- var instruction = sourceMeasure.FirstInstructionsStaffEntries[staffIndex].Instructions[idx];
|
|
|
- if (instruction instanceof KeyInstruction_1.KeyInstruction) {
|
|
|
- var key = KeyInstruction_1.KeyInstruction.copy(instruction);
|
|
|
- if (this.graphicalMusicSheet.ParentMusicSheet.Transpose !== 0 &&
|
|
|
- measure.ParentStaff.ParentInstrument.MidiInstrumentId !== ClefInstruction_3.MidiInstrument.Percussion &&
|
|
|
- MusicSheetCalculator.transposeCalculator !== undefined) {
|
|
|
- MusicSheetCalculator.transposeCalculator.transposeKey(key, this.graphicalMusicSheet.ParentMusicSheet.Transpose);
|
|
|
- }
|
|
|
- accidentalCalculator.ActiveKeyInstruction = key;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- for (var idx = 0, len = sourceMeasure.StaffLinkedExpressions[staffIndex].length; idx < len; ++idx) {
|
|
|
- var multiExpression = sourceMeasure.StaffLinkedExpressions[staffIndex][idx];
|
|
|
- if (multiExpression.OctaveShiftStart !== undefined) {
|
|
|
- var openOctaveShift = multiExpression.OctaveShiftStart;
|
|
|
- openOctaveShifts[staffIndex] = new OctaveShiftParams_1.OctaveShiftParams(openOctaveShift, multiExpression.AbsoluteTimestamp, openOctaveShift.ParentEndMultiExpression.AbsoluteTimestamp);
|
|
|
- }
|
|
|
- }
|
|
|
- for (var entryIndex = 0; entryIndex < sourceMeasure.VerticalSourceStaffEntryContainers.length; entryIndex++) {
|
|
|
- var sourceStaffEntry = sourceMeasure.VerticalSourceStaffEntryContainers[entryIndex].StaffEntries[staffIndex];
|
|
|
- if (sourceStaffEntry !== undefined) {
|
|
|
- for (var idx = 0, len = sourceStaffEntry.Instructions.length; idx < len; ++idx) {
|
|
|
- var abstractNotationInstruction = sourceStaffEntry.Instructions[idx];
|
|
|
- if (abstractNotationInstruction instanceof ClefInstruction_1.ClefInstruction) {
|
|
|
- activeClefs[staffIndex] = abstractNotationInstruction;
|
|
|
- }
|
|
|
- }
|
|
|
- var graphicalStaffEntry = this.symbolFactory.createStaffEntry(sourceStaffEntry, measure);
|
|
|
- if (measure.staffEntries.length > entryIndex) {
|
|
|
- measure.addGraphicalStaffEntryAtTimestamp(graphicalStaffEntry);
|
|
|
- }
|
|
|
- else {
|
|
|
- measure.addGraphicalStaffEntry(graphicalStaffEntry);
|
|
|
- }
|
|
|
- var linkedNotes = [];
|
|
|
- if (sourceStaffEntry.Link !== undefined) {
|
|
|
- sourceStaffEntry.findLinkedNotes(linkedNotes);
|
|
|
- this.handleStaffEntryLink(graphicalStaffEntry, staffEntryLinks);
|
|
|
- }
|
|
|
- var octaveShiftValue = octaveShift_1.OctaveEnum.NONE;
|
|
|
- if (openOctaveShifts[staffIndex] !== undefined) {
|
|
|
- var octaveShiftParams = openOctaveShifts[staffIndex];
|
|
|
- if (sourceStaffEntry.AbsoluteTimestamp >= octaveShiftParams.getAbsoluteStartTimestamp &&
|
|
|
- sourceStaffEntry.AbsoluteTimestamp <= octaveShiftParams.getAbsoluteEndTimestamp) {
|
|
|
- octaveShiftValue = octaveShiftParams.getOpenOctaveShift.Type;
|
|
|
- }
|
|
|
- }
|
|
|
- for (var idx = 0, len = sourceStaffEntry.VoiceEntries.length; idx < len; ++idx) {
|
|
|
- var voiceEntry = sourceStaffEntry.VoiceEntries[idx];
|
|
|
- this.handleVoiceEntryGraceNotes(voiceEntry.graceVoiceEntriesBefore, graphicalStaffEntry.graceStaffEntriesBefore, graphicalStaffEntry, accidentalCalculator, activeClefs[staffIndex], octaveShiftValue, openLyricWords, tieTimestampListDict, openTuplets, openBeams);
|
|
|
- octaveShiftValue = this.handleVoiceEntry(voiceEntry, graphicalStaffEntry, accidentalCalculator, openLyricWords, tieTimestampListDict, activeClefs[staffIndex], openTuplets, openBeams, octaveShiftValue, false, linkedNotes, sourceStaffEntry);
|
|
|
- this.handleVoiceEntryGraceNotes(voiceEntry.graceVoiceEntriesAfter, graphicalStaffEntry.graceStaffEntriesAfter, graphicalStaffEntry, accidentalCalculator, activeClefs[staffIndex], octaveShiftValue, openLyricWords, tieTimestampListDict, openTuplets, openBeams);
|
|
|
- }
|
|
|
- if (sourceStaffEntry.Instructions.length > 0) {
|
|
|
- var clefInstruction = sourceStaffEntry.Instructions[0];
|
|
|
- this.symbolFactory.createInStaffClef(graphicalStaffEntry, clefInstruction);
|
|
|
- }
|
|
|
- if (sourceStaffEntry.ChordContainer !== undefined) {
|
|
|
- sourceStaffEntry.ParentStaff.ParentInstrument.HasChordSymbols = true;
|
|
|
- this.symbolFactory.createChordSymbol(sourceStaffEntry, graphicalStaffEntry, this.graphicalMusicSheet.ParentMusicSheet.Transpose);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (tieTimestampListDict.size() > 0) {
|
|
|
- this.handleOpenTies(measure, openBeams, tieTimestampListDict, activeClefs[staffIndex], openOctaveShifts[staffIndex]);
|
|
|
- }
|
|
|
- accidentalCalculator.doCalculationsAtEndOfMeasure();
|
|
|
- if (sourceMeasure.LastInstructionsStaffEntries[staffIndex] !== undefined) {
|
|
|
- var lastStaffEntry = sourceMeasure.LastInstructionsStaffEntries[staffIndex];
|
|
|
- for (var idx = 0, len = lastStaffEntry.Instructions.length; idx < len; ++idx) {
|
|
|
- var abstractNotationInstruction = lastStaffEntry.Instructions[idx];
|
|
|
- if (abstractNotationInstruction instanceof ClefInstruction_1.ClefInstruction) {
|
|
|
- activeClefs[staffIndex] = abstractNotationInstruction;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- for (var idx = 0, len = sourceMeasure.StaffLinkedExpressions[staffIndex].length; idx < len; ++idx) {
|
|
|
- var multiExpression = sourceMeasure.StaffLinkedExpressions[staffIndex][idx];
|
|
|
- if (multiExpression.OctaveShiftEnd !== undefined && openOctaveShifts[staffIndex] !== undefined &&
|
|
|
- multiExpression.OctaveShiftEnd === openOctaveShifts[staffIndex].getOpenOctaveShift) {
|
|
|
- openOctaveShifts[staffIndex] = undefined;
|
|
|
- }
|
|
|
- }
|
|
|
- if (measure.staffEntries.length === 0) {
|
|
|
- var sourceStaffEntry = new SourceStaffEntry_1.SourceStaffEntry(undefined, staff);
|
|
|
- var note = new Note_1.Note(undefined, sourceStaffEntry, fraction_1.Fraction.createFromFraction(sourceMeasure.Duration), undefined);
|
|
|
- var graphicalStaffEntry = this.symbolFactory.createStaffEntry(sourceStaffEntry, measure);
|
|
|
- measure.addGraphicalStaffEntry(graphicalStaffEntry);
|
|
|
- graphicalStaffEntry.relInMeasureTimestamp = new fraction_1.Fraction(0, 1);
|
|
|
- var graphicalNotes = [];
|
|
|
- graphicalStaffEntry.notes.push(graphicalNotes);
|
|
|
- var numberOfDots = note.calculateNumberOfNeededDots();
|
|
|
- var graphicalNote = this.symbolFactory.createNote(note, numberOfDots, graphicalStaffEntry, new ClefInstruction_1.ClefInstruction(ClefInstruction_2.ClefEnum.G, 0, 2), octaveShift_1.OctaveEnum.NONE);
|
|
|
- graphicalNotes.push(graphicalNote);
|
|
|
- graphicalStaffEntry.PositionAndShape.ChildElements.push(graphicalNote.PositionAndShape);
|
|
|
- }
|
|
|
- return measure;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.checkVoiceEntriesForTechnicalInstructions = function (voiceEntry, graphicalStaffEntry) {
|
|
|
- for (var idx = 0, len = voiceEntry.TechnicalInstructions.length; idx < len; ++idx) {
|
|
|
- var technicalInstruction = voiceEntry.TechnicalInstructions[idx];
|
|
|
- this.symbolFactory.createGraphicalTechnicalInstruction(technicalInstruction, graphicalStaffEntry);
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.checkNoteForAccidental = function (graphicalNote, accidentalCalculator, activeClef, octaveEnum, grace) {
|
|
|
- if (grace === void 0) { grace = false; }
|
|
|
- var pitch = graphicalNote.sourceNote.Pitch;
|
|
|
- var transpose = this.graphicalMusicSheet.ParentMusicSheet.Transpose;
|
|
|
- if (transpose !== 0 && graphicalNote.sourceNote.ParentStaffEntry.ParentStaff.ParentInstrument.MidiInstrumentId !== ClefInstruction_3.MidiInstrument.Percussion) {
|
|
|
- pitch = graphicalNote.Transpose(accidentalCalculator.ActiveKeyInstruction, activeClef, transpose, octaveEnum);
|
|
|
- if (graphicalNote.sourceNote.NoteTie !== undefined) {
|
|
|
- graphicalNote.sourceNote.NoteTie.BaseNoteYPosition = graphicalNote.PositionAndShape.RelativePosition.y;
|
|
|
- }
|
|
|
- }
|
|
|
- graphicalNote.sourceNote.halfTone = pitch.getHalfTone();
|
|
|
- var scalingFactor = 1.0;
|
|
|
- if (grace) {
|
|
|
- scalingFactor = this.rules.GraceNoteScalingFactor;
|
|
|
- }
|
|
|
- accidentalCalculator.checkAccidental(graphicalNote, pitch, grace, scalingFactor);
|
|
|
- };
|
|
|
- // needed to disable linter, as it doesn't recognize the existing usage of this method.
|
|
|
- // ToDo: check if a newer version doesn't have the problem.
|
|
|
- /* tslint:disable:no-unused-variable */
|
|
|
- MusicSheetCalculator.prototype.createStaffEntryForTieNote = function (measure, absoluteTimestamp, openTie) {
|
|
|
- /* tslint:enable:no-unused-variable */
|
|
|
- var graphicalStaffEntry;
|
|
|
- graphicalStaffEntry = this.symbolFactory.createStaffEntry(openTie.Start.ParentStaffEntry, measure);
|
|
|
- graphicalStaffEntry.relInMeasureTimestamp = fraction_1.Fraction.minus(absoluteTimestamp, measure.parentSourceMeasure.AbsoluteTimestamp);
|
|
|
- this.resetYPositionForLeadSheet(graphicalStaffEntry.PositionAndShape);
|
|
|
- measure.addGraphicalStaffEntry(graphicalStaffEntry);
|
|
|
- return graphicalStaffEntry;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.updateSkyBottomLines = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- this.updateSkyBottomLine(staffLine);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.handleStaffEntries = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MeasureList.length; idx < len; ++idx) {
|
|
|
- var measures = this.graphicalMusicSheet.MeasureList[idx];
|
|
|
- for (var idx2 = 0, len2 = measures.length; idx2 < len2; ++idx2) {
|
|
|
- var measure = measures[idx2];
|
|
|
- for (var idx3 = 0, len3 = measure.staffEntries.length; idx3 < len3; ++idx3) {
|
|
|
- var graphicalStaffEntry = measure.staffEntries[idx3];
|
|
|
- if (graphicalStaffEntry.parentMeasure !== undefined && graphicalStaffEntry.notes.length > 0 && graphicalStaffEntry.notes[0].length > 0) {
|
|
|
- this.layoutVoiceEntries(graphicalStaffEntry);
|
|
|
- this.layoutStaffEntry(graphicalStaffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateSkyBottomLines = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- this.calculateSkyBottomLine(staffLine);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateBeams = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var musicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = musicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = musicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = staffLine.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var measure = staffLine.Measures[idx4];
|
|
|
- for (var idx5 = 0, len5 = measure.staffEntries.length; idx5 < len5; ++idx5) {
|
|
|
- var staffEntry = measure.staffEntries[idx5];
|
|
|
- this.layoutBeams(staffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateStaffEntryArticulationMarks = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var page = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = page.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var system = page.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = system.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var line = system.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = line.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var measure = line.Measures[idx4];
|
|
|
- for (var idx5 = 0, len5 = measure.staffEntries.length; idx5 < len5; ++idx5) {
|
|
|
- var graphicalStaffEntry = measure.staffEntries[idx5];
|
|
|
- for (var idx6 = 0, len6 = graphicalStaffEntry.sourceStaffEntry.VoiceEntries.length; idx6 < len6; ++idx6) {
|
|
|
- var voiceEntry = graphicalStaffEntry.sourceStaffEntry.VoiceEntries[idx6];
|
|
|
- if (voiceEntry.Articulations.length > 0) {
|
|
|
- this.layoutArticulationMarks(voiceEntry.Articulations, voiceEntry, graphicalStaffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateOrnaments = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var page = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = page.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var system = page.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = system.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var line = system.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = line.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var measure = line.Measures[idx4];
|
|
|
- for (var idx5 = 0, len5 = measure.staffEntries.length; idx5 < len5; ++idx5) {
|
|
|
- var graphicalStaffEntry = measure.staffEntries[idx5];
|
|
|
- for (var idx6 = 0, len6 = graphicalStaffEntry.sourceStaffEntry.VoiceEntries.length; idx6 < len6; ++idx6) {
|
|
|
- var voiceEntry = graphicalStaffEntry.sourceStaffEntry.VoiceEntries[idx6];
|
|
|
- if (voiceEntry.OrnamentContainer !== undefined) {
|
|
|
- if (voiceEntry.hasTie() && graphicalStaffEntry.relInMeasureTimestamp !== voiceEntry.Timestamp) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- this.layoutOrnament(voiceEntry.OrnamentContainer, voiceEntry, graphicalStaffEntry);
|
|
|
- if (!(this.staffEntriesWithOrnaments.indexOf(graphicalStaffEntry) !== -1)) {
|
|
|
- this.staffEntriesWithOrnaments.push(graphicalStaffEntry);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.optimizeRestPlacement = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var page = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = page.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var system = page.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = system.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var line = system.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len4 = line.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- var measure = line.Measures[idx4];
|
|
|
- for (var idx5 = 0, len5 = measure.staffEntries.length; idx5 < len5; ++idx5) {
|
|
|
- var graphicalStaffEntry = measure.staffEntries[idx5];
|
|
|
- this.optimizeRestNotePlacement(graphicalStaffEntry, measure);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateTwoRestNotesPlacementWithCollisionDetection = function (graphicalStaffEntry) {
|
|
|
- var firstRestNote = graphicalStaffEntry.notes[0][0];
|
|
|
- var secondRestNote = graphicalStaffEntry.notes[1][0];
|
|
|
- secondRestNote.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, 2.5);
|
|
|
- graphicalStaffEntry.PositionAndShape.calculateAbsolutePositionsRecursiveWithoutTopelement();
|
|
|
- firstRestNote.PositionAndShape.computeNonOverlappingPositionWithMargin(graphicalStaffEntry.PositionAndShape, BoundingBox_1.ColDirEnum.Up, new PointF2D_1.PointF2D(0.0, secondRestNote.PositionAndShape.RelativePosition.y));
|
|
|
- var relative = firstRestNote.PositionAndShape.RelativePosition;
|
|
|
- relative.y -= 1.0;
|
|
|
- firstRestNote.PositionAndShape.RelativePosition = relative;
|
|
|
- graphicalStaffEntry.PositionAndShape.calculateBoundingBox();
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateRestNotePlacementWithCollisionDetectionFromGraphicalNote = function (graphicalStaffEntry) {
|
|
|
- var restNote;
|
|
|
- var graphicalNotes;
|
|
|
- if (graphicalStaffEntry.notes[0][0].sourceNote.Pitch === undefined) {
|
|
|
- restNote = graphicalStaffEntry.notes[0][0];
|
|
|
- graphicalNotes = graphicalStaffEntry.notes[1];
|
|
|
- }
|
|
|
- else {
|
|
|
- graphicalNotes = graphicalStaffEntry.notes[0];
|
|
|
- restNote = graphicalStaffEntry.notes[1][0];
|
|
|
- }
|
|
|
- var collision = false;
|
|
|
- graphicalStaffEntry.PositionAndShape.calculateAbsolutePositionsRecursiveWithoutTopelement();
|
|
|
- for (var idx = 0, len = graphicalNotes.length; idx < len; ++idx) {
|
|
|
- var graphicalNote = graphicalNotes[idx];
|
|
|
- if (restNote.PositionAndShape.marginCollisionDetection(graphicalNote.PositionAndShape)) {
|
|
|
- collision = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (collision) {
|
|
|
- if (restNote.sourceNote.ParentVoiceEntry.ParentVoice instanceof LinkedVoice_1.LinkedVoice) {
|
|
|
- var bottomBorder = graphicalNotes[0].PositionAndShape.BorderMarginBottom + graphicalNotes[0].PositionAndShape.RelativePosition.y;
|
|
|
- restNote.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, bottomBorder - restNote.PositionAndShape.BorderMarginTop + 0.5);
|
|
|
- }
|
|
|
- else {
|
|
|
- var last = graphicalNotes[graphicalNotes.length - 1];
|
|
|
- var topBorder = last.PositionAndShape.BorderMarginTop + last.PositionAndShape.RelativePosition.y;
|
|
|
- if (graphicalNotes[0].sourceNote.ParentVoiceEntry.ParentVoice instanceof LinkedVoice_1.LinkedVoice) {
|
|
|
- restNote.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, topBorder - restNote.PositionAndShape.BorderMarginBottom - 0.5);
|
|
|
- }
|
|
|
- else {
|
|
|
- var bottomBorder = graphicalNotes[0].PositionAndShape.BorderMarginBottom + graphicalNotes[0].PositionAndShape.RelativePosition.y;
|
|
|
- if (bottomBorder < 2.0) {
|
|
|
- restNote.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, bottomBorder - restNote.PositionAndShape.BorderMarginTop + 0.5);
|
|
|
- }
|
|
|
- else {
|
|
|
- restNote.PositionAndShape.RelativePosition = new PointF2D_1.PointF2D(0.0, topBorder - restNote.PositionAndShape.BorderMarginBottom - 0.0);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- graphicalStaffEntry.PositionAndShape.calculateBoundingBox();
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateTieCurves = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- for (var idx4 = 0, len5 = staffLine.Measures.length; idx4 < len5; ++idx4) {
|
|
|
- var measure = staffLine.Measures[idx4];
|
|
|
- for (var idx6 = 0, len6 = measure.staffEntries.length; idx6 < len6; ++idx6) {
|
|
|
- var staffEntry = measure.staffEntries[idx6];
|
|
|
- var graphicalTies = staffEntry.GraphicalTies;
|
|
|
- for (var idx7 = 0, len7 = graphicalTies.length; idx7 < len7; ++idx7) {
|
|
|
- var graphicalTie = graphicalTies[idx7];
|
|
|
- if (graphicalTie.StartNote !== undefined && graphicalTie.StartNote.parentStaffEntry === staffEntry) {
|
|
|
- var tieIsAtSystemBreak = (graphicalTie.StartNote.parentStaffEntry.parentMeasure.ParentStaffLine !==
|
|
|
- graphicalTie.EndNote.parentStaffEntry.parentMeasure.ParentStaffLine);
|
|
|
- this.layoutGraphicalTie(graphicalTie, tieIsAtSystemBreak);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- // Commented because unused:
|
|
|
- //private calculateFingering(): void {
|
|
|
- // for (let idx: number = 0, len: number = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- // let graphicalMusicPage: GraphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- // for (let idx2: number = 0, len2: number = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- // let musicSystem: MusicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- // for (let idx3: number = 0, len3: number = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- // let staffLine: StaffLine = musicSystem.StaffLines[idx3];
|
|
|
- // let skyBottomLineCalculator: SkyBottomLineCalculator = new SkyBottomLineCalculator(this.rules);
|
|
|
- // for (let idx4: number = 0, len4: number = staffLine.Measures.length; idx4 < len4; ++idx4) {
|
|
|
- // let measure: StaffMeasure = staffLine.Measures[idx4];
|
|
|
- // let measureRelativePosition: PointF2D = measure.PositionAndShape.RelativePosition;
|
|
|
- // for (let idx5: number = 0, len5: number = measure.staffEntries.length; idx5 < len5; ++idx5) {
|
|
|
- // let staffEntry: GraphicalStaffEntry = measure.staffEntries[idx5];
|
|
|
- // let hasTechnicalInstruction: boolean = false;
|
|
|
- // for (let idx6: number = 0, len6: number = staffEntry.sourceStaffEntry.VoiceEntries.length; idx6 < len6; ++idx6) {
|
|
|
- // let ve: VoiceEntry = staffEntry.sourceStaffEntry.VoiceEntries[idx6];
|
|
|
- // if (ve.TechnicalInstructions.length > 0) {
|
|
|
- // hasTechnicalInstruction = true;
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // if (hasTechnicalInstruction) {
|
|
|
- // this.layoutFingering(staffLine, skyBottomLineCalculator, staffEntry, measureRelativePosition);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
- MusicSheetCalculator.prototype.calculateLyricsPosition = function () {
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.ParentMusicSheet.Instruments.length; idx < len; ++idx) {
|
|
|
- var instrument = this.graphicalMusicSheet.ParentMusicSheet.Instruments[idx];
|
|
|
- if (instrument.HasLyrics && instrument.LyricVersesNumbers.length > 0) {
|
|
|
- instrument.LyricVersesNumbers.sort();
|
|
|
- }
|
|
|
- }
|
|
|
- for (var idx = 0, len = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
|
|
|
- var graphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
|
|
|
- for (var idx2 = 0, len2 = graphicalMusicPage.MusicSystems.length; idx2 < len2; ++idx2) {
|
|
|
- var musicSystem = graphicalMusicPage.MusicSystems[idx2];
|
|
|
- for (var idx3 = 0, len3 = musicSystem.StaffLines.length; idx3 < len3; ++idx3) {
|
|
|
- var staffLine = musicSystem.StaffLines[idx3];
|
|
|
- this.calculateSingleStaffLineLyricsPosition(staffLine, staffLine.ParentStaff.ParentInstrument.LyricVersesNumbers);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateDynamicExpressions = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; i++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
|
|
|
- for (var j = 0; j < sourceMeasure.StaffLinkedExpressions.length; j++) {
|
|
|
- if (this.graphicalMusicSheet.MeasureList[i][j].ParentStaff.ParentInstrument.Visible) {
|
|
|
- for (var k = 0; k < sourceMeasure.StaffLinkedExpressions[j].length; k++) {
|
|
|
- if (sourceMeasure.StaffLinkedExpressions[j][k].InstantaniousDynamic !== undefined ||
|
|
|
- (sourceMeasure.StaffLinkedExpressions[j][k].StartingContinuousDynamic !== undefined &&
|
|
|
- sourceMeasure.StaffLinkedExpressions[j][k].StartingContinuousDynamic.StartMultiExpression ===
|
|
|
- sourceMeasure.StaffLinkedExpressions[j][k] && sourceMeasure.StaffLinkedExpressions[j][k].UnknownList.length === 0)) {
|
|
|
- this.calculateDynamicExpressionsForSingleMultiExpression(sourceMeasure.StaffLinkedExpressions[j][k], i, j);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateOctaveShifts = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; i++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
|
|
|
- for (var j = 0; j < sourceMeasure.StaffLinkedExpressions.length; j++) {
|
|
|
- if (this.graphicalMusicSheet.MeasureList[i][j].ParentStaff.ParentInstrument.Visible) {
|
|
|
- for (var k = 0; k < sourceMeasure.StaffLinkedExpressions[j].length; k++) {
|
|
|
- if ((sourceMeasure.StaffLinkedExpressions[j][k].OctaveShiftStart !== undefined)) {
|
|
|
- this.calculateSingleOctaveShift(sourceMeasure, sourceMeasure.StaffLinkedExpressions[j][k], i, j);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.getFirstLeftNotNullStaffEntryFromContainer = function (horizontalIndex, verticalIndex, multiStaffInstrument) {
|
|
|
- if (this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[horizontalIndex].StaffEntries[verticalIndex] !== undefined) {
|
|
|
- return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[horizontalIndex].StaffEntries[verticalIndex];
|
|
|
- }
|
|
|
- for (var i = horizontalIndex - 1; i >= 0; i--) {
|
|
|
- if (this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[i].StaffEntries[verticalIndex] !== undefined) {
|
|
|
- return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[i].StaffEntries[verticalIndex];
|
|
|
- }
|
|
|
- }
|
|
|
- return undefined;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.getFirstRightNotNullStaffEntryFromContainer = function (horizontalIndex, verticalIndex, multiStaffInstrument) {
|
|
|
- if (this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[horizontalIndex].StaffEntries[verticalIndex] !== undefined) {
|
|
|
- return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[horizontalIndex].StaffEntries[verticalIndex];
|
|
|
- }
|
|
|
- for (var i = horizontalIndex + 1; i < this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length; i++) {
|
|
|
- if (this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[i].StaffEntries[verticalIndex] !== undefined) {
|
|
|
- return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[i].StaffEntries[verticalIndex];
|
|
|
- }
|
|
|
- }
|
|
|
- return undefined;
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateWordRepetitionInstructions = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; i++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
|
|
|
- for (var idx = 0, len = sourceMeasure.FirstRepetitionInstructions.length; idx < len; ++idx) {
|
|
|
- var instruction = sourceMeasure.FirstRepetitionInstructions[idx];
|
|
|
- this.calculateWordRepetitionInstruction(instruction, i);
|
|
|
- }
|
|
|
- for (var idx = 0, len = sourceMeasure.LastRepetitionInstructions.length; idx < len; ++idx) {
|
|
|
- var instruction = sourceMeasure.LastRepetitionInstructions[idx];
|
|
|
- this.calculateWordRepetitionInstruction(instruction, i);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateRepetitionEndings = function () {
|
|
|
- var musicsheet = this.graphicalMusicSheet.ParentMusicSheet;
|
|
|
- for (var idx = 0, len = musicsheet.Repetitions.length; idx < len; ++idx) {
|
|
|
- var partListEntry = musicsheet.Repetitions[idx];
|
|
|
- this.calcGraphicalRepetitionEndingsRecursively(partListEntry);
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateTempoExpressions = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; i++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
|
|
|
- for (var j = 0; j < sourceMeasure.TempoExpressions.length; j++) {
|
|
|
- this.calculateTempoExpressionsForSingleMultiTempoExpression(sourceMeasure, sourceMeasure.TempoExpressions[j], i);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- MusicSheetCalculator.prototype.calculateMoodAndUnknownExpressions = function () {
|
|
|
- for (var i = 0; i < this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length; i++) {
|
|
|
- var sourceMeasure = this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[i];
|
|
|
- for (var j = 0; j < sourceMeasure.StaffLinkedExpressions.length; j++) {
|
|
|
- if (this.graphicalMusicSheet.MeasureList[i][j].ParentStaff.ParentInstrument.Visible) {
|
|
|
- for (var k = 0; k < sourceMeasure.StaffLinkedExpressions[j].length; k++) {
|
|
|
- if ((sourceMeasure.StaffLinkedExpressions[j][k].MoodList.length > 0) ||
|
|
|
- (sourceMeasure.StaffLinkedExpressions[j][k].UnknownList.length > 0)) {
|
|
|
- this.calculateMoodAndUnknownExpression(sourceMeasure.StaffLinkedExpressions[j][k], i, j);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
- return MusicSheetCalculator;
|
|
|
-}());
|
|
|
-exports.MusicSheetCalculator = MusicSheetCalculator;
|