-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathArpeggioGenerator.cs
More file actions
30 lines (26 loc) · 893 Bytes
/
ArpeggioGenerator.cs
File metadata and controls
30 lines (26 loc) · 893 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static class ArpeggioGenerator
{
public static List<int> GenerateArpeggio(List<int> chord, int numberOfNotes)
{
var arpeggio = new List<int>();
int chordSize = chord.Count;
// Repeating the chord notes to reach the desired number of notes
for (int i = 0; i < numberOfNotes; i++)
{
// Cycling through the chord notes
int noteIndex = i % chordSize;
arpeggio.Add(chord[noteIndex]);
}
return arpeggio;
}
public static List<List<int>> GenerateArpeggiosFromChords(List<List<int>> chords, int numberOfNotesPerArpeggio)
{
var arpeggios = new List<List<int>>();
foreach (var chord in chords)
{
var arpeggio = GenerateArpeggio(chord, numberOfNotesPerArpeggio);
arpeggios.Add(arpeggio);
}
return arpeggios;
}
}