aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_xmi2mid.c
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-11-08 23:11:01 +0300
committerWohlstand <admin@wohlnet.ru>2017-11-08 23:11:01 +0300
commit17b5e86f44f3d71e8fe43c40f57c12a9649c7ad5 (patch)
tree20b9fae8246c878feb2331e55fa8221c532804b2 /src/adlmidi_xmi2mid.c
parentf87e983001067c693fec5d0aaf7282c22dc6acb6 (diff)
downloadlibADLMIDI-17b5e86f44f3d71e8fe43c40f57c12a9649c7ad5.tar.gz
libADLMIDI-17b5e86f44f3d71e8fe43c40f57c12a9649c7ad5.tar.bz2
libADLMIDI-17b5e86f44f3d71e8fe43c40f57c12a9649c7ad5.zip
Fixed zero four-operators bug when using a bigger non-GM bank
Diffstat (limited to 'src/adlmidi_xmi2mid.c')
-rw-r--r--src/adlmidi_xmi2mid.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/adlmidi_xmi2mid.c b/src/adlmidi_xmi2mid.c
index 083b5ed..4fae2a2 100644
--- a/src/adlmidi_xmi2mid.c
+++ b/src/adlmidi_xmi2mid.c
@@ -643,6 +643,11 @@ static int ConvertEvent(struct xmi_ctx *ctx, const int32_t time,
data = read1(ctx);
+ //HACK!
+ if (((status >> 4) == 0xB) && (status & 0xF) != 9 && (data == 114)) {
+ data = 32; //Change XMI 114 controller into XG bank
+ }
+
/* Bank changes are handled here */
if ((status >> 4) == 0xB && data == 0) {
data = read1(ctx);
@@ -659,7 +664,7 @@ static int ConvertEvent(struct xmi_ctx *ctx, const int32_t time,
CreateNewEvent(ctx, time);
ctx->current->status = status;
ctx->current->data[0] = 0;
- ctx->current->data[1] = data;
+ ctx->current->data[1] = data == 127 ? 0 : data;//HACK:
if (ctx->convert_type == XMIDI_CONVERT_GS127_TO_GS && data == 127)
ctx->bank127[status & 0xF] = 1;