diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-25 15:09:37 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-25 15:09:37 +0300 |
commit | 7c10f43564621e66b79625539c3490a443e794b7 (patch) | |
tree | dcacdbe392f94a0de80a626b792a43303f93fad9 /utils/vlc_codec | |
parent | ef601741e585f7b48c2fe81304bcba4d161ed375 (diff) | |
download | libADLMIDI-7c10f43564621e66b79625539c3490a443e794b7.tar.gz libADLMIDI-7c10f43564621e66b79625539c3490a443e794b7.tar.bz2 libADLMIDI-7c10f43564621e66b79625539c3490a443e794b7.zip |
VLC Plugin: more controls!
#38
Diffstat (limited to 'utils/vlc_codec')
-rw-r--r-- | utils/vlc_codec/libadlmidi.c | 120 |
1 files changed, 92 insertions, 28 deletions
diff --git a/utils/vlc_codec/libadlmidi.c b/utils/vlc_codec/libadlmidi.c index 64909f3..5eae415 100644 --- a/utils/vlc_codec/libadlmidi.c +++ b/utils/vlc_codec/libadlmidi.c @@ -36,9 +36,9 @@ #include <adlmidi.h> -#define SOUNDFONT_TEXT N_("Custom bank file") -#define SOUNDFONT_LONGTEXT N_( \ - "Custom bank file to use for software synthesis." ) +#define FMBANK_TEXT N_("Custom bank file") +#define FMBANK_LONGTEXT N_( \ + "Custom bank file (in WOPL format) to use for software synthesis." ) #if 0 /* Old code */ #define CHORUS_TEXT N_("Chorus") @@ -58,12 +58,54 @@ #define SAMPLE_RATE_TEXT N_("Sample rate") #define EMULATED_CHIPS_TEXT N_("Count of emulated chips") +#define EMULATED_CHIPS_LONGTEXT N_( \ + "How many emulated chips will be processed to expand channels limit of a single chip." ) -#define EMBEDDED_BANK_ID_TEXT N_("Embedded bank ID") +#define EMBEDDED_BANK_ID_TEXT N_("Embedded bank") +#define EMBEDDED_BANK_ID_LONGTEXT N_( \ + "Use one of embedded banks.") + +#define VOLUME_MODEL_TEXT N_("Volume scaling model") +#define VOLUME_MODEL_LONGTEXT N_( \ + "Declares volume scaling model which will affect volume levels.") + +#define FULL_RANGE_CC74_TEXT N_("Full-range of brightness") +#define FULL_RANGE_CC74_LONGTEXT N_( \ + "Scale range of CC-74 \"Brightness\" with full 0~127 range. By default is only 0~64 affects the sounding.") + +static const int volume_models_values[] = { 0, 1, 2, 3, 4, 5 }; +static const char * const volume_models_descriptions[] = +{ + N_("Auto (defined by bank)"), + N_("Generic"), + N_("OPL3 Native"), + N_("DMX"), + N_("Apogee Sound Syste"), + N_("Win9x driver"), + NULL +}; + +#define EMULATOR_TYPE_TEXT N_("OPL3 Emulation core") +#define EMULATOR_TYPE_LINGTEXT N_( \ + "OPL3 Emulator that will be used to generate final sound.") + +static const int emulator_type_values[] = { 0, 1, 2 }; +static const char * const emulator_type_descriptions[] = +{ + N_("Nuked OPL3 1.8"), + N_("Nuked OPL3 1.7.4 (Optimized)"), + N_("DosBox"), + NULL +}; + +static int embedded_bank_count = 0, embedded_bank_i = 0; +static int embedded_bank_values[100]; static int Open (vlc_object_t *); static void Close (vlc_object_t *); +#define CONFIG_PREFIX "adlmidi-" + vlc_module_begin () set_description (N_("ADLMIDI OPL3 Synth MIDI synthesizer")) #if (LIBVLC_VERSION_MAJOR >= 3) @@ -75,22 +117,35 @@ vlc_module_begin () set_category (CAT_INPUT) set_subcategory (SUBCAT_INPUT_ACODEC) set_callbacks (Open, Close) - add_loadfile ("adlmidi-custombank", "", - SOUNDFONT_TEXT, SOUNDFONT_LONGTEXT, false) - /* - add_bool ("synth-chorus", true, CHORUS_TEXT, CHORUS_TEXT, false) - add_float ("synth-gain", .5, GAIN_TEXT, GAIN_LONGTEXT, false) - change_float_range (0., 10.) - add_integer ("synth-polyphony", 256, POLYPHONY_TEXT, POLYPHONY_LONGTEXT, false) - change_integer_range (1, 65535) - add_bool ("synth-reverb", true, REVERB_TEXT, REVERB_TEXT, true) - */ - add_integer ("adlmidi-sample-rate", 44100, SAMPLE_RATE_TEXT, SAMPLE_RATE_TEXT, true) - change_integer_range (22050, 96000) - add_integer ("adlmidi-emulated-chips", 6, EMULATED_CHIPS_TEXT, EMULATED_CHIPS_TEXT, true) + + embedded_bank_count = adl_getBanksCount(); + for (embedded_bank_i = 0; embedded_bank_i < embedded_bank_count; embedded_bank_i++) + embedded_bank_values[embedded_bank_i] = embedded_bank_i; + add_integer (CONFIG_PREFIX "internal-bank-id", 58, EMBEDDED_BANK_ID_TEXT, EMBEDDED_BANK_ID_LONGTEXT, true) + /* change_integer_list( embedded_bank_values, embedded_bank_descriptions ) */ + vlc_config_set (VLC_CONFIG_LIST, + (size_t)(adl_getBanksCount()), + (const int *)(embedded_bank_values), + (const char *const *)(adl_getBankNames())); + + add_loadfile (CONFIG_PREFIX "custombank", "", + FMBANK_TEXT, FMBANK_LONGTEXT, false) + + add_integer (CONFIG_PREFIX "volume-model", 0, VOLUME_MODEL_TEXT, VOLUME_MODEL_LONGTEXT, false ) + change_integer_list( volume_models_values, volume_models_descriptions ) + + add_integer (CONFIG_PREFIX "emulator-type", 0, EMULATOR_TYPE_TEXT, EMULATOR_TYPE_LINGTEXT, true) + change_integer_list( emulator_type_values, emulator_type_descriptions ) + + add_integer (CONFIG_PREFIX "emulated-chips", 6, EMULATED_CHIPS_TEXT, EMULATED_CHIPS_LONGTEXT, true) change_integer_range (1, 100) - add_integer ("adlmidi-internal-bank-id", 58, EMBEDDED_BANK_ID_TEXT, EMBEDDED_BANK_ID_TEXT, true) - change_integer_range (0, 73) + + add_integer (CONFIG_PREFIX "sample-rate", 44100, SAMPLE_RATE_TEXT, SAMPLE_RATE_TEXT, true) + change_integer_range (22050, 96000) + + add_bool( CONFIG_PREFIX "full-range-brightness", false, FULL_RANGE_CC74_TEXT, + FULL_RANGE_CC74_LONGTEXT, false ) + vlc_module_end () @@ -127,22 +182,31 @@ static int Open (vlc_object_t *p_this) if (unlikely(p_sys == NULL)) return VLC_ENOMEM; - p_sys->sample_rate = var_InheritInteger (p_this, "adlmidi-sample-rate"); + p_sys->sample_rate = var_InheritInteger (p_this, CONFIG_PREFIX "sample-rate"); p_sys->synth = adl_init( p_sys->sample_rate ); - adl_setNumChips(p_sys->synth, var_InheritInteger(p_this, "adlmidi-emulated-chips")); + adl_switchEmulator(p_sys->synth, var_InheritInteger(p_this, CONFIG_PREFIX "emulator-type")); + + adl_setNumChips(p_sys->synth, var_InheritInteger(p_this, CONFIG_PREFIX "emulated-chips")); + + adl_setVolumeRangeModel(p_sys->synth, var_InheritInteger(p_this, CONFIG_PREFIX "volume-model")); - char *font_path = var_InheritString (p_this, "adlmidi-custombank"); - if (font_path != NULL) + adl_setFullRangeBrightness(p_sys->synth, var_InheritBool(p_this, CONFIG_PREFIX "full-range-brightness")); + + char *bank_path = var_InheritString (p_this, CONFIG_PREFIX "custombank"); + if (bank_path != NULL) { - msg_Dbg (p_this, "loading custom bank file %s", font_path); - if (adl_openBankFile(p_sys->synth, font_path)) - msg_Err (p_this, "cannot load custom bank file %s: %s", font_path, adl_errorInfo(p_sys->synth)); - free (font_path); + msg_Dbg (p_this, "loading custom bank file %s", bank_path); + if (adl_openBankFile(p_sys->synth, bank_path)) + { + msg_Warn (p_this, "cannot load custom bank file %s: %s", bank_path, adl_errorInfo(p_sys->synth)); + adl_setBank(p_sys->synth, var_InheritInteger(p_this, CONFIG_PREFIX "internal-bank-id")); + } + free (bank_path); } else { - adl_setBank(p_sys->synth, var_InheritInteger(p_this, "adlmidi-internal-bank-id")); + adl_setBank(p_sys->synth, var_InheritInteger(p_this, CONFIG_PREFIX "internal-bank-id")); } p_dec->fmt_out.i_cat = AUDIO_ES; |