Exemplo n.º 1
0
    private void GenerateNextProgression()
    {
        if (sequenceNumber % 3 != 0)
        {
            currentKey = (MusicalKey)Random.Range(1, (int)MusicalKey.count); // maybe switch key
            // currentKey = currentKey == MusicalKey.CMajor ? MusicalKey.CMinor : MusicalKey.CMajor; // maybe switch key
        }

        currentProgression = (Progression)Random.Range(1, (int)Progression.count); // get random progression
        switch (currentProgression)
        {
        case Progression.None:
            Debug.LogError("Error in progression assignment");
            break;

        case Progression.TonicDominantTonic:
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.dominant));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordNumber += 3;
            break;

        case Progression.TonicSubdominantTonic:
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.subdominant));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordNumber += 3;
            break;

        case Progression.TonicDominantSubdominantTonic:
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.dominant));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.subdominant));
            chordQueue.Enqueue(chordController.GetChordOfType(currentKey, ChordFunction.tonic));
            chordNumber += 4;
            break;

        case Progression.count:
            Debug.LogError("Error in progression assignment");
            break;

        default:
            Debug.LogError("Error in progression assignment");
            break;
        }
        sequenceNumber++;
    }