Soundpal: an MP3 player

Happy near year everyone!

I wanted to introduce a project I've been working on called Soundpal!

About :

Soundpal is a basic MP3 player. It has various configuration options built in to suit your particular needs.

I know there are a few other music player projects out there! If this one doesn't fit your needs, maybe one of these does:

  • Musik by @nanobot567
  • If you're a developer who owns a different music player, let me know. I'd love to link to them here.

Revision history:

  • v0.3
    • Recompiled to support updated SDK/hardware
  • v0.2
    • Two new visualizers
    • Fix autolock bug
    • Fix menu scrolling bug
  • v0.1
    • Basic ID3 (v2/3) tag support: song, artist, album
    • Basic sorting: all songs, artist, artist+album
    • Randomization / Loop modes
    • Toggle between light & dark themes
    • Choose between a handful of fonts
    • Choose between various text legibility options
    • Choose between four "visualizers": cycle or toggle off to save battery life

Known limitations:

  • No scrubbing support
  • No custom playlist support
  • Does not display album art

Screenshots:

sp_1

sp_2

sp_3

sp_4

Download:
From my website (jaymakesgames.com) or direct link here. The pdx will work on hardware or macOS Simulator. It is untested on Windows/Linux simulator, though I expect it won't work there

Installation:
Directions for how to install (to hardware, sim -- though I think many folks here already know how) as well as where to put your music files is available on the website (and in the README bundled in the zip). It's lengthy, so I didn't want to pollute this post with them.


Assorted other dev notes:

  • This project was built using the C-API.
  • All rendering is live, using primitive drawing APIs. No pre-rendered artwork (other than the fonts).
  • There is more to come -- but it's not quite ready to show off yet!

