Skip to content

Commit 5ea7b7f

Browse files
committed
Added midi_resetbank function to synth API.
1 parent f4e3fc7 commit 5ea7b7f

File tree

6 files changed

+26
-0
lines changed

6 files changed

+26
-0
lines changed

interface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class midisynth {
3838
virtual const char *midi_synthname(void) = 0;
3939
virtual int midi_getprogram(unsigned int channel) = 0;
4040
virtual bool midi_loadbank(char *filename) { return false; }
41+
virtual void midi_resetbank() { }
4142
virtual int midi_getvoicecount() = 0;
4243
};
4344

src/guihelp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ void OPL3GM::initializeSettings (bool resetRate)
3939
{
4040
setSampleRate (getSampleRate ());
4141
}
42+
if (synth)
43+
{
44+
synth->midi_resetbank();
45+
}
4246
}
4347

4448
bool OPL3GM::getBypass ()

synthlib_apogee/al_midi.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,6 +1558,16 @@ bool ApogeeOPL::midi_loadbank(char *filename)
15581558
return AL_LoadBank(filename);
15591559
}
15601560

1561+
void ApogeeOPL::midi_resetbank()
1562+
{
1563+
memcpy(&ADLIB_TimbreBank, &FatTimbre, sizeof(FatTimbre));
1564+
#ifdef _WIN32
1565+
AL_LoadBank("C:\\OPLSynth\\APOGEE.TMB");
1566+
#else
1567+
AL_LoadBank("APOGEE.TMB");
1568+
#endif
1569+
}
1570+
15611571
int ApogeeOPL::midi_getvoicecount()
15621572
{
15631573
int count = 0;

synthlib_apogee/al_midi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class ApogeeOPL : public midisynth
9797
const char *midi_synthname(void);
9898
int midi_getprogram(unsigned int channel);
9999
bool midi_loadbank(char *filename);
100+
void midi_resetbank();
100101
int midi_getvoicecount();
101102
};
102103

synthlib_doom/i_oplmusic.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,15 @@ bool DoomOPL::midi_loadbank(char *filename) {
10841084
return LoadInstrumentTable(filename);
10851085
}
10861086

1087+
void DoomOPL::midi_resetbank() {
1088+
memcpy(&lump, &dmx_dmx, sizeof(dmx_dmx));
1089+
#ifdef _WIN32
1090+
LoadInstrumentTable("C:\\OPLSynth\\GENMIDI.OP2");
1091+
#else
1092+
LoadInstrumentTable("GENMIDI.OP2");
1093+
#endif
1094+
}
1095+
10871096
int DoomOPL::midi_getvoicecount() {
10881097
return voice_alloced_num;
10891098
}

synthlib_doom/i_oplmusic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ class DoomOPL : public midisynth {
396396
const char *midi_synthname(void);
397397
int midi_getprogram(unsigned int channel);
398398
bool midi_loadbank(char *filename);
399+
void midi_resetbank();
399400
int midi_getvoicecount();
400401
};
401402

0 commit comments

Comments
 (0)