Esempio n. 1
0
        /*
         *
         * /// <summary>
         * /// True if enharmonic with any of the accidentedDiatonicIntervals
         * /// </summary>
         * public bool IsEnharmonicWith(params Interval[] qualities)
         * {
         *  if (qualities.Length == 0)
         *      throw new ArgumentNullException("qualities");
         *  var tempThis = this;
         *  var result = qualities.Any(tempThis.IsEnharmonicWith);
         *
         *  return result;
         * }
         *
         * public Interval? ToEnharmonic(Interval interval)
         * {
         *  var result =
         *      IsEnharmonicWith(interval)
         *          ? (Interval?) interval
         *          : null;
         *
         *  return result;
         * }
         *
         * public Interval? ToEnharmonic(params Interval[] qualities)
         * {
         *  if (qualities.Length == 0)
         *      throw new ArgumentNullException("qualities");
         *
         *  var tmpThis = this;
         *  foreach (var interval in qualities.Where(tmpThis.IsEnharmonicWith))
         *      return interval;
         *  return null;
         * }
         *
         * /// <summary>
         * /// Returns a new Interval where explicit natural is replace with natural
         * /// </summary>
         * public Interval ToNormalizedNatural()
         * {
         *  if (Accidental != Accidental.Natural)
         *      return this;
         *
         *  var result = new Interval(this.interval, Accidental.None);
         *
         *  return result;
         * }
         *
         */

        public Interval ToInversion()
        {
            var invertedDiatonicInterval = DiatonicInterval.Invert();
            var result = new Interval(invertedDiatonicInterval, !Accidental);

            return(result);
        }
Esempio n. 2
0
 public Interval(
     DiatonicInterval diatonicInterval,
     Accidental accidental) : base(GetDistance(diatonicInterval, accidental))
 {
     DiatonicInterval = diatonicInterval;
     Accidental       = accidental;
     Name             = $"{Accidental}{(int) diatonicInterval}";
 }
Esempio n. 3
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = base.GetHashCode();
         hashCode = (hashCode * 397) ^ DiatonicInterval.GetHashCode();
         hashCode = (hashCode * 397) ^ Accidental.GetHashCode();
         return(hashCode);
     }
 }
Esempio n. 4
0
 public bool Equals(Interval other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(base.Equals(other) && DiatonicInterval.Equals(other.DiatonicInterval) && Accidental.Equals(other.Accidental));
 }
 protected override DiatonicInterval OnAmbitusExceeded(DiatonicInterval generatedInterval, Pitch generatedPitch)
 {
     if (generatedPitch > MaxPitch)
     {
         generatedInterval = generatedInterval.MakeDescending();
     }
     if (generatedPitch < MinPitch)
     {
         generatedInterval = generatedInterval.MakeAscending();
     }
     return(generatedInterval);
 }
Esempio n. 6
0
        public int CompareTo(Interval other)
        {
            var result = DiatonicInterval.CompareTo(other.DiatonicInterval);

            if (result != 0)
            {
                return(result);
            }

            result = Accidental.CompareTo(other.Accidental);

            return(result);
        }
Esempio n. 7
0
        private static int GetDistance(
            DiatonicInterval diatonicInterval,
            Accidental accidental)
        {
            var diatonicDistance = (int)diatonicInterval - 1;
            var octave           = 0;

            if (diatonicDistance >= 8)
            {
                diatonicDistance -= 8;
                octave            = 1;
            }
            if (diatonicDistance < 0)
            {
                diatonicDistance += 8;
                octave            = -1;
            }

            var result = ScaleDefinition.Major.Absolute[diatonicDistance] + accidental.Distance + octave * 8;

            return(result);
        }
Esempio n. 8
0
 public Interval(DiatonicInterval diatonicInterval)
     : this(diatonicInterval, Accidental.None)
 {
 }
Esempio n. 9
0
        // ReSharper restore InconsistentNaming

        public IntervalFilter(DiatonicInterval diatonicInterval)
            : base(diatonicInterval)
        {
        }
Esempio n. 10
0
 protected virtual DiatonicInterval OnAmbitusExceeded(DiatonicInterval generatedInterval, Pitch generatedPitch)
 {
     return(generatedInterval);
 }