public MidiPlayer(TrackSelectionManager trackSelectionManager) { isPlaying = false; mordhauOutDevice = new MordhauOutDevice(); this.trackSelectionManager = trackSelectionManager; sequence = new Sequence { Format = 1 }; sequencer = new Sequencer { Position = 0, Sequence = this.sequence }; sequencer.PlayingCompleted += new System.EventHandler(this.HandlePlayingCompleted); sequencer.ChannelMessagePlayed += new System.EventHandler <Sanford.Multimedia.Midi.ChannelMessageEventArgs>(this.HandleChannelMessagePlayed); sequencer.SysExMessagePlayed += new System.EventHandler <Sanford.Multimedia.Midi.SysExMessageEventArgs>(this.HandleSysExMessagePlayed); sequencer.Chased += new System.EventHandler <Sanford.Multimedia.Midi.ChasedEventArgs>(this.HandleChased); sequencer.Stopped += new System.EventHandler <Sanford.Multimedia.Midi.StoppedEventArgs>(this.HandleStopped); if (!(OutputDevice.DeviceCount == 0)) { outDevice = new OutputDevice(0); sequence.LoadCompleted += HandleLoadCompleted; } }
// We need only one out device, might as well use rust, but take both for now cuz why not, feels unfair // Though they both get updated with the same values at the same time, for what we're doing public TrackSelectionForm(TrackSelectionManager trackSelectionManager, MordhauOutDevice mordhauOut) { _mordhauOut = mordhauOut; this.trackSelectionManager = trackSelectionManager; trackSelectionManager.TrackChanged += new EventHandler(TrackChangedHandler); this.Load += TrackSelectionForm_Load; InitializeComponent(); InitLists(); trackSelectionManager.autoLoadProfile = AutoActivateCheckBox.Checked; typeof(Panel).InvokeMember("DoubleBuffered", BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic, null, OffsetPanel, new object[] { true }); // Internet suggested this... }