Example #1
0
        private List <VoiceDef> WriteLowerStaff(int staffNumber, List <VoiceDef> topStaffBars)
        {
            List <VoiceDef>    consecutiveBars  = new List <VoiceDef>();
            Krystal            krystal          = _krystals[staffNumber - 1];
            Palette            palette          = _palettes[staffNumber - 1];
            List <List <int> > strandValuesList = krystal.GetValues(krystal.Level);

            Debug.Assert(topStaffBars.Count == strandValuesList.Count);

            for (int barIndex = 0; barIndex < strandValuesList.Count; barIndex++)
            {
                VoiceDef topStaffVoice     = topStaffBars[barIndex];
                VoiceDef newVoice          = new TrkDef((byte)(staffNumber - 1), new List <IUniqueDef>());
                int      currentMsPosition = topStaffVoice.UniqueDefs[0].MsPosition;

                List <int> lowerStaffValueSequence = strandValuesList[barIndex];
                List <int> lowerStaffMsDurations   = LowerStaffMsDurations(topStaffVoice, lowerStaffValueSequence.Count);
                for (int valueIndex = 0; valueIndex < lowerStaffValueSequence.Count; valueIndex++)
                {
                    int        value   = lowerStaffValueSequence[valueIndex];
                    IUniqueDef noteDef = palette.UniqueDurationDef(value - 1);
                    noteDef.MsDuration = lowerStaffMsDurations[valueIndex];
                    noteDef.MsPosition = currentMsPosition;
                    currentMsPosition += noteDef.MsDuration;
                    newVoice.UniqueDefs.Add(noteDef);
                }

                consecutiveBars.Add(newVoice);
            }
            return(consecutiveBars);
        }
Example #2
0
        public StrandsBrowser(Krystal krystal, Point location)
        {
            InitializeComponent();
            this.Text = krystal.Name;
            _krystal  = krystal;

            StrandsTreeView.Nodes.Clear();

            if (krystal is LineKrystal)
            {
                SetForLineKrystal((LineKrystal)krystal);
            }
            else if (krystal is ModulationKrystal)
            {
                SetForModulationKrystal((ModulationKrystal)krystal);
            }
            else if (krystal is PermutationKrystal)
            {
                SetForPermutationKrystal((PermutationKrystal)krystal);
            }
            else if (krystal is ExpansionKrystal || krystal is ShapedExpansionKrystal)
            {
                SetForExpansionKrystal((ExpansionKrystalBase)krystal);
            }

            this.Location = location;
        }
Example #3
0
 private TrkDef GetWind3(byte midiChannel, Palette palette, Krystal krystal)
 {
     TrkDef wind3 = palette.NewTrkDef(midiChannel, krystal);
     wind3.Transpose(0, wind3.Count, -13);
     wind3.StepwiseGliss(74, wind3.Count, 19);
     return wind3;
 }
Example #4
0
        private TrkDef GetF1FinalePart2(Palette f1FinalePalette2, Krystal krystal, List <int> strandIndices, Dictionary <string, int> msPositions)
        {
            TrkDef f1FinalePart2 = f1FinalePalette2.NewTrkDef(this.MidiChannel, krystal);

            List <int> f1eStrandDurations = GetStrandDurations(f1FinalePart2, strandIndices);

            int extraTime = 500;
            int diff      = extraTime / f1FinalePart2.Count;

            for (int i = f1FinalePart2.Count - 1; i > 0; --i)
            {
                if (strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1FinalePart2[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] + extraTime);
                    extraTime -= diff;
                    f1FinalePart2.Insert(i, umrd);
                }
            }

            f1FinalePart2.StartMsPosition = msPositions["verse4EsCaped"];
            f1FinalePart2.RemoveBetweenMsPositions(msPositions["verse5Calls"], int.MaxValue);

            if (f1FinalePart2[f1FinalePart2.Count - 1] is RestDef)
            {
                f1FinalePart2[f1FinalePart2.Count - 1].MsDuration = msPositions["postlude"] - f1FinalePart2[f1FinalePart2.Count - 1].MsPosition;
            }

            return(f1FinalePart2);
        }
Example #5
0
        private TrkDef GetF1FinalePart1(Palette palette, Krystal krystal, List <int> strandIndices, Dictionary <string, int> msPositions)
        {
            TrkDef f1FinalePart1 = palette.NewTrkDef(0, krystal);

            List <int> f1eStrandDurations = GetStrandDurations(f1FinalePart1, strandIndices);

            int extraTime = 1000;
            int diff      = extraTime / f1FinalePart1.Count;

            for (int i = f1FinalePart1.Count - 1; i > 0; --i)
            {
                if (strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1FinalePart1[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] + extraTime);
                    extraTime -= diff;
                    f1FinalePart1.Insert(i, umrd);
                }
            }

            f1FinalePart1.StartMsPosition = msPositions["interlude3Bar2"];

            f1FinalePart1.RemoveBetweenMsPositions(msPositions["verse4EsCaped"], int.MaxValue);

            if (f1FinalePart1[f1FinalePart1.Count - 1] is RestDef)
            {
                f1FinalePart1[f1FinalePart1.Count - 1].MsDuration = msPositions["verse4EsCaped"] - f1FinalePart1[f1FinalePart1.Count - 1].MsPosition;
            }

            return(f1FinalePart1);
        }
