Author Topic: Suggestions for 3.8  (Read 76552 times)

Wes

  • Guest
Re: Suggestions for 3.8
« Reply #200 on: 11 Dec '13 - 01:51 »
One thing I would like to request in 3.8 is support for loop points in non-MOD music. I know a feature of module files is that they have built-in loop support, but there are other file formats that support it too (either officially or through extensions). As an example, I know of some OGG Vorbis files that encode loop information using LOOPSTART and LOOPLENGTH tags in the metadata (I think the values represent sample indices, but don't quote me on that). This feature could be tied to the Track Looping setting (so setting it to "never" would ignore loops, while setting it to "auto" or "always" would follow the loops - the same way the setting currently works for module files).

This would be a very nice feature for video game music enthusiasts like myself because I can just add the loop points into the file metadata (or use the ones already there) and then let XMPlay follow them rather than having to futz around with things like A-B repeats (which are tricky to use and not persistent) or trying to manually loop the file. It should also be theoretically simple to implement (I believe BASS, which is what XMPlay uses internally, has support for Sync points which could be used to implement this with a very small amount of code).

Lemu

  • Posts: 42
Re: Suggestions for 3.8
« Reply #201 on: 14 Dec '13 - 12:07 »
One last thing that's prevented me from switching from Winamp to XMplay: I'd love to be able to change the replay sample rate of an MP3. This would naturally change the pitch and also tempo.

The uses for such a function:
-  to breathe new life into a track you've heard a hundred times, to which your brain has become desensitized.
-  to experience the music more indepth if you slow down a fast track a lot.

Thanks for considering this!

Note: I'm not talking about time stretch (this usually produces unpleasant artifacts -- I'm talking about playing something sampled at 44100 Hz at say 42000 Hz or 45000 Hz, etc.).
« Last Edit: 15 Dec '13 - 07:48 by Lemu »

Ian @ un4seen

  • Administrator
  • Posts: 20389
Re: Suggestions for 3.8
« Reply #202 on: 16 Dec '13 - 15:24 »
Only new thing in 3.8 I would like to see is expansion of tracks from cue file. :)
That has been discussed many times on forum, but I'm not sure if it is going to be added in 3.8.  :-\

That is probably the most commonly requested feature that is yet to be implemented. The guts of support for separate cue sheet (and subsong) tracks has been mostly implemented for a while, eg. playback of a single cue sheet entry or subsong, but things got stuck when it came to integrating that with the rest of XMPlay. Some new ideas for that stuff came to mind recently, and I've been busy working on that. I'm hoping to have an update ready for testing tomorrow. So prepare your testing pants :)

One thing I would like to request in 3.8 is support for loop points in non-MOD music. I know a feature of module files is that they have built-in loop support, but there are other file formats that support it too (either officially or through extensions). As an example, I know of some OGG Vorbis files that encode loop information using LOOPSTART and LOOPLENGTH tags in the metadata (I think the values represent sample indices, but don't quote me on that). This feature could be tied to the Track Looping setting (so setting it to "never" would ignore loops, while setting it to "auto" or "always" would follow the loops - the same way the setting currently works for module files).

This would be a very nice feature for video game music enthusiasts like myself because I can just add the loop points into the file metadata (or use the ones already there) and then let XMPlay follow them rather than having to futz around with things like A-B repeats (which are tricky to use and not persistent) or trying to manually loop the file. It should also be theoretically simple to implement (I believe BASS, which is what XMPlay uses internally, has support for Sync points which could be used to implement this with a very small amount of code).

Please upload (or link to) an example file or two for each format that you would like to see supported, and I'll see what can be done for them.

   ftp.un4seen.com/incoming/

One last thing that's prevented me from switching from Winamp to XMplay: I'd love to be able to change the replay sample rate of an MP3. This would naturally change the pitch and also tempo.

The uses for such a function:
-  to breathe new life into a track you've heard a hundred times, to which your brain has become desensitized.
-  to experience the music more indepth if you slow down a fast track a lot.

Thanks for considering this!

Note: I'm not talking about time stretch (this usually produces unpleasant artifacts -- I'm talking about playing something sampled at 44100 Hz at say 42000 Hz or 45000 Hz, etc.).

