public Sender(string dlsPath) { uint fileSize = 0; mpWaveTable = waveout_LoadWaveTable(Marshal.StringToHGlobalAuto(dlsPath), out fileSize); mpInstList = (INST_LIST *)Marshal.AllocHGlobal(Marshal.SizeOf <INST_LIST>()); var dls = new DLS.DLS(mpWaveTable, fileSize); dls.GetInstList(mpInstList); //var sf2 = new SF2.SF2(dlsPath, mpWaveTable, fileSize); //sf2.GetInstList(mpInstList); waveout_SystemValues(SampleRate, 16, 220, 50, CHANNEL_COUNT, SAMPLER_COUNT); mppChannels = waveout_GetChannelPtr(); mppSamplers = waveout_GetSamplerPtr(); mppNotes = waveout_GetNotePtr(); midi_CreateChannels(mpInstList, mppSamplers, mppNotes, mppChannels, SAMPLER_COUNT); mppChParam = midi_GetChannelParamPtr(); waveout_Open(); }
private static extern void midi_CreateChannels(INST_LIST *list, IntPtr ppSmpl, NOTE **ppNote, IntPtr ppCh, int samplerCount);