Example #6
0
 /// <summary>
 /// The krystalNameDelegate is called with the current krystal name when this krystalBrowser is closed.
 /// The krystalBrowser opens with the given krystal selected.
 /// </summary>
 public KrystalBrowser(Krystal krystal, string krystalsFolder, KrystalDelegate krystalNameDelegate)
 {
     InitializeComponent();
     _krystal = krystal;
     _krystalsFolder = krystalsFolder;
     _sendKrystal = krystalNameDelegate;
     InitializeKrystalBrowser();
 }
Example #7
0
 /// <summary>
 /// The krystalNameDelegate is called with the current krystal name when this krystalBrowser is closed.
 /// The krystalBrowser opens with the given krystal selected.
 /// </summary>
 public KrystalBrowser(Krystal krystal, string krystalsFolder, KrystalDelegate krystalNameDelegate)
 {
     InitializeComponent();
     _krystal        = krystal;
     _krystalsFolder = krystalsFolder;
     _sendKrystal    = krystalNameDelegate;
     InitializeKrystalBrowser();
 }
Example #8
0
        /// <summary>
        /// Returns a dictionary containing the current transposition per msPosition
        /// ( Dictionary[msPositon, transposition] )
        /// </summary>
        /// <returns></returns>
        public Dictionary <int, int> SetFinalMelody(Krystal mod7krys, Krystal mod12krys)
        {
            int f4Interlude4Index = 42;
            int f4PostludeIndex   = 59;
            int f4finalPhaseIndex = 73;

            List <int> mod7Values  = mod7krys.GetValues(1)[0];
            List <int> mod12Values = mod12krys.GetValues(1)[0];

            // circle of fifths hierarchy (mod 12): 0 7 4 2 10 9 3 4 8 11 1 6
            // rearranged for mod7krys hierarchy (4536271)
            int[] transpositionArray1 = { 3, -2, 4, 0, 4, 2, -3 };                  // 7 changed to 4 (was too high!)
            // circle of fifths hierarchy centred on 0:
            int[] transpositionArray2 = { 0, 4, 4, 2, -2, -3, 3, 4, -4, -1, 1, 6 }; // 7 changed to 4 (was too high!)
            // widened
            int[] transpositionArray3 = { 0, 9, 4, 4, -2, -5, 6, 8, -7, -2, 2, 11 };

            Dictionary <int, int> msPosTranspositionDict = new Dictionary <int, int>();

            int transposition;
            int valueIndex = 0;

            for (int i = f4Interlude4Index; i < f4PostludeIndex; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if (umcd != null)
                {
                    transposition = transpositionArray1[mod7Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPosition, transposition);
                }
            }
            valueIndex = 0;
            for (int i = f4PostludeIndex; i < f4finalPhaseIndex; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if (umcd != null)
                {
                    transposition = transpositionArray2[mod12Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPosition, transposition);
                }
            }
            valueIndex = 0;
            for (int i = f4finalPhaseIndex; i < this.Count; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if (umcd != null)
                {
                    transposition = transpositionArray3[mod12Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPosition, transposition);
                }
            }

            return(msPosTranspositionDict);
        }
Example #9
0
        /// <summary>
        /// Returns a dictionary containing the current transposition per msPosition
        /// ( Dictionary[msPositon, transposition] )
        /// </summary>
        /// <returns></returns>
        public Dictionary<int, int> SetFinalMelody(Krystal mod7krys, Krystal mod12krys)
        {
            int f4Interlude4Index = 42;
            int f4PostludeIndex = 59;
            int f4finalPhaseIndex = 73;

            List<int> mod7Values = mod7krys.GetValues(1)[0];
            List<int> mod12Values = mod12krys.GetValues(1)[0];

            // circle of fifths hierarchy (mod 12): 0 7 4 2 10 9 3 4 8 11 1 6
            // rearranged for mod7krys hierarchy (4536271)
            int[] transpositionArray1 = { 3, -2, 4, 0, 4, 2, -3 }; // 7 changed to 4 (was too high!)
            // circle of fifths hierarchy centred on 0:
            int[] transpositionArray2 = { 0, 4, 4, 2, -2, -3, 3, 4, -4, -1, 1, 6 }; // 7 changed to 4 (was too high!)
            // widened
            int[] transpositionArray3 = { 0, 9, 4, 4, -2, -5, 6, 8, -7, -2, 2, 11 };

            Dictionary<int, int> msPosTranspositionDict = new Dictionary<int, int>();

            int transposition;
            int valueIndex = 0;
            for(int i = f4Interlude4Index; i < f4PostludeIndex; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if(umcd != null)
                {
                    transposition = transpositionArray1[mod7Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPositionReTrk, transposition);
                }
            }
            valueIndex = 0;
            for(int i = f4PostludeIndex; i < f4finalPhaseIndex; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if(umcd != null)
                {
                    transposition = transpositionArray2[mod12Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPositionReTrk, transposition);
                }
            }
            valueIndex = 0;
            for(int i = f4finalPhaseIndex; i < this.Count; ++i)
            {
                MidiChordDef umcd = this[i] as MidiChordDef;
                if(umcd != null)
                {
                    transposition = transpositionArray3[mod12Values[valueIndex++] - 1];
                    umcd.Transpose(transposition);
                    msPosTranspositionDict.Add(umcd.MsPositionReTrk, transposition);
                }
            }

            return msPosTranspositionDict;
        }
