//using Jacobi.Vst.Core; //using Jacobi.Vst.Host.Interop; //using NAudio.Midi; //using SharedClasses.VSTHosting; //using System; //using System.Collections.Generic; //using System.Collections.ObjectModel; //using System.ComponentModel; //using System.Diagnostics; //using System.IO; //using System.Linq; //using System.Runtime.InteropServices; //using System.Text.Json.Serialization; //using System.Threading; //using System.Windows; //using System.Windows.Threading; //using static QuikDawEditor.EDITING.StaticProperties; //using static QuikDawEditor.StaticMethods; //namespace QuikDawEditor.VST //{ // public class GMChannel // { // public delegate void ChunkUpdatedHandler(byte[] updateBytes, int updatePointer); // public event ChunkUpdatedHandler chunkUpdated; // public void UpdateChunk(byte[] updateBytes, int updatePointer) { if (chunkUpdated != null) chunkUpdated(updateBytes, updatePointer); } // public int GMChannelNo { get; set; } // public int GetOffset { get { return GMChannelNo * 0x28; } } // private int _GMProgramIndex = 0; // public int GMProgramIndex { get { return _GMProgramIndex; } set // { // _GMProgramIndex = value; // UpdateChunk(new byte[] { 0x00, 0x00, 0x00, (byte)value }, 0xA70 + GetOffset); // } // } // private float _Volume = 1; // public float Volume { get { return _Volume; } set { _Volume = value; UpdateChunk(new byte[] { (byte)(value * 0x64) }, 0xA83 + GetOffset); } } // public ObservableCollection GMPrograms { get { return GeneralMidiPrograms; } } // public GMChannel() { } // ////Set pan // //Array.Copy(new byte[] { 0x40 }, 0, chunkbytes, 0xA87, 1); // } //}