public TuneInfo PickSoloLeaderNote(Bands bands, FrequencyChart chart, int harmonics = 1) { return(chart.OrderByDescending(k => k.Level) .Skip(harmonics - 1) .Select(k => bands.NoteByFreq(k.Frequency)) .First()); }
public Bands TonesBoundGenerator() { var notes = new[] { "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A" }; var bands = new Bands(); bands.Notes.Add(new Note(0, "-", 0)); bands.Notes.Add(new Note(27.5, "A", 0)); var fact = 1.0595; var octave = 0; var names = new List <string> { "-", "A" }; for (var j = 0; j < 9 * 12; j++) { bands.Notes.Add(new Note(bands.Notes.Last().Frequency *fact, notes[j % 12], octave)); if (j % 12 == 2) { octave++; } } return(bands); }
public string PickNoteWithVoting(Bands bands, FrequencyChart chart) { return(chart.OrderByDescending(k => k.Level) .Take(15) .Select(k => bands.NoteByFreq(k.Frequency)) .GroupBy(k => k.Note.NoteName) .Select(k => new { note = k.Key, count = k.Count() }) .OrderByDescending(k => k.count) .First().note); }
public Bands DrumTuningGenerator(double maxFreq) { var bands = new Bands(); var e = Unfold(new Note(0, "", 0), k => k.Frequency < maxFreq, k => new Note(k.Frequency < 70 ? k.Frequency + 0.1 : (k.Frequency < 1000 ? k.Frequency + 1 : k.Frequency + 10), "", 0)); bands.Notes = e.ToList(); return(bands); }
public string StringForBand(Bands bands, FrequencyChart freq, int noteCount = 1) { if (freq.Any()) { var nt = ""; for (int i = 0; i < noteCount; i++) { var maxFrequency = Math.Round(freq.OrderByDescending(k => k.Level).Skip(i).First().Frequency, 1); nt += bands.NoteByFreq(maxFrequency) + " (" + maxFrequency + ") "; } return(nt + "\n"); } else { return(" -(-) "); } }
public Bands BoundGenerator(double maxFreq, int semitonesInBand) { var fact = Math.Pow(1.0595, semitonesInBand); var bands = new Bands(); bands.Notes.Add(new Note(0, "-", 0)); var freqs = new List <double>(new[] { maxFreq }); var names = new List <string>(); for (var j = 0; freqs.Last() > 16; j++) { freqs.Add(freqs.Last() / fact); names.Add(""); } freqs.Add(0); freqs.Reverse(); return(bands); }