using System; using System.Collections.Generic; using Melanchall.DryWetMidi.Smf.Interaction; namespace MusicBoxConverter { public class MusicBox { public string Name { get; private set; } public List ValidNotes { get; private set; } private MusicBox(string inName, List inValidNotes) { Name = inName; ValidNotes = inValidNotes; } /// /// Calculates whether the specified note can be played by this music box. /// /// The note to check. /// Whether the note can be played by this music box. public bool IsValidNote(Note note) { return ValidNotes.Contains( (note.NoteName.ToString() + note.Octave).Replace("Sharp", "") ); } public override string ToString() { return Name; //return string.Format("[MusicBox: Name={0}, ValidNotes={1}]", Name, ValidNotes); } /// /// A 30 note music box. /// @Starbeamrainbowlabs has one of these - it was the part of the /// inspiration for the whole project! /// public static MusicBox Note30 = new MusicBox( "30 Note Music Box", new List() { "G3", "C4", "D4", "E4", "F4", "G4", "A4", "A#4", "B4", "C5", "C#5", "D5", "D#5", "E5", "F5", "F#5", "G5", "G#5", "A5", "A#5", "B5", "C6", "C#6", "D6", "D#6", "E6", "F6", "F#6", "G6", "A6" } ); } }