Exemple #1
0
        private double GetNumberOfIntervals(ConsonanceCatagories cc, int start, int end)
        {
            double ret = 0;
            var    partIntervalList = new List <Interval>();

            if (start != -1 && end != -1)
            {
                partIntervalList = intervalList.Where(i => i.measureNumber >= start && i.measureNumber <= end).ToList();
            }
            else
            {
                partIntervalList = intervalList;
            }
            var cclist = partIntervalList.Where(p => p.consonanceCategory == cc);

            return(cclist.Sum(c => c.weight));
        }
Exemple #2
0
        public static (int, IntervalCatagories, ConsonanceCatagories) GetIntervalDetails(Note a, Note b)
        {
            IntervalCatagories   intervalCategory   = 0;
            ConsonanceCatagories consonanceCategory = ConsonanceCatagories.perfectConsonance;

            //real length
            int length = b.id - a.id;

            var distance = Math.Abs(length);

            while (distance > 12)
            {
                distance -= 12;
            }

            //https://en.wikipedia.org/wiki/Consonance_and_dissonance
            switch (distance)
            {
            //unison and octave
            case 0:
                intervalCategory   = IntervalCatagories.unison;
                consonanceCategory = ConsonanceCatagories.perfectConsonance;
                break;

            case 12:
                intervalCategory   = IntervalCatagories.octave;
                consonanceCategory = ConsonanceCatagories.perfectConsonance;
                break;

            //fourth and fifth
            case 5:
                intervalCategory   = IntervalCatagories.perfectFourth;
                consonanceCategory = ConsonanceCatagories.medianConsonance;
                break;

            case 7:
                intervalCategory   = IntervalCatagories.perfectFifth;
                consonanceCategory = ConsonanceCatagories.medianConsonance;
                break;

            //minor and major third
            case 3:
                intervalCategory   = IntervalCatagories.minorThird;
                consonanceCategory = ConsonanceCatagories.imperfectConsonance;
                break;

            case 4:
                intervalCategory   = IntervalCatagories.majorThird;
                consonanceCategory = ConsonanceCatagories.imperfectConsonance;
                break;

            //major sixth and minor seventh
            case 9:
                intervalCategory   = IntervalCatagories.majorSixth;
                consonanceCategory = ConsonanceCatagories.imperfectDissonance;
                break;

            case 8:
                intervalCategory   = IntervalCatagories.minorSixth;
                consonanceCategory = ConsonanceCatagories.imperfectDissonance;
                break;

            //major second and minor sixth
            case 2:
                intervalCategory   = IntervalCatagories.majorSecond;
                consonanceCategory = ConsonanceCatagories.medianDissonance;
                break;

            case 10:
                intervalCategory   = IntervalCatagories.minorSeventh;
                consonanceCategory = ConsonanceCatagories.medianDissonance;
                break;

            //semitone, tritone, major seventh
            case 1:
                intervalCategory   = IntervalCatagories.minorSecond;
                consonanceCategory = ConsonanceCatagories.perfectDisonnace;
                break;

            case 6:
                intervalCategory   = IntervalCatagories.augmentFourth;
                consonanceCategory = ConsonanceCatagories.perfectDisonnace;
                break;

            case 11:
                intervalCategory   = IntervalCatagories.majorSeventh;
                consonanceCategory = ConsonanceCatagories.perfectDisonnace;
                break;
            }
            return(length, intervalCategory, consonanceCategory);
        }