I'm not sure there will be time to implement that in XMPlay before the 3.8 release, but if not, I think it should at least be possible to add that option in the DirectSound output plugin afterwards. I'll look into it.

saga

  • Posts: 2179
Re: Suggestions for 3.8
« Reply #203 on: 16 Dec '13 - 16:03 »
Regarding the loop point request, you may want to support RIFF loop points from the "smpl" chunk. Some programs like OpenMPT and Renoise support "smpl" chunks through FLAC's foreign metadata as well, i.e. when parsing FLAC metadata, look for the FLAC__METADATA_TYPE_APPLICATION type, application.id "riff" and then parse the content of that metadata chunk as if it was the content of a RIFF file (i.e. without the leading 12 bytes).

Lemu

  • Posts: 42
Re: Suggestions for 3.8
« Reply #204 on: 16 Dec '13 - 17:46 »
to be able to change the replay sample rate of an MP3. This would naturally change the pitch and also tempo.

I'm not sure there will be time to implement that in XMPlay before the 3.8 release, but if not, I think it should at least be possible to add that option in the DirectSound output plugin afterwards. I'll look into it.

Thank you very much!  :)

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #205 on: 16 Dec '13 - 19:58 »
Question: if you implement the ability to change replay samplerate, will that affect other file format too?
I mean FLAC, radio streams, mods, exotic ones.

saga

  • Posts: 2179
Re: Suggestions for 3.8
« Reply #206 on: 16 Dec '13 - 20:18 »
Since he talked about implementing it directly in the DirectSound output plugin, I'd safely assume that yes, it will affect any kind of playback.

Wes Tarro

  • Guest
Re: Suggestions for 3.8
« Reply #207 on: 16 Dec '13 - 21:01 »
I uploaded three files (YSO_016.ogg, YSO_017.ogg, and YSO_018.ogg) for you to look at that use the metadata I mentioned. These files are actually assets from a game, so don't do anything bad with them! ;)

I believe that in this case the game itself actually uses the metadata to loop the music properly, though for music from other games the loop points might have to be dug from other game files and added to the metadata manually. Hopefully that helps. I don't personally have any files in other codecs that include looping metadata (that I know of, I haven't checked all of them), but I know they are out there.

raina

  • Posts: 1163
Re: Suggestions for 3.8
« Reply #208 on: 16 Dec '13 - 21:38 »
Spiked activity in thread, developer dropping tasty hints.. Oh, can't wait for XMasPlay. XMPlay-mas?

Dotpitch

  • Posts: 2871
Re: Suggestions for 3.8
« Reply #209 on: 17 Dec '13 - 06:34 »
Better hang your Christmas stocking on the gate of Castle Luck! ;D

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #210 on: 17 Dec '13 - 07:33 »
raina, X-mas is a contraction of XMPlay-mas, or XMPlat released to the masses, as you should already know.
Ian is being nice and not asking for royalties on that, even if could make millions out of it... XD

saga

  • Posts: 2179
Re: Suggestions for 3.8
« Reply #211 on: 17 Dec '13 - 08:24 »
even if could make millions out of it... XD
You mean by selling it to AOL? ;D

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #212 on: 17 Dec '13 - 08:57 »
I get it's a joke, but it's a terrifying prospect: just the idea scares me. XD
It's easy to say it now, but when WA got sold to AOL I tought "it's the end", and in fact WA started to get bloated more and more.
Selling XMPlay to AOL would be its demise. They (AOL/WA devs) never fixed a lot of bugs (mods crashing WA to name one), while XMPlay "support" is lightning fast.
It still amazes me how fast and disponible Ian is, he fixes bugs or adds feauture, even upon request: no paid app I used, even business grade, has something like that.
XMPlay may be closed source, but with a dev so dedicated there's no need to go open at all.
So: don't joke like that please! XD



Ian @ un4seen

  • Administrator
  • Posts: 20389
Re: Suggestions for 3.8
« Reply #213 on: 17 Dec '13 - 18:05 »
I uploaded three files (YSO_016.ogg, YSO_017.ogg, and YSO_018.ogg) for you to look at that use the metadata I mentioned. These files are actually assets from a game, so don't do anything bad with them! ;)

Thanks. I'll look into that stuff before the 3.8 release.

