private void _mainForm_FileOpenClick(object sender, EventArgs e) { _mainForm.trackID = 0; if (_mainForm.filePathes != null) { _commandManager.SelectFile(_mainForm.filePathes[_mainForm.trackID]); } info = _commandManager.ReturnData(); _mainForm.totalSeconds = info.totalSeconds; _mainForm.totalMinutes = info.totalMinutes; }
void _mainForm_NextTrack(object sender, EventArgs e) { if (_mainForm.trackID < _mainForm.filePathes.Length - 1) { if (_mainForm.isRandom() == true) { _mainForm.trackID = rand.Next(0, _mainForm.filePathes.Length); } else { _mainForm.trackID++; } _commandManager.SelectFile(_mainForm.filePathes[_mainForm.trackID]); _commandManager.Play(); info = _commandManager.ReturnData(); _mainForm.totalSeconds = info.totalSeconds; _mainForm.totalMinutes = info.totalMinutes; } }
void _mainForm_Timer(object sender, ElapsedEventArgs e) { info = _commandManager.ReturnData(); _mainForm.position = info.position; _mainForm.curSeconds = info.curSeconds; _mainForm.curMinutes = info.curMinutes; }
public TrackInfo ReturnData() { TrackInfo info = new TrackInfo(); if (wave != null && output != null) { TimeSpan currentTime = (output.PlaybackState == PlaybackState.Stopped) ? TimeSpan.Zero : wave.CurrentTime; info.position = Math.Min(100, (int)(100 * currentTime.TotalSeconds / wave.TotalTime.TotalSeconds)); info.curSeconds = wave.CurrentTime.Seconds; info.curMinutes = (int)wave.CurrentTime.TotalMinutes; info.totalSeconds = wave.TotalTime.Minutes; info.totalMinutes = wave.TotalTime.Seconds; } return info; }
private void makeTrackDiv() { log.Write("Track division"); long waitCounter = 0; int endChannel = 0; int totalChannel = 0; TrackInfo ti = new TrackInfo(); ti.offset = mmlInfo.dat.Count; track.Add(ti); foreach (byte b in TrackTemp) { outDatum dt = new outDatum(enmMMLType.unknown, null, null, b); mmlInfo.dat.Add(dt); } //PCM Data block foreach (KeyValuePair <enmChipType, ClsChip[]> kvp in mmlInfo.chips) { foreach (ClsChip chip in kvp.Value) { if (chip == null) { continue; } chip.SetPCMDataBlock(null); } } //Set Initialize data foreach (KeyValuePair <enmChipType, ClsChip[]> kvp in mmlInfo.chips) { foreach (ClsChip chip in kvp.Value) { if (chip == null) { continue; } chip.InitChip(); } } foreach (KeyValuePair <enmChipType, ClsChip[]> kvp in mmlInfo.chips) { foreach (ClsChip chip in kvp.Value) { if (chip == null) { continue; } totalChannel += chip.ChMax; } } do { log.Write("全パートコマンド解析"); mmlInfo.AnalyzeAllPartCommand(); log.Write("全パートのうち次のコマンドまで一番近い値を求める"); waitCounter = mmlInfo.ComputeAllPartDistance(); //log.Write("全パートのwaitcounterを減らす"); //mmlInfo.DecAllPartWaitCounter(waitCounter); log.Write("終了パートのカウント"); endChannel = mmlInfo.CountUpEndPart(); if (endChannel < totalChannel) { log.Write("全パートのwaitcounterを減らす"); mmlInfo.DecAllPartWaitCounter(waitCounter); } } while (endChannel < totalChannel); //残カット //if (mmlInfo.loopClock != -1 && waitCounter > 0 && waitCounter != long.MaxValue) //{ // mmlInfo.lClock -= waitCounter; // mmlInfo.dSample -= (long)(mmlInfo.info.samplesPerClock * waitCounter); //} Common.SetLE32(mmlInfo.dat, (uint)(ti.offset + 0x03), (uint)(mmlInfo.dat.Count - ti.offset)); Common.SetLE32(mmlInfo.dat, (uint)(ti.offset + 0x07), (uint)(mmlInfo.dummyCmdLoopOffset)); }
/// <summary> /// Добавляет информацию о треке в историю игрока /// </summary> public static void AddTrack(TrackInfo info) { playerHistory.TrackList.AddProduction(info, Instance.onTrackAdd); }