Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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;
        }