private void SanitizePatterns() { var newPatterns = new List <Pattern>(); var maxUsedPattern = PatternOrderList.Max(); for (var p = 0; p <= maxUsedPattern; p++) { newPatterns.Add(Patterns[p]); } Patterns = newPatterns; PatternCount = (ushort)Patterns.Count; }
private void DeletePatternPosition(int position) { var list = PatternOrderList.ToList(); list.RemoveAt(position); list.Add(0); for (var i = 0; i < 256; i++) { PatternOrderList[i] = list[i]; } SongLength--; }
public Pattern InsertNewPattern(int position, int size) { var pat = NewPattern(size); Patterns.Add(pat); int patId = Patterns.IndexOf(pat); var list = PatternOrderList.ToList(); list.Insert(position, (byte)patId); for (var i = 0; i < 256; i++) { PatternOrderList[i] = list[i]; } SongLength += 1; if (SongLength > 256) { throw new Exception("You've ran out of song length"); } return(pat); }