コード例 #1
0
        private static Song BuildKeyReleases(Song song)
        {
            var songCopy = song.MakeCopy();
            SongNoteEventCollections noteCollections;
            SongNoteEventCollections releaseNoteCollections;
            double releaseNoteTime;

            foreach (var noteTime in song.Keys)
            {
                noteCollections = songCopy[noteTime];

                foreach (var note in noteCollections.KeyPresses)
                {
                    releaseNoteTime = noteTime + note.Duration;

                    //Now add release event at this time
                    if (!songCopy.TryGetValue(releaseNoteTime, out releaseNoteCollections))
                    {
                        releaseNoteCollections = new SongNoteEventCollections();
                        songCopy.Add(releaseNoteTime, releaseNoteCollections);
                    }
                    ;

                    releaseNoteCollections.KeyReleases.Add(note);
                }
            }

            return(songCopy);
        }
コード例 #2
0
        public static void AddSongNoteToSong(double noteTime, Song song, Note xmlNote, double duration)
        {
            var songNote = new SongNote();

            songNote.NoteTime = noteTime;
            songNote.PitchId  = GetPitchIdFromNote(xmlNote);
            songNote.Velocity = 100;

            songNote.Duration = duration;

            SongNoteEventCollections noteEventCollections;

            if (!song.TryGetValue(noteTime, out noteEventCollections))
            {
                noteEventCollections = new SongNoteEventCollections();
                song.Add(noteTime, noteEventCollections);
            }
            ;

            noteEventCollections.KeyPresses.Add(songNote);
        }