2010-12-28, 03:59
Hello,
It seems like XBMC 10 release handles mid & mod files using ModplugCodec overriding possibility to use timidity (worked well in previous version). The usage of ModplugCodec results to strange mid file sound.
If .mid file extension is changed to .kar xbmc uses timidity to play the file and sound is correct.
I would like to recommend reordering of the codecs to enable timidity as primary codec for supported formats and ModplugCodec only as fall-back option if timidity is not configured or soundfont is not available.
Snippet of file trunk/xbmc/cores/paplayer/CodecFactory.cpp:
else if (strFileType.Equals("669") || strFileType.Equals("abc") ||
strFileType.Equals("amf") || strFileType.Equals("ams") ||
strFileType.Equals("dbm") || strFileType.Equals("dmf") ||
strFileType.Equals("dsm") || strFileType.Equals("far") ||
strFileType.Equals("it") || strFileType.Equals("j2b") ||
strFileType.Equals("mdl") || strFileType.Equals("med") ||
strFileType.Equals("mid") || strFileType.Equals("mod") ||
strFileType.Equals("mt2") || strFileType.Equals("mtm") ||
strFileType.Equals("okt") || strFileType.Equals("pat") ||
strFileType.Equals("psm") || strFileType.Equals("ptm") ||
strFileType.Equals("s3m") || strFileType.Equals("stm") ||
strFileType.Equals("ult") || strFileType.Equals("umx") ||
strFileType.Equals("xm") || strFileType.Equals("mdgz") ||
strFileType.Equals("s3gz") || strFileType.Equals("xmgz") ||
strFileType.Equals("itgz"))
return new ModplugCodec();
else if (strFileType.Equals("nsf") || strFileType.Equals("nsfstream"))
return new NSFCodec();
#ifdef HAS_SPC_CODEC
else if (strFileType.Equals("spc"))
return new SPCCodec();
#endif
else if (strFileType.Equals("sid") || strFileType.Equals("sidstream"))
return new SIDCodec();
else if (VGMCodec::IsSupportedFormat(strFileType))
return new VGMCodec();
else if (strFileType.Equals("ym"))
return new YMCodec();
else if (strFileType.Equals("wma"))
return new DVDPlayerCodec();
else if (strFileType.Equals("aiff") || strFileType.Equals("aif"))
return new AIFFCodec();
else if (strFileType.Equals("xwav"))
return new ADPCMCodec();
else if (TimidityCodec::IsSupportedFormat(strFileType))
return new TimidityCodec();
Moving TimidityCodec higher (above Modplug) would probably solve the problem.
Regards
Andrej
It seems like XBMC 10 release handles mid & mod files using ModplugCodec overriding possibility to use timidity (worked well in previous version). The usage of ModplugCodec results to strange mid file sound.
If .mid file extension is changed to .kar xbmc uses timidity to play the file and sound is correct.
I would like to recommend reordering of the codecs to enable timidity as primary codec for supported formats and ModplugCodec only as fall-back option if timidity is not configured or soundfont is not available.
Snippet of file trunk/xbmc/cores/paplayer/CodecFactory.cpp:
else if (strFileType.Equals("669") || strFileType.Equals("abc") ||
strFileType.Equals("amf") || strFileType.Equals("ams") ||
strFileType.Equals("dbm") || strFileType.Equals("dmf") ||
strFileType.Equals("dsm") || strFileType.Equals("far") ||
strFileType.Equals("it") || strFileType.Equals("j2b") ||
strFileType.Equals("mdl") || strFileType.Equals("med") ||
strFileType.Equals("mid") || strFileType.Equals("mod") ||
strFileType.Equals("mt2") || strFileType.Equals("mtm") ||
strFileType.Equals("okt") || strFileType.Equals("pat") ||
strFileType.Equals("psm") || strFileType.Equals("ptm") ||
strFileType.Equals("s3m") || strFileType.Equals("stm") ||
strFileType.Equals("ult") || strFileType.Equals("umx") ||
strFileType.Equals("xm") || strFileType.Equals("mdgz") ||
strFileType.Equals("s3gz") || strFileType.Equals("xmgz") ||
strFileType.Equals("itgz"))
return new ModplugCodec();
else if (strFileType.Equals("nsf") || strFileType.Equals("nsfstream"))
return new NSFCodec();
#ifdef HAS_SPC_CODEC
else if (strFileType.Equals("spc"))
return new SPCCodec();
#endif
else if (strFileType.Equals("sid") || strFileType.Equals("sidstream"))
return new SIDCodec();
else if (VGMCodec::IsSupportedFormat(strFileType))
return new VGMCodec();
else if (strFileType.Equals("ym"))
return new YMCodec();
else if (strFileType.Equals("wma"))
return new DVDPlayerCodec();
else if (strFileType.Equals("aiff") || strFileType.Equals("aif"))
return new AIFFCodec();
else if (strFileType.Equals("xwav"))
return new ADPCMCodec();
else if (TimidityCodec::IsSupportedFormat(strFileType))
return new TimidityCodec();
Moving TimidityCodec higher (above Modplug) would probably solve the problem.
Regards
Andrej