| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313 |
- "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;
|