void LoadLoopParts(NSPC.NSPC nspc) { foreach (var s in Songs) { foreach (var p in s.Parts) { foreach (var c in p.Channels) { foreach (var cmd in c.Commands.OfType <CallLoopCommand>().ToList()) { if (false == this.LoopParts.ContainsKey(cmd.LoopAddress)) { CallLoopPart loopPart = new CallLoopPart(); loopPart.Address = cmd.LoopAddress; loopPart.Commands = ChannelCommand.GetChannelCommandsFromRawData(nspc.aramBuffer, loopPart.Address); this.LoopParts.Add(loopPart.Address, loopPart); cmd.LoopPart = loopPart; } else { cmd.LoopPart = this.LoopParts[cmd.LoopAddress]; } } } } } }
public void LoadFromNSPCTrack(NSPC.Track track) { this.RawData = track.RawTrackData; this.Commands = ChannelCommand.GetChannelCommandsFromRawData(track.RawTrackData); }