Example #10
0
        /// <summary>
        /// Could be a protected function in a furies class
        /// </summary>
        private List <int> GetStrandIndices(Krystal krystal)
        {
            List <int> strandIndices = new List <int>();
            int        index         = 0;

            for (int i = 0; i < krystal.Strands.Count; ++i)
            {
                strandIndices.Add(index);
                index += krystal.Strands[i].Values.Count;
            }

            return(strandIndices);
        }
Example #11
0
        private Krystal GetKrystal(string krystalFileName)
        {
            Krystal krystal = null;

            try
            {
                string krystalPath = M.Preferences.LocalMoritzKrystalsFolder + @"\" + krystalFileName;
                krystal = K.LoadKrystal(krystalPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error loading krystal.\n\n" + ex.Message);
                krystal = null;
            }
            return(krystal);
        }
Example #12
0
        public StrandsBrowser(Krystal krystal, Point location)
        {
            InitializeComponent();
            this.Text = krystal.Name;
            _krystal = krystal;

            StrandsTreeView.Nodes.Clear();

            if(krystal is LineKrystal)
                SetForLineKrystal((LineKrystal) krystal);
            else if(krystal is ModulationKrystal)
                SetForModulationKrystal((ModulationKrystal)krystal);
            else if(krystal is PermutationKrystal)
                SetForPermutationKrystal((PermutationKrystal)krystal);
            else if(krystal is ExpansionKrystal || krystal is ShapedExpansionKrystal)
                SetForExpansionKrystal((ExpansionKrystalBase) krystal);

            this.Location = location;
        }
Example #13
0
        private TrkDef GetF2Finale(List <Palette> palettes, Krystal krystal, Dictionary <string, int> msPositions)
        {
            Palette f2FinalePalette1  = palettes[11];
            Palette f2FinalePalette2  = palettes[15];
            Palette f2PostludePalette = palettes[19];

            List <int> strandIndices = GetStrandIndices(krystal);

            TrkDef finalePart1 = f2FinalePalette1.NewTrkDef(this.MidiChannel, krystal);

            Transform(finalePart1, msPositions, strandIndices);
            TrkDef finalePart2 = f2FinalePalette2.NewTrkDef(this.MidiChannel, krystal);

            Transform(finalePart2, msPositions, strandIndices);
            TrkDef postlude = f2PostludePalette.NewTrkDef(this.MidiChannel, krystal);

            Transform(postlude, msPositions, strandIndices);

            TrkDef finale = GetFinaleSections(finalePart1, finalePart2, postlude, 71, 175);

            return(finale);

            #region old
            //List<int> strandIndices = new List<int>();
            //int index = 0;
            //for(int i = 0; i < krystal.Strands.Count; ++i)
            //{
            //    strandIndices.Add(index);
            //    index += krystal.Strands[i].Values.Count;
            //}

            //VoiceDef f2IFinalePart1 = GetF2FinalePart1(f2FinalePalette1, krystal, strandIndices, msPositions);
            //VoiceDef f2FinalePart2 = GetF2FinalePart2(f2FinalePalette2, krystal, strandIndices, msPositions);
            //VoiceDef f2Postlude = GetF2Postlude(f2PostludePalette, krystal, strandIndices, msPositions);

            //VoiceDef furies2Finale = f2IFinalePart1;

            //furies2Finale.AddRange(f2FinalePart2);
            //furies2Finale.AddRange(f2Postlude);
            //furies2Finale.AgglomerateRests();
            #endregion
        }
Example #14
0
        private TrkDef GetF1Postlude(Palette f1PostludePalette, Krystal krystal, List <int> strandIndices, Dictionary <string, int> msPositions)
        {
            TrkDef f1p = f1PostludePalette.NewTrkDef(this.MidiChannel, krystal);

            List <int> f1eStrandDurations = GetStrandDurations(f1p, strandIndices);

            for (int i = f1p.Count - 1; i > 0; --i)
            {
                if (strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1p[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] / 4);
                    f1p.Insert(i, umrd);
                }
            }

            f1p.StartMsPosition = msPositions["postlude"];
            f1p.RemoveBetweenMsPositions(msPositions["endOfPiece"], int.MaxValue);

            return(f1p);
        }