In the meantime, here's the latest stuff for everyone to try...

   www.un4seen.com/stuff/xmplay.exe

Note: the library file format has changed, so you should backup your XMPLAY.LIBRARY file before running this update if you would like to be able to switch back to a previous version.

The big difference since the last update is the option of having separate playlist/library entries for individual cuesheet entries and subsongs. As part of that, support for CUE files has been added to the playlist processing. When loading a CUE file with a single "FILE" entry and multiple "TRACK" entries, XMPlay will add separate playlist entries for each "TRACK", but note that the "FILE" needs to match the CUE filename (apart from the extension) because XMPlay still (as before) looks for a CUE file based on the audio filename. When loading a CUE file that has multiple "FILE" entries, XMPlay will just add a playlist entry for each of those files (it won't process "TRACK" entries due to the aforementioned CUE/audio filename matching requirement).

Subsongs won't be automatically separated into individual playlist entries because that probably wouldn't be very nice, eg. you probably wouldn't want separate entries for each MOD or SID subsong. Instead, there is a "Separate subsongs" option in the right-click menu to request the subsong separation. If you do happen to want everything separated, then you can select all tracks before using the "Separate subsongs" option. When separating subsongs in the playlist, the original playlist entry will be replaced by the subsong entries. When done in the library, the original entry will be retained, ie. both the original and subsong entries will be in the library.

Before a playlist/library entry can be separated into subsongs, XMPlay needs to know how many subsongs there are. It previously wasn't possible for XMPlay to get subsong info prior to playback of the file; it would only find out about subsongs when the file was played. So the plugin system has had to be updated to make it possible to get subsong info at the same time as tag/length info. The internal MOD and OGG processing has been updated to support the new system, so the update can currently get subsong info from those file formats prior to playing them, but plugins that support subsongs (eg. OPUS/MIDI/SID) will need to be updated to fully work with the new system. For now, XMPlay will still only find out how many subsongs those files have when they're played, eg. you would need to play a file before using the "Separate subsongs" option on it.

When first run, the update will try to get subsong info for all of the existing playlist/library entries, so you may notice a bit of disk thrashing initially. A "subsong(s)" field has been added to the library and track info windows to show what subsong and/or how many subsongs a playlist/library entry has. Playlists in the library ("Playlist processing" option is disabled) will have the number of entries shown in the "subsongs" field. An individual subsong playlist entry will have the subsong number shown in brackets after the filename in the playlist (when in filename mode) and in its help bubble, and in the "Find tracks" window too. A new "%subsong" search option has also been added, eg. "%subsong>0" would find all individual subsong entries.

The update seems to be working fine so far but it hasn't been tested a great deal yet, so please report any problems/ideas/etc, and remember to backup your XMPLAY.LIBRARY file first.

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #214 on: 17 Dec '13 - 18:49 »
First thanks a lot, I was waiting this one! Best X-mas present so far (1st one, hahaha).
Question: what happens if the cuesheet (tracklist) is embeded as a tag in a file?
I mean, I have a .flac file which is actually a whole album, or a mix, and it contains the tracklist in a tag.
Will the track be split? I ask because I can't test on my own stuff, not avail to me right now.

Lemu

  • Posts: 42
Re: Suggestions for 3.8
« Reply #215 on: 17 Dec '13 - 19:28 »
Such a better support for subsongs is always great news! Well done!

If I may request another enhancement regarding subsongs: When shuffle mode is enabled, please add an option to jump to a random subsong at the same time too (now always the first subsong is played even in randomized track selection).

If this, and the sample rate change are implemented (with hotkey shortcuts, if possible), XMPlay will be the best player in the world. So far it is rock solid and stable -- much better than Winamp! Thanks! I'm excited and enthusiastic about it!

Thank you again and Merry Christmas if you celebrate it.
« Last Edit: 17 Dec '13 - 19:31 by Lemu »

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #216 on: 17 Dec '13 - 20:20 »
I tried the stuff version, seems fine, but I noticed some things:

1) delix 8c throws an error saying it need at leas XMPlay version 3.4.0.5.
2) there's no version in the config windows. Maybe related?
3) in the .cue file, the file must be the same, including the ext. Is this intended?
    If the file has same name but different extension, it won't load it (I had wav in the .cue, while the file was .flac)
