예제 #1
0
 public unsafe void OpenData(ReadOnlySpan <byte> data)
 {
     fixed(byte *ptr = data)
     {
         Check(AdlMidiImports.adl_openData(_device, ptr, (uint)data.Length));
     }
 }
예제 #2
0
        public Instrument GetInstrument(uint index)
        {
            var result = AdlMidiImports.adl_getInstrument(_device, ref _bank, index, out var instrument);

            if (result < 0)
            {
                throw new InvalidOperationException();
            }
            return(instrument);
        }
예제 #3
0
        public BankId GetBankId()
        {
            var result = AdlMidiImports.adl_getBankId(_device, ref _bank, out var id);

            if (result < 0)
            {
                throw new InvalidOperationException();
            }
            return(id);
        }
예제 #4
0
        int Check(int result)
        {
            if (result >= 0)
            {
                return(result);
            }

            var error = AdlMidiImports.adl_errorInfo(_device);

            throw new InvalidOperationException(error);
        }
예제 #5
0
        public static MidiPlayer Init(long sampleRate = DefaultChipSampleRate)
        {
            var midiPlayer = AdlMidiImports.adl_init(sampleRate);

            if (midiPlayer == IntPtr.Zero)
            {
                throw new InvalidOperationException(ErrorString());
            }

            return(new MidiPlayer(midiPlayer));
        }
예제 #6
0
 public void Reset() => AdlMidiImports.adl_reset(_device);
예제 #7
0
 public void Close() => AdlMidiImports.adl_close(_device);
예제 #8
0
 public void OpenFile(string filePath) => Check(AdlMidiImports.adl_openFile(_device, filePath));
예제 #9
0
 public static string[] GetBankNames() => AdlMidiImports.adl_getBankNames();
예제 #10
0
 public static int GetBankCount() => AdlMidiImports.adl_getBanksCount();
예제 #11
0
 public static string ErrorString() => AdlMidiImports.adl_errorString();
예제 #12
0
        public static Version LinkedVersion()
        {
            var version = AdlMidiImports.adl_linkedVersion();

            return(new Version(version.Major, version.Minor, version.Patch));
        }
예제 #13
0
 public static string LinkedLibraryVersion() => AdlMidiImports.adl_linkedLibraryVersion();
예제 #14
0
 public int LoadEmbeddedBank(int num)
 {
     return(AdlMidiImports.adl_loadEmbeddedBank(_device, ref _bank, num));
 }
예제 #15
0
 public int SetInstrument(uint index, ref Instrument ins)
 {
     return(AdlMidiImports.adl_setInstrument(_device, ref _bank, index, ref ins));
 }
예제 #16
0
 public int RemoveBank()
 {
     return(AdlMidiImports.adl_removeBank(_device, ref _bank));
 }