private static void DrawDebugWindow() { //ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, new Vector2(5, 0)); if (ImGui.Begin("MIDIBARD DEBUG", ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.AlwaysAutoResize)) { try { ImGui.TextUnformatted($"AgentModule: {AgentManager.AgentModule.ToInt64():X}"); ImGui.SameLine(); if (ImGui.SmallButton("C##AgentModule")) ImGui.SetClipboardText($"{AgentManager.AgentModule.ToInt64():X}"); ImGui.TextUnformatted($"UiModule: {AgentManager.UiModule.ToInt64():X}"); ImGui.SameLine(); if (ImGui.SmallButton("C##4")) ImGui.SetClipboardText($"{AgentManager.UiModule.ToInt64():X}"); ImGui.TextUnformatted($"AgentCount:{AgentManager.Agents.Count}"); } catch (Exception e) { ImGui.TextUnformatted(e.ToString()); } ImGui.Separator(); try { ImGui.TextUnformatted($"AgentPerformance: {PerformanceAgent.Pointer.ToInt64():X}"); ImGui.SameLine(); if (ImGui.SmallButton("C##AgentPerformance")) ImGui.SetClipboardText($"{PerformanceAgent.Pointer.ToInt64():X}"); ImGui.TextUnformatted($"AgentID: {PerformanceAgent.Id}"); ImGui.TextUnformatted($"notePressed: {notePressed}"); ImGui.TextUnformatted($"noteNumber: {noteNumber}"); ImGui.TextUnformatted($"InPerformanceMode: {InPerformanceMode}"); ImGui.TextUnformatted($"Timer1: {TimeSpan.FromMilliseconds(PerformanceTimer1)}"); ImGui.TextUnformatted($"Timer2: {TimeSpan.FromTicks(PerformanceTimer2 * 10)}"); } catch (Exception e) { ImGui.TextUnformatted(e.ToString()); } ImGui.Separator(); try { ImGui.TextUnformatted($"AgentMetronome: {MetronomeAgent.Pointer.ToInt64():X}"); ImGui.SameLine(); if (ImGui.SmallButton("C##AgentMetronome")) ImGui.SetClipboardText($"{MetronomeAgent.Pointer.ToInt64():X}"); ImGui.TextUnformatted($"AgentID: {MetronomeAgent.Id}"); ImGui.TextUnformatted($"Running: {MetronomeRunning}"); ImGui.TextUnformatted($"Ensemble: {EnsembleModeRunning}"); ImGui.TextUnformatted($"BeatsElapsed: {MetronomeBeatsElapsed}"); ImGui.TextUnformatted($"PPQN: {MetronomePPQN} ({60_000_000 / (double)MetronomePPQN:F3}bpm)"); ImGui.TextUnformatted($"BeatsPerBar: {MetronomeBeatsperBar}"); ImGui.TextUnformatted($"Timer1: {TimeSpan.FromMilliseconds(MetronomeTimer1)}"); ImGui.TextUnformatted($"Timer2: {TimeSpan.FromTicks(MetronomeTimer2 * 10)}"); } catch (Exception e) { ImGui.TextUnformatted(e.ToString()); } ImGui.Separator(); try { ImGui.TextUnformatted($"PerformInfos: {PerformInfos.ToInt64() + 3:X}"); ImGui.SameLine(); if (ImGui.SmallButton("C##PerformInfos")) ImGui.SetClipboardText($"{PerformInfos.ToInt64() + 3:X}"); ImGui.TextUnformatted($"CurrentInstrumentKey: {CurrentInstrument}"); ImGui.TextUnformatted($"Instrument: {InstrumentSheet.GetRow(CurrentInstrument).Instrument}"); ImGui.TextUnformatted($"Name: {InstrumentSheet.GetRow(CurrentInstrument).Name.RawString}"); ImGui.TextUnformatted($"Tone: {CurrentGroupTone}"); //ImGui.Text($"unkFloat: {UnkFloat}"); ////ImGui.Text($"unkByte: {UnkByte1}"); } catch (Exception e) { ImGui.TextUnformatted(e.ToString()); } ImGui.Separator(); ImGui.TextUnformatted($"currentPlaying: {PlaylistManager.CurrentPlaying}"); ImGui.TextUnformatted($"currentSelected: {PlaylistManager.CurrentSelected}"); ImGui.TextUnformatted($"FilelistCount: {PlaylistManager.Filelist.Count}"); ImGui.TextUnformatted($"currentUILanguage: {pluginInterface.UiLanguage}"); ImGui.Separator(); try { //var devicesList = DeviceManager.Devices.Select(i => i.ToDeviceString()).ToArray(); //var inputDevices = DeviceManager.Devices; ////ImGui.BeginListBox("##auofhiao", new Vector2(-1, ImGui.GetTextLineHeightWithSpacing()* (inputDevices.Length + 1))); //if (ImGui.BeginCombo("Input Device", DeviceManager.CurrentInputDevice.ToDeviceString())) //{ // if (ImGui.Selectable("None##device", DeviceManager.CurrentInputDevice is null)) // { // DeviceManager.DisposeDevice(); // } // for (int i = 0; i < inputDevices.Length; i++) // { // var device = inputDevices[i]; // if (ImGui.Selectable($"{device.Name}##{i}", device.Id == DeviceManager.CurrentInputDevice?.Id)) // { // DeviceManager.SetDevice(device); // } // } // ImGui.EndCombo(); //} //ImGui.EndListBox(); //if (ImGui.ListBox("##????", ref InputDeviceID, devicesList, devicesList.Length)) //{ // if (InputDeviceID == 0) // { // DeviceManager.DisposeDevice(); // } // else // { // DeviceManager.SetDevice(InputDevice.GetByName(devicesList[InputDeviceID])); // } //} if (ImGui.SmallButton("Start Event Listening")) { DeviceManager.CurrentInputDevice?.StartEventsListening(); } ImGui.SameLine(); if (ImGui.SmallButton("Stop Event Listening")) { DeviceManager.CurrentInputDevice?.StopEventsListening(); } ImGui.TextUnformatted($"InputDevices: {InputDevice.GetDevicesCount()}\n{string.Join("\n", InputDevice.GetAll().Select(i => $"[{i.Id}] {i.Name}"))}"); ImGui.TextUnformatted($"OutputDevices: {OutputDevice.GetDevicesCount()}\n{string.Join("\n", OutputDevice.GetAll().Select(i => $"[{i.Id}] {i.Name}({i.DeviceType})"))}"); ImGui.TextUnformatted($"CurrentInputDevice: \n{DeviceManager.CurrentInputDevice} Listening: {DeviceManager.CurrentInputDevice?.IsListeningForEvents}"); ImGui.TextUnformatted($"CurrentOutputDevice: \n{CurrentOutputDevice}"); } catch (Exception e) { PluginLog.Error(e.ToString()); } #region Generator //ImGui.Separator(); //if (ImGui.BeginChild("Generate", new Vector2(size - 5, 150), false, ImGuiWindowFlags.NoDecoration)) //{ // ImGui.DragInt("length##keyboard", ref config.testLength, 0.05f); // ImGui.DragInt("interval##keyboard", ref config.testInterval, 0.05f); // ImGui.DragInt("repeat##keyboard", ref config.testRepeat, 0.05f); // if (config.testLength < 0) // { // config.testLength = 0; // } // if (config.testInterval < 0) // { // config.testInterval = 0; // } // if (config.testRepeat < 0) // { // config.testRepeat = 0; // } // if (ImGui.Button("generate##keyboard")) // { // try // { // testplayback?.Dispose(); // } // catch (Exception e) // { // // // } // static Pattern GetSequence(int octave) // { // return new PatternBuilder() // .SetRootNote(Note.Get(NoteName.C, octave)) // .SetNoteLength(new MetricTimeSpan(0, 0, 0, config.testLength)) // .SetStep(new MetricTimeSpan(0, 0, 0, config.testInterval)) // .Note(Interval.Zero) // .StepForward() // .Note(Interval.One) // .StepForward() // .Note(Interval.Two) // .StepForward() // .Note(Interval.Three) // .StepForward() // .Note(Interval.Four) // .StepForward() // .Note(Interval.Five) // .StepForward() // .Note(Interval.Six) // .StepForward() // .Note(Interval.Seven) // .StepForward() // .Note(Interval.Eight) // .StepForward() // .Note(Interval.Nine) // .StepForward() // .Note(Interval.Ten) // .StepForward() // .Note(Interval.Eleven) // .StepForward().Build(); // } // static Pattern GetSequenceDown(int octave) // { // return new PatternBuilder() // .SetRootNote(Note.Get(NoteName.C, octave)) // .SetNoteLength(new MetricTimeSpan(0, 0, 0, config.testLength)) // .SetStep(new MetricTimeSpan(0, 0, 0, config.testInterval)) // .Note(Interval.Eleven) // .StepForward() // .Note(Interval.Ten) // .StepForward() // .Note(Interval.Nine) // .StepForward() // .Note(Interval.Eight) // .StepForward() // .Note(Interval.Seven) // .StepForward() // .Note(Interval.Six) // .StepForward() // .Note(Interval.Five) // .StepForward() // .Note(Interval.Four) // .StepForward() // .Note(Interval.Three) // .StepForward() // .Note(Interval.Two) // .StepForward() // .Note(Interval.One) // .StepForward() // .Note(Interval.Zero) // .StepForward() // .Build(); // } // Pattern pattern = new PatternBuilder() // .SetNoteLength(new MetricTimeSpan(0, 0, 0, config.testLength)) // .SetStep(new MetricTimeSpan(0, 0, 0, config.testInterval)) // .Pattern(GetSequence(3)) // .Pattern(GetSequence(4)) // .Pattern(GetSequence(5)) // .SetRootNote(Note.Get(NoteName.C, 5)) // .StepForward() // .Note(Interval.Twelve) // .Pattern(GetSequenceDown(5)) // .Pattern(GetSequenceDown(4)) // .Pattern(GetSequenceDown(3)) // // Get pattern // .Build(); // var repeat = new PatternBuilder().Pattern(pattern).Repeat(config.testRepeat).Build(); // testplayback = repeat.ToTrackChunk(TempoMap.Default).GetPlayback(TempoMap.Default, Plugin.CurrentOutputDevice, // new MidiClockSettings() { CreateTickGeneratorCallback = () => new HighPrecisionTickGenerator() }); // } // ImGui.SameLine(); // if (ImGui.Button("chord##keyboard")) // { // try // { // testplayback?.Dispose(); // } // catch (Exception e) // { // // // } // var pattern = new PatternBuilder() // //.SetRootNote(Note.Get(NoteName.C, 3)) // //C-G-Am-(G,Em,C/G)-F-(C,Em)-(F,Dm)-G // .SetOctave(Octave.Get(3)) // .SetStep(new MetricTimeSpan(0, 0, 0, config.testInterval)) // .Chord(Chord.GetByTriad(NoteName.C, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.G, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.A, ChordQuality.Minor)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.G, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.F, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.C, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.F, ChordQuality.Major)).Repeat(config.testRepeat) // .Chord(Chord.GetByTriad(NoteName.G, ChordQuality.Major)).Repeat(config.testRepeat) // .Build(); // testplayback = pattern.ToTrackChunk(TempoMap.Default).GetPlayback(TempoMap.Default, Plugin.CurrentOutputDevice, // new MidiClockSettings() { CreateTickGeneratorCallback = () => new HighPrecisionTickGenerator() }); // } // ImGui.Spacing(); // if (ImGui.Button("play##keyboard")) // { // try // { // testplayback?.MoveToStart(); // testplayback?.Start(); // } // catch (Exception e) // { // PluginLog.Error(e.ToString()); // } // } // ImGui.SameLine(); // if (ImGui.Button("dispose##keyboard")) // { // try // { // testplayback?.Dispose(); // } // catch (Exception e) // { // PluginLog.Error(e.ToString()); // } // } // try // { // ImGui.TextUnformatted($"{testplayback.GetDuration(TimeSpanType.Metric)}"); // } // catch (Exception e) // { // ImGui.TextUnformatted("null"); // } // //ImGui.SetNextItemWidth(120); // //UIcurrentInstrument = Plugin.CurrentInstrument; // //if (ImGui.ListBox("##instrumentSwitch", ref UIcurrentInstrument, InstrumentSheet.Select(i => i.Instrument.ToString()).ToArray(), (int)InstrumentSheet.RowCount, (int)InstrumentSheet.RowCount)) // //{ // // Task.Run(() => SwitchInstrument.SwitchTo((uint)UIcurrentInstrument)); // //} // //if (ImGui.Button("Quit")) // //{ // // Task.Run(() => SwitchInstrument.SwitchTo(0)); // //} // ImGui.EndChild(); //} #endregion ImGui.End(); } //ImGui.PopStyleVar(); }
private static unsafe void DrawProgressBar() { ImGui.PushStyleColor(ImGuiCol.PlotHistogram, 0x9C60FF8E); //ImGui.PushStyleColor(ImGuiCol.FrameBg, 0x800000A0); MetricTimeSpan currentTime = new MetricTimeSpan(0); MetricTimeSpan duration = new MetricTimeSpan(0); float progress = 0; if (currentPlayback != null) { currentTime = currentPlayback.GetCurrentTime<MetricTimeSpan>(); duration = currentPlayback.GetDuration<MetricTimeSpan>(); try { progress = (float)currentTime.Divide(duration); } catch (Exception e) { // } ImGui.PushStyleColor(ImGuiCol.FrameBg, 0xAC104020); ImGui.ProgressBar(progress, new Vector2(-1, 3)); ImGui.PopStyleColor(); } else { ImGui.ProgressBar(progress, new Vector2(-1, 3)); } ImGui.TextUnformatted($"{currentTime.Hours}:{currentTime.Minutes:00}:{currentTime.Seconds:00}"); var durationText = $"{duration.Hours}:{duration.Minutes:00}:{duration.Seconds:00}"; ImGui.SameLine(ImGui.GetWindowContentRegionWidth() - ImGui.CalcTextSize(durationText).X); ImGui.TextUnformatted(durationText); try { var currentInstrument = PlayingGuitar && !config.OverrideGuitarTones ? (uint)(24 + CurrentGroupTone) : CurrentInstrument; string currentInstrumentText; if (currentInstrument != 0) { currentInstrumentText = InstrumentSheet.GetRow(currentInstrument).Instrument; if (PlayingGuitar && config.OverrideGuitarTones) { currentInstrumentText = currentInstrumentText.Split(':', ':').First()+": Auto"; } } else { currentInstrumentText = string.Empty; } ImGui.SameLine((ImGui.GetWindowContentRegionWidth() - ImGui.CalcTextSize(currentInstrumentText).X) / 2); ImGui.TextUnformatted(currentInstrumentText); } catch (Exception e) { // } ImGui.PopStyleColor(); }
public unsafe void Draw() { if (!IsVisible) { return; } //var Buttoncolor = *ImGui.GetStyleColorVec4(ImGuiCol.Button); //var ButtonHoveredcolor = *ImGui.GetStyleColorVec4(ImGuiCol.ButtonHovered); //var ButtonActivecolor = *ImGui.GetStyleColorVec4(ImGuiCol.ButtonActive); ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, new Vector2(5, 5)); ImGui.SetNextWindowPos(new Vector2(100, 100), ImGuiCond.FirstUseEver); ImGui.SetNextWindowSize(new Vector2(400, 400), ImGuiCond.FirstUseEver); //ImGui.SetNextWindowSizeConstraints(new Vector2(356, 10), config.miniPlayer ? new Vector2(356, 100) : new Vector2(10000, 10000)); var flag = config.miniPlayer ? ImGuiWindowFlags.NoDecoration : ImGuiWindowFlags.None; if (config.miniPlayer) { ImGui.SetNextWindowSizeConstraints(Vector2.Zero, new Vector2(357, 800)); } if (ImGui.Begin("MidiBard", ref IsVisible, ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.AlwaysAutoResize | flag)) { if (!config.miniPlayer) { ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(4, 4)); ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, new Vector2(15, 4)); { if (!_isImportRunning) { DrawImportButton(); ToolTip("Import midi file.".Localize()); } else { DrawImportProgress(); } if (_hasError) { DrawFailedImportMessage(); } //ImGui.SameLine(); //if (ImGui.Button("Remove Selected")) //{ // PlaylistManager.Remove(PlaylistManager.currentPlaying); //} ImGui.SameLine(); if (ImGui.Button("Clear Playlist".Localize())) { PlaylistManager.Clear(); } if (localizer.Language == UILang.CN) { ImGui.SameLine(); ImGui.PushFont(UiBuilder.IconFont); if (ImGui.Button(FontAwesomeIcon.QuestionCircle.ToIconString())) { //config.showHelpWindow ^= true; } ImGui.PopFont(); if (ImGui.IsItemHovered()) { var currentwindowpos = ImGui.GetWindowPos(); var width = ImGui.GetWindowWidth(); ImGui.SetNextWindowPos(currentwindowpos + new Vector2(0, ImGui.GetTextLineHeightWithSpacing() + ImGui.GetFrameHeightWithSpacing() + ImGui.GetStyle().WindowPadding.Y)); ImGui.SetNextWindowSizeConstraints(new Vector2(width, 0), new Vector2(10000, 10000)); ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, new Vector2(4, 4)); if (ImGui.Begin("HelpWindow", ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.Tooltip | ImGuiWindowFlags.AlwaysAutoResize)) { ImGui.BulletText( "如何开始使用MIDIBARD演奏?" + "\n MIDIBARD窗口默认在角色进入演奏模式后自动弹出。" + "\n 点击窗口左上角的“+”按钮来将乐曲文件导入到播放列表,仅支持.mid格式的乐曲。" + "\n 导入时按Ctrl或Shift可以选择多个文件一同导入。" + "\n 双击播放列表中要演奏的乐曲后点击播放按钮开始演奏。\n"); ImGui.BulletText( "为什么点击播放之后没有正常演奏?" + "\n MIDIBARD仅使用37键演奏模式。" + "\n 请在游戏“乐器演奏操作设置”的“键盘操作”类别下启用“全音阶一同显示、设置按键”的选项。\n"); ImGui.BulletText( "如何使用MIDIBARD进行多人合奏?" + "\n MIDIBARD使用游戏中的合奏助手来完成合奏,请在合奏时打开游戏的节拍器窗口。" + "\n 合奏前在播放列表中双击要合奏的乐曲,播放器下方会出现可供演奏的所有音轨,请为每位合奏成员分别选择其需要演奏的音轨。" + "\n 选择音轨后队长点击节拍器窗口的“合奏准备确认”按钮," + "\n 并确保合奏准备确认窗口中已勾选“使用合奏助手”选项后点击开始即可开始合奏。" + "\n 注:节拍器前两小节为准备时间,从第1小节开始会正式开始合奏。" + "\n 考虑到不同使用环境乐曲加载速度可能不一致,为了避免切换乐曲导致的不同步,在乐曲结束时合奏会自动停止。\n"); ImGui.BulletText( "后台演奏时有轻微卡顿不流畅怎么办?" + "\n 在游戏内“系统设置→显示设置→帧数限制”中取消勾选 “程序在游戏窗口处于非激活状态时限制帧数” 的选项并应用设置。\n"); ImGui.Spacing(); ImGui.End(); } ImGui.PopStyleVar(); } } if (EnsembleModeRunning) { ImGui.SameLine(); if (MetronomeBeatsElapsed < 0) { ImGui.PushStyleColor(ImGuiCol.Button, 0xFF00A0D0); ImGui.Button("Ensemble Mode Preparing".Localize()); } else { ImGui.PushStyleColor(ImGuiCol.Button, 0xFF0000D0); ImGui.Button("Ensemble Mode Running".Localize()); } ImGui.PopStyleColor(); } } ImGui.PopStyleVar(2); if (PlaylistManager.Filelist.Count == 0) { if (ImGui.Button("Import midi files to start performing!".Localize(), new Vector2(-1, 25))) { RunImportTask(); } } else { ImGui.PushStyleColor(ImGuiCol.Button, 0); ImGui.PushStyleColor(ImGuiCol.ButtonHovered, 0); ImGui.PushStyleColor(ImGuiCol.ButtonActive, 0); ImGui.PushStyleColor(ImGuiCol.Header, 0x3C60FF8E); ImGui.PushStyleColor(ImGuiCol.HeaderHovered, 0x80808080); if (ImGui.BeginTable("##PlaylistTable", 3, ImGuiTableFlags.RowBg | ImGuiTableFlags.PadOuterX | ImGuiTableFlags.ScrollY | ImGuiTableFlags.NoSavedSettings | ImGuiTableFlags.BordersInnerV | ImGuiTableFlags.ContextMenuInBody, new Vector2(-1, ImGui.GetTextLineHeightWithSpacing() * Math.Min(config.playlistSizeY, PlaylistManager.Filelist.Count) ))) { ImGui.TableSetupColumn("\ue035", ImGuiTableColumnFlags.WidthFixed); ImGui.TableSetupColumn("##delete", ImGuiTableColumnFlags.WidthFixed); ImGui.TableSetupColumn("filename", ImGuiTableColumnFlags.WidthStretch); for (var i = 0; i < PlaylistManager.Filelist.Count; i++) { ImGui.TableNextRow(); ImGui.TableSetColumnIndex(0); if (ImGui.Selectable($"{i + 1:000}##plistitem", PlaylistManager.CurrentPlaying == i, ImGuiSelectableFlags.SpanAllColumns | ImGuiSelectableFlags.AllowDoubleClick | ImGuiSelectableFlags.AllowItemOverlap)) { if (ImGui.IsMouseDoubleClicked(ImGuiMouseButton.Left)) { PlaylistManager.CurrentPlaying = i; try { var wasplaying = IsPlaying; currentPlayback?.Dispose(); currentPlayback = null; currentPlayback = PlaylistManager.Filelist[PlaylistManager.CurrentPlaying].GetFilePlayback(); if (wasplaying) { currentPlayback?.Start(); } Task.Run(SwitchInstrument.WaitSwitchInstrument); } catch (Exception e) { // } } else { PlaylistManager.CurrentSelected = i; } } ImGui.TableNextColumn(); ImGui.PushFont(UiBuilder.IconFont); ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, Vector2.Zero); if (ImGui.Button($"{((FontAwesomeIcon)0xF2ED).ToIconString()}##{i}", new Vector2(ImGui.GetTextLineHeight(), ImGui.GetTextLineHeight()))) { PlaylistManager.Remove(i); } ImGui.PopStyleVar(); ImGui.PopFont(); ImGui.TableNextColumn(); try { ImGui.Text(PlaylistManager.Filelist[i].Item2); } catch (Exception e) { ImGui.Text("deleted"); } } ImGui.EndTable(); } ImGui.PopStyleColor(5); } #region old playlist //ImGui.BeginListBox("##PlayList1", new Vector2(-1, ImGui.GetTextLineHeightWithSpacing() * maxItems)); //{ // var i = 0; // foreach (var tuple in PlaylistManager.Filelist) // { // if (PlaylistManager.currentPlaying == i) // { // ImGui.PushStyleColor(ImGuiCol.Text, config.ThemeColor); // } // if (ImGui.Selectable($"{tuple.Item2}##{i}", PlaylistManager.currentSelected[i], ImGuiSelectableFlags.AllowDoubleClick)) // { // } // if (PlaylistManager.currentPlaying == i) // { // ImGui.PopStyleColor(); // } // i++; // } //} //ImGui.EndListBox(); //ImGui.Text(sb.ToString()); //if (ImGui.ListBox("##PlayList", ref PlaylistManager.currentPlaying, items, itemsCount, maxItems)) //{ // var wasplaying = IsPlaying; // currentPlayback?.Dispose(); // try // { // currentPlayback = PlaylistManager.Filelist[PlaylistManager.currentPlaying].Item1.GetPlayback(); // if (wasplaying) currentPlayback?.Start(); // } // catch (Exception e) // { // } //} #endregion ImGui.Spacing(); } DrawCurrentPlaying(); ImGui.Spacing(); DrawProgressBar(); ImGui.Spacing(); ImGui.PushFont(UiBuilder.IconFont); ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(4, 4)); ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, new Vector2(15, 4)); { DrawButtonPlayPause(); DrawButtonStop(); DrawButtonFastForward(); DrawButtonPlayMode(); DrawButtonShowSettingsPanel(); DrawButtonShowInstrumentSwitch(); DrawButtonMiniPlayer(); } ImGui.PopFont(); ImGui.PopStyleVar(2); if (config.showMusicControlPanel) { DrawTrackTrunkSelectionWindow(); ImGui.Separator(); DrawPanelMusicControl(); //} //if (config.showSettingsPanel) //{ ImGui.Separator(); DrawPanelGeneralSettings(); } if (Debug) { DrawDebugWindow(); } var size = ImGui.GetWindowSize(); var pos = ImGui.GetWindowPos(); var vp = ImGui.GetWindowViewport(); //ImGui.SetNextWindowViewport(vp.ID); ImGui.SetNextWindowPos(pos + new Vector2(size.X + 1, 0)); //ImGui.SetNextWindowSizeConstraints(Vector2.Zero, size); if (config.showInstrumentSwitchWindow && ImGui.Begin("Instrument".Localize(), ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.NoFocusOnAppearing | ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.AlwaysAutoResize)) { ImGui.SetNextItemWidth(120); UIcurrentInstrument = Plugin.CurrentInstrument; if (ImGui.ListBox("##instrumentSwitch", ref UIcurrentInstrument, InstrumentSheet.Select(i => i.Instrument.ToString()).ToArray(), (int)InstrumentSheet.RowCount, (int)InstrumentSheet.RowCount)) { Task.Run(() => SwitchInstrument.SwitchTo((uint)UIcurrentInstrument)); } //if (ImGui.Button("Quit")) //{ // Task.Run(() => SwitchInstrument.SwitchTo(0)); //} ImGui.End(); } ImGui.End(); } ImGui.PopStyleVar(); }
private static void DrawDebugWindow() { ImGui.PushStyleVar(ImGuiStyleVar.FramePadding, new Vector2(5, 0)); //ImGui.SetNextWindowSize(new Vector2(500, 800)); ImGui.Begin("MIDIBARD DEBUG", ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.NoTitleBar); ImGui.Columns(2); ImGui.SetColumnWidth(0, ImGui.GetWindowContentRegionWidth() - 130); ImGui.BeginChild("childleft", ImGui.GetContentRegionAvail(), false); try { ImGui.Text($"AgentModule: {AgentManager.AgentModule.ToInt64():X}"); ImGui.SameLine(); if (ImGui.Button("C##3")) { ImGui.SetClipboardText($"{AgentManager.AgentModule.ToInt64():X}"); } ImGui.Text($"UiModule: {AgentManager.UiModule.ToInt64():X}"); ImGui.SameLine(); if (ImGui.Button("C##4")) { ImGui.SetClipboardText($"{AgentManager.UiModule.ToInt64():X}"); } ImGui.Text($"AgentCount:{AgentManager.Agents.Count}"); } catch (Exception e) { ImGui.Text(e.ToString()); } ImGui.Separator(); try { ImGui.Text($"AgentMetronome: {MetronomeAgent.Pointer.ToInt64():X}"); ImGui.SameLine(); if (ImGui.Button("C##1")) { ImGui.SetClipboardText($"{MetronomeAgent.Pointer.ToInt64():X}"); } ImGui.Text($"AgentID: {MetronomeAgent.Id}"); ImGui.Text($"Running: {MetronomeRunning}"); ImGui.Text($"Ensemble: {EnsembleModeRunning}"); ImGui.Text($"BeatsElapsed: {MetronomeBeatsElapsed}"); ImGui.Text($"TickRate: {MetronomeTickRate} ({60_000_000 / (double)MetronomeTickRate:F3})"); ImGui.Text($"BeatsPerBar: {MetronomeBeatsperBar}"); ImGui.Text($"Timer1: {TimeSpan.FromMilliseconds(MetronomeTimer1)}"); ImGui.Text($"Timer2: {TimeSpan.FromTicks(MetronomeTimer2 * 10)}"); } catch (Exception e) { ImGui.Text(e.ToString()); } ImGui.Separator(); try { ImGui.Text($"AgentPerformance: {PerformanceAgent.Pointer.ToInt64():X}"); ImGui.SameLine(); if (ImGui.Button("C##2")) { ImGui.SetClipboardText($"{PerformanceAgent.Pointer.ToInt64():X}"); } ImGui.Text($"AgentID: {PerformanceAgent.Id}"); ImGui.Text($"notePressed: {notePressed}"); ImGui.Text($"noteNumber: {noteNumber}"); ImGui.Text($"InPerformanceMode: {InPerformanceMode}"); ImGui.Text($"Timer1: {TimeSpan.FromMilliseconds(PerformanceTimer1)}"); ImGui.Text($"Timer2: {TimeSpan.FromTicks(PerformanceTimer2 * 10)}"); } catch (Exception e) { ImGui.Text(e.ToString()); } ImGui.Separator(); ImGui.Text($"currentPlaying: {PlaylistManager.CurrentPlaying}"); ImGui.Text($"currentSelected: {PlaylistManager.CurrentSelected}"); ImGui.Text($"FilelistCount: {PlaylistManager.Filelist.Count}"); ImGui.Text($"currentUILanguage: {pluginInterface.UiLanguage}"); ImGui.Separator(); try { ImGui.Text($"CurrentInstrumentKey: {CurrentInstrument}"); //if (CurrentInstrument != 0) { ImGui.Text($"Instrument: {InstrumentSheet.GetRow(CurrentInstrument).Instrument}"); ImGui.Text($"Name: {InstrumentSheet.GetRow(CurrentInstrument).Name.RawString}"); } //ImGui.Text($"unkFloat: {UnkFloat}"); //ImGui.Text($"unkByte: {UnkByte1}"); } catch (Exception e) { ImGui.Text(e.ToString()); } ImGui.EndChild(); ImGui.NextColumn(); ImGui.BeginChild("childright", ImGui.GetContentRegionAvail(), false); //ImGui.SetNextItemWidth(120); //UIcurrentInstrument = Plugin.CurrentInstrument; //if (ImGui.ListBox("##instrumentSwitch", ref UIcurrentInstrument, InstrumentSheet.Select(i => i.Instrument.ToString()).ToArray(), (int)InstrumentSheet.RowCount, (int)InstrumentSheet.RowCount)) //{ // Task.Run(() => SwitchInstrument.SwitchTo((uint)UIcurrentInstrument)); //} //if (ImGui.Button("Quit")) //{ // Task.Run(() => SwitchInstrument.SwitchTo(0)); //} ImGui.EndChild(); ImGui.End(); ImGui.PopStyleVar(); }
private static unsafe void DrawProgressBar() { ImGui.PushStyleColor(ImGuiCol.PlotHistogram, 0x9C60FF8E); //ImGui.PushStyleColor(ImGuiCol.FrameBg, 0x800000A0); if (currentPlayback != null) { var currentTime = currentPlayback.GetCurrentTime <MetricTimeSpan>(); var duration = currentPlayback.GetDuration <MetricTimeSpan>(); float progress; try { progress = (float)currentTime.Divide(duration); } catch (Exception e) { progress = 0; } ImGui.PushStyleColor(ImGuiCol.FrameBg, 0xAC104020); ImGui.ProgressBar(progress, new Vector2(-1, 3)); ImGui.PopStyleColor(); ImGui.Text($"{currentTime.Hours}:{currentTime.Minutes:00}:{currentTime.Seconds:00}"); var fmt = $"{duration.Hours}:{duration.Minutes:00}:{duration.Seconds:00}"; ImGui.SameLine(ImGui.GetWindowContentRegionWidth() - ImGui.CalcTextSize(fmt).X); ImGui.Text(fmt); try { var text = CurrentInstrument != 0 ? InstrumentSheet.GetRow(CurrentInstrument).Instrument : string.Empty; var size = ImGui.CalcTextSize(text); ImGui.SameLine((ImGui.GetWindowContentRegionWidth() - size.X) / 2); ImGui.Text(text); } catch (Exception e) { // } } else { ImGui.ProgressBar(0, new Vector2(-1, 3)); ImGui.Text("0:00:00"); ImGui.SameLine(ImGui.GetWindowContentRegionWidth() - ImGui.GetItemRectSize().X); ImGui.Text("0:00:00"); try { var text = CurrentInstrument != 0 ? InstrumentSheet.GetRow(CurrentInstrument).Instrument : string.Empty; var size = ImGui.CalcTextSize(text); ImGui.SameLine((ImGui.GetWindowContentRegionWidth() - size.X) / 2); ImGui.Text(text); } catch (Exception e) { // } } ImGui.PopStyleColor(); }