« Last Edit: 17 Dec '13 - 21:08 by piovrauz »

Alt

  • Posts: 69
Re: Suggestions for 3.8
« Reply #217 on: 18 Dec '13 - 05:26 »
Regarding CUE, finally!  ;D
Works well except minor issue that update breaks "CueMark". It's still needed because when you open some image (flac/ape/etc) tracks don't separate automatically (you need to open CUE file for that, which is good) but also there's no CUE Marks provided with some update (however you still can change tracks with right button and see track list in "Info").

saga

  • Posts: 2179
Re: Suggestions for 3.8
« Reply #218 on: 18 Dec '13 - 18:03 »
Ian, can you document the updated library format?

Ian @ un4seen

  • Administrator
  • Posts: 20389
Re: Suggestions for 3.8
« Reply #219 on: 18 Dec '13 - 18:10 »
Question: what happens if the cuesheet (tracklist) is embeded as a tag in a file?
I mean, I have a .flac file which is actually a whole album, or a mix, and it contains the tracklist in a tag.

Embedded cuesheets are supported, but like the subsong info, it isn't possible for XMPlay to get that info from current plugins until the file is played. The updated plugin system does allow embedded cuesheets to be made available to XMPlay earlier, so a FLAC plugin update will be needed to do that, and here is an update...

   www.un4seen.com/stuff/xmp-flac.dll

Let me know if you have any trouble with it. Note updated plugins won't work with previous XMPlay versions.

Here also is another XMPlay update...

   www.un4seen.com/stuff/xmplay.exe

There were some bugs in the update posted yesterday, notably in the OGG info scanning. If you have any OGG files in your library, it may be a good idea to rescan their info. That can be done by searching for "%filetype=ogg" (eg. press Alt+F and type that), then "Select all matches" (eg. press Ctrl+Shift+F), and then right-click on the selected tracks and choose "Refresh info from file".

If I may request another enhancement regarding subsongs: When shuffle mode is enabled, please add an option to jump to a random subsong at the same time too (now always the first subsong is played even in randomized track selection).

Please clarify in what scenario the random option isn't applying, as it should generally apply to individual subsong tracks just like any other tracks. One scenario where random playback is currently overridden is when playing tracks from the library without the "Replace playlist when playing" option enabled, in which case the tracks will be queued for playback in the selected order; random playback will resume after the queue has been emptied.

1) delix 8c throws an error saying it need at leas XMPlay version 3.4.0.5.

When loading a plugin, XMPlay will check whether it supports the latest plugin system, and if not, it will fall back to the next one and repeat until it finds a system that the plugin supports. In this case, it sounds like the Delix plugin may be assuming that any system other than the one it supports is an old one. I'll check with Fraggie.

2) there's no version in the config windows.

Oops! I was toying with increasing the size of the options window, and forgot to move the version number back into view :)

3) in the .cue file, the file must be the same, including the ext. Is this intended?
    If the file has same name but different extension, it won't load it (I had wav in the .cue, while the file was .flac)

Yeah, the CUE file playlist processing uses the "FILE" field for the new playlist entries. In your scenario of an extension mismatch, it should still be possible to make use of the CUE file via the "Separate subsongs" option after adding the FLAC file to the playlist.

Works well except minor issue that update breaks "CueMark". It's still needed because when you open some image (flac/ape/etc) tracks don't separate automatically (you need to open CUE file for that, which is good) but also there's no CUE Marks provided with some update (however you still can change tracks with right button and see track list in "Info").

Yeah, the "CueMark" option was removed, as I figured that the people that were using that would probably use separated tracks now instead :)

Ian, can you document the updated library format?

Yep, the version number is now 5, and each library entry has 4 extra bytes: 2 bytes for the subsong count, and 2 bytes for the separated subsong number.

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #220 on: 18 Dec '13 - 18:25 »
Woah, fast as usual.
I will try new flac plugin and let you know if there are any problem with embedded cues.
For now I can say that the version is now visible and that "separate subsong" indeed works in case of filename extension mismatch (removes duplicated full track too, neat).
I hope Fraggie won't be mad, he wrote something along the lines of delix being not worked on on his webpage...
Now, if just Barna would come back here and remain for a while... ;)

