public MusicSegmentViewModel AddMusicSegment()
        {
            var newSegment = new MusicSegment(model)
            {
                Label = "Unnamed", Bpm = 120, BeatsPerBar = 4, TimeOrigin = 0
            };

            model.MusicSegments.Add(newSegment);

            // should be logically equivalent to MusicSegments.Last()
            return(MusicSegments.Single(segVm => segVm.GetModel() == newSegment));
        }
Beispiel #2
0
        public XElement ToXML(string relativePathBase = null)
        {
            if (MusicSegments.Count < 1 || !MusicSegments[0].IsReadOnly)
            {
                throw new Exception("the default segment somehow managed to disappear from slot 0");
            }

            return(new XElement("timeline",
                                MusicFileToXML(relativePathBase),
                                new XElement("segments", MusicSegments.Skip(1).Select(s => s.ToXML()).ToArray()),
                                new XElement("default-segment", DefaultMusicSegment.GetIndex()),
                                new XElement("tracks", Tracks.Select(g => g.ToXML()).ToArray()),
                                new XElement("blocks", Blocks.Select(b => b.ToXML()).ToArray()),
                                new XElement("notes", Notes.Select(n => n.ToXML()).ToArray())
                                ));
        }
Beispiel #3
0
        public void SetupTestData()
        {
            // test data
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "Mah segment #1", Bpm = 128, BeatsPerBar = 4, TimeOrigin = 0
            });
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "Slow segment", Bpm = 96, BeatsPerBar = 3, TimeOrigin = 10
            });
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "D&B example", Bpm = 180, BeatsPerBar = 4, TimeOrigin = 20
            });
            DefaultMusicSegment = MusicSegments[1];

            Tracks.Add(new Track(this, "Second track"));
            Tracks.Add(new Track(this, "Third track"));

            Blocks.Add(new ColorBlock(this, Tracks[0])
            {
                StartTime = 0f, Duration = 0.5f, Color = GloColor.FromRGB(255, 0, 0), SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new ColorBlock(this, Tracks[0])
            {
                StartTime = 1f, Duration = 0.5f, Color = GloColor.FromRGB(255, 127, 0), SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new RampBlock(this, Tracks[0])
            {
                StartTime = 2f, Duration = 2f, StartColor = GloColor.FromRGB(255, 127, 0), EndColor = GloColor.White, SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new ColorBlock(this, Tracks[1], Tracks[2])
            {
                StartTime = 0.5f, Duration = 2.5f, Color = GloColor.White
            });
            Blocks.Add(new ColorBlock(this, Tracks[2])
            {
                StartTime = 4f, Duration = 1f, Color = GloColor.FromRGB(0, 255, 120)
            });

            Blocks.Add(new LoopBlock(this)
            {
                StartTime = 4.5f, Duration = 3f, SegmentContext = MusicSegments[0]
            }
                       .AddChild(new ColorBlock(this, Tracks[0])
            {
                StartTime = 0, Duration = 1.25f, Color = GloColor.FromRGB(0, 0, 255), SegmentContext = MusicSegments[0]
            }, false)
                       .AddChild(new ColorBlock(this, Tracks[0])
            {
                StartTime = 1.5f, Duration = 1.5f, Color = GloColor.FromRGB(0, 255, 255), SegmentContext = MusicSegments[0]
            }, false)
                       );

            Notes.Add(new Note {
                Label = "First marker", Time = 0.5f
            });
            Notes.Add(new Note {
                Label = "Second marker", Time = 1.446f
            });
            Notes.Add(new Note {
                Label = "Third marker", Time = 3.0f, Description = "This one is super fancy and has a description.\r\nThe possibilities are endless!"
            });
            Notes.Add(new Note {
                Time = 4f
            });
        }