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; }
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; }
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; }