Example #15
0
        private TrkDef GetF4Finale(List <Palette> palettes, Krystal krystal, Dictionary <string, int> msPositions)
        {
            Palette f4FinalePalette1  = palettes[9];
            Palette f4FinalePalette2  = palettes[13];
            Palette f4PostludePalette = palettes[17];

            TrkDef interlude4Start = f4FinalePalette1.NewTrkDef(this.MidiChannel, krystal);

            Transform(interlude4Start, msPositions);
            TrkDef interlude4EndVerse5 = f4FinalePalette2.NewTrkDef(this.MidiChannel, krystal);

            Transform(interlude4EndVerse5, msPositions);
            TrkDef postlude = f4PostludePalette.NewTrkDef(this.MidiChannel, krystal);

            Transform(postlude, msPositions);

            TrkDef finale = GetFinaleSections(interlude4Start, interlude4EndVerse5, postlude, 7, 17);

            return(finale);
        }
        public KrystalAncestorsTreeView(Krystal krystal, List <Dependency> dependencyList)
        {
            this.Dock     = System.Windows.Forms.DockStyle.Fill;
            this.Location = new System.Drawing.Point(0, 0);

            this.BeginUpdate();
            this.Nodes.Clear();
            AncestorsNode rootNode = null;

            if (krystal == null)
            {
                rootNode = new AncestorsNode("", dependencyList);
            }
            else
            {
                rootNode = new AncestorsNode(krystal.Name, dependencyList);                 // recursively creates a tree of LineageNodes
            }
            this.Nodes.Add(rootNode);
            this.EndUpdate();
            this.ExpandAll();
        }
Example #17
0
        private TrkDef GetF3Finale(List <Palette> palettes, Krystal krystal, Dictionary <string, int> msPositions)
        {
            Palette f3FinalePalette1  = palettes[10]; // correct 1.1.2014
            Palette f3FinalePalette2  = palettes[14];
            Palette f3PostludePalette = palettes[18];

            List <int> strandIndices = GetStrandIndices(krystal);

            TrkDef finalePart1 = f3FinalePalette1.NewTrkDef(2, krystal);

            Transform(finalePart1, msPositions, strandIndices);
            TrkDef finalePart2 = f3FinalePalette2.NewTrkDef(2, krystal);

            Transform(finalePart2, msPositions, strandIndices);
            TrkDef postlude = f3PostludePalette.NewTrkDef(2, krystal);

            Transform(postlude, msPositions, strandIndices);

            TrkDef finale = GetFinaleSections(finalePart1, finalePart2, postlude, 77, 206);

            Cleanup(finale, msPositions["endOfPiece"]);

            return(finale);
        }
Example #18
0
 private Trk GetWind3(int midiChannel, Palette palette, Krystal krystal)
 {
     Trk wind3 = palette.NewTrk(midiChannel, krystal);
     wind3.Transpose(0, wind3.Count, -13);
     wind3.StepwiseGliss(74, wind3.Count, 19);
     return wind3;
 }
Example #19
0
 public TrkDef NewTrkDef(byte midiChannel, Krystal krystal)
 {
     List<int> sequence = krystal.GetValues((uint)1)[0];
     return NewTrkDef(midiChannel, sequence);
 }
Example #20
0
        private List<int> GetStrandIndices(Krystal krystal)
        {
            List<int> strandIndices = new List<int>();
            int index = 0;
            for(int i = 0; i < krystal.Strands.Count; ++i)
            {
                strandIndices.Add(index);
                index += krystal.Strands[i].Values.Count;
            }

            return strandIndices;
        }
