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)); } }
public void PlayChordArpeggio(Arpeggio arpeggio) { StartCoroutine(PlayArpeggio(arpeggio)); }