Ejemplo n.º 1
0
        public void invert(Tonality tonality)
        {
            int mean = this.pitchMean();

            int tonicPitch = tonality.getTonicPitch();

            if (tonality.getMode() == Tonality.MINOR)
            {
                tonicPitch += 3;
            }

            tonicPitch = Note.convertToClosestPitch(mean, tonicPitch);

            //Apply inversion
            foreach (MusicItem mi in this.musicItemList)
            {
                mi.invert(tonicPitch, tonality);
            }
        }
        public override void RachmaninoffInvert(int p, Tonality tonality)
        {
            if (this.isSilence())
            {
                return;
            }

            int doubleDistance = 0;

            if (tonality.getMode() == Tonality.MAJOR)
            {
                doubleDistance = this.pitch * 2 - (p * 2 - 1);
            }
            else
            {
                doubleDistance = this.pitch * 2 - (p * 2 + 1);
            }

            this.pitch -= doubleDistance;
        }