/// <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); }
/// <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); }
/// <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); }
/// <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); }