static gboolean xmms_vocoder_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_vocoder_init; methods.destroy = xmms_vocoder_destroy; methods.read = xmms_vocoder_read; methods.seek = xmms_vocoder_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_config_property_register (xform_plugin, "speed", "100", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "pitch", "100", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "attack_detection", "0", NULL, NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_END); return TRUE; }
static gboolean xmms_cdda_plugin_setup (xmms_xform_plugin_t *xform_plugin) { const gchar *device; xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_cdda_init; methods.destroy = xmms_cdda_destroy; methods.read = xmms_cdda_read; methods.seek = xmms_cdda_seek; methods.browse = xmms_cdda_browse; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-url", XMMS_STREAM_TYPE_URL, "cdda://*", XMMS_STREAM_TYPE_END); device = cdio_get_default_device (NULL); if (!device) { device = ""; } xmms_xform_plugin_config_property_register (xform_plugin, "device", device, NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "accessmode", "default", NULL, NULL); return TRUE; }
static gboolean xmms_mpg123_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; int result; result = mpg123_init (); if (result != MPG123_OK) { return FALSE; } XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_mpg123_init; methods.destroy = xmms_mpg123_destroy; methods.read = xmms_mpg123_read; methods.seek = xmms_mpg123_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_config_property_register (xform_plugin, "id3v1_encoding", "ISO8859-1", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "id3v1_enable", "1", NULL, NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/mpeg", XMMS_STREAM_TYPE_PRIORITY, 40, XMMS_STREAM_TYPE_END); /* Well, I usually only see mp3 and mp2 ... layer 1 files * are quite rare. */ xmms_magic_extension_add ("audio/mpeg", "*.mp3"); xmms_magic_extension_add ("audio/mpeg", "*.mp2"); xmms_magic_extension_add ("audio/mpeg", "*.mp1"); /* That's copied from the mad xform. */ xmms_magic_add ("mpeg header", "audio/mpeg", "0 beshort&0xfff6 0xfff6", "0 beshort&0xfff6 0xfff4", "0 beshort&0xffe6 0xffe2", NULL); return TRUE; }
static gboolean xmms_normalize_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; unsigned i; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_normalize_init; methods.destroy = xmms_normalize_destroy; methods.read = xmms_normalize_read; methods.seek = xmms_xform_seek; /* we're not using this */ xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_END); for (i = 0; i < G_N_ELEMENTS (config_params); i++) { xmms_xform_plugin_config_property_register (xform_plugin, config_params[i].key, config_params[i].value, NULL, NULL); } return TRUE; }
static gboolean xmms_speex_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_speex_init; methods.destroy = xmms_speex_destroy; methods.read = xmms_speex_read; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/x-speex", NULL); xmms_magic_add ("ogg/speex header", "audio/x-speex", "0 string OggS", ">4 byte 0", ">>28 string Speex ", NULL); xmms_magic_extension_add ("audio/x-speex", "*.spx"); xmms_xform_plugin_config_property_register (xform_plugin, "perceptual_enhancer", "1", NULL, NULL); return TRUE; }
static void xmms_xform_effect_properties_update (xmms_object_t *object, xmmsv_t *data, gpointer udata) { xmms_config_property_t *cfg = (xmms_config_property_t *) object; xmms_xform_plugin_t *plugin; const gchar *name; gchar key[64]; gint effect_no = GPOINTER_TO_INT (udata); name = xmms_config_property_get_string (cfg); if (!name[0]) { return; } plugin = xmms_xform_find_plugin (name); if (!plugin) { xmms_log_error ("Couldn't find any effect named '%s'", name); } else { xmms_xform_plugin_config_property_register (plugin, "enabled", "1", NULL, NULL); xmms_object_unref (plugin); } /* setup new effect.order.n */ g_snprintf (key, sizeof (key), "effect.order.%i", effect_no + 1); if (!xmms_config_lookup (key)) { xmms_config_property_register (key, "", xmms_xform_effect_properties_update, GINT_TO_POINTER (effect_no + 1)); } }
static gboolean xmms_ringbuf_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_ringbuf_plugin_init; methods.destroy = xmms_ringbuf_plugin_destroy; methods.read = xmms_ringbuf_plugin_read; methods.seek = xmms_ringbuf_plugin_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_config_property_register (xform_plugin, "buffersize", "1048576", NULL, NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_END); ringbuf_plugin = xform_plugin; return TRUE; }
static void update_effect_properties (xmms_object_t *object, xmmsv_t *data, gpointer userdata) { gint effect_no = GPOINTER_TO_INT (userdata); const gchar *name; xmms_config_property_t *cfg; xmms_xform_plugin_t *xform_plugin; xmms_plugin_t *plugin; gchar key[64]; name = xmms_config_property_get_string ((xmms_config_property_t *) object); if (name[0]) { plugin = xmms_plugin_find (XMMS_PLUGIN_TYPE_XFORM, name); if (!plugin) { xmms_log_error ("Couldn't find any effect named '%s'", name); } else { xform_plugin = (xmms_xform_plugin_t *) plugin; xmms_xform_plugin_config_property_register (xform_plugin, "enabled", "1", NULL, NULL); xmms_object_unref (plugin); } /* setup new effect.order.n */ g_snprintf (key, sizeof (key), "effect.order.%i", effect_no + 1); cfg = xmms_config_lookup (key); if (!cfg) { xmms_config_property_register (key, "", update_effect_properties, GINT_TO_POINTER (effect_no + 1)); } } }
static gboolean xmms_mad_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_mad_init; methods.destroy = xmms_mad_destroy; methods.read = xmms_mad_read; methods.seek = xmms_mad_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); /* xmms_plugin_info_add (plugin, "URL", "http://xmms2.org/"); xmms_plugin_info_add (plugin, "Author", "XMMS Team"); xmms_plugin_info_add (plugin, "License", "GPL"); */ xmms_xform_plugin_config_property_register (xform_plugin, "id3v1_encoding", "ISO8859-1", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "id3v1_enable", "1", NULL, NULL); /* xmms_xform_indata_constraint_add */ xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/mpeg", NULL); xmms_magic_add ("mpeg header", "audio/mpeg", "0 beshort&0xfff6 0xfff6", "0 beshort&0xfff6 0xfff4", "0 beshort&0xffe6 0xffe2", NULL); xmms_magic_extension_add ("audio/mpeg", "*.mp3"); return TRUE; }
static gboolean xmms_replaygain_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; gint i; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_replaygain_init; methods.destroy = xmms_replaygain_destroy; methods.read = xmms_replaygain_read; methods.seek = xmms_replaygain_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); for (i = 0; i < G_N_ELEMENTS (formats); i++) { xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, formats[i], XMMS_STREAM_TYPE_END); } xmms_xform_plugin_config_property_register (xform_plugin, "mode", "track", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "use_anticlip", "1", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "preamp", "6.0", NULL, NULL); return TRUE; }
static void effect_callbacks_init (void) { gint effect_no; xmms_config_property_t *cfg; xmms_xform_plugin_t *xform_plugin; xmms_plugin_t *plugin; gchar key[64]; const gchar *name; for (effect_no = 0; ; effect_no++) { g_snprintf (key, sizeof (key), "effect.order.%i", effect_no); cfg = xmms_config_lookup (key); if (!cfg) { break; } xmms_config_property_callback_set (cfg, update_effect_properties, GINT_TO_POINTER (effect_no)); name = xmms_config_property_get_string (cfg); if (!name[0]) { continue; } plugin = xmms_plugin_find (XMMS_PLUGIN_TYPE_XFORM, name); if (!plugin) { xmms_log_error ("Couldn't find any effect named '%s'", name); continue; } xform_plugin = (xmms_xform_plugin_t *) plugin; xmms_xform_plugin_config_property_register (xform_plugin, "enabled", "1", NULL, NULL); xmms_object_unref (plugin); } /* the name stored in the last present property was not "" or there was no last present property */ if ((!effect_no) || name[0]) { xmms_config_property_register (key, "", update_effect_properties, GINT_TO_POINTER (effect_no)); } }
static gboolean xmms_sid_plugin_setup (xmms_xform_plugin_t *xform_plugin) { /* xmms_plugin_info_add (plugin, "URL", "http://xmms2.org/"); xmms_plugin_info_add (plugin, "URL", "http://sidplay2.sourceforge.net/"); xmms_plugin_info_add (plugin, "URL", "http://www.geocities.com/SiliconValley/Lakes/5147/resid/"); xmms_plugin_info_add (plugin, "Author", "XMMS Team"); */ xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_sid_init; methods.destroy = xmms_sid_destroy; methods.read = xmms_sid_read; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/prs.sid", NULL); /* Can only fastforward SIDs, not rewind */ /* xmms_plugin_properties_add (plugin, XMMS_PLUGIN_PROPERTY_FAST_FWD); xmms_plugin_properties_add (plugin, XMMS_PLUGIN_PROPERTY_SUBTUNES); */ xmms_magic_add ("sidplay infofile", "audio/prs.sid", "0 string SIDPLAY INFOFILE", NULL); xmms_magic_add ("psid header", "audio/prs.sid", "0 string PSID", NULL); xmms_magic_add ("rsid header", "audio/prs.sid", "0 string RSID", NULL); xmms_xform_plugin_config_property_register (xform_plugin, "songlength_path", "", NULL, NULL); return TRUE; }
static gboolean xmms_magic_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_magic_plugin_init; methods.read = xmms_xform_read; methods.seek = xmms_xform_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/octet-stream", XMMS_STREAM_TYPE_END); xmms_xform_plugin_config_property_register (xform_plugin, "dumpcount", "16", NULL, NULL); return TRUE; }
static xmms_xform_t * xmms_xform_new_effect (xmms_xform_t *last, xmms_medialib_entry_t entry, GList *goal_formats, const gchar *name) { xmms_plugin_t *plugin; xmms_xform_plugin_t *xform_plugin; xmms_xform_t *xform; gint priority; plugin = xmms_plugin_find (XMMS_PLUGIN_TYPE_XFORM, name); if (!plugin) { xmms_log_error ("Couldn't find any effect named '%s'", name); return last; } xform_plugin = (xmms_xform_plugin_t *) plugin; if (!xmms_xform_plugin_supports (xform_plugin, last->out_type, &priority)) { xmms_log_info ("Effect '%s' doesn't support format, skipping", xmms_plugin_shortname_get (plugin)); xmms_object_unref (plugin); return last; } xform = xmms_xform_new (xform_plugin, last, entry, goal_formats); if (xform) { xmms_object_unref (last); last = xform; } else { xmms_log_info ("Effect '%s' failed to initialize, skipping", xmms_plugin_shortname_get (plugin)); } xmms_xform_plugin_config_property_register (xform_plugin, "enabled", "0", NULL, NULL); xmms_object_unref (plugin); return last; }
void xmms_xform_plugin_indata_add (xmms_xform_plugin_t *plugin, ...) { xmms_stream_type_t *t; va_list ap; gchar *config_key, config_value[32]; gint priority; va_start (ap, plugin); t = xmms_stream_type_parse (ap); va_end (ap); config_key = g_strconcat ("priority.", xmms_stream_type_get_str (t, XMMS_STREAM_TYPE_NAME), NULL); priority = xmms_stream_type_get_int (t, XMMS_STREAM_TYPE_PRIORITY); g_snprintf (config_value, sizeof (config_value), "%d", priority); xmms_xform_plugin_config_property_register (plugin, config_key, config_value, NULL, NULL); g_free (config_key); plugin->in_types = g_list_prepend (plugin->in_types, t); }
static gboolean xmms_eq_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; gchar buf[16]; gint i; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_eq_init; methods.destroy = xmms_eq_destroy; methods.read = xmms_eq_read; methods.seek = xmms_eq_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_config_property_register (xform_plugin, "bands", "15", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "extra_filtering", "0", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "use_legacy", "1", NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "preamp", "0.0", NULL, NULL); for (i=0; i<EQ_BANDS_LEGACY; i++) { g_snprintf (buf, sizeof (buf), "legacy%d", i); xmms_xform_plugin_config_property_register (xform_plugin, buf, "0.0", NULL, NULL); } for (i=0; i<EQ_MAX_BANDS; i++) { g_snprintf (buf, sizeof (buf), "gain%02d", i); xmms_xform_plugin_config_property_register (xform_plugin, buf, "0.0", NULL, NULL); } xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_FMT_SAMPLERATE, 48000, XMMS_STREAM_TYPE_END); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_FMT_SAMPLERATE, 44100, XMMS_STREAM_TYPE_END); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_FMT_SAMPLERATE, 22050, XMMS_STREAM_TYPE_END); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/pcm", XMMS_STREAM_TYPE_FMT_FORMAT, XMMS_SAMPLE_FORMAT_S16, XMMS_STREAM_TYPE_FMT_SAMPLERATE, 11025, XMMS_STREAM_TYPE_END); return TRUE; }
static gboolean xmms_gme_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_gme_init; methods.destroy = xmms_gme_destroy; methods.read = xmms_gme_read; methods.seek = xmms_gme_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); xmms_xform_plugin_config_property_register (xform_plugin, "loops", G_STRINGIFY (GME_DEFAULT_SONG_LOOPS), NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "maxlength", G_STRINGIFY (GME_DEFAULT_SONG_LENGTH), NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "samplerate", G_STRINGIFY (GME_DEFAULT_SAMPLE_RATE), NULL, NULL); xmms_xform_plugin_config_property_register (xform_plugin, "stereodepth", G_STRINGIFY (GME_DEFAULT_STEREO_DEPTH), NULL, NULL); /* todo: add other mime types */ xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-spc", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-nsf", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-nsfe", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-gbs", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-gym", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-vgm", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-sap", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "application/x-ay", NULL); /* todo: add other magic */ xmms_magic_add ("SPC700 save state", "application/x-spc", "0 string SNES-SPC700 Sound File Data", NULL); xmms_magic_add ("NSF file", "application/x-nsf", "0 string NESM", NULL); xmms_magic_add ("NSFE file", "application/x-nsfe", "0 string NSFE", NULL); xmms_magic_add ("GBS file", "application/x-gbs", "0 string GBS", NULL); xmms_magic_add ("GYM file", "application/x-gym", "0 string GYMX", NULL); xmms_magic_add ("VGM file", "application/x-vgm", "0 string Vgm", NULL); xmms_magic_add ("SAP file", "application/x-sap", "0 string SAP", NULL); xmms_magic_add ("AY file", "application/x-ay", "0 string ZXAYEMU", NULL); /* todo: add other file extensions */ xmms_magic_extension_add ("application/x-spc", "*.spc"); xmms_magic_extension_add ("application/x-nsf", "*.nsf"); xmms_magic_extension_add ("application/x-nsfe", "*.nsfe"); xmms_magic_extension_add ("application/x-gbs", "*.gbs"); xmms_magic_extension_add ("application/x-gym", "*.gym"); xmms_magic_extension_add ("application/x-vgm", "*.vgm"); xmms_magic_extension_add ("application/x-sap", "*.sap"); xmms_magic_extension_add ("application/x-ay", "*.ay"); return TRUE; }
static gboolean xmms_modplug_plugin_setup (xmms_xform_plugin_t *xform_plugin) { xmms_xform_methods_t methods; int i; XMMS_XFORM_METHODS_INIT (methods); methods.init = xmms_modplug_init; methods.destroy = xmms_modplug_destroy; methods.read = xmms_modplug_read; methods.seek = xmms_modplug_seek; xmms_xform_plugin_methods_set (xform_plugin, &methods); /* xmms_plugin_info_add (plugin, "URL", "http://xmms2.org/"); xmms_plugin_info_add (plugin, "Author", "XMMS Team"); xmms_plugin_info_add (plugin, "License", "GPL"); */ xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/mod", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/xm", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/s3m", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/it", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/med", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/amf", NULL); xmms_xform_plugin_indata_add (xform_plugin, XMMS_STREAM_TYPE_MIMETYPE, "audio/umx", NULL); xmms_magic_add ("Fasttracker II module", "audio/xm", "0 string Extended Module:", NULL); xmms_magic_add ("ScreamTracker III module", "audio/s3m", "44 string SCRM", NULL); xmms_magic_add ("Impulse Tracker module", "audio/it", "0 string IMPM", NULL); xmms_magic_add ("MED module", "audio/med", "0 string MMD", NULL); xmms_magic_add ("AMF module", "audio/amf", "0 string AMF", NULL); /* http://www.unrealwiki.com/wiki/Package_File_Format */ xmms_magic_add ("Unreal Engine package", "audio/umx", "0 belong 0xc1832a9e", NULL); /* these are for all (not all but should be most) various types of .mod files */ xmms_magic_add ("4-channel Protracker module", "audio/mod", "1080 string M.K.", NULL); xmms_magic_add ("4-channel Protracker module", "audio/mod", "1080 string M!K!", NULL); xmms_magic_add ("4-channel Startracker module", "audio/mod", "1080 string FLT4", NULL); xmms_magic_add ("8-channel Startracker module", "audio/mod", "1080 string FLT8", NULL); xmms_magic_add ("4-channel Fasttracker module", "audio/mod", "1080 string 4CHN", NULL); xmms_magic_add ("6-channel Fasttracker module", "audio/mod", "1080 string 6CHN", NULL); xmms_magic_add ("8-channel Fasttracker module", "audio/mod", "1080 string 8CHN", NULL); xmms_magic_add ("8-channel Octalyzer module", "audio/mod", "1080 string CD81", NULL); xmms_magic_add ("8-channel Octalyzer module", "audio/mod", "1080 string OKTA", NULL); xmms_magic_add ("16-channel Taketracker module", "audio/mod", "1080 string 16CN", NULL); xmms_magic_add ("32-channel Taketracker module", "audio/mod", "1080 string 32CN", NULL); for (i = 0; i < G_N_ELEMENTS (config_params); i++) { xmms_xform_plugin_config_property_register (xform_plugin, config_params[i].key, config_params[i].value, NULL, NULL); } return TRUE; }