piovrauz

  • Posts: 967
Re: Suggestions for 3.8
« Reply #221 on: 18 Dec '13 - 19:52 »
Tests done.

1) I see FLAC with embedded cuesheets don't get split automatically on load, and I need to use the "separate tracks" option, even if filename matches.
    They are showing the cue fine in the message window (before the split, after there's just a single track). Are they treated as subsongs?
    Foobar seems to load and split them with no issues (used it to create the embedded cue).

2) More on embedded cuesheets: what if a embedded cuesheet doesn't have the file entry? Would XMPlay assume it's the FLAC file from which the cue is "extracted" itself?
    Or it'll need the use of the "separate tracks" option? Didn't try because of point 1).

3) next time. changed idea.
« Last Edit: 18 Dec '13 - 19:59 by piovrauz »

Lemu

  • Posts: 42
Re: Suggestions for 3.8
« Reply #222 on: 18 Dec '13 - 20:47 »
Please clarify in what scenario the random option isn't applying, as it should generally apply to individual subsong tracks just like any other tracks. One scenario where random playback is currently overridden is when playing tracks from the library without the "Replace playlist when playing" option enabled, in which case the tracks will be queued for playback in the selected order; random playback will resume after the queue has been emptied.

Ok, I guess "steps to reproduce" is gonna be an appropriate format to reply:

1) Add several modules containing subsongs to the main XMPlay playlist (not to the library).

2) Enable: Options > Playlist > List advancing > Random

3) Enable: Options > Playlist > List advancing > apply to play/next...

4) Double click a module in the play list. Its first subsong starts playing.

5) Click Next. Now another module from the playlist is randomly chosen and the first subsong starts playing.

6) Repeat step 5 and observe that the only subsong that is always playing is subsong number 1.

I suggest adding an option to randomize also the subsong selection whenever a new song is randomly chosen to be replayed next.

Hope it makes sense. And thanks again for your interest! :)

tongub

  • Posts: 91
Re: Suggestions for 3.8
« Reply #223 on: 19 Dec '13 - 07:42 »
Is it too late to request page up & down selecting (while holding shift) for 3.8?

Ian @ un4seen

  • Administrator
  • Posts: 20389
Re: Suggestions for 3.8
« Reply #224 on: 19 Dec '13 - 17:11 »
1) I see FLAC with embedded cuesheets don't get split automatically on load, and I need to use the "separate tracks" option, even if filename matches.
    They are showing the cue fine in the message window (before the split, after there's just a single track). Are they treated as subsongs?

Cues are indeed treated basically the same as subsongs, eg. the number of cues will appear in the library "subsongs" column.

The automatic separation currently only occurs in the CUE file playlist processing, eg. when the user opens a CUE file in XMPlay. When an audio file is opened, the separation needs to be applied to it manually via the "Separate subsongs" option. One reason for that is that XMPlay doesn't get info (eg. tags/lengths/subsongs) from audio files at the same time as they are added to the list; that happens in the background shortly afterwards instead, which allows many files to be added to the playlist quickly. It also means an embedded cuesheet won't immediately be seen by XMPlay when an audio file is first added to the list.

If it would help, it may be possible to add an option to apply the subsong separation when playing from the library. Perhaps something like if the shift key is held down when using the "Add to playlist" / "Replace playlist" / "Play" options.

Quote
2) More on embedded cuesheets: what if a embedded cuesheet doesn't have the file entry? Would XMPlay assume it's the FLAC file from which the cue is "extracted" itself?

The CUE's "FILE" entry is only used in the playlist processing, eg. in the automatic separation. It's currently ignored otherwise, eg. an embedded CUE file or one with a filename matching the audio file is assumed to be intended for use with the audio file :)

Ok, I guess "steps to reproduce" is gonna be an appropriate format to reply...

Ah, I think I see now. Your request isn't related to separated subsongs, but rather you want the subsongs in a multi-subsong file to be played in a random order when random playback is enabled? I'll look into it.

Is it too late to request page up & down selecting (while holding shift) for 3.8?

Do you mean something like "List nav - Select extend page up" and "List nav - Select extend page down" shortcuts?