Example #1
0
    IEnumerator PlayArpeggio(Arpeggio arpeggio)
    {
        Chord chord           = arpeggio.chord;
        int   notesQuant      = arpeggio.arpeggioPattern.Length;
        float durationInBeats = arpeggio.durationInCompasses * MusicParameters.instance.signature; // Duration of arpeggio
        float timeBeat        = 60f / MusicParameters.instance.bpm;                                // Time between two beats
        float timeInterval    = timeBeat * durationInBeats / notesQuant;                           // Time between two notes in this arpeggio

        for (int i = 0; i < notesQuant; i++)
        {
            int note = IntervalDictionary.nameToNumber[arpeggio.arpeggioPattern[i]];
            PlayNote(note + chord.intervalFromBaseNote, chord.octave);
            yield return(new WaitForSeconds(timeInterval));
        }
    }
Example #2
0
 public void PlayChordArpeggio(Arpeggio arpeggio)
 {
     StartCoroutine(PlayArpeggio(arpeggio));
 }