Esempio n. 1
0
 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());
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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("   -(-)  ");
     }
 }
Esempio n. 6
0
        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);
        }