|
@@ -83,7 +83,7 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
private isInitialized: boolean = false; // make sure midi device gets opened only once
|
|
|
private nextIteratorTimestamp: Fraction;
|
|
|
private playNextMetronomeAt: Fraction;
|
|
|
- private masterTranspose: number = 0;
|
|
|
+ // private masterTranspose: number = 0;
|
|
|
|
|
|
private isPlaying: boolean = false;
|
|
|
private metronome: MetronomeInstrument;
|
|
@@ -152,12 +152,12 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
this.metronomeOnlyBPM = value;
|
|
|
}
|
|
|
|
|
|
- public get Transpose(): number {
|
|
|
- return this.masterTranspose;
|
|
|
- }
|
|
|
- public set Transpose(value: number) {
|
|
|
- this.masterTranspose = value;
|
|
|
- }
|
|
|
+ // public get Transpose(): number {
|
|
|
+ // return this.masterTranspose;
|
|
|
+ // }
|
|
|
+ // public set Transpose(value: number) {
|
|
|
+ // this.masterTranspose = value;
|
|
|
+ // }
|
|
|
|
|
|
public get OriginalBpm(): number {
|
|
|
return this.currentReferenceBPM;
|
|
@@ -191,15 +191,17 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
const channel: number = this.instrumentToStaffToMidiChannelDict.getValue(ve.Notes[0].ParentStaff);
|
|
|
const instrument: Instrument = ve.ParentVoice.Parent;
|
|
|
const isPercussion: boolean = instrument.MidiInstrumentId === MidiInstrument.Percussion;
|
|
|
- const instrumentPlaybackTranspose: number = ve.ParentVoice.Parent.PlaybackTranspose;
|
|
|
const volume: number = 0.8;
|
|
|
const notesToPlay: ChannelNote[] = [];
|
|
|
|
|
|
+ const transpose: number = this.musicPartManager.MusicSheet.Transpose;
|
|
|
+ const instrumentPlaybackTranspose: number = ve.ParentVoice.Parent.PlaybackTranspose;
|
|
|
+
|
|
|
for (const note of ve.MainPlaybackEntry.Notes.filter(n => n.MidiKey !== 0)) {
|
|
|
// play the note
|
|
|
let key: number = note.MidiKey;
|
|
|
if (!isPercussion) {
|
|
|
- key += instrumentPlaybackTranspose + this.masterTranspose;
|
|
|
+ key += instrumentPlaybackTranspose + transpose;
|
|
|
}
|
|
|
if (note.ParentNote.PlaybackInstrumentId !== undefined) {
|
|
|
const notePlaybackInstrument: SubInstrument =
|
|
@@ -662,8 +664,6 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const instrumentPlaybackTranspose: number = instrument.PlaybackTranspose ?? 0;
|
|
|
-
|
|
|
// calculate volume from instrument volume, staff volume and voice volume:
|
|
|
let volume: number = instrument.Volume * staff.Volume * voiceEntry.ParentVoice.Volume;
|
|
|
|
|
@@ -681,11 +681,14 @@ export class PlaybackManager implements IPlaybackParametersListener {
|
|
|
volume = Math.min(1, volume);
|
|
|
}
|
|
|
|
|
|
+ const transpose: number = this.musicPartManager.MusicSheet.Transpose;
|
|
|
+ const instrumentPlaybackTranspose: number = instrument.PlaybackTranspose ?? 0;
|
|
|
+
|
|
|
for (const note of playbackEntry.Notes.filter(n => n.MidiKey !== 0)) {
|
|
|
// play the note
|
|
|
let key: number = note.MidiKey;
|
|
|
if (!isPercussion) {
|
|
|
- key += instrumentPlaybackTranspose + this.masterTranspose;
|
|
|
+ key += instrumentPlaybackTranspose + transpose;
|
|
|
}
|
|
|
|
|
|
// if note has another explicitly given playback instrument:
|