public void GetNoteMotionSpanFromNotes(int previousNote, int currentNote, NoteMotionSpan expectedNoteMotionSpan)
        {
            var context        = _factory.CreateCompositionContext();
            var noteMotionSpan = context.GetNoteMotionSpanFromNotes(previousNote, currentNote);

            Assert.AreEqual(expectedNoteMotionSpan, noteMotionSpan);
        }
Beispiel #2
0
 /// <summary>
 /// Determines whether the given NoteMotionSpan and NoteMotion values create a correct leap return.
 /// </summary>
 /// <param name="currentNoteMotionSpan">The current NoteMotionSpan</param>
 /// <param name="nextNoteMotionSpan">The next NoteMotionSpan</param>
 /// <param name="currentNoteMotion">The current NoteMotion</param>
 /// <param name="nexNoteMotion">The next NoteMotion</param>
 /// <returns>the given NoteMotionSpan and NoteMotion values create a correct leap return</returns>
 private static bool IsCorrectLeapReturn(
     NoteMotionSpan currentNoteMotionSpan,
     NoteMotionSpan nextNoteMotionSpan,
     NoteMotion currentNoteMotion,
     NoteMotion nexNoteMotion
     )
 {
     return(currentNoteMotionSpan == NoteMotionSpan.Leap &&
            nextNoteMotionSpan == NoteMotionSpan.Step &&
            currentNoteMotion != nexNoteMotion);
 }
Beispiel #3
0
        /// <summary>
        /// Determines whether the NoteMotion and NoteMotionSpan values create multiple leaps in the same direction.
        /// </summary>
        /// <param name="currentNoteArrivedFromNoteMotion">The current arrived from NoteMotion</param>
        /// <param name="nextNoteArrivedFromNoteMotion">The next arrived from NoteMotion</param>
        /// <param name="currentNoteArrivedFromNoteMotionSpan">The current arrived from NoteMotionSpan</param>
        /// <param name="nextNoteArrivedFromNoteMotionSpan">The next arrived from NoteMotionSpan</param>
        /// <returns></returns>
        private static bool IsMultipleLeap(
            NoteMotion currentNoteArrivedFromNoteMotion,
            NoteMotion nextNoteArrivedFromNoteMotion,
            NoteMotionSpan currentNoteArrivedFromNoteMotionSpan,
            NoteMotionSpan nextNoteArrivedFromNoteMotionSpan
            )
        {
            if (currentNoteArrivedFromNoteMotionSpan != NoteMotionSpan.Leap)
            {
                return(false);
            }

            return(currentNoteArrivedFromNoteMotionSpan == nextNoteArrivedFromNoteMotionSpan &&
                   currentNoteArrivedFromNoteMotion == nextNoteArrivedFromNoteMotion);
        }
Beispiel #4
0
 /// <summary>
 /// CompositionContext constructor: initialize class properties with explicit values.
 /// </summary>
 /// <param name="counterPointNoteMotion">The counterpoint note motion</param>
 /// <param name="counterPointNoteMotionSpan">The counterpoint note motion span</param>
 /// <param name="counterPointNoteScaleDegree">The counterpoint note scale degree</param>
 /// <param name="cantusFirmusNoteMotion">The cantus firmus note motion</param>
 /// <param name="cantusFirmusNoteMotionSpan">The cantus firmus note motion span</param>
 /// <param name="cantusFirmusNoteScaleDegree">The cantus firmus scale degree</param>
 public CompositionContext(
     NoteMotion counterPointNoteMotion,
     NoteMotionSpan counterPointNoteMotionSpan,
     ScaleDegree counterPointNoteScaleDegree,
     NoteMotion cantusFirmusNoteMotion,
     NoteMotionSpan cantusFirmusNoteMotionSpan,
     ScaleDegree cantusFirmusNoteScaleDegree
     )
 {
     CounterPointNoteMotion      = counterPointNoteMotion;
     CounterPointNoteMotionSpan  = counterPointNoteMotionSpan;
     CounterPointNoteScaleDegree = counterPointNoteScaleDegree;
     CantusFirmusNoteMotion      = cantusFirmusNoteMotion;
     CantusFirmusNoteMotionSpan  = cantusFirmusNoteMotionSpan;
     CantusFirmusNoteScaleDegree = cantusFirmusNoteScaleDegree;
 }
Beispiel #5
0
 /// <summary>
 /// Override for creating a CompositionContext with specified values.
 /// </summary>
 /// <param name="counterPointNoteMotion">The counterpoint NoteMotion to use</param>
 /// <param name="counterPointNoteMotionSpan">The counterpoint NoteMotionSpan to use</param>
 /// <param name="counterPointNoteScaleDegree">The counterpoint ScaleDegree to use</param>
 /// <param name="cantusFirmusNoteMotion">The cantus firmus NoteMotion to use</param>
 /// <param name="cantusFirmusNoteMotionSpan">The cantus firmus NoteMotionSpan to use</param>
 /// <param name="cantusFirmusNoteScaleDegree">The cantus firmus ScaleDegree to use</param>
 /// <returns></returns>
 public CompositionContext CreateCompositionContext(
     NoteMotion counterPointNoteMotion,
     NoteMotionSpan counterPointNoteMotionSpan,
     ScaleDegree counterPointNoteScaleDegree,
     NoteMotion cantusFirmusNoteMotion,
     NoteMotionSpan cantusFirmusNoteMotionSpan,
     ScaleDegree cantusFirmusNoteScaleDegree
     )
 {
     return(new CompositionContext(
                counterPointNoteMotion,
                counterPointNoteMotionSpan,
                counterPointNoteScaleDegree,
                cantusFirmusNoteMotion,
                cantusFirmusNoteMotionSpan,
                cantusFirmusNoteScaleDegree
                ));
 }