Suggestions for 3.9

Started by AstralSoup Design,

guest

Suggestion: adjustable gap of silence inserted between tracks in playlist.

MachineGhost

I noticed an interesting issue today.  I have an Internet radio station at the end of a playlist of ReplayGained WAVs (ripped CD's).  Normally, I keep the "Reset on new track" turned off and XMPlay's Amplification to a fixed -8.6dB to prevent clipping on the radio station, which is not ideal for listening the WAVs.

However, sometimes I forget to refix the Amplification back to -8.6dB after listening to the WAVs when back on the radio station.  As you would expect, forgetting to do this results in the volume being louder via the external amplifier (EA) with the volume control in the sweet spot for the ReplayGained WAV's.  This morning, I noticed that the radio seemed fuller despite just being louder, so I experimented with turning the EA volume control down and the Amplification up to 0dB vs the Amplification at -8.6dB with the EA in its usual position.  The sound is definitely fuller and richer with Amplification at 0dB.

Thinking about this for awhile, I realized the core problem is Amplification/ReplayGain must be devolving the bit depth as Windows software volume controls do (which should always be set at 100%).  It is not actually adjusting the hardware level of the speaker output.  This is far from ideal from a high fidelity perspective and it annoys me I have missing fidelity for purposes of ReplayGain.  So I think the solution to this problem is to add an option to the DSP menu similar to what's in WASAPI where you can "Control device volume" and have Amplification/ReplayGain operate on the device volume directly and preserve the bit depth.

Comments?

piovrauz

"The sound is definitely fuller and richer with Amplification at 0dB" --> That's what one would expect since there's no attenuation; -8.6dB is more than enough to make quiet sound unaudible.
It's also worth considering that louder sound feels "better", which is why some think cranking up the amp volume leads to better sound. The loudness war ruined so many things.

saga

Congratulations, you have experienced the loudness war. Louder sounds better.
A simple attenuation like that of XMPlay's replaygain implementation or the Windows mixer is nothing more than that - it's attenuation. -8.6dB loses you about one to two bits of information, but even that's not very much. In particular, if you set XMPlay's output to something higher than 16 bit, you don't actually lose any practical information.

piovrauz

Considering earing gets worse with age, I'd say most ppl won't even notice a lossy compression past 30 anyway.
But it seems some think they can even ear ultrasounds (well, they do sell those thousands priced headphones...)

Ian @ un4seen

Quote from: piovrauzI noticed the pre-amp gets reset after a disconnection: would it be possible to have it remember the last value?

Yep, here's an update that should preserve the amp/dsp settings when reconnecting...

   www.un4seen.com/stuff/xmplay.exe

Quote from: bryccoSuggestion: Re-order plugin priorities in options list
----------------------------------------------------------
Back when I had an unholy amount of winamp plugins, I would name them differently to change the order they appear in the plugin list, and xmplay would always use the one above it first

With that little trick, I could use two separate versions of the in_v2m.dll plugin, and if the first, newer plugin failed, it would normally get caught by the second older plugin.

Now I don't have any winamp plugins - and the trick doesn't work for xmp plugins, but it seems to load xmp-libxmp before xmp-openmpt, which I think is a better plugin for similar formats.

Instead of having to set filetype priorities on openmpt - why not allow the option to re-order the list, so that xmp-openmpt is loaded before xmp-libxmp.

Also, yes I know that libxmp has an option to disable specific formats, but that is just a coincidence, and sometimes a plugin wont have that. The ability to make all of openmpt (or any other plugin) a higher priority than libxmp has a lot of value and give finer control over what plugins are used and when.

How many formats are there that you would like the openmpt plugin to handle instead of the libxmp plugin? Although perhaps not as convenient as reordering the plugins, you can enter the file formats that you would prefer the openmpt plugin to handle in its "Priority filetypes" box. That also has the advantage of overriding XMPlay's built-in decoders (which aren't included in the plugins list), eg. if you enter "xm" then the openmpt plugin (rather than XMPlay's own XM processing) will be used to play XM files.

Quote from: NiZero1. «Toggle separate/unseparate song» option instead two menu options.

With the update above, if you add a "SeparateToggle=1" line to your XMPLAY.INI file, the "Separate subsongs" option will work as a toggle.

Quote from: NiZero2. 10 or more band equalizer (actually, I need 20 Hz most of all).

There isn't much scope to expand the built-in EQ because it is part of the skins, but a larger and/or more flexible EQ option (eg. parametric EQ) could be implemented as a DSP plugin. There may be existing Winamp DSP plugins for that that can be used with XMPlay. A native plugin would be best for sound quality though, as the sample data can stay floating-point then. If anyone's interested in doing that, the plugin SDK is available on the XMPlay webpage.

Quote from: guestSuggestion: adjustable gap of silence inserted between tracks in playlist.

Would the gap involve outputting silent sample data or not outputting anything? And would it also apply between subsongs?

Quote from: sagaA simple attenuation like that of XMPlay's replaygain implementation or the Windows mixer is nothing more than that - it's attenuation. -8.6dB loses you about one to two bits of information, but even that's not very much. In particular, if you set XMPlay's output to something higher than 16 bit, you don't actually lose any practical information.

As well as that, the soundcard's output should also be set above 16-bit (eg. 24-bit) via the Sound control panel to take advantage of the higher than 16-bit setting in XMPlay.

guest

Quote
QuoteSuggestion: adjustable gap of silence inserted between tracks in playlist.

Would the gap involve outputting silent sample data or not outputting anything? And would it also apply between subsongs?

This can be done as pause between tracks or as silent track (hidden in playlist or not) between tracks.
Optionally, also between subsongs.

MachineGhost

Hmm, I'm familiar with the Loudness Wars, but I don't see how that is applicable to the issue I raised.  Brickwalling/overcompressing would not extend the dynamic range merely by increasing the volume as I noticed and commented upon (specifically, there was more bass coming in with 0dB Amp than -8.6dB Amp, despite the equivalent volume level coming out of the external amplifier).  I do have the device output set to native 24bit, 48kHz so if any bits are loss by decreasing software volume, why is the fidelity loss noticeable?

In other words, I would get a better experience turning down the external amplifier by the equivalent of -8.6dB using 0dB Amp/100% device output than relying on -8.6dB Amp/100% device output.  The reason this is a problem is because I don't want to be always changing either the external amplifier volume or the device output volume by hand to do what ReplayGain does (which varies tremendously!) and without relying on software volume/bit degradation.  Just make the Amp bypass software volume and work directly on the device output.  Is this really that much of a difficult request?  ???

Dotpitch

Quote from: MachineGhost... (specifically, there was more bass coming in with 0dB Amp than -8.6dB Amp, despite the equivalent volume level coming out of the external amplifier).
Now that you state "more bass", I'm interested. You don't need golden ears to hear the bass level increase, so it can certainly be a real effect. However, I don't expect losing 1 or 2 bits is going to radically change the output/perception of bass. Could you verify this with XMPlay's WAV Writer? Write two files with the different amp settings and look at their spectra using an audio editor.

Btw, what output are you using? Default, or DS/ASIO/WASAPI?

saga

Quote from: MachineGhostHmm, I'm familiar with the Loudness Wars, but I don't see how that is applicable to the issue I raised.  Brickwalling/overcompressing would not extend the dynamic range merely by increasing the volume as I noticed and commented upon (specifically, there was more bass coming in with 0dB Amp than -8.6dB Amp, despite the equivalent volume level coming out of the external amplifier).
You are correct that this has nothing directly to do with brickwalling. However, the theory behind it is the same: Most people perceive loud music as better. This is the reason why the music industry compresses their music to death, and it's the same reason why playing the same song a bit louder will often sound "better", even if it's exactly the same quality from a theoretical point of view.

piovrauz

There's also the matter of what chip his soundacard is using: is it a builtin (realteck :P) card? A separate one? Is it internal? Usb?
Just saying.

piovrauz

Btw, I checked and the preamp setting is kept after a disconnect, just  perfect.
Thanks a lot.

garson

Quote from: Ian @ un4seenWith the update above, if you add a "SeparateToggle=1" line to your XMPLAY.INI file, the "Separate subsongs" option will work as a toggle.
I've downloaded latest 3.8.1.10 and added SeparateToggle=1 in XMPLAY.INI file but I'm still having Separate/Unseparate subsongs options.  ???

piovrauz

Quote from: garson
Quote from: Ian @ un4seenWith the update above, if you add a "SeparateToggle=1" line to your XMPLAY.INI file, the "Separate subsongs" option will work as a toggle.
I've downloaded latest 3.8.1.10 and added SeparateToggle=1 in XMPLAY.INI file but I'm still having Separate/Unseparate subsongs options.  ???

I can confirm it.

MachineGhost

Quote from: Dotpitch
Quote from: MachineGhost... (specifically, there was more bass coming in with 0dB Amp than -8.6dB Amp, despite the equivalent volume level coming out of the external amplifier).
Now that you state "more bass", I'm interested. You don't need golden ears to hear the bass level increase, so it can certainly be a real effect. However, I don't expect losing 1 or 2 bits is going to radically change the output/perception of bass. Could you verify this with XMPlay's WAV Writer? Write two files with the different amp settings and look at their spectra using an audio editor.

Btw, what output are you using? Default, or DS/ASIO/WASAPI?

I don't visually see any difference other than amplitude.  I'm forced to use default so I can use the soundcard's equalizer (XMplay has funky, non-standard frequency bands).



I have two working theories right now.  One, the "bit depth" of AAC streaming media is so poor, it can't handle a -8.6dB amp.  Or two, since a -8.6dB amp looks to be around a 50% reduction in amplitude, there's not enough power available for the external amplifier to amp the signal back to 0dB. 

I'm thinking another solution for this issue is to have an option to reset the amp on a new song when looping on streaming media.  -8.6dB for whatever song it was to avoid clipping is on just really bad normalization for the station.

BTW, can someone remind me of how this audio clipping works?  Is it context dependent on the capabilities of your hardware output device's dynamic range?  I'm not actually sure how a song can be sent out so overamplified that it needs a 50% reduction to prevent clipping.

MachineGhost

...amplify it back to 0dB without distortion, that is.  Although its only from 3 to a 5 on the volume control for 0dB vs -8.6dB.

Ian @ un4seen

Quote from: garsonI've downloaded latest 3.8.1.10 and added SeparateToggle=1 in XMPLAY.INI file but I'm still having Separate/Unseparate subsongs options.  ???

The "Separate subsongs" and "Unseparate subsongs" options will indeed both still be present when "SeparateToggle" is enabled, but the "Separate subsongs" option will toggle the separation, ie. it'll unseparate if the subsongs are currently separated. This is basically the same as what happens to the queueing options when the "Toggle queueing" option is enabled (in the Playlist options page); the "Dequeue" option is still present and the "Queue" option will dequeue if the tracks are currently queued.

Dotpitch

Quote from: MachineGhost
Quote from: DotpitchWrite two files with the different amp settings and look at their spectra using an audio editor.
I don't visually see any difference other than amplitude.
Ok, that means that XMPlay's software output does not include more bass. XMPlay's output the the soundcard is exactly the same, so hypothesis #1 is probably not right.
Quote from: MachineGhostOne, the "bit depth" of AAC streaming media is so poor, it can't handle a -8.6dB amp.
Or two, since a -8.6dB amp looks to be around a 50% reduction in amplitude, there's not enough power available for the external amplifier to amp the signal back to 0dB.
To test your second hypothesis, you could connect the line out of your amplifier to the line in of your soundcard, record the signal and compare the spectra of the two cases again. It doesn't sound too unlikely.

Quote from: MachineGhostI'm thinking another solution for this issue is to have an option to reset the amp on a new song when looping on streaming media.  -8.6dB for whatever song it was to avoid clipping is on just really bad normalization for the station.
You can use XMPlay's Saved Settings to load per-file (or per-type) amplification settings.

garson

Quote from: Ian @ un4seen
Quote from: garsonI've downloaded latest 3.8.1.10 and added SeparateToggle=1 in XMPLAY.INI file but I'm still having Separate/Unseparate subsongs options.  ???

The "Separate subsongs" and "Unseparate subsongs" options will indeed both still be present when "SeparateToggle" is enabled, but the "Separate subsongs" option will toggle the separation, ie. it'll unseparate if the subsongs are currently separated. This is basically the same as what happens to the queueing options when the "Toggle queueing" option is enabled (in the Playlist options page); the "Dequeue" option is still present and the "Queue" option will dequeue if the tracks are currently queued.
Hi Ian.
The point is that SeparateToggle=1 in 3.8.1.10 didn't change anything. Behavior is as it was in previous versions.

Here are scrennshots:
XMPlay 3.8.1.2 - unseparated
I can click on "Separate subsongs" and it will separate.



XMPlay 3.8.1.2 - separated
I can click on "Unseparate subsongs" and it will unseparate.




XMPlay 3.8.1.10 - unseparated
I can click on "Separate subsongs" and it will separate.



XMPlay 3.8.1.10 - separated
I can click on "Unseparate subsongs" and it will unseparate.



This is completely the same as far as I can see.

MachineGhost

Quote from: DotpitchTo test your second hypothesis, you could connect the line out of your amplifier to the line in of your soundcard, record the signal and compare the spectra of the two cases again. It doesn't sound too unlikely.

Tempting, but I think I found the "set it and forget it" answer to the Amp/ReplayGain issues...  Breakaway Audio Enhancer:

Quote from: http://www.claessonedwards.com/index.php?option=com_content&view=article&id=46&Itemid=1089* Automatically adjusts volume dynamics and spectral balancing.

 * Corrects song-to-song volume shifts and overdriven speakers.

The only downside is it bypasses the soundcard's equalizer.  Someone ought to work on an ISO standard 1/3rd octave equalizer plugin for XMplay.

saga

There are plenty of equalizer VST plugins available, which you could load into the Winamp VST bridge.

piovrauz

I think I should explain what garson meant in a simpler way.

This is what the menu should look like when you have a file +cuesheet loaded for the first time in XMPlay:

http://www.imagebam.com/image/c200fc397425059
You then click on "Separate subsong" on that menu.

This is what the menu should look like when you have call that menu again:

http://www.imagebam.com/image/ce5016397425063
If you click  on "Separate subsong" on that menu it will became as the first image.

Basically, it would behave like the menu Play entry.

garson

Quote from: piovrauzI think I should explain what garson meant in a simpler way.

This is what the menu should look like when you have a file +cuesheet loaded for the first time in XMPlay:

http://www.imagebam.com/image/c200fc397425059
You then click on "Separate subsong" on that menu.

This is what the menu should look like when you have call that menu again:

http://www.imagebam.com/image/ce5016397425063
If you click  on "Separate subsong" on that menu it will became as the first image.

Basically, it would behave like the menu Play entry.
That is corrent.
Or maybe even better, one entry. In case file is not separated, entry would be Separete subsongs. After you separate subsongs, that entry becomes Unseparate subsongs.

Ian @ un4seen

Oh, I see you're referring to the right-click menu. I was thinking mainly of the keyboard/mouse shortcuts, which is where I see the toggle option bringing most convenience. When using the menu, it doesn't really seem any less convenient to move the mouse to an option that's right next to the other option :)

piovrauz

Smaller menu, faster search for the option, faster choice, less moude moving, ...