Esempio n. 1
0
        /// <summary>
        /// 文字列を解析して、小節:拍:ティックオブジェクトを返します。
        /// </summary>
        /// <param name="s">解析対象の文字列</param>
        /// <returns>MeasureBeatTickオブジェクト</returns>
        public static MeasureBeatTick Parse(string s)
        {
            string[]        splited = s.Split(':');
            MeasureBeatTick retVal  = new MeasureBeatTick();

            retVal.Measure = int.Parse(splited[0]);
            retVal.Beat    = int.Parse(splited[1]);
            retVal.Tick    = int.Parse(splited[2]);
            return(retVal);
        }
Esempio n. 2
0
        /// <summary>
        /// この関数はMakeTimeと変わらないが、同時に指定時刻における拍子記号情報を得ることができる。
        /// </summary>
        /// <param name="measureBeatTick">小節:拍:ティックオブジェクト</param>
        /// <param name="time">累積ティック単位のタイム</param>
        /// <param name="timeSignature">拍子記号情報</param>
        public void MakeTimeEx(MeasureBeatTick measureBeatTick, out int time, out TimeSignature timeSignature)
        {
            int nn, dd, cc, bb;
            int err = MIDIData_MakeTimeEx(this.UnManagedObjectPointer, measureBeatTick.Measure, measureBeatTick.Beat, measureBeatTick.Tick, out time, out nn, out dd, out cc, out bb);

            if (err == 0)
            {
                throw new MIDIDataLibException("累積ティック単位のタイムの取得と拍子記号取得に失敗しました。");
            }
            timeSignature = new TimeSignature(nn, dd, cc, bb);
        }
Esempio n. 3
0
        /// <summary>
        /// MIDIデータのタイムモードがTPQNベースの場合、小節:拍:ティックで表されるタイムから、累積ティック単位のタイムを計算してバッファに格納する。
        /// </summary>
        /// <param name="measureBeatTick">小節:拍:ティックオブジェクト</param>
        /// <returns>累積ティック単位のタイム</returns>
        public int MakeTime(MeasureBeatTick measureBeatTick)
        {
            int tempTime = 0;
            int err      = MIDIData_MakeTime(this.UnManagedObjectPointer, measureBeatTick.Measure, measureBeatTick.Beat, measureBeatTick.Tick, out tempTime);

            if (err == 0)
            {
                throw new MIDIDataLibException("累積ティック単位のタイムの取得に失敗しました。");
            }
            return(tempTime);
        }
Esempio n. 4
0
        /// <summary>
        /// この関数はMIDIData_BreakTimeと変わらないが、同時に指定時刻における拍子記号情報を返す。
        /// </summary>
        /// <param name="time">分解すべき累積タイム</param>
        /// <param name="measureBeatTick">MeasureBeatTickオブジェクト</param>
        /// <param name="timeSignature">拍子記号情報</param>
        public void BreakTimeEx(int time, out MeasureBeatTick measureBeatTick, out TimeSignature timeSignature)
        {
            int measure, beat, tick;
            int nn, dd, cc, bb;
            int err = MIDIData_BreakTimeEx(this.UnManagedObjectPointer, time, out measure, out beat, out tick, out nn, out dd, out cc, out bb);

            if (err == 0)
            {
                throw new MIDIDataLibException("小節:拍:ティック情報の取得と拍子記号情報の取得に失敗しました。");
            }
            measureBeatTick = new MeasureBeatTick(measure, beat, tick);
            timeSignature   = new TimeSignature(nn, dd, cc, bb);
        }