aboutsummaryrefslogtreecommitdiff
path: root/src/wopl/wopl_file.c
diff options
context:
space:
mode:
authorVitaly Novichkov <Wohlstand@users.noreply.github.com>2018-11-04 03:59:51 +0300
committerGitHub <noreply@github.com>2018-11-04 03:59:51 +0300
commita83a1fc30bc7331880460f4ef75471d4ef1b99e6 (patch)
treecdcf91e2382c7f19325f1fb6b2a42f936805a0d1 /src/wopl/wopl_file.c
parent699b534eb1dcd3964daf99cc572c6819bdd449a8 (diff)
parent4c33b5e9573608ce5f7ae845e59a97f087d1aa9d (diff)
downloadlibADLMIDI-a83a1fc30bc7331880460f4ef75471d4ef1b99e6.tar.gz
libADLMIDI-a83a1fc30bc7331880460f4ef75471d4ef1b99e6.tar.bz2
libADLMIDI-a83a1fc30bc7331880460f4ef75471d4ef1b99e6.zip
Merge pull request #190 from jpcima/wopl-update
update the WOPL library with fixes
Diffstat (limited to 'src/wopl/wopl_file.c')
-rw-r--r--src/wopl/wopl_file.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/wopl/wopl_file.c b/src/wopl/wopl_file.c
index f018cbc..6e9103b 100644
--- a/src/wopl/wopl_file.c
+++ b/src/wopl/wopl_file.c
@@ -77,18 +77,30 @@ static void fromSint16BE(int16_t in, uint8_t *arr)
WOPLFile *WOPL_Init(uint16_t melodic_banks, uint16_t percussive_banks)
{
- WOPLFile *file = NULL;
- if(melodic_banks == 0)
- return NULL;
- if(percussive_banks == 0)
- return NULL;
- file = (WOPLFile*)calloc(1, sizeof(WOPLFile));
+ WOPLFile *file = (WOPLFile*)calloc(1, sizeof(WOPLFile));
if(!file)
return NULL;
- file->banks_count_melodic = melodic_banks;
- file->banks_count_percussion = percussive_banks;
- file->banks_melodic = (WOPLBank*)calloc(1, sizeof(WOPLBank) * melodic_banks );
- file->banks_percussive = (WOPLBank*)calloc(1, sizeof(WOPLBank) * percussive_banks );
+
+ file->banks_count_melodic = (melodic_banks != 0) ? melodic_banks : 1;
+ file->banks_melodic = (WOPLBank*)calloc(file->banks_count_melodic, sizeof(WOPLBank));
+
+ if(melodic_banks == 0)
+ {
+ unsigned i;
+ for(i = 0; i < 128; ++i)
+ file->banks_melodic[0].ins[i].inst_flags = WOPL_Ins_IsBlank;
+ }
+
+ file->banks_count_percussion = (percussive_banks != 0) ? percussive_banks : 1;
+ file->banks_percussive = (WOPLBank*)calloc(file->banks_count_percussion, sizeof(WOPLBank));
+
+ if(percussive_banks == 0)
+ {
+ unsigned i;
+ for(i = 0; i < 128; ++i)
+ file->banks_percussive[0].ins[i].inst_flags = WOPL_Ins_IsBlank;
+ }
+
return file;
}