Beispiel #1
0
        internal void GetFinale(List <Palette> palettes, Dictionary <string, int> msPositions, Krystal krystal)
        {
            Palette f1FinalePalette1  = palettes[12];
            Palette f1FinalePalette2  = palettes[16];
            Palette f1PostludePalette = palettes[20];

            List <int> strandIndices = new List <int>();
            int        index         = 0;

            for (int i = 0; i < krystal.Strands.Count; ++i)
            {
                strandIndices.Add(index);
                index += krystal.Strands[i].Values.Count;
            }

            TrkDef f1Interlude3Verse4e = GetF1FinalePart1(f1FinalePalette1, krystal, strandIndices, msPositions);
            TrkDef f1Verse4eVerse5     = GetF1FinalePart2(f1FinalePalette2, krystal, strandIndices, msPositions);
            TrkDef f1Postlude          = GetF1Postlude(f1PostludePalette, krystal, strandIndices, msPositions);

            TrkDef furies1Finale = f1Interlude3Verse4e;

            furies1Finale.AddRange(f1Verse4eVerse5);
            furies1Finale.AddRange(f1Postlude);

            //furies1Finale.TransposeNotation(-12);

            if (furies1Finale[furies1Finale.Count - 1] is RestDef)
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            if (furies1Finale[furies1Finale.Count - 1].MsPosition + furies1Finale[furies1Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            InsertInRest(furies1Finale);

            Erase(this[282].MsPosition, msPositions["endOfPiece"]);

            AdjustPitchWheelDeviations(msPositions["interlude3"], msPositions["endOfPiece"], 5, 28);
        }