Author Topic: [Release] ElevenMPV-A: Advanced ElevenMPV with BG playback/hardware decoding  (Read 7417 times)

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
ElevenMPV-A - Advanced Eleven Music Player VITA









A homebrew music player for Playstation VITA that aims to support many different audio formats compared to the offical PS VITA music application.


BG playback support:

1. By default: with most of the games
2. With [LowMemMode plugin](https://github.com/GrapheneCt/LowMemMode): with all games

Limitations:

1. Some performance issues for software decoding may occur.

Currently supported formats: (16 bit signed samples)

Hardware decoding (flawless performance even in games):
- MP3
- ATRAC9
- WAV
- M4A/AAC

Software decoding:
- FLAC
- IT
- MOD
- OGG
- OPUS
- S3M
- XM

Features:

- Browse ux0:/, ur0:/, uma0:/, xmc0:/, grw0:/ to play the above audio formats.
- BG playback.
- Pause/Play audio.
- Shuffle/Repeat/Repeat All.
- Equalizer.
- ALC.
- Next/Previous track in current working directory.
- Display ID3v1 and ID3v2 metadata for MP3 files. Other tags are displayed for OGG, FLAC, OPUS and XM.
- Touch support.
- Seeking support using touch screen.

About EQ modes (information by @realusagichan):

- Heavy EQ: bass and highs are boosted
- Pop EQ: bass and highs diminished, midrange boosted
- Jazz EQ: subbass and midrange diminished, mid-bass and treble boosted
- Unique EQ: subbass boosted, very high treble boosted, the rest slightly diminished

EQ modes may cause digital overload at max mixing level for loud music.
To mitigate that enable "Settings->Audio->Limit Volume Whith EQ" option (only software decoded codecs are supported).

Controls:

In file manager:

- Enter button (cross/circle): enter folder/play supported audio file.
- Cancel button (cross/circle): go up parent folder.
- DPAD Up/Down: Navigate files.
- DPAD Left/Right: Top/Bottom of list.
- SELECT button: open settings.

In audio player:

- Enter button (cross/circle): Play/Pause.
- Cancel button (cross/circle): Return to file manager.
- L trigger: Previous audio file in current directory.
- R trigger: Next audio file in current directory.
- Triangle: Shuffle audio files in current directory.
- Square: Repeat audio files in current directory.
- Power Button: Turn off display and keep playing audio in background.
- SELECT button: open settings.

In background:

- Quick Menu: mixing volume adjustment.
- Interactive notifications.
- Power Button: Turn off display and keep playing audio in background.

Credits:

- joel16: [ElevenMPV](https://github.com/joel16/ElevenMPV)
- @realusagichan for testing and helping with debug
- dr_libs by mackron.
- libvorbis, libogg and libopus contributors.
- libxmp-lite contributors.
- Preetisketch for startup.png (banner).
- LineageOS's Eleven Music Player contributors for design elements.

Download: https://github.com/GrapheneCt/ElevenMPV-A/releases
« Last Edit: July 05, 2020, 08:39:21 PM by Graphene »

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
Re: [Release] ElevenMPV-A: Advanced ElevenMPV with BG playback
« Reply #1 on: May 04, 2020, 02:52:01 AM »
Updated to v2.21:

- Reduced newlib usage to the minimum
- All settings are now saved in savedata0:

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
Updated to v3.00:

ElevenMPV-A v3.00 Update Full Changelog:

Performance:

1. Redistributed CPU load to achieve best possible performance for software decoding. Performance in games is not affected by ElevenMPV-A.
2. Various small performance improvements.
3. Textures are stored in .psarc archive.

Supported formats, hardware decoding:

1. Added support for hardware decoding (Codec Engine, decoding is performed via SceShell) for the following codecs:
   - AAC (.m4a, .aac) (some .aac files may not play)
   - ATRAC9 (.at9)

2. Changed decoding to hardware decoding (Codec Engine, decoding is performed via SceShell) for the following codecs:
   - MP3 (.mp3)
   - WAV (.wav) playback
   
Performance of all of the codecs listed above should now be flawless even under the toughest conditions.

4. Enabled ARM NEON support for FLAC decoding.

New features:

1. Added the following devices to the device list:
   - grw0:
   - xmc0:
   
2. Added equalizer. Processing is always performed on hardware, even when decoding is performed on software. It is possible to change EQ mode during playback operation. Following EQ modes are available:
   - Off
   - Heavy
   - Pop
   - Jazz
   - Unique
   
3. Added "repeat all" playback mode.
4. If none of the playback modes are enabled, playback will be automatically finished when all files from the current directory has been played. This allows system to switch to sleep mode automatically.

UI and controls:

General:

1. Reimplemented touch controls using SceSystemGesture engine.
2. "Tap" gesture is now recognized when finger is released from the screen.
2. Added touch scrolling in file browser.
3. Added touch support for back button in file browser.
4. Added settings touch button in file browser.

Music player:

1. You can now control mixing volume for ElevenMPV-A from Quick Menu, similar to official Music application.
2. Support for cover pictures has been permanently removed due to extreme RAM constraints. Music player UI has been reorganized to accomodate this change.
3. Improved seeking procedure:
   - Touch the progress bar in any position to enter seek mode.
   - While in seek mode, you can move seek bar to any position you want, playback will not be interrupted. You can also move your finger away from the progress bar, seek mode will be maintained.
   - When you want perform seek operation, release your finger from the screen.
4. Added EQ button to the music player. You can also press SELECT button to open it.
« Last Edit: May 25, 2020, 03:55:57 AM by Graphene »

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
Updated to v3.50:

ElevenMPV-A v3.50 Update Full Changelog:

Performance:

1. Use event flags instead of booleans. This should reduce CPU load even further when app is in background, since all unused threads are put in wait state.
2. Decreased app boot time (now using GXT textures).
3. Config file are now saved only when application is closed to reduce IO load. This should remove occasional stutters when changing EQ mode while software decoding is performed.
4. FPS cap is now automatically switched to 60 when browsing files/in settings and to 30 when in music player to reduce unnecessary CPU load.
5. Simplified exiting procedure, sceAppMgrQuitForNonSuspendableApp() is used now.
6. Use official pvf system font.

New features:

1. Game and theme BGM will now be resumed if you deactivate app without music playback.
2. Power saving.



   - Vita will automatically suspend if playback haven't been resumed after pausing it.
   - That feature can be enabled or disabled from settings menu.
   - Time period before power saving feature is activated can be adjusted in Settings -> Power Saving -> Suspend Timer.

3. Interactive notifications.



   - Notifications can be enabled or disabled from settings menu. You can also set certain notification features in official settings, Settings -> Notifications.
   - Notifications display playback status, current track name, artis (if present), track order, current track time.
   - You can stop playback or exit from ElevenMPV-A from notifications menu, press *** -> Cancel

UI and controls:

General:

1. Reorganized settings menu.

Music player:

1. Motion controls.



   - Motion controls can be enabled or disabled from settings menu.
   - Following motion gestures are available:
      "Next": tilt Vita to the right, then return to horizontal position
      "Previous": tilt Vita to the left, then return to horizontal position
      "Pause/play": turn Vita upside down, then return to horizontal position
   - Time before motion gesture recognition is interrupted can be set set in Settings -> Motion Controls -> Timeout. For example, if that value is set to 5 sec, when you tilt your Vita to the right and wait for 5 seconds before returning it to horizontal position, "Next" motion gesture will not be recognized.
   - Angle at wich motion gestures will be recognized can be changed in Settings -> Motion Controls -> Angle Threshold.
   - Motion controls can be used in power save mode.
   - Motion controls are not available on PS TV.
2. Metadata strings is now not converted to uppercase (why was that even a thing?)
3. Current track number and total amount of tracks in the folder are now displayed on the music player screen

Bugfixes:

1. Fixed an issue that caused player to crash whith certain files.

Offline W00fer

  • End User
  • *
  • Posts: 5
    • View Profile
Great project. Would it be possible to add the following?

m4a audio support
atrac1 sp / atrac 3 / atrac3+ (https://github.com/dcherednik/atracdenc)
ape audio support
wma audio support
support m3u / pls for Internet Radio or native url like https://cbps.xyz/stream.mp3
support cue for mp3 cd's with all tracks in one file
« Last Edit: June 10, 2020, 05:44:59 PM by W00fer »

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
m4a(AAC codec) is already supported. m4a may also be used as container for ALAC codec, that is not supported yet.

Isn't that library encoder only? I don't think I will be adding support for legacy ATRAC versions since Vita has very efficient ATRAC9 hardware decoder and it is already supported. ATRAC9 is better than legacy ATRAC versions in every way.

I'll consider adding ape, wma and support for playlist/cue files.

Internet streaming is currently out of scope of this project, maybe in the far future.

Offline W00fer

  • End User
  • *
  • Posts: 5
    • View Profile
m4a(AAC codec) is already supported. m4a may also be used as container for ALAC codec, that is not supported yet.

Isn't that library encoder only? I don't think I will be adding support for legacy ATRAC versions since Vita has very efficient ATRAC9 hardware decoder and it is already supported. ATRAC9 is better than legacy ATRAC versions in every way.

I'll consider adding ape, wma and support for playlist/cue files.

Internet streaming is currently out of scope of this project, maybe in the far future.

« Last Edit: June 11, 2020, 02:48:48 AM by W00fer »

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
Vita's native AAC hardware decoder is used, so everything that is supported by official Music app.

Here is Codec Engine specs from official source:

ATRAC9™
Supported channels : 1 channel, 2 channels
Supported sampling frequencies : 12000/ 24000/ 48000 Hz
Supported bit rates : 48/ 60/ 70/ 84/ 96/ 120/ 144/ 168/ 192 kbps
MP3
Supported codecs : MPEG1/ 2/ 2.5 Layer3
Supported channels : 1 channel, 2 channels
Supported sampling
frequencies
: 8000/ 11025/ 12000/ 16000/ 22050/ 24000/ 32000/ 44100/ 48000 Hz
Supported bit rates : 8/ 16/ 24/ 32/ 40/ 48/ 56/ 64/ 80/ 96/ 112/ 128/ 144/ 160/ 192/ 224/ 256/ 320
kbps
AAC
Supported codecs : AAC-LC, HE-AAC v1/v2
Supported channels : 1 channel, 2 channels
Supported sampling frequencies : 8000/ 11025/ 12000/ 16000/ 22050/ 24000/ 32000/ 44100/ 48000 Hz
Supported bit rates : 16 - 576 kbps
CELP
Supported channels : 1 channel
Supported sampling frequencies : 8000 Hz
Supported bit rates : 3850/ 4650/ 5700/ 6600/ 7300/ 8700/ 9900/ 10700/ 11800/ 12200 bps

Yeah, re-encoding one lossy format to another is obviously not a good idea. Maybe I will add it. For now, I want to focus on getting cover picture support back since I was able to reduce libvita2d_sys RAM usage.

Offline alaki123

  • End User
  • *
  • Posts: 1
    • View Profile
Hi. This music player is fantastic but unless I'm missing something obvious, it's missing a very simple feature: Shuffle All.

What I mean by Shuffle All is that you highlight the folder that contains all your music files, then instead of pressing X to see inside it, you press another button (Square for example) and it adds all the music files inside it (and all the music files in all the subfolders) to playlist and turns shuffle on.

For example: My music library looks something like this:

-music
--Album1
---Album1Track1.mp3
---Album1Track2.mp3
.....
--Album2
---Album2Track1.mp3
---Album2Track2.mp3
.....

With that feature, I can listen to music from a specific album if I want (like I can now), but if I just want to listen to random music from my entire library that is possible too.

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
ElevenMPV-A v3.70 Update Full Changelog:

Credits:

Thanks @realusagichan for testing and helping with debug.

Performance:

1. Various performance improvements.

New (and returning) features:

1.   Added back cover picture support with few improvements:
    - External cover pictures can now be displayed. Picture must be placed in the same folder as music files. Note that cover pictures embedded in metadata are prioritiezed over external cover pictures.
    - For external cover picture, following names are supported:
      "cover.jpg"
      "cover.jpeg"
      "folder.jpg"
      "folder.jpeg"
      "cover.png"
      "folder.png"
    - Due to memory constraints, not all cover pictures can be loaded. If your cover picture is not loading, try to reduce its resolution.

2.   Added automatic volume limitation mode option for EQ.
    - The purpose of this mode is to limit mixing volume for ElevenMPV-A with EQ modes applied to prevent digital overload on loud tracks.
    - Only software decoded formats support this mode.
    - This mode can be enabled in Settings->Audio->Limit Volume Whith EQ.
   
3.   Added full support for CJK characters (chinese, korean, japanese languages).
   
UI and controls:

1.   Added fast automatic scrolling to file browser. Hold D-pad up or down buttons to perform this operation.
2.   Long text in file browser will now be scrolled.

Bugfixes:

1. Fixed an issue where certain directory or file names would result in a file browser crash.
2. Fixed an issue where notification settings were not displayed on PS TV.
3. Fixed an issue where track count would not be displayed or calculated incorrectly.
4. Fixed an issue that caused module data corruption in xmp library.

Offline IngwiePhoenix

  • End User
  • *
  • Posts: 1
    • View Profile
Hey there!

I came here after having been pointed at this fork in this issue ticket: https://github.com/joel16/ElevenMPV/issues/26

As already mentioned in that issue, I am looking for a dark mode to lift the burden of staring into a bright UI. The music palyer itself seems to have a dark mode already - where white text is prioritized on a black background. Unfortunately, the file browser is quite bright...

Since you use GXT textures - which I am not familiar with - I would assume it would, in theory, be possible to swap one of those out for the filebrowser and swap the foreground and background color?

Thank you in advance and thank you for maintaining an awesome fork!

Kind regards,
Ingwie

Offline Subishi

  • End User
  • *
  • Posts: 1
    • View Profile
Would last.fm srobbling be possible to implement in the future?

Offline dkrmdi

  • End User
  • *
  • Posts: 13
    • View Profile
I'm curious if you can use the default Music app UI for the Eleven Music player. The default Music app UI is pretty though.

Also a feature that allows control while the screen is off would be much appreciated.

Example: Press LR trigger, and the playback goes to previous or next track. Press start or select to play/pause music. All while the screen is on or off.
« Last Edit: August 18, 2020, 09:37:16 AM by dkrmdi »

Offline Graphene

  • Refugee
  • **
  • Posts: 74
    • View Profile
Official music player UI will be possible only if someone will do full RE of ScePaf (not happening in the near future for sure). As for the controls, Vita usually locks all controls when switching to the sleep mode. It will probably require some additional patches in OS, but for now I don't know where. The reason it works in apps like Vitashell or original ElevenMPV is because they don't use "true" sleep mode, they just turn off the screen.

Offline dkrmdi

  • End User
  • *
  • Posts: 13
    • View Profile
I see. Now that I thought about it, I think having default Music app UI is not worth it for so many reasons.

Instead, can you hide the status bar or make it go away? That is, allow full-screen mode. I think that alone would make the UI significantly more pretty. Also I think it would be nice if we can change the UI color.

Thank you for giving me your insight.