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