public static Note[][] GetDiddy(int length, int genSeed = 0) { Random r; if (genSeed == 0) { r = new Random(); } else { r = new Random(genSeed + Art.SeedShifter); } Note[][] diddy = new Note[length][]; Note startNote = GetRandomNote(r); Scale scale = new Scale(startNote, Scale.GetRandomScaleType(r)); int lastStart = -999; for (int i = 0; i < length; i++) { int numNotes = r.Next(4); int startDegree = -999; while (startDegree == lastStart) { startDegree = r.Next(0, 8); } switch (numNotes) { case 1: Note n = scale.GetNote(startDegree); diddy[i] = new[] { n }; break; case 2: Note start = scale.GetNote(startDegree); int interval = r.Next(2, 5); diddy[i] = new[] { start, start.GetInterval(interval, Tonality.Major) }; break; default: Note[] triad = scale.GetTriad(startDegree, Tonality.Major, r.Next(0, 3)); diddy[i] = triad; break; } lastStart = startDegree; } Note[] finalTriad = scale.GetTriad(0, Tonality.Major, 1); diddy[diddy.Length - 1] = finalTriad; Debug.Log("First Note: " + startNote); diddy.PrintNoteArray(); return(diddy); }