From c07b146a1a3991edd6c3233dcd1956b989303dd3 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Tue, 17 Oct 2017 03:57:21 +0300 Subject: EXPERIMENTAL: Support for custom banks! TODO: Fix support for real 4-operator support for dynamical instruments which now are silent. 2-op and pseudo-4-op still work fine. --- src/adlmidi.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) (limited to 'src/adlmidi.cpp') diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 3d9d1cb..79c1422 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -186,7 +186,7 @@ ADLMIDI_EXPORT void adl_setLogarithmicVolumes(struct ADL_MIDIPlayer *device, int reinterpret_cast(device->adl_midiPlayer)->opl.LogarithmicVolumes = (bool)device->LogarithmicVolumes; } -ADLMIDI_EXPORT void adl_setVolumeRangeModel(ADL_MIDIPlayer *device, int volumeModel) +ADLMIDI_EXPORT void adl_setVolumeRangeModel(struct ADL_MIDIPlayer *device, int volumeModel) { if(!device) return; @@ -194,6 +194,50 @@ ADLMIDI_EXPORT void adl_setVolumeRangeModel(ADL_MIDIPlayer *device, int volumeMo reinterpret_cast(device->adl_midiPlayer)->opl.ChangeVolumeRangesModel(static_cast(volumeModel)); } +ADLMIDI_EXPORT int adl_openBankFile(struct ADL_MIDIPlayer *device, char *filePath) +{ + ADLMIDI_ErrorString.clear(); + + if(device && device->adl_midiPlayer) + { + device->stored_samples = 0; + device->backup_samples_size = 0; + + if(!reinterpret_cast(device->adl_midiPlayer)->LoadBank(filePath)) + { + if(ADLMIDI_ErrorString.empty()) + ADLMIDI_ErrorString = "ADL MIDI: Can't load file"; + return -1; + } + else return 0; + } + + ADLMIDI_ErrorString = "Can't load file: ADLMIDI is not initialized"; + return -1; +} + +ADLMIDI_EXPORT int adl_openBankData(struct ADL_MIDIPlayer *device, void *mem, long size) +{ + ADLMIDI_ErrorString.clear(); + + if(device && device->adl_midiPlayer) + { + device->stored_samples = 0; + device->backup_samples_size = 0; + + if(!reinterpret_cast(device->adl_midiPlayer)->LoadBank(mem, static_cast(size))) + { + if(ADLMIDI_ErrorString.empty()) + ADLMIDI_ErrorString = "ADL MIDI: Can't load data from memory"; + return -1; + } + else return 0; + } + + ADLMIDI_ErrorString = "Can't load file: ADL MIDI is not initialized"; + return -1; +} + ADLMIDI_EXPORT int adl_openFile(ADL_MIDIPlayer *device, char *filePath) { ADLMIDI_ErrorString.clear(); -- cgit v1.2.3