public Calculate ( |
||
congenericTrack | /// The congeneric track. /// | |
리턴 | void |
/// <summary> /// The divide. /// </summary> /// <param name="congenericTrack"> /// The congeneric track. /// </param> /// <param name="paramPauseTreatment"> /// The param pause treatment. /// параметр как учитывать паузу : /// игнорировать, звуковой след предыдущего звука, вырожденныый звук /// </param> /// <param name="paramEqualFM"> /// The param equal fm. /// как сравнивать ф-мотивы с секвентым переносом, либо нет /// </param> /// <returns> /// The <see cref="FmotivChain"/>. /// </returns> public FmotivChain Divide(CongenericScoreTrack congenericTrack, ParamPauseTreatment paramPauseTreatment, ParamEqualFM paramEqualFM) { // сохраняем имя цепи фмотивов как имя монотрека var priorityDiscover = new PriorityDiscover(); var fmotivDivider = new FmotivDivider(); var fmotivIdentifier = new FmotivIdentifier(); // подсчет приоритетов priorityDiscover.Calculate(congenericTrack); // разбиение FmotivChain chain = fmotivDivider.GetDivision(congenericTrack, paramPauseTreatment); // нахождение одинаковых return fmotivIdentifier.GetIdentification(chain, paramPauseTreatment, paramEqualFM); }
public void PriorityDiscoverTest() { var notes = new List<ValueNote> { note, bnote, anote }; var notes1 = new List<ValueNote> { note, note, note }; var notes2 = new List<ValueNote> { anote, note, bnote, note, bnote }; var notes3 = new List<ValueNote> { note, dnote, note, note }; var notes4 = new List<ValueNote> { сnote, сnote, сnote, ccnote, ccnote, ccnote }; var notes5 = new List<ValueNote> { сccnote, сccnote, сccnote, сccnote, сccnote, сccnote, сccnote, note, note }; var measure = new Measure(notes, attributes); var measure1 = new Measure(notes1, attributes1); var measure2 = new Measure(notes2, attributes2); var measure3 = new Measure(notes3, attributes3); var measure4 = new Measure(notes4, attributes1); var measure5 = new Measure(notes5, attributes); var prioritydiscover = new PriorityDiscover(); Assert.AreEqual(-1, measure.NoteList[0].Priority); Assert.AreEqual(-1, measure.NoteList[1].Priority); Assert.AreEqual(-1, measure.NoteList[2].Priority); prioritydiscover.Calculate(measure); prioritydiscover.Calculate(measure1); prioritydiscover.Calculate(measure2); prioritydiscover.Calculate(measure3); prioritydiscover.Calculate(measure4); prioritydiscover.Calculate(measure5); Assert.AreEqual(0, measure.NoteList[0].Priority); Assert.AreEqual(2, measure.NoteList[1].Priority); Assert.AreEqual(1, measure.NoteList[2].Priority); Assert.AreEqual(0, measure1.NoteList[0].Priority); Assert.AreEqual(1, measure1.NoteList[1].Priority); Assert.AreEqual(1, measure1.NoteList[2].Priority); Assert.AreEqual(0, measure2.NoteList[0].Priority); Assert.AreEqual(1, measure2.NoteList[1].Priority); Assert.AreEqual(1, measure2.NoteList[2].Priority); Assert.AreEqual(1, measure2.NoteList[3].Priority); Assert.AreEqual(1, measure2.NoteList[4].Priority); Assert.AreEqual(0, measure3.NoteList[0].Priority); Assert.AreEqual(1, measure3.NoteList[1].Priority); Assert.AreEqual(2, measure3.NoteList[2].Priority); Assert.AreEqual(2, measure3.NoteList[3].Priority); Assert.AreEqual(0, measure4.NoteList[0].Priority); Assert.AreEqual(1, measure4.NoteList[1].Priority); Assert.AreEqual(1, measure4.NoteList[2].Priority); Assert.AreEqual(1, measure4.NoteList[3].Priority); Assert.AreEqual(2, measure4.NoteList[4].Priority); Assert.AreEqual(2, measure4.NoteList[5].Priority); Assert.AreEqual(0, measure5.NoteList[0].Priority); Assert.AreEqual(3, measure5.NoteList[1].Priority); Assert.AreEqual(2, measure5.NoteList[2].Priority); Assert.AreEqual(3, measure5.NoteList[3].Priority); Assert.AreEqual(3, measure5.NoteList[4].Priority); Assert.AreEqual(3, measure5.NoteList[5].Priority); Assert.AreEqual(3, measure5.NoteList[6].Priority); Assert.AreEqual(1, measure5.NoteList[7].Priority); Assert.AreEqual(2, measure5.NoteList[8].Priority); Assert.AreEqual(-1, note.Priority); Assert.AreEqual(-1, bnote.Priority); Assert.AreEqual(-1, anote.Priority); }