Happy to answer any questions, feedback, and any bug reports for songs that might be troublesome (I've run into a few, myself).

Enjoy!

7 Likes

Awesome, Jay.

Jay makes apps and games!

1 Like

This music player looks awesome!! Nice work!

1 Like

Thank you! :heart:

You're the creator of Musik, right? Can I link to it in the top post? :slight_smile:

That's me! If you want to add a link to Musik go ahead!

1 Like

Minor updates (detailed in top post). Notably: the console will no longer auto-lock during music playback. :slight_smile:

2 Likes

Hello @jaymakesgames -- love the interface, in-built visual effect, and how you let the user to change font! However, as I try to install on my Playdate (OS 2.0.0) this error message appeared. It's a message typically when Playdate OS is newer than game was built. It'd be nice to have a working version. I'll be using this at bed side to let my daughter to play her favorite songs. :slight_smile:

Hey @dkwo ; thanks for the kind words!

Since it’s a C project, it needs to be rebuilt with the latest SDK. I don’t think that should be too much trouble to do. Will try to get to it soon. :slight_smile:

Sorry for the wait; a new version is up (link in initial post is also updated to point to it) that is compiled with the latest SDK.

Please give it a go and let me know if that sorts things out for you! :slight_smile:

1 Like

Thanks so much @jaymakesgames, it's working great! It loads really fast, and the sound quality is surprisingly great!

I was wondering, if you have plan to support Unicode character display? At moment with in-built fonts I'm not able to see Japanese characters, I think it'd be really helpful if your music player supports displaying non-English characters. I'll be happy to find a font that would will suit your need (if this will be helpful to you.) I can imagine a lot of work may be involved in this, so no problem if you have no plan to support it. :slight_smile:

Soundpal 2023-06-29 15.22.30
Soundpal 2023-06-29 15.22.22|400x240
Soundpal 2023-06-29 15.23.04|400x240
Soundpal 2023-06-29 15.23.10|400x240
Soundpal 2023-06-29 15.23.16|400x240

It would be nice to do this!

Yeah; all the fonts that come provided with the SDK generally don’t seem to have any glyphs filled out outside of the ASCII range — and a subset of those are all I have provided for selection in the app.

I suspect fixing this is as simple as finding some font that includes all of these, and adding that in for usage is really easy. Maybe some extra work while decoding the tags.

I am pretty sure I’ve seen a few folks offering fonts on the forums that support the full set of characters. I’ll have to go scrounging around for a good free one! :slight_smile:

1 Like

Of course; turns out it’s the “extra work” path to get this working.

I was able to get some fonts to test with from here, from the work @hunty did: :pray: Japanese pixel fonts with Kanji support - #5 by hunty (thank you for that!)

With that, I was able to get things sort of working:

KindOfWorking

A bunch of these titles are clipped because of the entire app effectively assuming ASCII everywhere, but it’s a start. There’s a bunch more to do to get all the plumbing working. :sweat_smile:

1 Like

@jaymakesgames wow, didn't expect you to have a working screen happen overnight, that IS a progress.

From the song titles... they're from Final Fantasy 7? :slight_smile:

If the text is clipping, I wonder if it's a logic in the app or choice of font. If other fonts might help, if you could let me know the type of fonts you need I can go find if there's a free one in Japanese font community sites.

Please share a beta build if it's okay!!!

Ha; yeah ("Crisis Core” OST) :slight_smile:

If the text is clipping, I wonder if it's a logic in the app or choice of font.

It’s a problem in the app, the font is perfectly fine from what I can tell.

To get into the technical details: I’m copying strings using methods that assume ASCII, so if they are handling a wide character string they will get tripped up seeing a \0 partway through (which is allowed in unicode, and some of the songs I have do exactly this).

Please share a beta build if it's okay!!!

What I have in place right now is pretty hacky, and only plumbs through song titles. I’d like to fix up the truncation issue in the menus (it looks fine in the player view, actually), then get an experimental build out to see how it works for you. Target is soon(ish). :slight_smile:

If all that looks good, then the next longer term goal is to convert the hackery I did into a proper implementation (which would handle all the tags, rather than just song title). :wink:

1 Like

Soon(ish) turned out to be soon(er). :tada:

Give this build a try: soundpal_experimental.zip

This adds support for displaying song name tags in menus and the main player screen. Does not fix any other tags or display text (yet).

Note, you’ll need to choose one of these fonts first:

fonts

:slight_smile:

1 Like

Hi Jay, thanks for the experimental build!

I tried to add a few songs in a mixture of:

  1. Songs without Japanese filenames
  2. Songs with Japanese filenames
  3. Most of them has artist, title, and album in Japanese

Yes, I tried to use the last two fonts and compared difference. I can see that characters are now rendered in a way it's using a US code page for font "JF Dot Ayu", and characters are sort of showing but wrong characters seem to be mapped for font "KH Dot Ningyouchou".

And even though I have Japanese characters in artist and album they're categorized as Unknown Album / Artist -- please ignore this if this is known issue.

To make sure I have a clean start, I also tried deleting the game and data, and then install from Playdate's Setting ➔ Games .

I might be missing something, just letting you know what I saw.

Soundpal 2023-07-01 18.24.50
Soundpal 2023-07-01 18.25.07|400x240
Soundpal 2023-07-01 18.24.42|400x240
Soundpal 2023-07-01 18.24.04|400x240
Soundpal 2023-07-01 18.23.57|400x240

Thanks!

Thanks for trying!

Worth noting: when the app can’t parse out a song name, it falls back to displaying the filename, and that path isn’t aware of dealing with Unicode yet.

From the description and screenshots it looks like the app isn’t able to parse any of the tags on your mp3s.

Do you know how they are tagged? Right now I am only parsing ID3v2.2 and ID3v2.3 (and the unicode support I just added was on the v2.2 format end).

If you are able to share one of the files, that would be helpful! Feel free to DM. If you can’t share any of these for legal reasons, I could spin up a build with some debug info somewhere (either logs, or on screen) that shows what happened in the tag parser :slight_smile:

1 Like

No problem at all! :smiley:

There seems to be no DM feature on this forum and I can't post zip attachment as a new member, even got my uploaded zip file deleted by pastebin :grinning: so I'll paste info read by eyed3[1]. Some of them are in ID3v2.4 which per your reply is not supported so it's expected, but others are ID3v2.3 so it should probably be parsed.

Weird... I just renamed a few Japanese filename mp3s with ID3v2.3 to English filename, when I open it the player screen is not showing Japanese characters.

[1]

$ eyeD3 _to_jay_type*
/hogehoge/_to_jay_type1.mp3                         [ 20.62 KB ]
-------------------------------------------------------------------------------
Time: 00:01     MPEG1, Layer III        [ 160 kb/s @ 44100 Hz - Mono ]
-------------------------------------------------------------------------------
ID3 v2.4:
title:  ぐでたま行進曲(Full ver.)
artist: 原 由子
album:
album artist: None
track:
-------------------------------------------------------------------------------
eyed3.mp3.headers:WARNING: Lame tag CRC check failed
/hogehoge/_to_jay_type2-ああああ.mp3                     [ 9.26 KB ]
-------------------------------------------------------------------------------
Time: 00:01     MPEG1, Layer III        [ ~65 kb/s @ 44100 Hz - Mono ]
-------------------------------------------------------------------------------
ID3 v2.3:
title: タイトル
artist: Nintendo
album: 街へいこうよ どうぶつの森 ~森の音楽会~
album artist: Various Artists
track: 1/39             genre: Soundtrack (id 24)
disc: 1/1
-------------------------------------------------------------------------------
/hogehoge/_to_jay_type3-ああああ.mp3                    [ 20.33 KB ]
-------------------------------------------------------------------------------
Time: 00:01     MPEG1, Layer III        [ 160 kb/s @ 48000 Hz - Mono ]
-------------------------------------------------------------------------------
ID3 v2.4:
title: イケてるマスコット
artist: Netflix
album: ぐでたま 〜母をたずねてどんくらい
album artist: None
track: 6
-------------------------------------------------------------------------------

[2] Soundpal 2023-07-02 02.56.51

Hm; yeah, filename display doesn’t work correctly (and on top of that I introduced a bug where sometimes it doesn’t render at all).

Will look at that next.

Also: thanks for these tag dumps! eye3d looks pretty cool and seems like I can use it to manipulate tags as well, which will be super helpful.

Going to fiddle with this a bit more, might go about adding 2.4 support, too.

1 Like