diff --git a/Makefile b/Makefile index 213b2bbd9d..90fd85a9cd 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,8 @@ # RELEASE: this will be the released version number. It replaces all places # where it normally would print the revision number # MIDI: if set, it will use it as custom path to midi player. -# If unset, it will use the hardcoded path in the c code +# If unset, it will use the hardcoded path in the c code +# This can still be overriden by the music.extmidi openttd.cfg option. # WITH_NETWORK: enable networking # DEDICATED: allows compilation on UNIX without SDL. Useful for dedicated servers # diff --git a/extmidi.c b/extmidi.c index a03d4cf48f..7f48969c11 100644 --- a/extmidi.c +++ b/extmidi.c @@ -4,6 +4,7 @@ #include "ttd.h" #include "hal.h" +#include "sound.h" #include #include #include @@ -11,10 +12,6 @@ #include #include -#ifndef EXTERNAL_PLAYER -#define EXTERNAL_PLAYER "timidity" -#endif - static pid_t _pid; static void extmidi_kill(void) @@ -50,9 +47,9 @@ static void extmidi_play_song(const char *filename) if (_pid == 0) { #if defined(MIDI_ARG) - execlp(EXTERNAL_PLAYER, "extmidi", MIDI_ARG, filename, NULL); + execlp(msf.extmidi, "extmidi", MIDI_ARG, filename, NULL); #else - execlp(EXTERNAL_PLAYER, "extmidi", filename, NULL); + execlp(msf.extmidi, "extmidi", filename, NULL); #endif fprintf(stderr, "extmidi: couldn't execl: %s\n", strerror(errno)); exit(0); diff --git a/settings.c b/settings.c index 3623c6ca74..fbc37713dc 100644 --- a/settings.c +++ b/settings.c @@ -716,6 +716,10 @@ static void save_setting_desc(IniFile *ini, const SettingDesc *desc, const void // TTD specific INI stuff //*************************** +#ifndef EXTERNAL_PLAYER +#define EXTERNAL_PLAYER "timidity" +#endif + static const SettingDesc music_settings[] = { {"playlist", SDT_UINT8, (void*)0, &msf.playlist, NULL}, {"music_vol", SDT_UINT8, (void*)128, &msf.music_vol, NULL}, @@ -724,6 +728,7 @@ static const SettingDesc music_settings[] = { {"custom_2", SDT_INTLIST | SDT_UINT8 | lengthof(msf.custom_2) << 16, NULL, &msf.custom_2, NULL}, {"playing", SDT_BOOL, (void*)true, &msf.btn_down, NULL}, {"shuffle", SDT_BOOL, (void*)false, &msf.shuffle, NULL}, + {"extmidi", SDT_STRINGBUF | (lengthof(msf.extmidi)<<16), EXTERNAL_PLAYER, &msf.extmidi, NULL}, {NULL, 0, NULL, NULL, NULL} }; diff --git a/sound.h b/sound.h index 8b3522d654..c7d65928d2 100644 --- a/sound.h +++ b/sound.h @@ -9,6 +9,7 @@ typedef struct MusicFileSettings { byte custom_2[33]; bool btn_down; bool shuffle; + char extmidi[80]; } MusicFileSettings; VARDEF byte _music_wnd_cursong;