- extended $mididevice to add an optional parameter, which has the following meaning for the different MIDI devices:
* OPL: specify the core to use for playing this song * FluidSynth: specify a soundfont that should be used for playing the song. * WildMidi: specify a config file that should be used for playing the song. * Timidity++: specify an executable that should be used for playing the song. At least under Windows this allows using Timidity++ with different configs if the executable and each single config are placed in different directories. * GUS: currently not operational, but should later also specify the config. This will need some work, because right now this is initialized only when the sound system is initialized. * all other: no function. These options should mainly be for end users who want to fine-tune how to play the music.
This commit is contained in:
parent
1316120fe4
commit
5e975ac9f6
21 changed files with 135 additions and 79 deletions
|
|
@ -1364,16 +1364,36 @@ static void S_AddSNDINFO (int lump)
|
|||
case SI_MidiDevice: {
|
||||
sc.MustGetString();
|
||||
FName nm = sc.String;
|
||||
FScanner::SavedPos save = sc.SavePos();
|
||||
|
||||
sc.SetCMode(true);
|
||||
sc.MustGetString();
|
||||
if (sc.Compare("timidity")) MidiDevices[nm] = MDEV_TIMIDITY;
|
||||
else if (sc.Compare("fmod") || sc.Compare("sndsys")) MidiDevices[nm] = MDEV_SNDSYS;
|
||||
else if (sc.Compare("standard")) MidiDevices[nm] = MDEV_MMAPI;
|
||||
else if (sc.Compare("opl")) MidiDevices[nm] = MDEV_OPL;
|
||||
else if (sc.Compare("default")) MidiDevices[nm] = MDEV_DEFAULT;
|
||||
else if (sc.Compare("fluidsynth")) MidiDevices[nm] = MDEV_FLUIDSYNTH;
|
||||
else if (sc.Compare("gus")) MidiDevices[nm] = MDEV_GUS;
|
||||
else if (sc.Compare("wildmidi")) MidiDevices[nm] = MDEV_WILDMIDI;
|
||||
MidiDeviceSetting devset;
|
||||
if (sc.Compare("timidity")) devset.device = MDEV_TIMIDITY;
|
||||
else if (sc.Compare("fmod") || sc.Compare("sndsys")) devset.device = MDEV_SNDSYS;
|
||||
else if (sc.Compare("standard")) devset.device = MDEV_MMAPI;
|
||||
else if (sc.Compare("opl")) devset.device = MDEV_OPL;
|
||||
else if (sc.Compare("default")) devset.device = MDEV_DEFAULT;
|
||||
else if (sc.Compare("fluidsynth")) devset.device = MDEV_FLUIDSYNTH;
|
||||
else if (sc.Compare("gus")) devset.device = MDEV_GUS;
|
||||
else if (sc.Compare("wildmidi")) devset.device = MDEV_WILDMIDI;
|
||||
else sc.ScriptError("Unknown MIDI device %s\n", sc.String);
|
||||
|
||||
if (sc.CheckString(","))
|
||||
{
|
||||
sc.SetCMode(false);
|
||||
sc.MustGetString();
|
||||
devset.args = sc.String;
|
||||
}
|
||||
else
|
||||
{
|
||||
// This does not really do what one might expect, because the next token has already been parsed and can be a '$'.
|
||||
// So in order to continue parsing without C-Mode, we need to reset and parse the last token again.
|
||||
sc.SetCMode(false);
|
||||
sc.RestorePos(save);
|
||||
sc.MustGetString();
|
||||
}
|
||||
MidiDevices[nm] = devset;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue