Пример #1
0
 public PatternAutomation Clone()
 {
     PatternAutomation ret = new PatternAutomation();
     ret.Channel = Channel;
     ret.ID = ID;
     for (int k = 0; k < Keys.Count; k++)
         ret.Keys.Add(Keys[k].Clone());
     return ret;
 }
Пример #2
0
        public static Song CreateDummySong()
        {
            Song s = new Song();
            s.BPM = 150;
            {
                SongTrack st = new SongTrack();
                st.ID = "trk1";
                st.Name = "Lead";
                st.InstrumentID = "ins1";
                st.LivePatternID = "";
                st.Items.Add(new SongTrackItem("item1", 0, 8, "pat1"));
                st.Items.Add(new SongTrackItem("item2", 10, 18, "pat2"));
                st.Items.Add(new SongTrackItem("item3", 20, 28, "pat3"));
                st.CuedPatternID = "pat00001";
                s.Tracks.Add(st);
            }
            {
                SongTrack st = new SongTrack();
                st.ID = "trk2";
                st.Name = "Synth";
                st.InstrumentID = "ins2";
                s.Tracks.Add(st);
            }

            {
                SongTrack st = new SongTrack();
                st.ID = "trk3";
                st.Name = "Bass";
                st.CuedPatternID = "pat00003";
                st.InstrumentID = "ins3";
                s.Tracks.Add(st);
            }

            {
                Instrument ins = new Instrument();
                ins.ID = "ins1";
                ins.Name = "First instrument";
                ins.MidiChannel = 1;
                ins.MidiPatch = 30;
                ins.Type = "";
                s.Instruments.Add(ins);
            }
            {
                Instrument ins = new Instrument();
                ins.ID = "ins2";
                ins.Name = "Second instrument";
                ins.MidiChannel = 1;
                ins.MidiPatch = 30;
                ins.Type = "";
                s.Instruments.Add(ins);
            }
            {
                Instrument ins = new Instrument();
                ins.ID = "ins3";
                ins.Name = "Third instrument";
                ins.MidiChannel = 1;
                ins.MidiPatch = 30;
                ins.Type = "";
                s.Instruments.Add(ins);
            }

            {
                Pattern pt = new Pattern();
                pt.ID = "pat00001";
                pt.InstrumentID = "ins1";
                pt.Name = "Lead1";
                pt.Duration = 16;
                pt.Notes.Add(new PatternNote("note11_1", 0L, 400L, 30, 100));
                pt.Notes.Add(new PatternNote("note11_2", 200L, 400L, 24, 100));
                pt.Notes.Add(new PatternNote("note11_3", 400L, 1600L, 20, 100));
                {
                    PatternAutomation pa = new PatternAutomation();
                    pa.Channel = 85;
                    pa.ID = "aut85";
                    pa.Keys.Add(new PatternAutomationKey("pa0", 0, 100));
                    pa.Keys.Add(new PatternAutomationKey("pa1", 100, 10));
                    pa.Keys.Add(new PatternAutomationKey("pa2", 1300, 0));
                    pt.Automations.Add(pa);
                }
                s.Patterns.Add(pt);
            }
            {
                Pattern pt = new Pattern();
                pt.ID = "pat00002";
                pt.InstrumentID = "ins1";
                pt.Name = "Lead2";
                pt.Duration = 2;
                pt.Notes.Add(new PatternNote("note22_1", 0L, 100L, 30, 100));
                pt.Notes.Add(new PatternNote("note22_2", 100L, 200L, 24, 100));
                s.Patterns.Add(pt);
            }
            {
                Pattern pt = new Pattern();
                pt.ID = "pat00003";
                pt.InstrumentID = "ins2";
                pt.Name = "Lead3";
                s.Patterns.Add(pt);
            }
            {
                Pattern pt = new Pattern();
                pt.ID = "pat00004";
                pt.InstrumentID = "ins3";
                pt.Name = "Lead4";
                s.Patterns.Add(pt);
            }
            return s;
        }
Пример #3
0
        public bool LoadFromXML(XmlNode node)
        {
            if (node.Attributes["id"] != null)
                ID = node.Attributes["id"].Value;

            if (node.Attributes["name"] != null)
                Name = node.Attributes["name"].Value;

            if (node.Attributes["instrument"] != null)
                InstrumentID = node.Attributes["instrument"].Value;

            if (node.Attributes["duration"] != null)
            {
                int i = 0;
                int.TryParse(node.Attributes["duration"].Value, out i);
                Duration = i;
            }

            XmlNodeList nl = node.SelectNodes("notes/note");
            for (int j = 0; j < nl.Count; j++)
            {
                PatternNote pn = new PatternNote();
                if (pn.LoadFromXML(nl[j]))
                    Notes.Add(pn);
            }

            nl = node.SelectNodes("automations/automation");
            for (int j = 0; j < nl.Count; j++)
            {
                PatternAutomation pa = new PatternAutomation();
                if (pa.LoadFromXML(nl[j]))
                    Automations.Add(pa);
            }

            return true;
        }