|
@@ -1,4 +1,18 @@
|
|
|
-export class Instrument extends InstrumentalGroup implements ISettableInstrument, IInstrument {
|
|
|
+import { InstrumentalGroup } from "./InstrumentalGroup";
|
|
|
+import { Label } from "./Label";
|
|
|
+import { MusicSheet } from "./MusicSheet"
|
|
|
+import { Voice } from "./VoiceData/Voice"
|
|
|
+import { Staff } from "./VoiceData/Staff"
|
|
|
+import { SubInstrument } from "./SubInstrument"
|
|
|
+
|
|
|
+// FIXME
|
|
|
+type IPhonicScoreInterface = any;
|
|
|
+type MidiInstrument = any;
|
|
|
+type InstrumentParameters = any;
|
|
|
+type InstrumentParameterChangedDelegate = any;
|
|
|
+
|
|
|
+
|
|
|
+export class Instrument extends InstrumentalGroup /*implements ISettableInstrument, IInstrument*/ {
|
|
|
constructor(id: number, idString: string, phonicScoreInterface: IPhonicScoreInterface, musicSheet: MusicSheet, parent: InstrumentalGroup) {
|
|
|
super(musicSheet, parent);
|
|
|
this.phonicScoreInterface = phonicScoreInterface;
|
|
@@ -12,22 +26,22 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
public InstrumentParameterChanged: InstrumentParameterChangedDelegate;
|
|
|
|
|
|
private phonicScoreInterface: IPhonicScoreInterface;
|
|
|
- private voices: List<Voice> = new List<Voice>();
|
|
|
- private staves: List<Staff> = new List<Staff>();
|
|
|
+ private voices: Voice[] = new Array();
|
|
|
+ private staves: Staff[] = new Array();
|
|
|
private nameLabel: Label;
|
|
|
// private range: ToneRange;
|
|
|
private idString: string;
|
|
|
private id: number;
|
|
|
private hasLyrics: boolean = false;
|
|
|
private hasChordSymbols: boolean = false;
|
|
|
- // private playback
|
|
|
+ private playbackTranspose: number;
|
|
|
|
|
|
- private lyricVersesNumbers: List<number> = new List<number>();
|
|
|
- private subInstruments: List<SubInstrument> = new List<SubInstrument>();
|
|
|
- public get Voices(): List<Voice> {
|
|
|
+ private lyricVersesNumbers: number[] = new Array();
|
|
|
+ private subInstruments: SubInstrument[] = new Array();
|
|
|
+ public get Voices(): Voice[] {
|
|
|
return this.voices;
|
|
|
}
|
|
|
- public get Staves(): List<Staff> {
|
|
|
+ public get Staves(): Staff[] {
|
|
|
return this.staves;
|
|
|
}
|
|
|
public get NameLabel(): Label {
|
|
@@ -45,10 +59,10 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
public set HasChordSymbols(value: boolean) {
|
|
|
this.hasChordSymbols = value;
|
|
|
}
|
|
|
- public get LyricVersesNumbers(): List<number> {
|
|
|
+ public get LyricVersesNumbers(): number[] {
|
|
|
return this.lyricVersesNumbers;
|
|
|
}
|
|
|
- public set LyricVersesNumbers(value: List<number>) {
|
|
|
+ public set LyricVersesNumbers(value: number[]) {
|
|
|
this.lyricVersesNumbers = value;
|
|
|
}
|
|
|
public get Name(): string {
|
|
@@ -76,7 +90,7 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
return this.subInstruments[0].Volume;
|
|
|
}
|
|
|
public set Volume(value: number) {
|
|
|
- for (let idx: number = 0, len: number = this.subInstruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.subInstruments.length; idx < len; ++idx) {
|
|
|
let subInstrument: SubInstrument = this.subInstruments[idx];
|
|
|
subInstrument.Volume = value;
|
|
|
}
|
|
@@ -88,11 +102,11 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
this.playbackTranspose = value;
|
|
|
}
|
|
|
|
|
|
- public get SubInstruments(): List<SubInstrument> {
|
|
|
+ public get SubInstruments(): SubInstrument[] {
|
|
|
return this.subInstruments;
|
|
|
}
|
|
|
public getSubInstrument(subInstrumentIdString: string): SubInstrument {
|
|
|
- for (let idx: number = 0, len: number = this.subInstruments.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.subInstruments.length; idx < len; ++idx) {
|
|
|
let subInstrument: SubInstrument = this.subInstruments[idx];
|
|
|
if (subInstrument.IdString === subInstrumentIdString) {
|
|
|
return subInstrument;
|
|
@@ -101,56 +115,56 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
return undefined;
|
|
|
}
|
|
|
public get Visible(): boolean {
|
|
|
- if (this.voices.Count > 0) {
|
|
|
+ if (this.voices.length > 0) {
|
|
|
return this.Voices[0].Visible;
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
public set Visible(value: boolean) {
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
v.Visible = value;
|
|
|
}
|
|
|
}
|
|
|
public get Audible(): boolean {
|
|
|
let result: boolean = false;
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
result = result || v.Audible;
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
public set Audible(value: boolean) {
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
v.Audible = value;
|
|
|
}
|
|
|
- for (let idx: number = 0, len: number = this.staves.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.staves.length; idx < len; ++idx) {
|
|
|
let staff: Staff = this.staves[idx];
|
|
|
staff.Audible = value;
|
|
|
}
|
|
|
}
|
|
|
public get Following(): boolean {
|
|
|
let result: boolean = false;
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
result = result || v.Following;
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
public set Following(value: boolean) {
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
v.Following = value;
|
|
|
}
|
|
|
- for (let idx: number = 0, len: number = this.staves.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.staves.length; idx < len; ++idx) {
|
|
|
let staff: Staff = this.staves[idx];
|
|
|
staff.Following = value;
|
|
|
}
|
|
|
}
|
|
|
public SetVoiceAudible(voiceId: number, audible: boolean): void {
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
if (v.VoiceId === voiceId) {
|
|
|
v.Audible = audible;
|
|
@@ -159,7 +173,7 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
}
|
|
|
}
|
|
|
public SetVoiceFollowing(voiceId: number, following: boolean): void {
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = this.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = this.Voices[idx];
|
|
|
if (v.VoiceId === voiceId) {
|
|
|
v.Following = following;
|
|
@@ -171,18 +185,18 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
let staff: Staff = this.staves[staffId - 1];
|
|
|
staff.Audible = audible;
|
|
|
if (audible) {
|
|
|
- for (let idx: number = 0, len: number = staff.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = staff.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = staff.Voices[idx];
|
|
|
v.Audible = true;
|
|
|
}
|
|
|
} else {
|
|
|
- for (let idx: number = 0, len: number = staff.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = staff.Voices.length; idx < len; ++idx) {
|
|
|
let voice: Voice = staff.Voices[idx];
|
|
|
let isAudibleInOtherStaves: boolean = false;
|
|
|
- for (let idx2: number = 0, len2: number = this.Staves.Count; idx2 < len2; ++idx2) {
|
|
|
+ for (let idx2: number = 0, len2: number = this.Staves.length; idx2 < len2; ++idx2) {
|
|
|
let st: Staff = this.Staves[idx2];
|
|
|
if (st.Id === staffId || !st.Audible) { continue; }
|
|
|
- for (let idx3: number = 0, len3: number = st.Voices.Count; idx3 < len3; ++idx3) {
|
|
|
+ for (let idx3: number = 0, len3: number = st.Voices.length; idx3 < len3; ++idx3) {
|
|
|
let v: Voice = st.Voices[idx3];
|
|
|
if (v === voice) {
|
|
|
isAudibleInOtherStaves = true;
|
|
@@ -199,18 +213,18 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
let staff: Staff = this.staves[staffId - 1];
|
|
|
staff.Following = follow;
|
|
|
if (follow) {
|
|
|
- for (let idx: number = 0, len: number = staff.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = staff.Voices.length; idx < len; ++idx) {
|
|
|
let v: Voice = staff.Voices[idx];
|
|
|
v.Following = true;
|
|
|
}
|
|
|
} else {
|
|
|
- for (let idx: number = 0, len: number = staff.Voices.Count; idx < len; ++idx) {
|
|
|
+ for (let idx: number = 0, len: number = staff.Voices.length; idx < len; ++idx) {
|
|
|
let voice: Voice = staff.Voices[idx];
|
|
|
let isFollowingInOtherStaves: boolean = false;
|
|
|
- for (let idx2: number = 0, len2: number = this.Staves.Count; idx2 < len2; ++idx2) {
|
|
|
+ for (let idx2: number = 0, len2: number = this.Staves.length; idx2 < len2; ++idx2) {
|
|
|
let st: Staff = this.Staves[idx2];
|
|
|
if (st.Id === staffId || !st.Following) { continue; }
|
|
|
- for (let idx3: number = 0, len3: number = st.Voices.Count; idx3 < len3; ++idx3) {
|
|
|
+ for (let idx3: number = 0, len3: number = st.Voices.length; idx3 < len3; ++idx3) {
|
|
|
let v: Voice = st.Voices[idx3];
|
|
|
if (v === voice) {
|
|
|
isFollowingInOtherStaves = true;
|
|
@@ -224,22 +238,16 @@ export class Instrument extends InstrumentalGroup implements ISettableInstrument
|
|
|
}
|
|
|
}
|
|
|
public areAllVoiceVisible(): boolean {
|
|
|
- let counter: number = 0;
|
|
|
- for (let idx: number = 0, len: number = this.Voices.Count; idx < len; ++idx) {
|
|
|
- let voice: Voice = this.Voices[idx];
|
|
|
- if (voice.Visible) {
|
|
|
- counter++;
|
|
|
+ for (let voice of this.Voices) {
|
|
|
+ if (!voice.Visible) {
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
- if (counter === this.voices.Count) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
+ return true;
|
|
|
}
|
|
|
public createStaves(numberOfStaves: number): void {
|
|
|
for (let i: number = 0; i < numberOfStaves; i++) {
|
|
|
- let staff: Staff = new Staff(this, i + 1);
|
|
|
- this.staves.Add(staff);
|
|
|
+ this.staves.push(new Staff(this, i + 1));
|
|
|
}
|
|
|
}
|
|
|
public SetInstrumentParameter(parameter: InstrumentParameters, value: Object): void {
|