private Point3[] GetOcclusionMapping(Dominant dominant, XDir xDir, YDir yDir, ZDir zDir) { if (dominant == Dominant.X) { return(new[] { new Point3((int)xDir, 0, (int)zDir), new Point3((int)xDir, (int)yDir, 0), new Point3((int)xDir, (int)yDir, (int)zDir), }); } if (dominant == Dominant.Y) { return(new[] { new Point3(0, (int)yDir, (int)zDir), new Point3((int)xDir, (int)yDir, 0), new Point3((int)xDir, (int)yDir, (int)zDir), }); } if (dominant == Dominant.Z) { return(new[] { new Point3(0, (int)yDir, (int)zDir), new Point3((int)xDir, 0, (int)zDir), new Point3((int)xDir, (int)yDir, (int)zDir), }); } throw new NotSupportedException(); }
public Scale Transpose(Note key) { int shift = key.NHalfSteps - Tonic.NHalfSteps; return(new Scale(Tonic.MoveSteps(shift), Supertonic.MoveSteps(shift), Mediant.MoveSteps(shift), Subdominant.MoveSteps(shift), Dominant.MoveSteps(shift), Submediant.MoveSteps(shift), Subtonic.MoveSteps(shift))); }
public Scale ChangeOctave(sbyte octaveChange) { return(new Scale(Tonic.MoveOctave(octaveChange), Supertonic.MoveOctave(octaveChange), Mediant.MoveOctave(octaveChange), Subdominant.MoveOctave(octaveChange), Dominant.MoveOctave(octaveChange), Submediant.MoveOctave(octaveChange), Subtonic.MoveOctave(octaveChange))); }
public static void Main(string[] args) { Scale scale = new Scale(); Tonic tonic = new Tonic(scale); Subdominant subD = new Subdominant(scale); Dominant dom = new Dominant(scale); scale.SetDiatonicScale(new string[] { "C", "D", "E", "F", "G", "A", "B" }); scale.RemoveObserver(tonic); scale.RemoveObserver(subD); Submediant subM = new Submediant(scale); scale.SetDiatonicScale(new string[] { "Ab", "Bb", "C", "Db", "Eb", "F", "G" }); Console.ReadLine(); }
private int GetOcclusion(Dominant dominant, XDir xDir, YDir yDir, ZDir zDir) { return(CalculateOcclusion(GetOcclusionValues(GetOcclusionMapping(dominant, xDir, yDir, zDir)))); }