|
@@ -1,4 +1,18 @@
|
|
|
-export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet> {
|
|
|
+import {Fraction} from "../Common/DataObjects/fraction";
|
|
|
+import {MusicPartManager} from "./MusicParts/MusicPartManager";
|
|
|
+import {SourceMeasure} from "./VoiceData/SourceMeasure";
|
|
|
+import {Repetition} from "./MusicSource/Repetition";
|
|
|
+import {DynamicsContainer} from "./VoiceData/HelperObjects/DynamicsContainer";
|
|
|
+import {InstrumentalGroup} from "./InstrumentalGroup";
|
|
|
+import {Instrument} from "./Instrument";
|
|
|
+import {Label} from "./Label";
|
|
|
+import {Staff} from "./VoiceData/Staff";
|
|
|
+import {Note} from "./VoiceData/Note";
|
|
|
+import {VoiceEntry} from "./VoiceData/VoiceEntry";
|
|
|
+import {MusicPartManagerIterator} from "./MusicParts/MusicPartManagerIterator";
|
|
|
+import {PartListEntry} from "./MusicSource/PartListEntry";
|
|
|
+import {VerticalSourceStaffEntryContainer} from "./VoiceData/VerticalSourceStaffEntryContainer";
|
|
|
+export class MusicSheet /*implements ISettableMusicSheet, IComparable<MusicSheet>*/ {
|
|
|
constructor() {
|
|
|
try {
|
|
|
this.Rules = EngravingRules.Rules;
|
|
@@ -15,24 +29,24 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
public PageWidth: number;
|
|
|
|
|
|
private idString: string = "kjgdfuilhsda�oihfsvjh";
|
|
|
- private sourceMeasures: List<SourceMeasure> = new List<SourceMeasure>();
|
|
|
- private repetitions: List<Repetition> = new List<Repetition>();
|
|
|
- private dynListStaves: List<List<DynamicsContainer>> = new List<List<DynamicsContainer>>();
|
|
|
- private timestampSortedDynamicExpressionsList: List<DynamicsContainer> = new List<DynamicsContainer>();
|
|
|
- private timestampSortedTempoExpressionsList: List<MultiTempoExpression> = new List<MultiTempoExpression>();
|
|
|
- private instrumentalGroups: List<InstrumentalGroup> = new List<InstrumentalGroup>();
|
|
|
- private instruments: List<Instrument> = new List<Instrument>();
|
|
|
+ private sourceMeasures: SourceMeasure[] = new Array();
|
|
|
+ private repetitions: Repetition[] = new Array();
|
|
|
+ private dynListStaves: DynamicsContainer[][] = new Array();
|
|
|
+ private timestampSortedDynamicExpressionsList: DynamicsContainer[] = new Array();
|
|
|
+ private timestampSortedTempoExpressionsList: MultiTempoExpression[] = new Array();
|
|
|
+ private instrumentalGroups: InstrumentalGroup[] = new Array();
|
|
|
+ private instruments: Instrument[] = new Array();
|
|
|
private playbackSettings: PlaybackSettings;
|
|
|
private path: string;
|
|
|
private title: Label;
|
|
|
private subtitle: Label;
|
|
|
private composer: Label;
|
|
|
private lyricist: Label;
|
|
|
- // private languages: List<Language> = new List<Language>();
|
|
|
+ // private languages: Language[] = new Array();
|
|
|
// private activeLanguage: Language;
|
|
|
private musicPartManager: MusicPartManager = undefined;
|
|
|
private musicSheetErrors: MusicSheetErrors = new MusicSheetErrors();
|
|
|
- private staves: List<Staff> = new List<Staff>();
|
|
|
+ private staves: Staff[] = new Array();
|
|
|
private selectionStart: Fraction;
|
|
|
private selectionEnd: Fraction;
|
|
|
private transpose: number = 0;
|
|
@@ -51,31 +65,31 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
public set PhonicScoreInterface(value: IPhonicScoreInterface) {
|
|
|
this.phonicScoreInterface = value;
|
|
|
}
|
|
|
- public get SourceMeasures(): List<SourceMeasure> {
|
|
|
+ public get SourceMeasures(): SourceMeasure[] {
|
|
|
return this.sourceMeasures;
|
|
|
}
|
|
|
- public set SourceMeasures(value: List<SourceMeasure>) {
|
|
|
+ public set SourceMeasures(value: SourceMeasure[]) {
|
|
|
this.sourceMeasures = value;
|
|
|
}
|
|
|
- public get Repetitions(): List<Repetition> {
|
|
|
+ public get Repetitions(): Repetition[] {
|
|
|
return this.repetitions;
|
|
|
}
|
|
|
- public set Repetitions(value: List<Repetition>) {
|
|
|
+ public set Repetitions(value: Repetition[]) {
|
|
|
this.repetitions = value;
|
|
|
}
|
|
|
- public get DynListStaves(): List<List<DynamicsContainer>> {
|
|
|
+ public get DynListStaves(): DynamicsContainer[][] {
|
|
|
return this.dynListStaves;
|
|
|
}
|
|
|
- public get TimestampSortedTempoExpressionsList(): List<MultiTempoExpression> {
|
|
|
+ public get TimestampSortedTempoExpressionsList(): MultiTempoExpression[] {
|
|
|
return this.timestampSortedTempoExpressionsList;
|
|
|
}
|
|
|
- public get TimestampSortedDynamicExpressionsList(): List<DynamicsContainer> {
|
|
|
+ public get TimestampSortedDynamicExpressionsList(): DynamicsContainer[] {
|
|
|
return this.timestampSortedDynamicExpressionsList;
|
|
|
}
|
|
|
- public get InstrumentalGroups(): List<InstrumentalGroup> {
|
|
|
+ public get InstrumentalGroups(): InstrumentalGroup[] {
|
|
|
return this.instrumentalGroups;
|
|
|
}
|
|
|
- public get Instruments(): List<Instrument> {
|
|
|
+ public get Instruments(): Instrument[] {
|
|
|
return this.instruments;
|
|
|
}
|
|
|
public get SheetPlaybackSetting(): PlaybackSettings {
|
|
@@ -113,35 +127,35 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
public set Path(value: string) {
|
|
|
this.path = value;
|
|
|
}
|
|
|
- public get Staves(): List<Staff> {
|
|
|
+ public get Staves(): Staff[] {
|
|
|
return this.staves;
|
|
|
}
|
|
|
public get TitleString(): string {
|
|
|
if (this.title !== undefined) {
|
|
|
return this.title.Text;
|
|
|
} else {
|
|
|
- return string.Empty;
|
|
|
+ return "";
|
|
|
}
|
|
|
}
|
|
|
public get SubtitleString(): string {
|
|
|
if (this.subtitle !== undefined) {
|
|
|
return this.subtitle.Text;
|
|
|
} else {
|
|
|
- return string.Empty;
|
|
|
+ return "";
|
|
|
}
|
|
|
}
|
|
|
public get ComposerString(): string {
|
|
|
if (this.composer !== undefined) {
|
|
|
return this.composer.Text;
|
|
|
} else {
|
|
|
- return string.Empty;
|
|
|
+ return "";
|
|
|
}
|
|
|
}
|
|
|
public get LyricistString(): string {
|
|
|
if (this.lyricist !== undefined) {
|
|
|
return this.lyricist.Text;
|
|
|
} else {
|
|
|
- return string.Empty;
|
|
|
+ return "";
|
|
|
}
|
|
|
}
|
|
|
public get Title(): Label {
|
|
@@ -182,7 +196,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
public set SelectionStart(value: Fraction) {
|
|
|
this.selectionStart = value;
|
|
|
- this.currentEnrolledPosition = new Fraction(this.selectionStart);
|
|
|
+ this.currentEnrolledPosition = Fraction.CreateFractionFromFraction(this.selectionStart);
|
|
|
}
|
|
|
public get SelectionEnd(): Fraction {
|
|
|
return this.selectionEnd;
|
|
@@ -199,20 +213,20 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
this.Composer = new Label(this.musicSheetParameterObject.Composer);
|
|
|
}
|
|
|
public addMeasure(measure: SourceMeasure): void {
|
|
|
- this.SourceMeasures.Add(measure);
|
|
|
- measure.MeasureListIndex = this.SourceMeasures.Count - 1;
|
|
|
+ this.SourceMeasures.push(measure);
|
|
|
+ measure.MeasureListIndex = this.SourceMeasures.length - 1;
|
|
|
}
|
|
|
public checkForInstrumentWithNoVoice(): void {
|
|
|
- for (let idx: number = 0, len: number = this.instruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.instruments.length; idx < len; ++idx) {
|
|
|
let instrument: Instrument = this.instruments[idx];
|
|
|
- if (instrument.Voices.Count === 0) {
|
|
|
+ if (instrument.Voices.length === 0) {
|
|
|
let voice: Voice = new Voice(instrument, 1);
|
|
|
- instrument.Voices.Add(voice);
|
|
|
+ instrument.Voices.push(voice);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
public getStaffFromIndex(staffIndexInMusicSheet: number): Staff {
|
|
|
- if (this.staves.Count > staffIndexInMusicSheet) {
|
|
|
+ if (this.staves.length > staffIndexInMusicSheet) {
|
|
|
return this.staves[staffIndexInMusicSheet];
|
|
|
} else {
|
|
|
return undefined;
|
|
@@ -223,12 +237,12 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
public fillStaffList(): void {
|
|
|
let i: number = 0;
|
|
|
- for (let idx: number = 0, len: number = this.instruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.instruments.length; idx < len; ++idx) {
|
|
|
let instrument: Instrument = this.instruments[idx];
|
|
|
- for (let idx2: number = 0, len2: number = instrument.Staves.Count; idx2 < len2; ++idx2) {
|
|
|
+ for (let idx2: number = 0, len2: number = instrument.Staves.length; idx2 < len2; ++idx2) {
|
|
|
let staff: Staff = instrument.Staves[idx2];
|
|
|
staff.IdInMusicSheet = i;
|
|
|
- this.staves.Add(staff);
|
|
|
+ this.staves.push(staff);
|
|
|
i++;
|
|
|
}
|
|
|
}
|
|
@@ -241,22 +255,22 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
public getCompleteNumberOfStaves(): number {
|
|
|
let number: number = 0;
|
|
|
- for (let idx: number = 0, len: number = this.instruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.instruments.length; idx < len; ++idx) {
|
|
|
let instrument: Instrument = this.instruments[idx];
|
|
|
- number += instrument.Staves.Count;
|
|
|
+ number += instrument.Staves.length;
|
|
|
}
|
|
|
return number;
|
|
|
}
|
|
|
- public getListOfMeasuresFromIndeces(start: number, end: number): List<SourceMeasure> {
|
|
|
- let measures: List<SourceMeasure> = new List<SourceMeasure>();
|
|
|
+ public getListOfMeasuresFromIndeces(start: number, end: number): SourceMeasure[] {
|
|
|
+ let measures: SourceMeasure[] = new Array();
|
|
|
for (let i: number = start; i <= end; i++) {
|
|
|
- measures.Add(this.sourceMeasures[i]);
|
|
|
+ measures.push(this.sourceMeasures[i]);
|
|
|
}
|
|
|
return measures;
|
|
|
}
|
|
|
public getNextSourceMeasure(measure: SourceMeasure): SourceMeasure {
|
|
|
let index: number = this.sourceMeasures.IndexOf(measure);
|
|
|
- if (index === this.sourceMeasures.Count - 1) {
|
|
|
+ if (index === this.sourceMeasures.length - 1) {
|
|
|
return measure;
|
|
|
}
|
|
|
return this.sourceMeasures[index + 1];
|
|
@@ -265,14 +279,14 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
return this.sourceMeasures[0];
|
|
|
}
|
|
|
public getLastSourceMeasure(): SourceMeasure {
|
|
|
- return this.sourceMeasures[this.sourceMeasures.Count - 1];
|
|
|
+ return this.sourceMeasures[this.sourceMeasures.length - 1];
|
|
|
}
|
|
|
public resetAllNoteStates(): void {
|
|
|
let iterator: MusicPartManagerIterator = this.MusicPartManager.getIterator();
|
|
|
while (!iterator.EndReached && iterator.CurrentVoiceEntries !== undefined) {
|
|
|
- for (let idx: number = 0, len: number = iterator.CurrentVoiceEntries.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = iterator.CurrentVoiceEntries.length; idx < len; ++idx) {
|
|
|
let voiceEntry: VoiceEntry = iterator.CurrentVoiceEntries[idx];
|
|
|
- for (let idx2: number = 0, len2: number = voiceEntry.Notes.Count; idx2 < len2; ++idx2) {
|
|
|
+ for (let idx2: number = 0, len2: number = voiceEntry.Notes.length; idx2 < len2; ++idx2) {
|
|
|
let note: Note = voiceEntry.Notes[idx2];
|
|
|
note.State = NoteState.Normal;
|
|
|
}
|
|
@@ -281,19 +295,19 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
}
|
|
|
public getMusicSheetInstrumentIndex(instrument: Instrument): number {
|
|
|
- return this.Instruments.IndexOf(instrument);
|
|
|
+ return this.Instruments.indexOf(instrument);
|
|
|
}
|
|
|
public getGlobalStaffIndexOfFirstStaff(instrument: Instrument): number {
|
|
|
let instrumentIndex: number = this.getMusicSheetInstrumentIndex(instrument);
|
|
|
let staffLineIndex: number = 0;
|
|
|
for (let i: number = 0; i < instrumentIndex; i++) {
|
|
|
- staffLineIndex += this.Instruments[i].Staves.Count;
|
|
|
+ staffLineIndex += this.Instruments[i].Staves.length;
|
|
|
}
|
|
|
return staffLineIndex;
|
|
|
}
|
|
|
public setRepetitionNewUserNumberOfRepetitions(index: number, value: number): void {
|
|
|
let repIndex: number = 0;
|
|
|
- for (let i: number = 0; i < this.repetitions.Count; i++) {
|
|
|
+ for (let i: number = 0; i < this.repetitions.length; i++) {
|
|
|
if (this.repetitions[i] instanceof Repetition) {
|
|
|
if (index === repIndex) {
|
|
|
(<Repetition>this.repetitions[i]).UserNumberOfRepetitions = value;
|
|
@@ -306,7 +320,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
public getRepetitionByIndex(index: number): Repetition {
|
|
|
let repIndex: number = 0;
|
|
|
- for (let i: number = 0; i < this.repetitions.Count; i++) {
|
|
|
+ for (let i: number = 0; i < this.repetitions.length; i++) {
|
|
|
if (this.repetitions[i] instanceof Repetition) {
|
|
|
if (index === repIndex) {
|
|
|
return <Repetition>this.repetitions[i];
|
|
@@ -317,42 +331,43 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
return undefined;
|
|
|
}
|
|
|
public CompareTo(other: MusicSheet): number {
|
|
|
- return this.Title.Text.CompareTo(other.Title.Text);
|
|
|
+ return this.Title.Text.localeCompare(other.Title.Text);
|
|
|
}
|
|
|
- public get IInstruments(): List<IInstrument> {
|
|
|
- let list: List<IInstrument> = new List<IInstrument>();
|
|
|
- for (let idx: number = 0, len: number = this.instruments.Count; idx < len; ++idx) {
|
|
|
+ public get IInstruments(): IInstrument[] {
|
|
|
+ let list: IInstrument[] = new Array();
|
|
|
+ for (let idx: number = 0, len: number = this.instruments.length; idx < len; ++idx) {
|
|
|
let instr: Instrument = this.instruments[idx];
|
|
|
- list.Add(instr);
|
|
|
+ list.push(instr);
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
- public get IInitializableInstruments(): List<ISettableInstrument> {
|
|
|
- let list: List<ISettableInstrument> = new List<ISettableInstrument>();
|
|
|
- for (let idx: number = 0, len: number = this.instruments.Count; idx < len; ++idx) {
|
|
|
+ public get IInitializableInstruments(): ISettableInstrument[] {
|
|
|
+ let list: ISettableInstrument[] = new Array();
|
|
|
+ for (let idx: number = 0, len: number = this.instruments.length; idx < len; ++idx) {
|
|
|
let instr: Instrument = this.instruments[idx];
|
|
|
- list.Add(instr);
|
|
|
+ list.push(instr);
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
- public get IRepetitions(): List<IRepetition> {
|
|
|
+ public get IRepetitions(): IRepetition[] {
|
|
|
try {
|
|
|
- let repetitions: List<IRepetition> = new List<IRepetition>();
|
|
|
- for (let idx: number = 0, len: number = this.repetitions.Count; idx < len; ++idx) {
|
|
|
+ let repetitions: IRepetition[] = new Array();
|
|
|
+ for (let idx: number = 0, len: number = this.repetitions.length; idx < len; ++idx) {
|
|
|
let partListEntry: PartListEntry = this.repetitions[idx];
|
|
|
if (partListEntry instanceof Repetition) {
|
|
|
- repetitions.Add(<Repetition>partListEntry);
|
|
|
+ repetitions.push(<Repetition>partListEntry);
|
|
|
}
|
|
|
}
|
|
|
return repetitions;
|
|
|
} catch (ex) {
|
|
|
- Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.IRepetitions get: ", ex);
|
|
|
+ //Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.IRepetitions get: ", ex);
|
|
|
+ // FIXME logger
|
|
|
return undefined;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public GetExpressionsStartTempoInBPM(): number {
|
|
|
- if (this.TimestampSortedTempoExpressionsList.Count > 0) {
|
|
|
+ if (this.TimestampSortedTempoExpressionsList.length > 0) {
|
|
|
let me: MultiTempoExpression = this.TimestampSortedTempoExpressionsList[0];
|
|
|
if (me.InstantaniousTempo !== undefined) {
|
|
|
return me.InstantaniousTempo.TempoInBpm;
|
|
@@ -362,11 +377,11 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
return this.UserStartTempoInBPM;
|
|
|
}
|
|
|
- public get Errors(): Dictionary<number, List<string>> {
|
|
|
+ public get Errors(): Dictionary<number, string[]> {
|
|
|
try {
|
|
|
return this.musicSheetErrors.MeasureErrors;
|
|
|
} catch (ex) {
|
|
|
- Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.Errors get: ", ex);
|
|
|
+ // FIXME Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.Errors get: ", ex);
|
|
|
return undefined;
|
|
|
}
|
|
|
|
|
@@ -375,7 +390,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
try {
|
|
|
return this.getFirstSourceMeasure().MeasureNumber;
|
|
|
} catch (ex) {
|
|
|
- Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.FirstMeasureNumber: ", ex);
|
|
|
+ // Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.FirstMeasureNumber: ", ex); // FIXME
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -384,7 +399,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
try {
|
|
|
return this.getLastSourceMeasure().MeasureNumber;
|
|
|
} catch (ex) {
|
|
|
- Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.LastMeasureNumber: ", ex);
|
|
|
+ // Logger.DefaultLogger.LogError(LogLevel.NORMAL, "MusicSheet.LastMeasureNumber: ", ex); // FIXME
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -393,7 +408,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
return this.currentEnrolledPosition;
|
|
|
}
|
|
|
public set CurrentEnrolledPosition(value: Fraction) {
|
|
|
- this.currentEnrolledPosition = new Fraction(value);
|
|
|
+ this.currentEnrolledPosition = Fraction.CreateFractionFromFraction(value);
|
|
|
}
|
|
|
public get Transpose(): number {
|
|
|
return this.transpose;
|
|
@@ -418,7 +433,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
oldValue = value;
|
|
|
}
|
|
|
if (this.MusicSheetParameterChanged !== undefined) {
|
|
|
- MusicSheetParameterChanged(undefined, parameter, value, oldValue);
|
|
|
+ this.MusicSheetParameterChanged(undefined, parameter, value, oldValue);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -439,23 +454,23 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
}
|
|
|
public Dispose(): void {
|
|
|
this.MusicSheetParameterChanged = undefined;
|
|
|
- for (let idx: number = 0, len: number = this.IInstruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.IInstruments.length; idx < len; ++idx) {
|
|
|
let instrument: IInstrument = this.IInstruments[idx];
|
|
|
instrument.Dispose();
|
|
|
}
|
|
|
}
|
|
|
public getEnrolledSelectionStartTimeStampWorkaround(): Fraction {
|
|
|
let iter: MusicPartManagerIterator = this.MusicPartManager.getIterator(this.SelectionStart);
|
|
|
- return new Fraction(iter.CurrentEnrolledTimestamp);
|
|
|
+ return Fraction.CreateFractionFromFraction(iter.CurrentEnrolledTimestamp);
|
|
|
}
|
|
|
public get SheetEndTimestamp(): Fraction {
|
|
|
let lastMeasure: SourceMeasure = this.getLastSourceMeasure();
|
|
|
return lastMeasure.AbsoluteTimestamp + lastMeasure.Duration;
|
|
|
}
|
|
|
public getSourceMeasureFromTimeStamp(timeStamp: Fraction): SourceMeasure {
|
|
|
- for (let idx: number = 0, len: number = this.SourceMeasures.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.SourceMeasures.length; idx < len; ++idx) {
|
|
|
let sm: SourceMeasure = this.SourceMeasures[idx];
|
|
|
- for (let idx2: number = 0, len2: number = sm.VerticalSourceStaffEntryContainers.Count; idx2 < len2; ++idx2) {
|
|
|
+ for (let idx2: number = 0, len2: number = sm.VerticalSourceStaffEntryContainers.length; idx2 < len2; ++idx2) {
|
|
|
let vssec: VerticalSourceStaffEntryContainer = sm.VerticalSourceStaffEntryContainers[idx2];
|
|
|
if (timeStamp === vssec.getAbsoluteTimestamp()) {
|
|
|
return sm;
|
|
@@ -465,7 +480,7 @@ export class MusicSheet implements ISettableMusicSheet, IComparable<MusicSheet>
|
|
|
return this.findSourceMeasureFromTimeStamp(timeStamp);
|
|
|
}
|
|
|
public findSourceMeasureFromTimeStamp(timeStamp: Fraction): SourceMeasure {
|
|
|
- for (let idx: number = 0, len: number = this.SourceMeasures.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.SourceMeasures.length; idx < len; ++idx) {
|
|
|
let sm: SourceMeasure = this.SourceMeasures[idx];
|
|
|
if (sm.AbsoluteTimestamp >= timeStamp && timeStamp < sm.AbsoluteTimestamp + sm.Duration) {
|
|
|
return sm;
|