/// <summary> /// JSON 객체를 통해 생성 /// </summary> /// <param name="json"></param> /// <returns></returns> public static Track CreateFromJSON(JSONObject json, IAudioClipPack clipPack) { var track = new Track(); track.SetClipPack(clipPack); track.BPM = json.GetField("bpm").f; json.GetField("sections", (sectionarr) => { var list = sectionarr.list; var count = list.Count; for (int i = 0; i < count; i++) { var newsec = Section.CreateFromJSON(list[i], track.m_clipPack); track.m_sectionSeq.Add(newsec); } }); return track; }
/// <summary> /// Track을 새로 지정 /// </summary> /// <param name="track"></param> /// <param name="clockToSync">기존에 존재하는 clock과 싱크를 맞춰야할 경우 지정</param> public void SetTrack(Track track, BeatSyncClock clockToSync = null) { m_track = track; m_sectionIdx = -1; m_suppressProgress = false; if (clockToSync == null) // 클럭이 지정되지 않은 경우, 새로 생성 { m_clock = new BeatSyncClock(track.BPM); } else if (clockToSync.BPM != track.BPM) // 기존 클럭과 bpm이 다른 경우, 기존 클럭의 다음번 비트와 동기화하여 새로 클럭 생성 { m_clock = new BeatSyncClock(track.BPM, clockToSync.CalcNextSafeBeatTime()); } else { // 아니면 기존 클럭 그대로 사용 m_clock = clockToSync; } }
public static Track GenTestTrack2(float bpm, IAudioClipPack clipPack) { var track = new Track(); track.BPM = bpm; var section1 = Section.GenTestSection3(clipPack); var section2 = Section.GenTestSection4(clipPack); track.m_sectionSeq.Add(section1); track.m_sectionSeq.Add(section2); track.m_sectionSeq.Add(section1); return track; }