コード例 #1
0
        public IInstrument GetInstrument()
        {
            string name = Settings[Prefix + "instrument"];

            string level = InstrumentTuningLevel;

            if (null != _cachedInstrument)
            {
                if (_cachedInstrument.Name == name && _cachedInstrument.Level == level)
                {
                    return(_cachedInstrument);
                }
                _cachedInstrument = null;
                _cachedTuning     = null;
            }

            InstrumentSet instruments = _configFile.Instruments;

            while (null != instruments)
            {
                if (instruments.Level == level)
                {
                    if (instruments.TryGet(name, out Instrument i))
                    {
                        _cachedInstrument = i;
                        break;
                    }
                }

                instruments = instruments.Parent;
            }

            return(_cachedInstrument);
        }
コード例 #2
0
ファイル: ConfigFile.cs プロジェクト: LloydAZ/Chordious
        public ConfigFile(string level)
        {
            Level = level;

            ChordiousSettings = new ChordiousSettings(level);
            DiagramStyle      = new DiagramStyle(level);
            Instruments       = new InstrumentSet(level);
            ChordQualities    = new ChordQualitySet(level);
            Scales            = new ScaleSet(level);
            DiagramLibrary    = new DiagramLibrary(DiagramStyle);
        }
コード例 #3
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
        public void CopyFrom(InstrumentSet instrumentSet)
        {
            if (null == instrumentSet)
            {
                throw new ArgumentNullException(nameof(instrumentSet));
            }

            foreach (Instrument sourceInstrument in instrumentSet)
            {
                if (!TryGet(sourceInstrument.Name, out Instrument instrument))
                {
                    instrument = Add(sourceInstrument.Name, sourceInstrument.NumStrings);
                }

                if (sourceInstrument.NumStrings == instrument.NumStrings)
                {
                    instrument.Tunings.CopyFrom(sourceInstrument.Tunings);
                }
            }
        }
コード例 #4
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
 internal InstrumentSet(InstrumentSet parent, string level) : this(level)
 {
     Parent = parent ?? throw new ArgumentNullException(nameof(parent));
 }
コード例 #5
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
 public InstrumentNameAlreadyExistsException(InstrumentSet instrumentSet, string name) : base(instrumentSet, name)
 {
 }
コード例 #6
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
 public InstrumentNotFoundException(InstrumentSet instrumentSet, string name) : base(instrumentSet, name)
 {
 }
コード例 #7
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
 public TargetInstrumentException(InstrumentSet instrumentSet, string name) : base(instrumentSet)
 {
     Name = name;
 }
コード例 #8
0
ファイル: InstrumentSet.cs プロジェクト: LloydAZ/Chordious
 public InstrumentSetException(InstrumentSet instrumentSet) : base()
 {
     InstrumentSet = instrumentSet;
 }
コード例 #9
0
ファイル: Instrument.cs プロジェクト: LloydAZ/Chordious
 internal Instrument(InstrumentSet parent, XmlReader xmlReader) : this(parent)
 {
     Read(xmlReader);
 }
コード例 #10
0
ファイル: Instrument.cs プロジェクト: LloydAZ/Chordious
 internal Instrument(InstrumentSet parent, string name, int numStrings) : this(parent)
 {
     Name       = name;
     NumStrings = numStrings;
 }
コード例 #11
0
ファイル: Instrument.cs プロジェクト: LloydAZ/Chordious
 private Instrument(InstrumentSet parent)
 {
     ReadOnly = false;
     _tunings = new TuningSet(this);
     Parent   = parent;
 }