So I realize this is probably one of those things where you'll either be like meh, or ooh cool, but here's another thing I've been working on, mainly for my own personal use and a group of friends than anything, but I figured wtf, someone else here might enjoy this. This is #FastPlay, a little media player that I've been working on. It's not and will never be a full replacement for Foobar2000, and thus lacks things such as a converter and a media library, but has enough features I think for it to still be useful. It supports being able to be set as the default for formats, for example. I'll paste a bit from the readme here which explains what's unique about FastPlay: At the core of Fastplay are what we will call virtual sliders. Right now, there are two of these virtual sliders.
The first one adjusts things like your volume and any effects you choose to enable/add. You choose what this slider adjusts by using left and right brackets, and then adjust the value itself with up or down arrows.
The second slider allows you to do things such as seek and move between tracks. You adjust what this slider does by using comma and period, and you adjust the slider with left and right arrows.
You can choose what shows up in these sliders by heading to the options dialog, control comma.
More and download: https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.0: Add speedy as another tempo/pitch algorithm.
Add reverb algorithm adjustment.
Correctly show midi format in the file formats tab
Add option to have FastPlay not automatically hide to tray.
Add new bookmarks option. Press M to place a bookmark at the current position in the file. Press control M to open the list of bookmarks. Press enter on a bookmark to jump to it, or press delete to remove it.
Attempt to fix internet streaming crashes.
Add the ability to record the player's direct output. Useful in many applications, recording internet radio streams, recording affected audio, etc. Press R to toggle recording. Set up options in the recording tab.
Add a radio dialog, for saving and quickly playing internet radio streams. Search tab coming soon.
Thread youtube search, so NVDA doesn't freeze.

https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.1: Add toggle record and speak now playing as an available global hotkey assignment
Add new speech tab, with some new settings for verbosity.
Fix volume over 100 setting
Add shuffle
Fix a bug with tags where they were getting cutoff in some cases.
Adjust volume curve and step.
Fix flac playback by actually including the proper version of bassflac.
Add home to jump to the beginning of the file.
Add J for jump to time.

https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.2: Add convolution reverb.
Add all files option to the open file dialog.
Add chapter seeking option.
in the speak now playing key, remove the now playing: text
Make it so shift numbers show a text field in a dialog with the tag that that number key would speak.
Add open folder option
Add playlist manager dialog, control P. Allows you to modify the current playlist. You can add files to it by pasting them, move them with alt up and down arrows, delete them with delete.

https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.3: Add scheduler for scheduling playback/recording from within the app!
Fix a bug report where now playing song titles didn't continue parsing past an apostrophe character.
Add a keystroke, u, to mute the player. This works in such a way where recording the player would still work but you wouldn't hear the player output.
Add backspace to reset the current effect slider to it's default value.
Adjust it so that player volume does not affect recording volume.
More adjustments to volume curve.
Add volume step setting to options/playback.

https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.4: Add an option to make playback rate adjust by semitones instead of .01X
Add a use legacy volume adjustment checkbox to advanced, for those who don't care about volume affecting recordings and want it to respond quickly.
Add an option to not show track filenames in the window title.
In addition to this, improve window title display so that it shows much more useful track information than before.
Fix the scheduler so that when set to both playback and recording, the audio is now correctly muted.
Add an import button to the radio dialog, for importing M3U or pls streams.
Add the promised search tab to the radio dialog, which lets you search RadioBrowser, TuneIn, iHeart Radio.
Adjust rate feature to not rely on the tempo algorithm being BassFX/Sound Touch.
Fix pasting into the playlist view.
Load folders from m3u's.

https://masonasons.me/softs/FastPlay.zip

#FastPlay 0.4.5: Legacy volume mode fixes. https://masonasons.me/softs/FastPlay.zip
#FastPlay update! FastPlay can now be found on Github! Here is a link to the latest release: https://github.com/masonasons/FastPlay/releases/download/latest/FastPlay.zip
Here's what's new in FastPlay 0.4.6: Attempted network buffering fixes.
Fix leading spaces in M3U favorites import.
F2 will let you update a station.
I have made building FastPlay as easy as possible for those that are interested. It's as simple as making sure you have the Visual C++ Build Tools installed, and then cloning/downloading the sourcecode, running download-deps.bat, and then running build_new.bat.
@Bri Can I ask why you're using an old version of SQLite from 2024 pretty much exclusively as a key-value store, nothing relational like SQLite was made for, without any transactions or proper error handling?
@TheQuinbox I figured it would be much faster than using something else, especially if users end up with shit tons of radio stations/stored files with positions.

@Bri @TheQuinbox Yeah, Sqlite really isn't bad at that, especially with proper indexing. Certainly better (and much more space-efficient) than a file system, especially for thousands of keys and smallish values.

I'd personally go relational, but I'm the literal definition of overengineering so...

@Bri If the goal is speed for simple path-keyed lookups, a structured file, embedded key-value store, or append-only log with an in-memory index would be just as fast or faster. SQLite's advantages show up when you use transactions, indexing, and query planning, not when you treat it like a big dictionary.
@TheQuinbox Ah, OK. Thanks for the tip. I just figured SQL since it's already got everything there for you, multiple tables per file, etc etc, I figured why reinvent the wheel.
@Bri Fair enough, and to be clear it does work fine. But it's definitely a bit overkill, and I'd at least use a newer version than 3.4.5 haha.
@TheQuinbox that's fair. I just thought ooh, single C file containing SQLite, nice easy dependency.
@TheQuinbox Ah, yes, but our scheduled events feature. This is more than just a simple key/pair value, so would have to find an alternative there too.
@TheQuinbox @Bri Does sqlite use a binary search for the keys if you use it as a KV store like that? Or do you need to build an index?

@x0 @TheQuinbox @Bri You always need an index. You may get one for free though, E.G. if the column you want is a primary key or has an unique constraint on it.

It gets complicated with more complex queries where there's more than one column involved, so it's always worth checking the query plan.

@x0 @TheQuinbox @Bri If you lack indexes it does full table scans which are naturally very expensive. Indexes are one way you can dramatically speed up table scans

@TheQuinbox @Bri I don't think you're wrong on the merits, but sqlite is just right there and easier to implement. Especially in Python, where it has been optimized to hell and back. If you wanted a specialized KV format and wanted it to actually be fast, you'd have to pull in a dependency (which means C/C++ libraries and more build weirdness). I'd probably also opt for Sqlite unless this was a specific performance bottleneck, just because it's right there and it's simple.

Agree on the version point though.

@miki @TheQuinbox Looking into that. Thanks for both of your feedback :) It's appreciated.
@miki @TheQuinbox I just updated to using SQLite 3.51.2.
@[email protected] A minor feature suggestion for FastPlay. The number 0 gives the URL of whatever stream is playing. Would it be possible to fix it so that pressing it twice quickly will copy the URL to the clipboard?
@technolass you can use shift 0 to open a text box containing this URL.