Example #21
0
        internal void GetFinale(List<Palette> palettes, Dictionary<string, int> msPositions, Krystal krystal)
        {
            Trk furies2Finale = GetF2Finale(palettes, krystal, msPositions);

            if(furies2Finale[furies2Finale.Count - 1] is RestDef)
            {
                furies2Finale.RemoveAt(furies2Finale.Count - 1);
            }

            if(furies2Finale[furies2Finale.Count - 1].MsPositionReTrk + furies2Finale[furies2Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies2Finale.RemoveAt(furies2Finale.Count - 1);
            }

            InsertInRest(furies2Finale);

            AdjustPitchWheelDeviations(msPositions["interlude3"], msPositions["endOfPiece"], 5, 28);
        }
Example #22
0
        private Trk GetF4Finale(List<Palette> palettes , Krystal krystal, Dictionary<string, int> msPositions)
        {
            Palette f4FinalePalette1 = palettes[9];
            Palette f4FinalePalette2 = palettes[13];
            Palette f4PostludePalette = palettes[17];

            Trk interlude4Start = f4FinalePalette1.NewTrk(this.MidiChannel, krystal);
            Transform(interlude4Start, msPositions);
            Trk interlude4EndVerse5 = f4FinalePalette2.NewTrk(this.MidiChannel, krystal);
            Transform(interlude4EndVerse5, msPositions);
            Trk postlude = f4PostludePalette.NewTrk(this.MidiChannel, krystal);
            Transform(postlude, msPositions);

            Trk finale = GetFinaleSections(interlude4Start, interlude4EndVerse5, postlude, 7, 17);

            return finale;
        }
Example #23
0
 public Trk NewTrk(int midiChannel, int msPositionReContainer, Krystal krystal)
 {
     List<int> sequence = krystal.GetValues((uint)1)[0];
     return NewTrk(midiChannel, msPositionReContainer, sequence);
 }
Example #24
0
 private void SetDensityInputKrystal(Krystal krystal)
 {
     DensityInputFilenameLabel.Text = krystal.Name;
     _densityInputFilepath = _krystalsFolder + @"\" + krystal.Name;
 }
Example #25
0
        private Trk GetF3Finale(List<Palette> palettes, Krystal krystal, Dictionary<string, int> msPositions)
        {
            Palette f3FinalePalette1 = palettes[10]; // correct 1.1.2014
            Palette f3FinalePalette2 = palettes[14];
            Palette f3PostludePalette = palettes[18];

            List<int> strandIndices = GetStrandIndices(krystal);

            Trk finalePart1 = f3FinalePalette1.NewTrk(2, krystal);
            Transform(finalePart1, msPositions, strandIndices);
            Trk finalePart2 = f3FinalePalette2.NewTrk(2, krystal);
            Transform(finalePart2, msPositions, strandIndices);
            Trk postlude = f3PostludePalette.NewTrk(2, krystal);
            Transform(postlude, msPositions, strandIndices);

            Trk finale = GetFinaleSections(finalePart1, finalePart2, postlude, 77, 206);

            Cleanup(finale, msPositions["endOfPiece"]);

            return finale;
        }
Example #26
0
        internal void GetFinale(List<Palette> palettes, Dictionary<string, int> msPositions, Krystal krystal)
        {
            Trk furies3Finale = GetF3Finale(palettes, krystal, msPositions);

            InsertInRest(furies3Finale);

            AdjustPitchWheelDeviations(msPositions["interlude4"], msPositions["endOfPiece"], 5, 28);
        }
Example #27
0
        internal void GetFinale(List <Palette> palettes, Dictionary <string, int> msPositions, Krystal krystal)
        {
            Palette f1FinalePalette1  = palettes[12];
            Palette f1FinalePalette2  = palettes[16];
            Palette f1PostludePalette = palettes[20];

            List <int> strandIndices = new List <int>();
            int        index         = 0;

            for (int i = 0; i < krystal.Strands.Count; ++i)
            {
                strandIndices.Add(index);
                index += krystal.Strands[i].Values.Count;
            }

            TrkDef f1Interlude3Verse4e = GetF1FinalePart1(f1FinalePalette1, krystal, strandIndices, msPositions);
            TrkDef f1Verse4eVerse5     = GetF1FinalePart2(f1FinalePalette2, krystal, strandIndices, msPositions);
            TrkDef f1Postlude          = GetF1Postlude(f1PostludePalette, krystal, strandIndices, msPositions);

            TrkDef furies1Finale = f1Interlude3Verse4e;

            furies1Finale.AddRange(f1Verse4eVerse5);
            furies1Finale.AddRange(f1Postlude);

            //furies1Finale.TransposeNotation(-12);

            if (furies1Finale[furies1Finale.Count - 1] is RestDef)
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            if (furies1Finale[furies1Finale.Count - 1].MsPosition + furies1Finale[furies1Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            InsertInRest(furies1Finale);

            Erase(this[282].MsPosition, msPositions["endOfPiece"]);

            AdjustPitchWheelDeviations(msPositions["interlude3"], msPositions["endOfPiece"], 5, 28);
        }
Example #28
0
        public void SetForKrystal(string filename)
        {
            this.SuspendLayout();
            if(filename != null && K.IsKrystalFilename(filename))
            {
                string pathname = _krystalsFolder + "\\" + filename;
                _krystal = K.LoadKrystal(pathname);
            }

            if(_ancestorsTreeView != null)
            {
                KrystalAncestorsTreeView tv = this.splitContainer2.Panel1.Controls[0] as KrystalAncestorsTreeView;
                this.splitContainer2.Panel1.Controls.Clear();
                tv.Dispose();
            }
            // if filename is null, _krystal is null here
            _ancestorsTreeView = new KrystalAncestorsTreeView(_krystal, _krystalFamily.DependencyList);
            _ancestorsTreeView.AfterSelect += new TreeViewEventHandler(this.AncestorsTreeView_AfterSelect);
            this.splitContainer2.Panel1.Controls.Add(_ancestorsTreeView);

            ConstantKrystal ck = _krystal as ConstantKrystal;
            LineKrystal lk = _krystal as LineKrystal;
            ExpansionKrystal xk = _krystal as ExpansionKrystal;
            ShapedExpansionKrystal sk = _krystal as ShapedExpansionKrystal;
            ModulationKrystal mk = _krystal as ModulationKrystal;
            PermutationKrystal pk = _krystal as PermutationKrystal;

            if(ck != null)
            {
                this.BasicData.Text = string.Format("Constant Krystal: {0}   Level: {1}   Value: {2}",
                    _krystal.Name, _krystal.Level.ToString(), _krystal.MaxValue.ToString());
                SetForConstantKrystal();
            }
            else if(lk != null)
            {
                this.BasicData.Text = string.Format("Line Krystal: {0}    Level: {1}    Range of Values: {2}..{3}",
                    _krystal.Name, _krystal.Level.ToString(), _krystal.MinValue.ToString(), _krystal.MaxValue.ToString());
                SetForLineKrystal();
            }
            else if(xk != null)
            {
                this.BasicData.Text = string.Format("Expansion Krystal: {0}   Expander: {1}   Level: {2}   Range of Values: {3}..{4}",
                    _krystal.Name, xk.Expander.Name, _krystal.Level.ToString(), _krystal.MinValue.ToString(), _krystal.MaxValue.ToString());
                SetForExpansionKrystal(xk);
            }
            else if(sk != null)
            {
                this.BasicData.Text = string.Format("Shaped Expansion Krystal: {0}   Expander: {1}   Level: {2}   Range of Values: {3}..{4}",
                    _krystal.Name, sk.Expander.Name, _krystal.Level.ToString(), _krystal.MinValue.ToString(), _krystal.MaxValue.ToString());
                SetForShapedExpansionKrystal(sk);
            }
            else if(mk != null)
            {
                this.BasicData.Text = string.Format("Modulation Krystal: {0}   Modulator: {1}   Level: {2}   Range of Values: {3}..{4}",
                    _krystal.Name, mk.Modulator.Name, _krystal.Level.ToString(), _krystal.MinValue.ToString(), _krystal.MaxValue.ToString());
                SetForModulationKrystal(mk);
            }
            else if(pk != null)
            {
                string sortFirstString;
                if(pk.SortFirst)
                    sortFirstString = "true";
                else
                    sortFirstString = "false";

                this.BasicData.Text = string.Format("Permutation Krystal: {0}   Level: {1}   pLevel: {2}   sortFirst: {3}   Range of Values: {4}..{5}",
                    _krystal.Name, _krystal.Level.ToString(), pk.PermutationLevel.ToString(), sortFirstString, _krystal.MinValue.ToString(), _krystal.MaxValue.ToString());
                SetForPermutationKrystal(pk);
            }
            else // _krystal == null
            {
                this.BasicData.Text = "";
                SetForNoKrystal();
            }

            if(_krystal != null)
            {
                if(_selectedTreeView == null || _selectedTreeView.Equals(this._krystalFamilyTreeView) == false)
                    SelectNodeInFamilyTree(_krystal.Name);
                SetFirstAncestorAppearance();
            }
            this.ResumeLayout();
        }
Example #29
0
        internal void GetFinale(List <Palette> palettes, Dictionary <string, int> msPositions, Krystal krystal)
        {
            TrkDef furies2Finale = GetF2Finale(palettes, krystal, msPositions);

            if (furies2Finale[furies2Finale.Count - 1] is RestDef)
            {
                furies2Finale.RemoveAt(furies2Finale.Count - 1);
            }

            if (furies2Finale[furies2Finale.Count - 1].MsPosition + furies2Finale[furies2Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies2Finale.RemoveAt(furies2Finale.Count - 1);
            }

            InsertInRest(furies2Finale);

            AdjustPitchWheelDeviations(msPositions["interlude3"], msPositions["endOfPiece"], 5, 28);
        }
Example #30
0
 private void SetDensityInputKrystal(Krystal krystal)
 {
     DensityInputFilenameLabel.Text = krystal.Name;
     _densityInputFilepath          = _krystalsFolder + @"\" + krystal.Name;
 }
Example #31
0
        internal void GetFinale(List<Palette> palettes, Dictionary<string, int> msPositions, Krystal krystal)
        {
            Trk furies4Finale = GetF4Finale(palettes, krystal, msPositions);

            if(furies4Finale[furies4Finale.Count - 1] is RestDef)
            {
                furies4Finale.RemoveAt(furies4Finale.Count - 1);
            }

            if(furies4Finale[furies4Finale.Count - 1].MsPositionReTrk + furies4Finale[furies4Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies4Finale.RemoveAt(furies4Finale.Count - 1);
            }

            InsertInRest(furies4Finale);

            RemoveScorePitchWheelCommandsFromControlledChords(); // interlude4 (to immediately before verse5)

            AdjustPitchWheelDeviations(msPositions["verse5"], msPositions["postlude"], 5, 1);
            RemoveScorePitchWheelCommands(59, this.Count); // postlude
        }
Example #32
0
        private TrkDef GetF1FinalePart1(Palette palette, Krystal krystal, List<int> strandIndices, Dictionary<string, int> msPositions)
        {
            TrkDef f1FinalePart1 = palette.NewTrkDef(0, krystal);

            List<int> f1eStrandDurations = GetStrandDurations(f1FinalePart1, strandIndices);

            int extraTime = 1000;
            int diff = extraTime / f1FinalePart1.Count;
            for(int i = f1FinalePart1.Count - 1; i > 0; --i)
            {
                if(strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1FinalePart1[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] + extraTime);
                    extraTime -= diff;
                    f1FinalePart1.Insert(i, umrd);
                }
            }

            f1FinalePart1.StartMsPosition = msPositions["interlude3Bar2"];

            f1FinalePart1.RemoveBetweenMsPositions(msPositions["verse4EsCaped"], int.MaxValue);

            if(f1FinalePart1[f1FinalePart1.Count - 1] is RestDef)
            {
                f1FinalePart1[f1FinalePart1.Count - 1].MsDuration = msPositions["verse4EsCaped"] - f1FinalePart1[f1FinalePart1.Count - 1].MsPosition;
            }

            return f1FinalePart1;
        }
Example #33
0
 private void SetPointsInputKrystal(Krystal krystal)
 {
     PointsInputFilenameLabel.Text = krystal.Name;
     _pointsInputFilepath          = _krystalsFolder + @"\" + krystal.Name;
 }
Example #34
0
        private TrkDef GetF1FinalePart2(Palette f1FinalePalette2, Krystal krystal, List<int> strandIndices, Dictionary<string, int> msPositions)
        {
            TrkDef f1FinalePart2 = f1FinalePalette2.NewTrkDef(this.MidiChannel, krystal);

            List<int> f1eStrandDurations = GetStrandDurations(f1FinalePart2, strandIndices);

            int extraTime = 500;
            int diff = extraTime / f1FinalePart2.Count;
            for(int i = f1FinalePart2.Count - 1; i > 0; --i)
            {
                if(strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1FinalePart2[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] + extraTime);
                    extraTime -= diff;
                    f1FinalePart2.Insert(i, umrd);
                }
            }

            f1FinalePart2.StartMsPosition = msPositions["verse4EsCaped"];
            f1FinalePart2.RemoveBetweenMsPositions(msPositions["verse5Calls"], int.MaxValue);

            if(f1FinalePart2[f1FinalePart2.Count - 1] is RestDef)
            {
                f1FinalePart2[f1FinalePart2.Count - 1].MsDuration = msPositions["postlude"] - f1FinalePart2[f1FinalePart2.Count - 1].MsPosition;
            }

            return f1FinalePart2;
        }
Example #35
0
        private Trk GetF2Finale(List<Palette> palettes, Krystal krystal, Dictionary<string, int> msPositions)
        {
            Palette f2FinalePalette1 = palettes[11];
            Palette f2FinalePalette2 = palettes[15];
            Palette f2PostludePalette = palettes[19];

            List<int> strandIndices = GetStrandIndices(krystal);

            Trk finalePart1 = f2FinalePalette1.NewTrk(this.MidiChannel, krystal);
            Transform(finalePart1, msPositions, strandIndices);
            Trk finalePart2 = f2FinalePalette2.NewTrk(this.MidiChannel, krystal);
            Transform(finalePart2, msPositions, strandIndices);
            Trk postlude = f2PostludePalette.NewTrk(this.MidiChannel, krystal);
            Transform(postlude, msPositions, strandIndices);

            Trk finale = GetFinaleSections(finalePart1, finalePart2, postlude, 71, 175);

            return finale;

            #region old
            //List<int> strandIndices = new List<int>();
            //int index = 0;
            //for(int i = 0; i < krystal.Strands.Count; ++i)
            //{
            //    strandIndices.Add(index);
            //    index += krystal.Strands[i].Values.Count;
            //}

            //VoiceDef f2IFinalePart1 = GetF2FinalePart1(f2FinalePalette1, krystal, strandIndices, msPositions);
            //VoiceDef f2FinalePart2 = GetF2FinalePart2(f2FinalePalette2, krystal, strandIndices, msPositions);
            //VoiceDef f2Postlude = GetF2Postlude(f2PostludePalette, krystal, strandIndices, msPositions);

            //VoiceDef furies2Finale = f2IFinalePart1;

            //furies2Finale.AddRange(f2FinalePart2);
            //furies2Finale.AddRange(f2Postlude);
            //furies2Finale.AgglomerateRests();
            #endregion
        }
Example #36
0
        private TrkDef GetF1Postlude(Palette f1PostludePalette, Krystal krystal, List<int> strandIndices, Dictionary<string, int> msPositions)
        {
            TrkDef f1p = f1PostludePalette.NewTrkDef(this.MidiChannel, krystal);

            List<int> f1eStrandDurations = GetStrandDurations(f1p, strandIndices);

            for(int i = f1p.Count - 1; i > 0; --i)
            {
                if(strandIndices.Contains(i))
                {
                    RestDef umrd = new RestDef(f1p[i].MsPosition, f1eStrandDurations[strandIndices.IndexOf(i)] / 4);
                    f1p.Insert(i, umrd);
                }
            }

            f1p.StartMsPosition = msPositions["postlude"];
            f1p.RemoveBetweenMsPositions(msPositions["endOfPiece"], int.MaxValue);

            return f1p;
        }
Example #37
0
        internal void GetFinale(List <Palette> palettes, Dictionary <string, int> msPositions, Krystal krystal)
        {
            TrkDef furies3Finale = GetF3Finale(palettes, krystal, msPositions);

            InsertInRest(furies3Finale);

            AdjustPitchWheelDeviations(msPositions["interlude4"], msPositions["endOfPiece"], 5, 28);
        }
Example #38
0
        internal void GetFinale(List <Palette> palettes, Dictionary <string, int> msPositions, Krystal krystal)
        {
            TrkDef furies4Finale = GetF4Finale(palettes, krystal, msPositions);

            if (furies4Finale[furies4Finale.Count - 1] is RestDef)
            {
                furies4Finale.RemoveAt(furies4Finale.Count - 1);
            }

            if (furies4Finale[furies4Finale.Count - 1].MsPosition + furies4Finale[furies4Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies4Finale.RemoveAt(furies4Finale.Count - 1);
            }

            InsertInRest(furies4Finale);

            RemoveScorePitchWheelCommandsFromControlledChords(); // interlude4 (to immediately before verse5)

            AdjustPitchWheelDeviations(msPositions["verse5"], msPositions["postlude"], 5, 1);
            RemoveScorePitchWheelCommands(59, this.Count); // postlude
        }
Example #39
0
        public TrkDef NewTrkDef(byte midiChannel, Krystal krystal)
        {
            List <int> sequence = krystal.GetValues((uint)1)[0];

            return(NewTrkDef(midiChannel, sequence));
        }
Example #40
0
        /// <summary>
        /// Called as a delegate by a krystalBrowser just before it closes.
        /// The current krystal name in the browser is passed to this function.
        /// </summary>
        /// <param name="krystalname"></param>
        private void SetKrystal(Krystal newKrystal)
        {
            List<Krystal> allKrystals = AllKrystals;

            bool krystalAlreadyPresent = false;
            foreach(Krystal krystal in allKrystals)
            {
                if(krystal.Name == newKrystal.Name)
                {
                    krystalAlreadyPresent = true;
                    break;
                }
            }
            if(krystalAlreadyPresent)
            {
                MessageBox.Show(newKrystal.Name + "is already in the score.", "krystal already present", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                string staffKrystalPath = M.Preferences.LocalMoritzKrystalsFolder + @"\" + newKrystal.Name;
                Krystal krystal = K.LoadKrystal(staffKrystalPath);
                this.KrystalsListBox.SuspendLayout();
                this.KrystalsListBox.Items.Add(krystal);
                this.KrystalsListBox.ResumeLayout();
                KrystalsListBox.SetSelected(KrystalsListBox.Items.Count - 1, true); // triggers KrystalsListBox_SelectedIndexChanged()
                SetGroupBoxIsUnconfirmed(KrystalsGroupBox, ConfirmKrystalsListButton, RevertKrystalsListButton);
            }
            this.BringToFront();
        }
Example #41
0
 private void SetPointsInputKrystal(Krystal krystal)
 {
     PointsInputFilenameLabel.Text = krystal.Name;
     _pointsInputFilepath = _krystalsFolder + @"\" + krystal.Name;
 }
Example #42
0
        internal void GetFinale(List<Palette> palettes, Dictionary<string, int> msPositions, Krystal krystal)
        {
            Palette f1FinalePalette1 = palettes[12];
            Palette f1FinalePalette2 = palettes[16];
            Palette f1PostludePalette = palettes[20];

            List<int> strandIndices = new List<int>();
            int index = 0;
            for(int i = 0; i < krystal.Strands.Count; ++i)
            {
                strandIndices.Add(index);
                index += krystal.Strands[i].Values.Count;
            }

            TrkDef f1Interlude3Verse4e = GetF1FinalePart1(f1FinalePalette1, krystal, strandIndices, msPositions);
            TrkDef f1Verse4eVerse5 = GetF1FinalePart2(f1FinalePalette2, krystal, strandIndices, msPositions);
            TrkDef f1Postlude = GetF1Postlude(f1PostludePalette, krystal, strandIndices, msPositions);

            TrkDef furies1Finale = f1Interlude3Verse4e;

            furies1Finale.AddRange(f1Verse4eVerse5);
            furies1Finale.AddRange(f1Postlude);

            //furies1Finale.TransposeNotation(-12);

            if(furies1Finale[furies1Finale.Count - 1] is RestDef)
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            if(furies1Finale[furies1Finale.Count - 1].MsPosition + furies1Finale[furies1Finale.Count - 1].MsDuration > msPositions["endOfPiece"])
            {
                furies1Finale.RemoveAt(furies1Finale.Count - 1);
            }

            InsertInRest(furies1Finale);

            Erase(this[282].MsPosition, msPositions["endOfPiece"]);

            AdjustPitchWheelDeviations(msPositions["interlude3"], msPositions["endOfPiece"], 5, 28 );
        }