Ejemplo n.º 1
0
    /// <summary>
    /// Combines tetrachords into a fully qualified scale
    /// </summary>
    /// <returns>The tetrachords.</returns>
    /// <param name="lower">Lower.</param>
    /// <param name="upper">Upper.</param>
    /// <param name="upperOffset">The distance between lower.notes[0] and upper.notes[0]</param>
    interval[] CombineTetrachords(Tetrachord lower, Tetrachord upper, interval upperOffset)
    {
        interval[] tempIntervals = new interval[lowerTetra.Intervals.Length + upperTetra.Intervals.Length];

        for (int i = 0; i < tempIntervals.Length; i++)
        {
            int offset = i;
            if (offset < lowerTetra.Intervals.Length)
            {
                tempIntervals [offset] = lowerTetra.Intervals [offset];
            }
            else
            {
                offset            = i - lowerTetra.Intervals.Length;
                tempIntervals [i] = theory.AdjustForScale(upperTetra.Intervals [offset] + (int)upperOffset);
            }
        }
        Debug.Log("New Scale Size: " + tempIntervals.Length);
        return(tempIntervals);
    }
Ejemplo n.º 2
0
 void AssignUpperAndLower(Tetrachord[] upperAndLower)
 {
     lowerTetra = upperAndLower [0];
     upperTetra = upperAndLower [1];
 }