aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--src/decoder/sidplay_decoder_plugin.cxx12
2 files changed, 11 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 1a1952175..df84bfd22 100644
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,7 @@ ver 0.16 (20??/??/??)
- sidplay: support sub-tunes
- sidplay: implemented songlength database
- sidplay: support seeking
+ - sidplay: play monaural SID tunes in mono
- wavpack: activate 32 bit support
- wavpack: allow more than 2 channels
- mp4ff: rename plugin "mp4" to "mp4ff"
diff --git a/src/decoder/sidplay_decoder_plugin.cxx b/src/decoder/sidplay_decoder_plugin.cxx
index a2eb21ae4..dad0759e0 100644
--- a/src/decoder/sidplay_decoder_plugin.cxx
+++ b/src/decoder/sidplay_decoder_plugin.cxx
@@ -201,6 +201,7 @@ static void
sidplay_file_decode(struct decoder *decoder, const char *path_fs)
{
int ret;
+ int channels;
/* load the tune */
@@ -256,7 +257,7 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
config.clockSpeed = SID2_CLOCK_CORRECT;
config.frequency = 48000;
config.optimisation = SID2_DEFAULT_OPTIMISATION;
- config.playback = sid2_stereo;
+
config.precision = 16;
config.sidDefault = SID2_MOS6581;
config.sidEmulation = &builder;
@@ -267,6 +268,13 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
#else
config.sampleFormat = SID2_BIG_SIGNED;
#endif
+ if (tune.isStereo()) {
+ config.playback = sid2_stereo;
+ channels = 2;
+ } else {
+ config.playback = sid2_mono;
+ channels = 1;
+ }
iret = player.config(config);
if (iret != 0) {
@@ -277,7 +285,7 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
/* initialize the MPD decoder */
struct audio_format audio_format;
- audio_format_init(&audio_format, 48000, SAMPLE_FORMAT_S16, 2);
+ audio_format_init(&audio_format, 48000, SAMPLE_FORMAT_S16, channels);
assert(audio_format_valid(&audio_format));
decoder_initialized(decoder, &audio_format, true, (float)song_len);